diff --git a/scons/scons-local-4.5.1/SCons/Action.py b/scons/scons-local-4.5.1/SCons/Action.py new file mode 100644 index 000000000..1f5e5483f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Action.py @@ -0,0 +1,1506 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons Actions. + +Information about executing any sort of action that +can build one or more target Nodes (typically files) from one or more +source Nodes (also typically files) given a specific Environment. + +The base class here is ActionBase. The base class supplies just a few +utility methods and some generic methods for displaying information +about an Action in response to the various commands that control printing. + +A second-level base class is _ActionAction. This extends ActionBase +by providing the methods that can be used to show and perform an +action. True Action objects will subclass _ActionAction; Action +factory class objects will subclass ActionBase. + +The heavy lifting is handled by subclasses for the different types of +actions we might execute: + + CommandAction + CommandGeneratorAction + FunctionAction + ListAction + +The subclasses supply the following public interface methods used by +other modules: + + __call__() + THE public interface, "calling" an Action object executes the + command or Python function. This also takes care of printing + a pre-substitution command for debugging purposes. + + get_contents() + Fetches the "contents" of an Action for signature calculation + plus the varlist. This is what gets checksummed to decide + if a target needs to be rebuilt because its action changed. + + genstring() + Returns a string representation of the Action *without* + command substitution, but allows a CommandGeneratorAction to + generate the right action based on the specified target, + source and env. This is used by the Signature subsystem + (through the Executor) to obtain an (imprecise) representation + of the Action operation for informative purposes. + + +Subclasses also supply the following methods for internal use within +this module: + + __str__() + Returns a string approximation of the Action; no variable + substitution is performed. + + execute() + The internal method that really, truly, actually handles the + execution of a command or Python function. This is used so + that the __call__() methods can take care of displaying any + pre-substitution representations, and *then* execute an action + without worrying about the specific Actions involved. + + get_presig() + Fetches the "contents" of a subclass for signature calculation. + The varlist is added to this to produce the Action's contents. + TODO(?): Change this to always return bytes and not str? + + strfunction() + Returns a substituted string representation of the Action. + This is used by the _ActionAction.show() command to display the + command/function that will be executed to generate the target(s). + +There is a related independent ActionCaller class that looks like a +regular Action, and which serves as a wrapper for arbitrary functions +that we want to let the user specify the arguments to now, but actually +execute later (when an out-of-date check determines that it's needed to +be executed, for example). Objects of this class are returned by an +ActionFactory class that provides a __call__() method as a convenient +way for wrapping up the functions. + +""" + +import os +import pickle +import re +import sys +import subprocess +from subprocess import DEVNULL +import inspect +from collections import OrderedDict + +import SCons.Debug +import SCons.Util +from SCons.Debug import logInstanceCreation +import SCons.Errors +import SCons.Util +import SCons.Subst + +# we use these a lot, so try to optimize them +from SCons.Util import is_String, is_List + +class _null: + pass + +print_actions = True +execute_actions = True +print_actions_presub = False + +# Use pickle protocol 1 when pickling functions for signature +# otherwise python3 and python2 will yield different pickles +# for the same object. +# This is due to default being 1 for python 2.7, and 3 for 3.x +# TODO: We can roll this forward to 2 (if it has value), but not +# before a deprecation cycle as the sconsigns will change +ACTION_SIGNATURE_PICKLE_PROTOCOL = 1 + + +def rfile(n): + try: + return n.rfile() + except AttributeError: + return n + + +def default_exitstatfunc(s): + return s + +strip_quotes = re.compile(r'^[\'"](.*)[\'"]$') + + +def _callable_contents(obj): + """Return the signature contents of a callable Python object. + """ + try: + # Test if obj is a method. + return _function_contents(obj.__func__) + + except AttributeError: + try: + # Test if obj is a callable object. + return _function_contents(obj.__call__.__func__) + + except AttributeError: + try: + # Test if obj is a code object. + return _code_contents(obj) + + except AttributeError: + # Test if obj is a function object. + return _function_contents(obj) + + +def _object_contents(obj): + """Return the signature contents of any Python object. + + We have to handle the case where object contains a code object + since it can be pickled directly. + """ + try: + # Test if obj is a method. + return _function_contents(obj.__func__) + + except AttributeError: + try: + # Test if obj is a callable object. + return _function_contents(obj.__call__.__func__) + + except AttributeError: + try: + # Test if obj is a code object. + return _code_contents(obj) + + except AttributeError: + try: + # Test if obj is a function object. + return _function_contents(obj) + + except AttributeError as ae: + # Should be a pickle-able Python object. + try: + return _object_instance_content(obj) + # pickling an Action instance or object doesn't yield a stable + # content as instance property may be dumped in different orders + # return pickle.dumps(obj, ACTION_SIGNATURE_PICKLE_PROTOCOL) + except (pickle.PicklingError, TypeError, AttributeError) as ex: + # This is weird, but it seems that nested classes + # are unpickable. The Python docs say it should + # always be a PicklingError, but some Python + # versions seem to return TypeError. Just do + # the best we can. + return bytearray(repr(obj), 'utf-8') + + +def _code_contents(code, docstring=None): + r"""Return the signature contents of a code object. + + By providing direct access to the code object of the + function, Python makes this extremely easy. Hooray! + + Unfortunately, older versions of Python include line + number indications in the compiled byte code. Boo! + So we remove the line number byte codes to prevent + recompilations from moving a Python function. + + See: + - https://docs.python.org/2/library/inspect.html + - http://python-reference.readthedocs.io/en/latest/docs/code/index.html + + For info on what each co\_ variable provides + + The signature is as follows (should be byte/chars): + co_argcount, len(co_varnames), len(co_cellvars), len(co_freevars), + ( comma separated signature for each object in co_consts ), + ( comma separated signature for each object in co_names ), + ( The bytecode with line number bytecodes removed from co_code ) + + co_argcount - Returns the number of positional arguments (including arguments with default values). + co_varnames - Returns a tuple containing the names of the local variables (starting with the argument names). + co_cellvars - Returns a tuple containing the names of local variables that are referenced by nested functions. + co_freevars - Returns a tuple containing the names of free variables. (?) + co_consts - Returns a tuple containing the literals used by the bytecode. + co_names - Returns a tuple containing the names used by the bytecode. + co_code - Returns a string representing the sequence of bytecode instructions. + + """ + + # contents = [] + + # The code contents depends on the number of local variables + # but not their actual names. + contents = bytearray("{}, {}".format(code.co_argcount, len(code.co_varnames)), 'utf-8') + + contents.extend(b", ") + contents.extend(bytearray(str(len(code.co_cellvars)), 'utf-8')) + contents.extend(b", ") + contents.extend(bytearray(str(len(code.co_freevars)), 'utf-8')) + + # The code contents depends on any constants accessed by the + # function. Note that we have to call _object_contents on each + # constants because the code object of nested functions can + # show-up among the constants. + z = [_object_contents(cc) for cc in code.co_consts if cc != docstring] + contents.extend(b',(') + contents.extend(bytearray(',', 'utf-8').join(z)) + contents.extend(b')') + + # The code contents depends on the variable names used to + # accessed global variable, as changing the variable name changes + # the variable actually accessed and therefore changes the + # function result. + z= [bytearray(_object_contents(cc)) for cc in code.co_names] + contents.extend(b',(') + contents.extend(bytearray(',','utf-8').join(z)) + contents.extend(b')') + + # The code contents depends on its actual code!!! + contents.extend(b',(') + contents.extend(code.co_code) + contents.extend(b')') + + return contents + + +def _function_contents(func): + """ + The signature is as follows (should be byte/chars): + < _code_contents (see above) from func.__code__ > + ,( comma separated _object_contents for function argument defaults) + ,( comma separated _object_contents for any closure contents ) + + + See also: https://docs.python.org/3/reference/datamodel.html + - func.__code__ - The code object representing the compiled function body. + - func.__defaults__ - A tuple containing default argument values for those arguments that have defaults, or None if no arguments have a default value + - func.__closure__ - None or a tuple of cells that contain bindings for the function's free variables. + + :Returns: + Signature contents of a function. (in bytes) + """ + + contents = [_code_contents(func.__code__, func.__doc__)] + + # The function contents depends on the value of defaults arguments + if func.__defaults__: + + function_defaults_contents = [_object_contents(cc) for cc in func.__defaults__] + + defaults = bytearray(b',(') + defaults.extend(bytearray(b',').join(function_defaults_contents)) + defaults.extend(b')') + + contents.append(defaults) + else: + contents.append(b',()') + + # The function contents depends on the closure captured cell values. + closure = func.__closure__ or [] + + try: + closure_contents = [_object_contents(x.cell_contents) for x in closure] + except AttributeError: + closure_contents = [] + + contents.append(b',(') + contents.append(bytearray(b',').join(closure_contents)) + contents.append(b')') + + retval = bytearray(b'').join(contents) + return retval + + +def _object_instance_content(obj): + """ + Returns consistant content for a action class or an instance thereof + + :Parameters: + - `obj` Should be either and action class or an instance thereof + + :Returns: + bytearray or bytes representing the obj suitable for generating a signature from. + """ + retval = bytearray() + + if obj is None: + return b'N.' + + if isinstance(obj, SCons.Util.BaseStringTypes): + return SCons.Util.to_bytes(obj) + + inst_class = obj.__class__ + inst_class_name = bytearray(obj.__class__.__name__,'utf-8') + inst_class_module = bytearray(obj.__class__.__module__,'utf-8') + inst_class_hierarchy = bytearray(repr(inspect.getclasstree([obj.__class__,])),'utf-8') + # print("ICH:%s : %s"%(inst_class_hierarchy, repr(obj))) + + properties = [(p, getattr(obj, p, "None")) for p in dir(obj) if not (p[:2] == '__' or inspect.ismethod(getattr(obj, p)) or inspect.isbuiltin(getattr(obj,p))) ] + properties.sort() + properties_str = ','.join(["%s=%s"%(p[0],p[1]) for p in properties]) + properties_bytes = bytearray(properties_str,'utf-8') + + methods = [p for p in dir(obj) if inspect.ismethod(getattr(obj, p))] + methods.sort() + + method_contents = [] + for m in methods: + # print("Method:%s"%m) + v = _function_contents(getattr(obj, m)) + # print("[%s->]V:%s [%s]"%(m,v,type(v))) + method_contents.append(v) + + retval = bytearray(b'{') + retval.extend(inst_class_name) + retval.extend(b":") + retval.extend(inst_class_module) + retval.extend(b'}[[') + retval.extend(inst_class_hierarchy) + retval.extend(b']]{{') + retval.extend(bytearray(b",").join(method_contents)) + retval.extend(b"}}{{{") + retval.extend(properties_bytes) + retval.extend(b'}}}') + return retval + + # print("class :%s"%inst_class) + # print("class_name :%s"%inst_class_name) + # print("class_module :%s"%inst_class_module) + # print("Class hier :\n%s"%pp.pformat(inst_class_hierarchy)) + # print("Inst Properties:\n%s"%pp.pformat(properties)) + # print("Inst Methods :\n%s"%pp.pformat(methods)) + +def _actionAppend(act1, act2): + # This function knows how to slap two actions together. + # Mainly, it handles ListActions by concatenating into + # a single ListAction. + a1 = Action(act1) + a2 = Action(act2) + if a1 is None: + return a2 + if a2 is None: + return a1 + if isinstance(a1, ListAction): + if isinstance(a2, ListAction): + return ListAction(a1.list + a2.list) + else: + return ListAction(a1.list + [ a2 ]) + else: + if isinstance(a2, ListAction): + return ListAction([ a1 ] + a2.list) + else: + return ListAction([ a1, a2 ]) + + +def _do_create_keywords(args, kw): + """This converts any arguments after the action argument into + their equivalent keywords and adds them to the kw argument. + """ + v = kw.get('varlist', ()) + # prevent varlist="FOO" from being interpreted as ['F', 'O', 'O'] + if is_String(v): v = (v,) + kw['varlist'] = tuple(v) + if args: + # turn positional args into equivalent keywords + cmdstrfunc = args[0] + if cmdstrfunc is None or is_String(cmdstrfunc): + kw['cmdstr'] = cmdstrfunc + elif callable(cmdstrfunc): + kw['strfunction'] = cmdstrfunc + else: + raise SCons.Errors.UserError( + 'Invalid command display variable type. ' + 'You must either pass a string or a callback which ' + 'accepts (target, source, env) as parameters.') + if len(args) > 1: + kw['varlist'] = tuple(SCons.Util.flatten(args[1:])) + kw['varlist'] + if kw.get('strfunction', _null) is not _null \ + and kw.get('cmdstr', _null) is not _null: + raise SCons.Errors.UserError( + 'Cannot have both strfunction and cmdstr args to Action()') + + +def _do_create_action(act, kw): + """This is the actual "implementation" for the + Action factory method, below. This handles the + fact that passing lists to Action() itself has + different semantics than passing lists as elements + of lists. + + The former will create a ListAction, the latter + will create a CommandAction by converting the inner + list elements to strings.""" + + if isinstance(act, ActionBase): + return act + + if is_String(act): + var=SCons.Util.get_environment_var(act) + if var: + # This looks like a string that is purely an Environment + # variable reference, like "$FOO" or "${FOO}". We do + # something special here...we lazily evaluate the contents + # of that Environment variable, so a user could put something + # like a function or a CommandGenerator in that variable + # instead of a string. + return LazyAction(var, kw) + commands = str(act).split('\n') + if len(commands) == 1: + return CommandAction(commands[0], **kw) + # The list of string commands may include a LazyAction, so we + # reprocess them via _do_create_list_action. + return _do_create_list_action(commands, kw) + + if is_List(act): + return CommandAction(act, **kw) + + if callable(act): + try: + gen = kw['generator'] + del kw['generator'] + except KeyError: + gen = 0 + if gen: + action_type = CommandGeneratorAction + else: + action_type = FunctionAction + return action_type(act, kw) + + # Catch a common error case with a nice message: + if isinstance(act, int) or isinstance(act, float): + raise TypeError("Don't know how to create an Action from a number (%s)"%act) + # Else fail silently (???) + return None + + +def _do_create_list_action(act, kw): + """A factory for list actions. Convert the input list into Actions + and then wrap them in a ListAction.""" + acts = [] + for a in act: + aa = _do_create_action(a, kw) + if aa is not None: acts.append(aa) + if not acts: + return ListAction([]) + elif len(acts) == 1: + return acts[0] + else: + return ListAction(acts) + + +def Action(act, *args, **kw): + """A factory for action objects.""" + # Really simple: the _do_create_* routines do the heavy lifting. + _do_create_keywords(args, kw) + if is_List(act): + return _do_create_list_action(act, kw) + return _do_create_action(act, kw) + + +class ActionBase: + """Base class for all types of action objects that can be held by + other objects (Builders, Executors, etc.) This provides the + common methods for manipulating and combining those actions.""" + + def __eq__(self, other): + return self.__dict__ == other + + def no_batch_key(self, env, target, source): + return None + + batch_key = no_batch_key + + def genstring(self, target, source, env): + return str(self) + + def get_contents(self, target, source, env): + result = self.get_presig(target, source, env) + + if not isinstance(result,(bytes, bytearray)): + result = bytearray(result, 'utf-8') + else: + # Make a copy and put in bytearray, without this the contents returned by get_presig + # can be changed by the logic below, appending with each call and causing very + # hard to track down issues... + result = bytearray(result) + + # At this point everything should be a bytearray + + # This should never happen, as the Action() factory should wrap + # the varlist, but just in case an action is created directly, + # we duplicate this check here. + vl = self.get_varlist(target, source, env) + if is_String(vl): vl = (vl,) + for v in vl: + # do the subst this way to ignore $(...$) parts: + if isinstance(result, bytearray): + result.extend(SCons.Util.to_bytes(env.subst_target_source('${'+v+'}', SCons.Subst.SUBST_SIG, target, source))) + else: + raise Exception("WE SHOULD NEVER GET HERE result should be bytearray not:%s"%type(result)) + # result.append(SCons.Util.to_bytes(env.subst_target_source('${'+v+'}', SCons.Subst.SUBST_SIG, target, source))) + + + if isinstance(result, (bytes,bytearray)): + return result + else: + raise Exception("WE SHOULD NEVER GET HERE - #2 result should be bytearray not:%s" % type(result)) + # return b''.join(result) + + def __add__(self, other): + return _actionAppend(self, other) + + def __radd__(self, other): + return _actionAppend(other, self) + + def presub_lines(self, env): + # CommandGeneratorAction needs a real environment + # in order to return the proper string here, since + # it may call LazyAction, which looks up a key + # in that env. So we temporarily remember the env here, + # and CommandGeneratorAction will use this env + # when it calls its _generate method. + self.presub_env = env + lines = str(self).split('\n') + self.presub_env = None # don't need this any more + return lines + + def get_varlist(self, target, source, env, executor=None): + return self.varlist + + def get_targets(self, env, executor): + """ + Returns the type of targets ($TARGETS, $CHANGED_TARGETS) used + by this action. + """ + return self.targets + + +class _ActionAction(ActionBase): + """Base class for actions that create output objects.""" + def __init__(self, cmdstr=_null, strfunction=_null, varlist=(), + presub=_null, chdir=None, exitstatfunc=None, + batch_key=None, targets='$TARGETS', + **kw): + self.cmdstr = cmdstr + if strfunction is not _null: + if strfunction is None: + self.cmdstr = None + else: + self.strfunction = strfunction + self.varlist = varlist + self.presub = presub + self.chdir = chdir + if not exitstatfunc: + exitstatfunc = default_exitstatfunc + self.exitstatfunc = exitstatfunc + + self.targets = targets + + if batch_key: + if not callable(batch_key): + # They have set batch_key, but not to their own + # callable. The default behavior here will batch + # *all* targets+sources using this action, separated + # for each construction environment. + def default_batch_key(self, env, target, source): + return (id(self), id(env)) + batch_key = default_batch_key + SCons.Util.AddMethod(self, batch_key, 'batch_key') + + def print_cmd_line(self, s, target, source, env): + """ + In python 3, and in some of our tests, sys.stdout is + a String io object, and it takes unicode strings only + This code assumes s is a regular string. + """ + sys.stdout.write(s + "\n") + + def __call__(self, target, source, env, + exitstatfunc=_null, + presub=_null, + show=_null, + execute=_null, + chdir=_null, + executor=None): + if not is_List(target): + target = [target] + if not is_List(source): + source = [source] + + if presub is _null: + presub = self.presub + if presub is _null: + presub = print_actions_presub + if exitstatfunc is _null: + exitstatfunc = self.exitstatfunc + if show is _null: + show = print_actions + if execute is _null: + execute = execute_actions + if chdir is _null: + chdir = self.chdir + save_cwd = None + if chdir: + save_cwd = os.getcwd() + try: + chdir = str(chdir.get_abspath()) + except AttributeError: + if not is_String(chdir): + if executor: + chdir = str(executor.batches[0].targets[0].dir) + else: + chdir = str(target[0].dir) + if presub: + if executor: + target = executor.get_all_targets() + source = executor.get_all_sources() + t = ' and '.join(map(str, target)) + l = '\n '.join(self.presub_lines(env)) + out = "Building %s with action:\n %s\n" % (t, l) + sys.stdout.write(out) + cmd = None + if show and self.strfunction: + if executor: + target = executor.get_all_targets() + source = executor.get_all_sources() + try: + cmd = self.strfunction(target, source, env, executor) + except TypeError: + cmd = self.strfunction(target, source, env) + if cmd: + if chdir: + cmd = ('os.chdir(%s)\n' % repr(chdir)) + cmd + try: + get = env.get + except AttributeError: + print_func = self.print_cmd_line + else: + print_func = get('PRINT_CMD_LINE_FUNC') + if not print_func: + print_func = self.print_cmd_line + print_func(cmd, target, source, env) + stat = 0 + if execute: + if chdir: + os.chdir(chdir) + try: + stat = self.execute(target, source, env, executor=executor) + if isinstance(stat, SCons.Errors.BuildError): + s = exitstatfunc(stat.status) + if s: + stat.status = s + else: + stat = s + else: + stat = exitstatfunc(stat) + finally: + if save_cwd: + os.chdir(save_cwd) + if cmd and save_cwd: + print_func('os.chdir(%s)' % repr(save_cwd), target, source, env) + + return stat + + +def _string_from_cmd_list(cmd_list): + """Takes a list of command line arguments and returns a pretty + representation for printing.""" + cl = [] + for arg in map(str, cmd_list): + if ' ' in arg or '\t' in arg: + arg = '"' + arg + '"' + cl.append(arg) + return ' '.join(cl) + +default_ENV = None + + +def get_default_ENV(env): + """Returns an execution environment. + + If there is one in *env*, just use it, else return the Default + Environment, insantiated if necessary. + + A fiddlin' little function that has an ``import SCons.Environment`` + which cannot be moved to the top level without creating an import + loop. Since this import creates a local variable named ``SCons``, + it blocks access to the global variable, so we move it here to + prevent complaints about local variables being used uninitialized. + """ + global default_ENV + + try: + return env['ENV'] + except KeyError: + if not default_ENV: + import SCons.Environment + # This is a hideously expensive way to get a default execution + # environment. What it really should do is run the platform + # setup to get the default ENV. Fortunately, it's incredibly + # rare for an Environment not to have an execution environment, + # so we're not going to worry about it overmuch. + default_ENV = SCons.Environment.Environment()['ENV'] + return default_ENV + + +def _resolve_shell_env(env, target, source): + """Returns a resolved execution environment. + + First get the execution environment. Then if ``SHELL_ENV_GENERATORS`` + is set and is iterable, call each function to allow it to alter the + created execution environment, passing each the returned execution + environment from the previous call. + + .. versionadded:: 4.4 + """ + ENV = get_default_ENV(env) + shell_gen = env.get('SHELL_ENV_GENERATORS') + if shell_gen: + try: + shell_gens = iter(shell_gen) + except TypeError: + raise SCons.Errors.UserError("SHELL_ENV_GENERATORS must be iteratable.") + else: + ENV = ENV.copy() + for generator in shell_gens: + ENV = generator(env, target, source, ENV) + if not isinstance(ENV, dict): + raise SCons.Errors.UserError(f"SHELL_ENV_GENERATORS function: {generator} must return a dict.") + return ENV + + +def _subproc(scons_env, cmd, error='ignore', **kw): + """Wrapper for subprocess which pulls from construction env. + + Use for calls to subprocess which need to interpolate values from + an SCons construction environment into the environment passed to + subprocess. Adds an an error-handling argument. Adds ability + to specify std{in,out,err} with "'devnull'" tag. + """ + # TODO: just uses subprocess.DEVNULL now, we can drop the "devnull" + # string now - it is a holdover from Py2, which didn't have DEVNULL. + for stream in 'stdin', 'stdout', 'stderr': + io = kw.get(stream) + if is_String(io) and io == 'devnull': + kw[stream] = DEVNULL + + # Figure out what execution environment to use + ENV = kw.get('env', None) + if ENV is None: ENV = get_default_ENV(scons_env) + + kw['env'] = SCons.Util.sanitize_shell_env(ENV) + + try: + pobj = subprocess.Popen(cmd, **kw) + except EnvironmentError as e: + if error == 'raise': raise + # return a dummy Popen instance that only returns error + class dummyPopen: + def __init__(self, e): + self.exception = e + # Add the following two to enable using the return value as a context manager + # for example + # with Action._subproc(...) as po: + # logic here which uses po + + def __enter__(self): + return self + + def __exit__(self, *args): + pass + + def communicate(self, input=None): + return ('', '') + + def wait(self): + return -self.exception.errno + + stdin = None + class f: + def read(self): return '' + def readline(self): return '' + def __iter__(self): return iter(()) + stdout = stderr = f() + pobj = dummyPopen(e) + finally: + # clean up open file handles stored in parent's kw + for k, v in kw.items(): + if inspect.ismethod(getattr(v, 'close', None)): + v.close() + + return pobj + + +class CommandAction(_ActionAction): + """Class for command-execution actions.""" + def __init__(self, cmd, **kw): + # Cmd can actually be a list or a single item; if it's a + # single item it should be the command string to execute; if a + # list then it should be the words of the command string to + # execute. Only a single command should be executed by this + # object; lists of commands should be handled by embedding + # these objects in a ListAction object (which the Action() + # factory above does). cmd will be passed to + # Environment.subst_list() for substituting environment + # variables. + if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.CommandAction') + + super().__init__(**kw) + if is_List(cmd): + if [c for c in cmd if is_List(c)]: + raise TypeError("CommandAction should be given only " + "a single command") + self.cmd_list = cmd + + def __str__(self): + if is_List(self.cmd_list): + return ' '.join(map(str, self.cmd_list)) + return str(self.cmd_list) + + def process(self, target, source, env, executor=None, overrides=False): + if executor: + result = env.subst_list(self.cmd_list, 0, executor=executor, overrides=overrides) + else: + result = env.subst_list(self.cmd_list, 0, target, source, overrides=overrides) + silent = None + ignore = None + while True: + try: c = result[0][0][0] + except IndexError: c = None + if c == '@': silent = 1 + elif c == '-': ignore = 1 + else: break + result[0][0] = result[0][0][1:] + try: + if not result[0][0]: + result[0] = result[0][1:] + except IndexError: + pass + return result, ignore, silent + + def strfunction(self, target, source, env, executor=None, overrides=False): + if self.cmdstr is None: + return None + if self.cmdstr is not _null: + from SCons.Subst import SUBST_RAW + if executor: + c = env.subst(self.cmdstr, SUBST_RAW, executor=executor, overrides=overrides) + else: + c = env.subst(self.cmdstr, SUBST_RAW, target, source, overrides=overrides) + if c: + return c + cmd_list, ignore, silent = self.process(target, source, env, executor, overrides=overrides) + if silent: + return '' + return _string_from_cmd_list(cmd_list[0]) + + def execute(self, target, source, env, executor=None): + """Execute a command action. + + This will handle lists of commands as well as individual commands, + because construction variable substitution may turn a single + "command" into a list. This means that this class can actually + handle lists of commands, even though that's not how we use it + externally. + """ + escape_list = SCons.Subst.escape_list + flatten_sequence = SCons.Util.flatten_sequence + + try: + shell = env['SHELL'] + except KeyError: + raise SCons.Errors.UserError('Missing SHELL construction variable.') + + try: + spawn = env['SPAWN'] + except KeyError: + raise SCons.Errors.UserError('Missing SPAWN construction variable.') + else: + if is_String(spawn): + spawn = env.subst(spawn, raw=1, conv=lambda x: x) + + escape = env.get('ESCAPE', lambda x: x) + + ENV = _resolve_shell_env(env, target, source) + + # Ensure that the ENV values are all strings: + for key, value in ENV.items(): + if not is_String(value): + if is_List(value): + # If the value is a list, then we assume it is a + # path list, because that's a pretty common list-like + # value to stick in an environment variable: + value = flatten_sequence(value) + ENV[key] = os.pathsep.join(map(str, value)) + else: + # If it isn't a string or a list, then we just coerce + # it to a string, which is the proper way to handle + # Dir and File instances and will produce something + # reasonable for just about everything else: + ENV[key] = str(value) + + if executor: + target = executor.get_all_targets() + source = executor.get_all_sources() + cmd_list, ignore, silent = self.process(target, list(map(rfile, source)), env, executor) + + # Use len() to filter out any "command" that's zero-length. + for cmd_line in filter(len, cmd_list): + # Escape the command line for the interpreter we are using. + cmd_line = escape_list(cmd_line, escape) + result = spawn(shell, escape, cmd_line[0], cmd_line, ENV) + if not ignore and result: + msg = "Error %s" % result + return SCons.Errors.BuildError(errstr=msg, + status=result, + action=self, + command=cmd_line) + return 0 + + def get_presig(self, target, source, env, executor=None): + """Return the signature contents of this action's command line. + + This strips $(-$) and everything in between the string, + since those parts don't affect signatures. + """ + from SCons.Subst import SUBST_SIG + cmd = self.cmd_list + if is_List(cmd): + cmd = ' '.join(map(str, cmd)) + else: + cmd = str(cmd) + if executor: + return env.subst_target_source(cmd, SUBST_SIG, executor=executor) + else: + return env.subst_target_source(cmd, SUBST_SIG, target, source) + + def get_implicit_deps(self, target, source, env, executor=None): + """Return the implicit dependencies of this action's command line.""" + icd = env.get('IMPLICIT_COMMAND_DEPENDENCIES', True) + if is_String(icd) and icd[:1] == '$': + icd = env.subst(icd) + + if not icd or str(icd).lower() in ('0', 'none', 'false', 'no', 'off'): + return [] + + try: + icd_int = int(icd) + except ValueError: + icd_int = None + + if (icd_int and icd_int > 1) or str(icd).lower() == 'all': + # An integer value greater than 1 specifies the number of entries + # to scan. "all" means to scan all. + return self._get_implicit_deps_heavyweight(target, source, env, executor, icd_int) + else: + # Everything else (usually 1 or True) means that we want + # lightweight dependency scanning. + return self._get_implicit_deps_lightweight(target, source, env, executor) + + def _get_implicit_deps_lightweight(self, target, source, env, executor): + """ + Lightweight dependency scanning involves only scanning the first entry + in an action string, even if it contains &&. + """ + from SCons.Subst import SUBST_SIG + if executor: + cmd_list = env.subst_list(self.cmd_list, SUBST_SIG, executor=executor) + else: + cmd_list = env.subst_list(self.cmd_list, SUBST_SIG, target, source) + res = [] + for cmd_line in cmd_list: + if cmd_line: + d = str(cmd_line[0]) + m = strip_quotes.match(d) + if m: + d = m.group(1) + d = env.WhereIs(d) + if d: + res.append(env.fs.File(d)) + return res + + def _get_implicit_deps_heavyweight(self, target, source, env, executor, + icd_int): + """ + Heavyweight dependency scanning involves scanning more than just the + first entry in an action string. The exact behavior depends on the + value of icd_int. Only files are taken as implicit dependencies; + directories are ignored. + + If icd_int is an integer value, it specifies the number of entries to + scan for implicit dependencies. Action strings are also scanned after + a &&. So for example, if icd_int=2 and the action string is + "cd && $PYTHON $SCRIPT_PATH ", the implicit + dependencies would be the path to the python binary and the path to the + script. + + If icd_int is None, all entries are scanned for implicit dependencies. + """ + + # Avoid circular and duplicate dependencies by not providing source, + # target, or executor to subst_list. This causes references to + # $SOURCES, $TARGETS, and all related variables to disappear. + from SCons.Subst import SUBST_SIG + cmd_list = env.subst_list(self.cmd_list, SUBST_SIG, conv=lambda x: x) + res = [] + + for cmd_line in cmd_list: + if cmd_line: + entry_count = 0 + for entry in cmd_line: + d = str(entry) + if ((icd_int is None or entry_count < icd_int) and + not d.startswith(('&', '-', '/') if os.name == 'nt' + else ('&', '-'))): + m = strip_quotes.match(d) + if m: + d = m.group(1) + + if d: + # Resolve the first entry in the command string using + # PATH, which env.WhereIs() looks in. + # For now, only match files, not directories. + p = os.path.abspath(d) if os.path.isfile(d) else None + if not p and entry_count == 0: + p = env.WhereIs(d) + + if p: + res.append(env.fs.File(p)) + + entry_count = entry_count + 1 + else: + entry_count = 0 if d == '&&' else entry_count + 1 + + # Despite not providing source and target to env.subst() above, we + # can still end up with sources in this list. For example, files in + # LIBS will still resolve in env.subst(). This won't result in + # circular dependencies, but it causes problems with cache signatures + # changing between full and incremental builds. + return [r for r in res if r not in target and r not in source] + + +class CommandGeneratorAction(ActionBase): + """Class for command-generator actions.""" + def __init__(self, generator, kw): + if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.CommandGeneratorAction') + self.generator = generator + self.gen_kw = kw + self.varlist = kw.get('varlist', ()) + self.targets = kw.get('targets', '$TARGETS') + + def _generate(self, target, source, env, for_signature, executor=None): + # ensure that target is a list, to make it easier to write + # generator functions: + if not is_List(target): + target = [target] + + if executor: + target = executor.get_all_targets() + source = executor.get_all_sources() + ret = self.generator(target=target, + source=source, + env=env, + for_signature=for_signature) + gen_cmd = Action(ret, **self.gen_kw) + if not gen_cmd: + raise SCons.Errors.UserError("Object returned from command generator: %s cannot be used to create an Action." % repr(ret)) + return gen_cmd + + def __str__(self): + try: + env = self.presub_env + except AttributeError: + env = None + if env is None: + env = SCons.Defaults.DefaultEnvironment() + act = self._generate([], [], env, 1) + return str(act) + + def batch_key(self, env, target, source): + return self._generate(target, source, env, 1).batch_key(env, target, source) + + def genstring(self, target, source, env, executor=None): + return self._generate(target, source, env, 1, executor).genstring(target, source, env) + + def __call__(self, target, source, env, exitstatfunc=_null, presub=_null, + show=_null, execute=_null, chdir=_null, executor=None): + act = self._generate(target, source, env, 0, executor) + if act is None: + raise SCons.Errors.UserError( + "While building `%s': " + "Cannot deduce file extension from source files: %s" + % (repr(list(map(str, target))), repr(list(map(str, source)))) + ) + return act( + target, source, env, exitstatfunc, presub, show, execute, chdir, executor + ) + + def get_presig(self, target, source, env, executor=None): + """Return the signature contents of this action's command line. + + This strips $(-$) and everything in between the string, + since those parts don't affect signatures. + """ + return self._generate(target, source, env, 1, executor).get_presig(target, source, env) + + def get_implicit_deps(self, target, source, env, executor=None): + return self._generate(target, source, env, 1, executor).get_implicit_deps(target, source, env) + + def get_varlist(self, target, source, env, executor=None): + return self._generate(target, source, env, 1, executor).get_varlist(target, source, env, executor) + + def get_targets(self, env, executor): + return self._generate(None, None, env, 1, executor).get_targets(env, executor) + + +class LazyAction(CommandGeneratorAction, CommandAction): + """ + A LazyAction is a kind of hybrid generator and command action for + strings of the form "$VAR". These strings normally expand to other + strings (think "$CCCOM" to "$CC -c -o $TARGET $SOURCE"), but we also + want to be able to replace them with functions in the construction + environment. Consequently, we want lazy evaluation and creation of + an Action in the case of the function, but that's overkill in the more + normal case of expansion to other strings. + + So we do this with a subclass that's both a generator *and* + a command action. The overridden methods all do a quick check + of the construction variable, and if it's a string we just call + the corresponding CommandAction method to do the heavy lifting. + If not, then we call the same-named CommandGeneratorAction method. + The CommandGeneratorAction methods work by using the overridden + _generate() method, that is, our own way of handling "generation" of + an action based on what's in the construction variable. + """ + + def __init__(self, var, kw): + if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.LazyAction') + CommandAction.__init__(self, '${'+var+'}', **kw) + self.var = SCons.Util.to_String(var) + self.gen_kw = kw + + def get_parent_class(self, env): + c = env.get(self.var) + if is_String(c) and '\n' not in c: + return CommandAction + return CommandGeneratorAction + + def _generate_cache(self, env): + if env: + c = env.get(self.var, '') + else: + c = '' + gen_cmd = Action(c, **self.gen_kw) + if not gen_cmd: + raise SCons.Errors.UserError("$%s value %s cannot be used to create an Action." % (self.var, repr(c))) + return gen_cmd + + def _generate(self, target, source, env, for_signature, executor=None): + return self._generate_cache(env) + + def __call__(self, target, source, env, *args, **kw): + c = self.get_parent_class(env) + return c.__call__(self, target, source, env, *args, **kw) + + def get_presig(self, target, source, env): + c = self.get_parent_class(env) + return c.get_presig(self, target, source, env) + + def get_varlist(self, target, source, env, executor=None): + c = self.get_parent_class(env) + return c.get_varlist(self, target, source, env, executor) + + +class FunctionAction(_ActionAction): + """Class for Python function actions.""" + + def __init__(self, execfunction, kw): + if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.FunctionAction') + + self.execfunction = execfunction + try: + self.funccontents = _callable_contents(execfunction) + except AttributeError: + try: + # See if execfunction will do the heavy lifting for us. + self.gc = execfunction.get_contents + except AttributeError: + # This is weird, just do the best we can. + self.funccontents = _object_contents(execfunction) + + super().__init__(**kw) + + def function_name(self): + try: + return self.execfunction.__name__ + except AttributeError: + try: + return self.execfunction.__class__.__name__ + except AttributeError: + return "unknown_python_function" + + def strfunction(self, target, source, env, executor=None): + if self.cmdstr is None: + return None + if self.cmdstr is not _null: + from SCons.Subst import SUBST_RAW + if executor: + c = env.subst(self.cmdstr, SUBST_RAW, executor=executor) + else: + c = env.subst(self.cmdstr, SUBST_RAW, target, source) + if c: + return c + + def array(a): + def quote(s): + try: + str_for_display = s.str_for_display + except AttributeError: + s = repr(s) + else: + s = str_for_display() + return s + return '[' + ", ".join(map(quote, a)) + ']' + try: + strfunc = self.execfunction.strfunction + except AttributeError: + pass + else: + if strfunc is None: + return None + if callable(strfunc): + return strfunc(target, source, env) + name = self.function_name() + tstr = array(target) + sstr = array(source) + return "%s(%s, %s)" % (name, tstr, sstr) + + def __str__(self): + name = self.function_name() + if name == 'ActionCaller': + return str(self.execfunction) + return "%s(target, source, env)" % name + + def execute(self, target, source, env, executor=None): + exc_info = (None,None,None) + try: + if executor: + target = executor.get_all_targets() + source = executor.get_all_sources() + rsources = list(map(rfile, source)) + try: + result = self.execfunction(target=target, source=rsources, env=env) + except KeyboardInterrupt as e: + raise + except SystemExit as e: + raise + except Exception as e: + result = e + exc_info = sys.exc_info() + + if result: + result = SCons.Errors.convert_to_BuildError(result, exc_info) + result.node=target + result.action=self + try: + result.command=self.strfunction(target, source, env, executor) + except TypeError: + result.command=self.strfunction(target, source, env) + + # FIXME: This maintains backward compatibility with respect to + # which type of exceptions were returned by raising an + # exception and which ones were returned by value. It would + # probably be best to always return them by value here, but + # some codes do not check the return value of Actions and I do + # not have the time to modify them at this point. + if (exc_info[1] and + not isinstance(exc_info[1],EnvironmentError)): + raise result + + return result + finally: + # Break the cycle between the traceback object and this + # function stack frame. See the sys.exc_info() doc info for + # more information about this issue. + del exc_info + + def get_presig(self, target, source, env): + """Return the signature contents of this callable action.""" + try: + return self.gc(target, source, env) + except AttributeError: + return self.funccontents + + def get_implicit_deps(self, target, source, env): + return [] + +class ListAction(ActionBase): + """Class for lists of other actions.""" + def __init__(self, actionlist): + if SCons.Debug.track_instances: logInstanceCreation(self, 'Action.ListAction') + def list_of_actions(x): + if isinstance(x, ActionBase): + return x + return Action(x) + self.list = list(map(list_of_actions, actionlist)) + # our children will have had any varlist + # applied; we don't need to do it again + self.varlist = () + self.targets = '$TARGETS' + + def genstring(self, target, source, env): + return '\n'.join([a.genstring(target, source, env) for a in self.list]) + + def __str__(self): + return '\n'.join(map(str, self.list)) + + def presub_lines(self, env): + return SCons.Util.flatten_sequence( + [a.presub_lines(env) for a in self.list]) + + def get_presig(self, target, source, env): + """Return the signature contents of this action list. + + Simple concatenation of the signatures of the elements. + """ + return b"".join([bytes(x.get_contents(target, source, env)) for x in self.list]) + + def __call__(self, target, source, env, exitstatfunc=_null, presub=_null, + show=_null, execute=_null, chdir=_null, executor=None): + if executor: + target = executor.get_all_targets() + source = executor.get_all_sources() + for act in self.list: + stat = act(target, source, env, exitstatfunc, presub, + show, execute, chdir, executor) + if stat: + return stat + return 0 + + def get_implicit_deps(self, target, source, env): + result = [] + for act in self.list: + result.extend(act.get_implicit_deps(target, source, env)) + return result + + def get_varlist(self, target, source, env, executor=None): + result = OrderedDict() + for act in self.list: + for var in act.get_varlist(target, source, env, executor): + result[var] = True + return list(result.keys()) + + +class ActionCaller: + """A class for delaying calling an Action function with specific + (positional and keyword) arguments until the Action is actually + executed. + + This class looks to the rest of the world like a normal Action object, + but what it's really doing is hanging on to the arguments until we + have a target, source and env to use for the expansion. + """ + def __init__(self, parent, args, kw): + self.parent = parent + self.args = args + self.kw = kw + + def get_contents(self, target, source, env): + actfunc = self.parent.actfunc + try: + # "self.actfunc" is a function. + contents = actfunc.__code__.co_code + except AttributeError: + # "self.actfunc" is a callable object. + try: + contents = actfunc.__call__.__func__.__code__.co_code + except AttributeError: + # No __call__() method, so it might be a builtin + # or something like that. Do the best we can. + contents = repr(actfunc) + + return contents + + def subst(self, s, target, source, env): + # If s is a list, recursively apply subst() + # to every element in the list + if is_List(s): + result = [] + for elem in s: + result.append(self.subst(elem, target, source, env)) + return self.parent.convert(result) + + # Special-case hack: Let a custom function wrapped in an + # ActionCaller get at the environment through which the action + # was called by using this hard-coded value as a special return. + if s == '$__env__': + return env + elif is_String(s): + return env.subst(s, 1, target, source) + return self.parent.convert(s) + + def subst_args(self, target, source, env): + return [self.subst(x, target, source, env) for x in self.args] + + def subst_kw(self, target, source, env): + kw = {} + for key in list(self.kw.keys()): + kw[key] = self.subst(self.kw[key], target, source, env) + return kw + + def __call__(self, target, source, env, executor=None): + args = self.subst_args(target, source, env) + kw = self.subst_kw(target, source, env) + return self.parent.actfunc(*args, **kw) + + def strfunction(self, target, source, env): + args = self.subst_args(target, source, env) + kw = self.subst_kw(target, source, env) + return self.parent.strfunc(*args, **kw) + + def __str__(self): + return self.parent.strfunc(*self.args, **self.kw) + + +class ActionFactory: + """A factory class that will wrap up an arbitrary function + as an SCons-executable Action object. + + The real heavy lifting here is done by the ActionCaller class. + We just collect the (positional and keyword) arguments that we're + called with and give them to the ActionCaller object we create, + so it can hang onto them until it needs them. + """ + def __init__(self, actfunc, strfunc, convert=lambda x: x): + self.actfunc = actfunc + self.strfunc = strfunc + self.convert = convert + + def __call__(self, *args, **kw): + ac = ActionCaller(self, args, kw) + action = Action(ac, strfunction=ac.strfunction) + return action + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Builder.py b/scons/scons-local-4.5.1/SCons/Builder.py new file mode 100644 index 000000000..ab51c3225 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Builder.py @@ -0,0 +1,906 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +SCons.Builder + +Builder object subsystem. + +A Builder object is a callable that encapsulates information about how +to execute actions to create a target Node (file) from source Nodes +(files), and how to create those dependencies for tracking. + +The main entry point here is the Builder() factory method. This provides +a procedural interface that creates the right underlying Builder object +based on the keyword arguments supplied and the types of the arguments. + +The goal is for this external interface to be simple enough that the +vast majority of users can create new Builders as necessary to support +building new types of files in their configurations, without having to +dive any deeper into this subsystem. + +The base class here is BuilderBase. This is a concrete base class which +does, in fact, represent the Builder objects that we (or users) create. + +There is also a proxy that looks like a Builder: + + CompositeBuilder + + This proxies for a Builder with an action that is actually a + dictionary that knows how to map file suffixes to a specific + action. This is so that we can invoke different actions + (compilers, compile options) for different flavors of source + files. + +Builders and their proxies have the following public interface methods +used by other modules: + + - __call__() + THE public interface. Calling a Builder object (with the + use of internal helper methods) sets up the target and source + dependencies, appropriate mapping to a specific action, and the + environment manipulation necessary for overridden construction + variable. This also takes care of warning about possible mistakes + in keyword arguments. + + - add_emitter() + Adds an emitter for a specific file suffix, used by some Tool + modules to specify that (for example) a yacc invocation on a .y + can create a .h *and* a .c file. + + - add_action() + Adds an action for a specific file suffix, heavily used by + Tool modules to add their specific action(s) for turning + a source file into an object file to the global static + and shared object file Builders. + +There are the following methods for internal use within this module: + + - _execute() + The internal method that handles the heavily lifting when a + Builder is called. This is used so that the __call__() methods + can set up warning about possible mistakes in keyword-argument + overrides, and *then* execute all of the steps necessary so that + the warnings only occur once. + + - get_name() + Returns the Builder's name within a specific Environment, + primarily used to try to return helpful information in error + messages. + + - adjust_suffix() + - get_prefix() + - get_suffix() + - get_src_suffix() + - set_src_suffix() + Miscellaneous stuff for handling the prefix and suffix + manipulation we use in turning source file names into target + file names. + +""" + +from collections import UserDict, UserList + +import SCons.Action +import SCons.Debug +import SCons.Executor +import SCons.Memoize +import SCons.Util +import SCons.Warnings +from SCons.Debug import logInstanceCreation +from SCons.Errors import InternalError, UserError + +class _Null: + pass + +_null = _Null + +def match_splitext(path, suffixes = []): + if suffixes: + matchsuf = [S for S in suffixes if path[-len(S):] == S] + if matchsuf: + suf = max([(len(_f),_f) for _f in matchsuf])[1] + return [path[:-len(suf)], path[-len(suf):]] + return SCons.Util.splitext(path) + +class DictCmdGenerator(SCons.Util.Selector): + """This is a callable class that can be used as a + command generator function. It holds on to a dictionary + mapping file suffixes to Actions. It uses that dictionary + to return the proper action based on the file suffix of + the source file.""" + + def __init__(self, mapping=None, source_ext_match=True): + super().__init__(mapping) + self.source_ext_match = source_ext_match + + def src_suffixes(self): + return list(self.keys()) + + def add_action(self, suffix, action): + """Add a suffix-action pair to the mapping. + """ + self[suffix] = action + + def __call__(self, target, source, env, for_signature): + if not source: + return [] + + if self.source_ext_match: + suffixes = self.src_suffixes() + ext = None + for src in map(str, source): + my_ext = match_splitext(src, suffixes)[1] + if ext and my_ext != ext: + raise UserError("While building `%s' from `%s': Cannot build multiple sources with different extensions: %s, %s" + % (repr(list(map(str, target))), src, ext, my_ext)) + ext = my_ext + else: + ext = match_splitext(str(source[0]), self.src_suffixes())[1] + + if not ext: + #return ext + raise UserError("While building `%s': " + "Cannot deduce file extension from source files: %s" + % (repr(list(map(str, target))), repr(list(map(str, source))))) + + try: + ret = SCons.Util.Selector.__call__(self, env, source, ext) + except KeyError as e: + raise UserError("Ambiguous suffixes after environment substitution: %s == %s == %s" % (e.args[0], e.args[1], e.args[2])) + if ret is None: + raise UserError("While building `%s' from `%s': Don't know how to build from a source file with suffix `%s'. Expected a suffix in this list: %s." % \ + (repr(list(map(str, target))), repr(list(map(str, source))), ext, repr(list(self.keys())))) + return ret + +class CallableSelector(SCons.Util.Selector): + """A callable dictionary that will, in turn, call the value it + finds if it can.""" + def __call__(self, env, source): + value = SCons.Util.Selector.__call__(self, env, source) + if callable(value): + value = value(env, source) + return value + +class DictEmitter(SCons.Util.Selector): + """A callable dictionary that maps file suffixes to emitters. + When called, it finds the right emitter in its dictionary for the + suffix of the first source file, and calls that emitter to get the + right lists of targets and sources to return. If there's no emitter + for the suffix in its dictionary, the original target and source are + returned. + """ + def __call__(self, target, source, env): + emitter = SCons.Util.Selector.__call__(self, env, source) + if emitter: + target, source = emitter(target, source, env) + return (target, source) + +class ListEmitter(UserList): + """A callable list of emitters that calls each in sequence, + returning the result. + """ + def __call__(self, target, source, env): + for e in self.data: + target, source = e(target, source, env) + return (target, source) + +# These are a common errors when calling a Builder; +# they are similar to the 'target' and 'source' keyword args to builders, +# so we issue warnings when we see them. The warnings can, of course, +# be disabled. +misleading_keywords = { + 'targets' : 'target', + 'sources' : 'source', +} + +class OverrideWarner(UserDict): + """A class for warning about keyword arguments that we use as + overrides in a Builder call. + + This class exists to handle the fact that a single Builder call + can actually invoke multiple builders. This class only emits the + warnings once, no matter how many Builders are invoked. + """ + def __init__(self, mapping): + super().__init__(mapping) + if SCons.Debug.track_instances: logInstanceCreation(self, 'Builder.OverrideWarner') + self.already_warned = None + + def warn(self): + if self.already_warned: + return + for k in self.keys(): + if k in misleading_keywords: + alt = misleading_keywords[k] + msg = "Did you mean to use `%s' instead of `%s'?" % (alt, k) + SCons.Warnings.warn(SCons.Warnings.MisleadingKeywordsWarning, msg) + self.already_warned = 1 + +def Builder(**kw): + """A factory for builder objects.""" + composite = None + if 'generator' in kw: + if 'action' in kw: + raise UserError("You must not specify both an action and a generator.") + kw['action'] = SCons.Action.CommandGeneratorAction(kw['generator'], {}) + del kw['generator'] + elif 'action' in kw: + source_ext_match = kw.get('source_ext_match', True) + if 'source_ext_match' in kw: + del kw['source_ext_match'] + if SCons.Util.is_Dict(kw['action']): + composite = DictCmdGenerator(kw['action'], source_ext_match) + kw['action'] = SCons.Action.CommandGeneratorAction(composite, {}) + kw['src_suffix'] = composite.src_suffixes() + else: + kw['action'] = SCons.Action.Action(kw['action']) + + if 'emitter' in kw: + emitter = kw['emitter'] + if SCons.Util.is_String(emitter): + # This allows users to pass in an Environment + # variable reference (like "$FOO") as an emitter. + # We will look in that Environment variable for + # a callable to use as the actual emitter. + var = SCons.Util.get_environment_var(emitter) + if not var: + raise UserError("Supplied emitter '%s' does not appear to refer to an Environment variable" % emitter) + kw['emitter'] = EmitterProxy(var) + elif SCons.Util.is_Dict(emitter): + kw['emitter'] = DictEmitter(emitter) + elif SCons.Util.is_List(emitter): + kw['emitter'] = ListEmitter(emitter) + + result = BuilderBase(**kw) + + if composite is not None: + result = CompositeBuilder(result, composite) + + return result + +def _node_errors(builder, env, tlist, slist): + """Validate that the lists of target and source nodes are + legal for this builder and environment. Raise errors or + issue warnings as appropriate. + """ + + # First, figure out if there are any errors in the way the targets + # were specified. + for t in tlist: + if t.side_effect: + raise UserError("Multiple ways to build the same target were specified for: %s" % t) + if t.has_explicit_builder(): + # Check for errors when the environments are different + # No error if environments are the same Environment instance + if (t.env is not None and t.env is not env and + # Check OverrideEnvironment case - no error if wrapped Environments + # are the same instance, and overrides lists match + not (getattr(t.env, '__subject', 0) is getattr(env, '__subject', 1) and + getattr(t.env, 'overrides', 0) == getattr(env, 'overrides', 1) and + not builder.multi)): + action = t.builder.action + t_contents = t.builder.action.get_contents(tlist, slist, t.env) + contents = builder.action.get_contents(tlist, slist, env) + + if t_contents == contents: + msg = "Two different environments were specified for target %s,\n\tbut they appear to have the same action: %s" % (t, action.genstring(tlist, slist, t.env)) + SCons.Warnings.warn(SCons.Warnings.DuplicateEnvironmentWarning, msg) + else: + try: + msg = "Two environments with different actions were specified for the same target: %s\n(action 1: %s)\n(action 2: %s)" % (t,t_contents.decode('utf-8'),contents.decode('utf-8')) + except UnicodeDecodeError: + msg = "Two environments with different actions were specified for the same target: %s"%t + raise UserError(msg) + if builder.multi: + if t.builder != builder: + msg = "Two different builders (%s and %s) were specified for the same target: %s" % (t.builder.get_name(env), builder.get_name(env), t) + raise UserError(msg) + # TODO(batch): list constructed each time! + if t.get_executor().get_all_targets() != tlist: + msg = "Two different target lists have a target in common: %s (from %s and from %s)" % (t, list(map(str, t.get_executor().get_all_targets())), list(map(str, tlist))) + raise UserError(msg) + elif t.sources != slist: + msg = "Multiple ways to build the same target were specified for: %s (from %s and from %s)" % (t, list(map(str, t.sources)), list(map(str, slist))) + raise UserError(msg) + + if builder.single_source: + if len(slist) > 1: + raise UserError("More than one source given for single-source builder: targets=%s sources=%s" % (list(map(str,tlist)), list(map(str,slist)))) + +class EmitterProxy: + """This is a callable class that can act as a + Builder emitter. It holds on to a string that + is a key into an Environment dictionary, and will + look there at actual build time to see if it holds + a callable. If so, we will call that as the actual + emitter.""" + def __init__(self, var): + self.var = SCons.Util.to_String(var) + + def __call__(self, target, source, env): + emitter = self.var + + # Recursively substitute the variable. + # We can't use env.subst() because it deals only + # in strings. Maybe we should change that? + while SCons.Util.is_String(emitter) and emitter in env: + emitter = env[emitter] + if callable(emitter): + target, source = emitter(target, source, env) + elif SCons.Util.is_List(emitter): + for e in emitter: + target, source = e(target, source, env) + + return (target, source) + + def __eq__(self, other): + return self.var == other.var + + def __lt__(self, other): + return self.var < other.var + + def __le__(self, other): + return self.var <= other.var + + def __gt__(self, other): + return self.var > other.var + + def __ge__(self, other): + return self.var >= other.var + +class BuilderBase: + """Base class for Builders, objects that create output + nodes (files) from input nodes (files). + """ + + def __init__(self, action = None, + prefix = '', + suffix = '', + src_suffix = '', + target_factory = None, + source_factory = None, + target_scanner = None, + source_scanner = None, + emitter = None, + multi = 0, + env = None, + single_source = 0, + name = None, + chdir = _null, + is_explicit = 1, + src_builder = None, + ensure_suffix = False, + **overrides): + if SCons.Debug.track_instances: logInstanceCreation(self, 'Builder.BuilderBase') + self._memo = {} + self.action = action + self.multi = multi + if SCons.Util.is_Dict(prefix): + prefix = CallableSelector(prefix) + self.prefix = prefix + if SCons.Util.is_Dict(suffix): + suffix = CallableSelector(suffix) + self.env = env + self.single_source = single_source + if 'overrides' in overrides: + msg = "The \"overrides\" keyword to Builder() creation has been removed;\n" +\ + "\tspecify the items as keyword arguments to the Builder() call instead." + raise TypeError(msg) + if 'scanner' in overrides: + msg = "The \"scanner\" keyword to Builder() creation has been removed;\n" +\ + "\tuse: source_scanner or target_scanner as appropriate." + raise TypeError(msg) + self.overrides = overrides + + self.set_suffix(suffix) + self.set_src_suffix(src_suffix) + self.ensure_suffix = ensure_suffix + + self.target_factory = target_factory + self.source_factory = source_factory + self.target_scanner = target_scanner + self.source_scanner = source_scanner + + self.emitter = emitter + + # Optional Builder name should only be used for Builders + # that don't get attached to construction environments. + if name: + self.name = name + self.executor_kw = {} + if chdir is not _null: + self.executor_kw['chdir'] = chdir + self.is_explicit = is_explicit + + if src_builder is None: + src_builder = [] + elif not SCons.Util.is_List(src_builder): + src_builder = [ src_builder ] + self.src_builder = src_builder + + def __bool__(self): + raise InternalError("Do not test for the Node.builder attribute directly; use Node.has_builder() instead") + + def get_name(self, env): + """Attempts to get the name of the Builder. + + Look at the BUILDERS variable of env, expecting it to be a + dictionary containing this Builder, and return the key of the + dictionary. If there's no key, then return a directly-configured + name (if there is one) or the name of the class (by default).""" + + try: + index = list(env['BUILDERS'].values()).index(self) + return list(env['BUILDERS'].keys())[index] + except (AttributeError, KeyError, TypeError, ValueError): + try: + return self.name + except AttributeError: + return str(self.__class__) + + def __eq__(self, other): + return self.__dict__ == other.__dict__ + + def splitext(self, path, env=None): + if not env: + env = self.env + if env: + suffixes = self.src_suffixes(env) + else: + suffixes = [] + return match_splitext(path, suffixes) + + def _adjustixes(self, files, pre, suf, ensure_suffix=False): + if not files: + return [] + result = [] + if not SCons.Util.is_List(files): + files = [files] + + for f in files: + if SCons.Util.is_String(f): + f = SCons.Util.adjustixes(f, pre, suf, ensure_suffix) + result.append(f) + return result + + def _create_nodes(self, env, target = None, source = None): + """Create and return lists of target and source nodes. + """ + src_suf = self.get_src_suffix(env) + + target_factory = env.get_factory(self.target_factory) + source_factory = env.get_factory(self.source_factory) + + source = self._adjustixes(source, None, src_suf) + slist = env.arg2nodes(source, source_factory) + + pre = self.get_prefix(env, slist) + suf = self.get_suffix(env, slist) + + if target is None: + try: + t_from_s = slist[0].target_from_source + except AttributeError: + raise UserError("Do not know how to create a target from source `%s'" % slist[0]) + except IndexError: + tlist = [] + else: + splitext = lambda S: self.splitext(S,env) + tlist = [ t_from_s(pre, suf, splitext) ] + else: + # orig_target = target + target = self._adjustixes(target, pre, suf, self.ensure_suffix) + tlist = env.arg2nodes(target, target_factory, target=target, source=source) + + if self.emitter: + # The emitter is going to do str(node), but because we're + # being called *from* a builder invocation, the new targets + # don't yet have a builder set on them and will look like + # source files. Fool the emitter's str() calls by setting + # up a temporary builder on the new targets. + new_targets = [] + for t in tlist: + if not t.is_derived(): + t.builder_set(self) + new_targets.append(t) + + orig_tlist = tlist[:] + orig_slist = slist[:] + + target, source = self.emitter(target=tlist, source=slist, env=env) + + # Now delete the temporary builders that we attached to any + # new targets, so that _node_errors() doesn't do weird stuff + # to them because it thinks they already have builders. + for t in new_targets: + if t.builder is self: + # Only delete the temporary builder if the emitter + # didn't change it on us. + t.builder_set(None) + + # Have to call arg2nodes yet again, since it is legal for + # emitters to spit out strings as well as Node instances. + tlist = env.arg2nodes(target, target_factory, + target=orig_tlist, source=orig_slist) + slist = env.arg2nodes(source, source_factory, + target=orig_tlist, source=orig_slist) + + return tlist, slist + + def _execute(self, env, target, source, overwarn={}, executor_kw={}): + # We now assume that target and source are lists or None. + if self.src_builder: + source = self.src_builder_sources(env, source, overwarn) + + if self.single_source and len(source) > 1 and target is None: + result = [] + if target is None: target = [None]*len(source) + for tgt, src in zip(target, source): + if tgt is not None: + tgt = [tgt] + if src is not None: + src = [src] + result.extend(self._execute(env, tgt, src, overwarn)) + return SCons.Node.NodeList(result) + + overwarn.warn() + + tlist, slist = self._create_nodes(env, target, source) + + # If there is more than one target ensure that if we need to reset + # the implicit list to new scan of dependency all targets implicit lists + # are cleared. (SCons GH Issue #2811 and MongoDB SERVER-33111) + if len(tlist) > 1: + for t in tlist: + t.target_peers = tlist + + # Check for errors with the specified target/source lists. + _node_errors(self, env, tlist, slist) + + # The targets are fine, so find or make the appropriate Executor to + # build this particular list of targets from this particular list of + # sources. + + executor = None + key = None + + if self.multi: + try: + executor = tlist[0].get_executor(create = 0) + except (AttributeError, IndexError): + pass + else: + executor.add_sources(slist) + + if executor is None: + if not self.action: + fmt = "Builder %s must have an action to build %s." + raise UserError(fmt % (self.get_name(env or self.env), + list(map(str,tlist)))) + key = self.action.batch_key(env or self.env, tlist, slist) + if key: + try: + executor = SCons.Executor.GetBatchExecutor(key) + except KeyError: + pass + else: + executor.add_batch(tlist, slist) + + if executor is None: + executor = SCons.Executor.Executor(self.action, env, [], + tlist, slist, executor_kw) + if key: + SCons.Executor.AddBatchExecutor(key, executor) + + # Now set up the relevant information in the target Nodes themselves. + for t in tlist: + t.cwd = env.fs.getcwd() + t.builder_set(self) + t.env_set(env) + t.add_source(slist) + t.set_executor(executor) + t.set_explicit(self.is_explicit) + + if env.get("SCONF_NODE"): + for node in tlist: + node.attributes.conftest_node = 1 + + return SCons.Node.NodeList(tlist) + + def __call__(self, env, target=None, source=None, chdir=_null, **kw): + # We now assume that target and source are lists or None. + # The caller (typically Environment.BuilderWrapper) is + # responsible for converting any scalar values to lists. + if chdir is _null: + ekw = self.executor_kw + else: + ekw = self.executor_kw.copy() + ekw['chdir'] = chdir + if 'chdir' in ekw and SCons.Util.is_String(ekw['chdir']): + ekw['chdir'] = env.subst(ekw['chdir']) + if kw: + if 'srcdir' in kw: + def prependDirIfRelative(f, srcdir=kw['srcdir']): + import os.path + if SCons.Util.is_String(f) and not os.path.isabs(f): + f = os.path.join(srcdir, f) + return f + if not SCons.Util.is_List(source): + source = [source] + source = list(map(prependDirIfRelative, source)) + del kw['srcdir'] + if self.overrides: + env_kw = self.overrides.copy() + env_kw.update(kw) + else: + env_kw = kw + else: + env_kw = self.overrides + + # TODO if env_kw: then the following line. there's no purpose in calling if no overrides. + env = env.Override(env_kw) + return self._execute(env, target, source, OverrideWarner(kw), ekw) + + def adjust_suffix(self, suff): + if suff and not suff[0] in [ '.', '_', '$' ]: + return '.' + suff + return suff + + def get_prefix(self, env, sources=[]): + prefix = self.prefix + if callable(prefix): + prefix = prefix(env, sources) + return env.subst(prefix) + + def set_suffix(self, suffix): + if not callable(suffix): + suffix = self.adjust_suffix(suffix) + self.suffix = suffix + + def get_suffix(self, env, sources=[]): + suffix = self.suffix + if callable(suffix): + suffix = suffix(env, sources) + return env.subst(suffix) + + def set_src_suffix(self, src_suffix): + if not src_suffix: + src_suffix = [] + elif not SCons.Util.is_List(src_suffix): + src_suffix = [ src_suffix ] + self.src_suffix = [callable(suf) and suf or self.adjust_suffix(suf) for suf in src_suffix] + + def get_src_suffix(self, env): + """Get the first src_suffix in the list of src_suffixes.""" + ret = self.src_suffixes(env) + if not ret: + return '' + return ret[0] + + def add_emitter(self, suffix, emitter): + """Add a suffix-emitter mapping to this Builder. + + This assumes that emitter has been initialized with an + appropriate dictionary type, and will throw a TypeError if + not, so the caller is responsible for knowing that this is an + appropriate method to call for the Builder in question. + """ + self.emitter[suffix] = emitter + + def add_src_builder(self, builder): + """ + Add a new Builder to the list of src_builders. + + This requires wiping out cached values so that the computed + lists of source suffixes get re-calculated. + """ + self._memo = {} + self.src_builder.append(builder) + + def _get_sdict(self, env): + """ + Returns a dictionary mapping all of the source suffixes of all + src_builders of this Builder to the underlying Builder that + should be called first. + + This dictionary is used for each target specified, so we save a + lot of extra computation by memoizing it for each construction + environment. + + Note that this is re-computed each time, not cached, because there + might be changes to one of our source Builders (or one of their + source Builders, and so on, and so on...) that we can't "see." + + The underlying methods we call cache their computed values, + though, so we hope repeatedly aggregating them into a dictionary + like this won't be too big a hit. We may need to look for a + better way to do this if performance data show this has turned + into a significant bottleneck. + """ + sdict = {} + for bld in self.get_src_builders(env): + for suf in bld.src_suffixes(env): + sdict[suf] = bld + return sdict + + def src_builder_sources(self, env, source, overwarn={}): + sdict = self._get_sdict(env) + + src_suffixes = self.src_suffixes(env) + + lengths = list(set(map(len, src_suffixes))) + + def match_src_suffix(name, src_suffixes=src_suffixes, lengths=lengths): + node_suffixes = [name[-l:] for l in lengths] + for suf in src_suffixes: + if suf in node_suffixes: + return suf + return None + + result = [] + for s in SCons.Util.flatten(source): + if SCons.Util.is_String(s): + match_suffix = match_src_suffix(env.subst(s)) + if not match_suffix and '.' not in s: + src_suf = self.get_src_suffix(env) + s = self._adjustixes(s, None, src_suf)[0] + else: + match_suffix = match_src_suffix(s.name) + if match_suffix: + try: + bld = sdict[match_suffix] + except KeyError: + result.append(s) + else: + tlist = bld._execute(env, None, [s], overwarn) + # If the subsidiary Builder returned more than one + # target, then filter out any sources that this + # Builder isn't capable of building. + if len(tlist) > 1: + tlist = [t for t in tlist if match_src_suffix(t.name)] + result.extend(tlist) + else: + result.append(s) + + source_factory = env.get_factory(self.source_factory) + + return env.arg2nodes(result, source_factory) + + def _get_src_builders_key(self, env): + return id(env) + + @SCons.Memoize.CountDictCall(_get_src_builders_key) + def get_src_builders(self, env): + """ + Returns the list of source Builders for this Builder. + + This exists mainly to look up Builders referenced as + strings in the 'BUILDER' variable of the construction + environment and cache the result. + """ + memo_key = id(env) + try: + memo_dict = self._memo['get_src_builders'] + except KeyError: + memo_dict = {} + self._memo['get_src_builders'] = memo_dict + else: + try: + return memo_dict[memo_key] + except KeyError: + pass + + builders = [] + for bld in self.src_builder: + if SCons.Util.is_String(bld): + try: + bld = env['BUILDERS'][bld] + except KeyError: + continue + builders.append(bld) + + memo_dict[memo_key] = builders + return builders + + def _subst_src_suffixes_key(self, env): + return id(env) + + @SCons.Memoize.CountDictCall(_subst_src_suffixes_key) + def subst_src_suffixes(self, env): + """ + The suffix list may contain construction variable expansions, + so we have to evaluate the individual strings. To avoid doing + this over and over, we memoize the results for each construction + environment. + """ + memo_key = id(env) + try: + memo_dict = self._memo['subst_src_suffixes'] + except KeyError: + memo_dict = {} + self._memo['subst_src_suffixes'] = memo_dict + else: + try: + return memo_dict[memo_key] + except KeyError: + pass + suffixes = [env.subst(x) for x in self.src_suffix] + memo_dict[memo_key] = suffixes + return suffixes + + def src_suffixes(self, env): + """ + Returns the list of source suffixes for all src_builders of this + Builder. + + This is essentially a recursive descent of the src_builder "tree." + (This value isn't cached because there may be changes in a + src_builder many levels deep that we can't see.) + """ + sdict = {} + suffixes = self.subst_src_suffixes(env) + for s in suffixes: + sdict[s] = 1 + for builder in self.get_src_builders(env): + for s in builder.src_suffixes(env): + if s not in sdict: + sdict[s] = 1 + suffixes.append(s) + return suffixes + +class CompositeBuilder(SCons.Util.Proxy): + """A Builder Proxy whose main purpose is to always have + a DictCmdGenerator as its action, and to provide access + to the DictCmdGenerator's add_action() method. + """ + + def __init__(self, builder, cmdgen): + if SCons.Debug.track_instances: logInstanceCreation(self, 'Builder.CompositeBuilder') + super().__init__(builder) + + # cmdgen should always be an instance of DictCmdGenerator. + self.cmdgen = cmdgen + self.builder = builder + + __call__ = SCons.Util.Delegate('__call__') + + def add_action(self, suffix, action): + self.cmdgen.add_action(suffix, action) + self.set_src_suffix(self.cmdgen.src_suffixes()) + +def is_a_Builder(obj): + """"Returns True if the specified obj is one of our Builder classes. + + The test is complicated a bit by the fact that CompositeBuilder + is a proxy, not a subclass of BuilderBase. + """ + return (isinstance(obj, BuilderBase) + or isinstance(obj, CompositeBuilder) + or callable(obj)) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/CacheDir.py b/scons/scons-local-4.5.1/SCons/CacheDir.py new file mode 100644 index 000000000..70c4f38a8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/CacheDir.py @@ -0,0 +1,325 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""CacheDir support +""" + +import atexit +import json +import os +import stat +import sys +import uuid + +import SCons.Action +import SCons.Errors +import SCons.Warnings +import SCons + +cache_enabled = True +cache_debug = False +cache_force = False +cache_show = False +cache_readonly = False +cache_tmp_uuid = uuid.uuid4().hex + +def CacheRetrieveFunc(target, source, env): + t = target[0] + fs = t.fs + cd = env.get_CacheDir() + cd.requests += 1 + cachedir, cachefile = cd.cachepath(t) + if not fs.exists(cachefile): + cd.CacheDebug('CacheRetrieve(%s): %s not in cache\n', t, cachefile) + return 1 + cd.hits += 1 + cd.CacheDebug('CacheRetrieve(%s): retrieving from %s\n', t, cachefile) + if SCons.Action.execute_actions: + if fs.islink(cachefile): + fs.symlink(fs.readlink(cachefile), t.get_internal_path()) + else: + cd.copy_from_cache(env, cachefile, t.get_internal_path()) + try: + os.utime(cachefile, None) + except OSError: + pass + st = fs.stat(cachefile) + fs.chmod(t.get_internal_path(), stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE) + return 0 + +def CacheRetrieveString(target, source, env): + t = target[0] + fs = t.fs + cd = env.get_CacheDir() + cachedir, cachefile = cd.cachepath(t) + if t.fs.exists(cachefile): + return "Retrieved `%s' from cache" % t.get_internal_path() + return None + +CacheRetrieve = SCons.Action.Action(CacheRetrieveFunc, CacheRetrieveString) + +CacheRetrieveSilent = SCons.Action.Action(CacheRetrieveFunc, None) + +def CachePushFunc(target, source, env): + if cache_readonly: + return + + t = target[0] + if t.nocache: + return + fs = t.fs + cd = env.get_CacheDir() + cachedir, cachefile = cd.cachepath(t) + if fs.exists(cachefile): + # Don't bother copying it if it's already there. Note that + # usually this "shouldn't happen" because if the file already + # existed in cache, we'd have retrieved the file from there, + # not built it. This can happen, though, in a race, if some + # other person running the same build pushes their copy to + # the cache after we decide we need to build it but before our + # build completes. + cd.CacheDebug('CachePush(%s): %s already exists in cache\n', t, cachefile) + return + + cd.CacheDebug('CachePush(%s): pushing to %s\n', t, cachefile) + + tempfile = "%s.tmp%s"%(cachefile,cache_tmp_uuid) + errfmt = "Unable to copy %s to cache. Cache file is %s" + + try: + fs.makedirs(cachedir, exist_ok=True) + except OSError: + msg = errfmt % (str(target), cachefile) + raise SCons.Errors.SConsEnvironmentError(msg) + try: + if fs.islink(t.get_internal_path()): + fs.symlink(fs.readlink(t.get_internal_path()), tempfile) + else: + cd.copy_to_cache(env, t.get_internal_path(), tempfile) + fs.rename(tempfile, cachefile) + + except EnvironmentError: + # It's possible someone else tried writing the file at the + # same time we did, or else that there was some problem like + # the CacheDir being on a separate file system that's full. + # In any case, inability to push a file to cache doesn't affect + # the correctness of the build, so just print a warning. + msg = errfmt % (str(t), cachefile) + cd.CacheDebug(errfmt + '\n', str(t), cachefile) + SCons.Warnings.warn(SCons.Warnings.CacheWriteErrorWarning, msg) + +CachePush = SCons.Action.Action(CachePushFunc, None) + + +class CacheDir: + + def __init__(self, path): + """ + Initialize a CacheDir object. + + The cache configuration is stored in the object. It + is read from the config file in the supplied path if + one exists, if not the config file is created and + the default config is written, as well as saved in the object. + """ + self.requests = 0 + self.hits = 0 + self.path = path + self.current_cache_debug = None + self.debugFP = None + self.config = dict() + if path is None: + return + + self._readconfig(path) + + + def _readconfig(self, path): + """ + Read the cache config. + + If directory or config file do not exist, create. Take advantage + of Py3 capability in os.makedirs() and in file open(): just try + the operation and handle failure appropriately. + + Omit the check for old cache format, assume that's old enough + there will be none of those left to worry about. + + :param path: path to the cache directory + """ + config_file = os.path.join(path, 'config') + try: + os.makedirs(path, exist_ok=True) + except FileExistsError: + pass + except OSError: + msg = "Failed to create cache directory " + path + raise SCons.Errors.SConsEnvironmentError(msg) + + try: + with open(config_file, 'x') as config: + self.config['prefix_len'] = 2 + try: + json.dump(self.config, config) + except Exception: + msg = "Failed to write cache configuration for " + path + raise SCons.Errors.SConsEnvironmentError(msg) + except FileExistsError: + try: + with open(config_file) as config: + self.config = json.load(config) + except ValueError: + msg = "Failed to read cache configuration for " + path + raise SCons.Errors.SConsEnvironmentError(msg) + + def CacheDebug(self, fmt, target, cachefile): + if cache_debug != self.current_cache_debug: + if cache_debug == '-': + self.debugFP = sys.stdout + elif cache_debug: + def debug_cleanup(debugFP): + debugFP.close() + + self.debugFP = open(cache_debug, 'w') + atexit.register(debug_cleanup, self.debugFP) + else: + self.debugFP = None + self.current_cache_debug = cache_debug + if self.debugFP: + self.debugFP.write(fmt % (target, os.path.split(cachefile)[1])) + self.debugFP.write("requests: %d, hits: %d, misses: %d, hit rate: %.2f%%\n" % + (self.requests, self.hits, self.misses, self.hit_ratio)) + + @classmethod + def copy_from_cache(cls, env, src, dst) -> str: + """Copy a file from cache.""" + if env.cache_timestamp_newer: + return env.fs.copy(src, dst) + else: + return env.fs.copy2(src, dst) + + @classmethod + def copy_to_cache(cls, env, src, dst) -> str: + """Copy a file to cache. + + Just use the FS copy2 ("with metadata") method, except do an additional + check and if necessary a chmod to ensure the cachefile is writeable, + to forestall permission problems if the cache entry is later updated. + """ + try: + result = env.fs.copy2(src, dst) + st = stat.S_IMODE(os.stat(result).st_mode) + if not st | stat.S_IWRITE: + os.chmod(dst, st | stat.S_IWRITE) + return result + except AttributeError as ex: + raise EnvironmentError from ex + + @property + def hit_ratio(self) -> float: + return (100.0 * self.hits / self.requests if self.requests > 0 else 100) + + @property + def misses(self) -> int: + return self.requests - self.hits + + def is_enabled(self) -> bool: + return cache_enabled and self.path is not None + + def is_readonly(self) -> bool: + return cache_readonly + + def get_cachedir_csig(self, node): + cachedir, cachefile = self.cachepath(node) + if cachefile and os.path.exists(cachefile): + return SCons.Util.hash_file_signature(cachefile, SCons.Node.FS.File.hash_chunksize) + + def cachepath(self, node) -> tuple: + """Return where to cache a file. + + Given a Node, obtain the configured cache directory and + the path to the cached file, which is generated from the + node's build signature. If caching is not enabled for the + None, return a tuple of None. + """ + if not self.is_enabled(): + return None, None + + sig = node.get_cachedir_bsig() + subdir = sig[:self.config['prefix_len']].upper() + cachedir = os.path.join(self.path, subdir) + return cachedir, os.path.join(cachedir, sig) + + def retrieve(self, node): + """ + This method is called from multiple threads in a parallel build, + so only do thread safe stuff here. Do thread unsafe stuff in + built(). + + Note that there's a special trick here with the execute flag + (one that's not normally done for other actions). Basically + if the user requested a no_exec (-n) build, then + SCons.Action.execute_actions is set to 0 and when any action + is called, it does its showing but then just returns zero + instead of actually calling the action execution operation. + The problem for caching is that if the file does NOT exist in + cache then the CacheRetrieveString won't return anything to + show for the task, but the Action.__call__ won't call + CacheRetrieveFunc; instead it just returns zero, which makes + the code below think that the file *was* successfully + retrieved from the cache, therefore it doesn't do any + subsequent building. However, the CacheRetrieveString didn't + print anything because it didn't actually exist in the cache, + and no more build actions will be performed, so the user just + sees nothing. The fix is to tell Action.__call__ to always + execute the CacheRetrieveFunc and then have the latter + explicitly check SCons.Action.execute_actions itself. + """ + if not self.is_enabled(): + return False + + env = node.get_build_env() + if cache_show: + if CacheRetrieveSilent(node, [], env, execute=1) == 0: + node.build(presub=0, execute=0) + return True + else: + if CacheRetrieve(node, [], env, execute=1) == 0: + return True + + return False + + def push(self, node): + if self.is_readonly() or not self.is_enabled(): + return + return CachePush(node, [], node.get_build_env()) + + def push_if_forced(self, node): + if cache_force: + return self.push(node) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Conftest.py b/scons/scons-local-4.5.1/SCons/Conftest.py new file mode 100644 index 000000000..3c52ef462 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Conftest.py @@ -0,0 +1,862 @@ +# MIT License +# +# Copyright The SCons Foundation +# Copyright (c) 2003 Stichting NLnet Labs +# Copyright (c) 2001, 2002, 2003 Steven Knight +# +# 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. + +r"""Autoconf-like configuration support + +The purpose of this module is to define how a check is to be performed. + +A context class is used that defines functions for carrying out the tests, +logging and messages. The following methods and members must be present: + +context.Display(msg) + Function called to print messages that are normally displayed + for the user. Newlines are explicitly used. The text should + also be written to the logfile! + +context.Log(msg) + Function called to write to a log file. + +context.BuildProg(text, ext) + Function called to build a program, using "ext" for the file + extension. Must return an empty string for success, an error + message for failure. For reliable test results building should + be done just like an actual program would be build, using the + same command and arguments (including configure results so far). + +context.CompileProg(text, ext) + Function called to compile a program, using "ext" for the file + extension. Must return an empty string for success, an error + message for failure. For reliable test results compiling should be + done just like an actual source file would be compiled, using the + same command and arguments (including configure results so far). + +context.AppendLIBS(lib_name_list) + Append "lib_name_list" to the value of LIBS. "lib_namelist" is + a list of strings. Return the value of LIBS before changing it + (any type can be used, it is passed to SetLIBS() later.) + +context.PrependLIBS(lib_name_list) + Prepend "lib_name_list" to the value of LIBS. "lib_namelist" is + a list of strings. Return the value of LIBS before changing it + (any type can be used, it is passed to SetLIBS() later.) + +context.SetLIBS(value) + Set LIBS to "value". The type of "value" is what AppendLIBS() + returned. Return the value of LIBS before changing it (any type + can be used, it is passed to SetLIBS() later.) + +context.headerfilename + Name of file to append configure results to, usually "confdefs.h". + The file must not exist or be empty when starting. Empty or None + to skip this (some tests will not work!). + +context.config_h (may be missing). + If present, must be a string, which will be filled with the + contents of a config_h file. + +context.vardict + Dictionary holding variables used for the tests and stores results + from the tests, used for the build commands. Normally contains + "CC", "LIBS", "CPPFLAGS", etc. + +context.havedict + Dictionary holding results from the tests that are to be used + inside a program. Names often start with "HAVE\_". These are zero + (feature not present) or one (feature present). Other variables + may have any value, e.g., "PERLVERSION" can be a number and + "SYSTEMNAME" a string. +""" + +import re + +# +# PUBLIC VARIABLES +# + +LogInputFiles = 1 # Set that to log the input files in case of a failed test +LogErrorMessages = 1 # Set that to log Conftest-generated error messages + +# +# PUBLIC FUNCTIONS +# + +# Generic remarks: +# - When a language is specified which is not supported the test fails. The +# message is a bit different, because not all the arguments for the normal +# message are available yet (chicken-egg problem). + + +def CheckBuilder(context, text = None, language = None): + """ + Configure check to see if the compiler works. + Note that this uses the current value of compiler and linker flags, make + sure $CFLAGS, $CPPFLAGS and $LIBS are set correctly. + "language" should be "C" or "C++" and is used to select the compiler. + Default is "C". + "text" may be used to specify the code to be build. + Returns an empty string for success, an error message for failure. + """ + lang, suffix, msg = _lang2suffix(language) + if msg: + context.Display("%s\n" % msg) + return msg + + if not text: + text = """ +int main(void) { + return 0; +} +""" + + context.Display("Checking if building a %s file works... " % lang) + ret = context.BuildProg(text, suffix) + _YesNoResult(context, ret, None, text) + return ret + +def CheckCC(context): + """ + Configure check for a working C compiler. + + This checks whether the C compiler, as defined in the $CC construction + variable, can compile a C source file. It uses the current $CCCOM value + too, so that it can test against non working flags. + + """ + context.Display("Checking whether the C compiler works... ") + text = """ +int main(void) +{ + return 0; +} +""" + ret = _check_empty_program(context, 'CC', text, 'C') + _YesNoResult(context, ret, None, text) + return ret + +def CheckSHCC(context): + """ + Configure check for a working shared C compiler. + + This checks whether the C compiler, as defined in the $SHCC construction + variable, can compile a C source file. It uses the current $SHCCCOM value + too, so that it can test against non working flags. + + """ + context.Display("Checking whether the (shared) C compiler works... ") + text = """ +int foo(void) +{ + return 0; +} +""" + ret = _check_empty_program(context, 'SHCC', text, 'C', use_shared = True) + _YesNoResult(context, ret, None, text) + return ret + +def CheckCXX(context): + """ + Configure check for a working CXX compiler. + + This checks whether the CXX compiler, as defined in the $CXX construction + variable, can compile a CXX source file. It uses the current $CXXCOM value + too, so that it can test against non working flags. + + """ + context.Display("Checking whether the C++ compiler works... ") + text = """ +int main(void) +{ + return 0; +} +""" + ret = _check_empty_program(context, 'CXX', text, 'C++') + _YesNoResult(context, ret, None, text) + return ret + +def CheckSHCXX(context): + """ + Configure check for a working shared CXX compiler. + + This checks whether the CXX compiler, as defined in the $SHCXX construction + variable, can compile a CXX source file. It uses the current $SHCXXCOM value + too, so that it can test against non working flags. + + """ + context.Display("Checking whether the (shared) C++ compiler works... ") + text = """ +int main(void) +{ + return 0; +} +""" + ret = _check_empty_program(context, 'SHCXX', text, 'C++', use_shared = True) + _YesNoResult(context, ret, None, text) + return ret + +def _check_empty_program(context, comp, text, language, use_shared = False): + """Return 0 on success, 1 otherwise.""" + if comp not in context.env or not context.env[comp]: + # The compiler construction variable is not set or empty + return 1 + + lang, suffix, msg = _lang2suffix(language) + if msg: + return 1 + + if use_shared: + return context.CompileSharedObject(text, suffix) + else: + return context.CompileProg(text, suffix) + + +def CheckFunc(context, function_name, header = None, language = None): + """ + Configure check for a function "function_name". + "language" should be "C" or "C++" and is used to select the compiler. + Default is "C". + Optional "header" can be defined to define a function prototype, include a + header file or anything else that comes before main(). + Sets HAVE_function_name in context.havedict according to the result. + Note that this uses the current value of compiler and linker flags, make + sure $CFLAGS, $CPPFLAGS and $LIBS are set correctly. + Returns an empty string for success, an error message for failure. + """ + + # Remarks from autoconf: + # - Don't include because on OSF/1 3.0 it includes + # which includes which contains a prototype for select. + # Similarly for bzero. + # - assert.h is included to define __stub macros and hopefully few + # prototypes, which can conflict with char $1(); below. + # - Override any gcc2 internal prototype to avoid an error. + # - We use char for the function declaration because int might match the + # return type of a gcc2 builtin and then its argument prototype would + # still apply. + # - The GNU C library defines this for functions which it implements to + # always fail with ENOSYS. Some functions are actually named something + # starting with __ and the normal name is an alias. + + if context.headerfilename: + includetext = '#include "%s"' % context.headerfilename + else: + includetext = '' + if not header: + header = """ +#ifdef __cplusplus +extern "C" +#endif +char %s(void);""" % function_name + + lang, suffix, msg = _lang2suffix(language) + if msg: + context.Display("Cannot check for %s(): %s\n" % (function_name, msg)) + return msg + + text = """ +%(include)s +#include +%(hdr)s + +#if _MSC_VER && !__INTEL_COMPILER + #pragma function(%(name)s) +#endif + +int main(void) { +#if defined (__stub_%(name)s) || defined (__stub___%(name)s) + #error "%(name)s has a GNU stub, cannot check" +#else + %(name)s(); +#endif + + return 0; +} +""" % { 'name': function_name, + 'include': includetext, + 'hdr': header } + + context.Display("Checking for %s function %s()... " % (lang, function_name)) + ret = context.BuildProg(text, suffix) + _YesNoResult(context, ret, "HAVE_" + function_name, text, + "Define to 1 if the system has the function `%s'." %\ + function_name) + return ret + + +def CheckHeader(context, header_name, header=None, language=None, + include_quotes=None): + """ + Configure check for a C or C++ header file "header_name". + Optional "header" can be defined to do something before including the + header file (unusual, supported for consistency). + "language" should be "C" or "C++" and is used to select the compiler. + Default is "C". + Sets HAVE_header_name in context.havedict according to the result. + Note that this uses the current value of compiler and linker flags, make + sure $CFLAGS and $CPPFLAGS are set correctly. + Returns an empty string for success, an error message for failure. + """ + # Why compile the program instead of just running the preprocessor? + # It is possible that the header file exists, but actually using it may + # fail (e.g., because it depends on other header files). Thus this test is + # more strict. It may require using the "header" argument. + # + # Use <> by default, because the check is normally used for system header + # files. SCons passes '""' to overrule this. + + # Include "confdefs.h" first, so that the header can use HAVE_HEADER_H. + if context.headerfilename: + includetext = '#include "%s"\n' % context.headerfilename + else: + includetext = '' + if not header: + header = "" + + lang, suffix, msg = _lang2suffix(language) + if msg: + context.Display("Cannot check for header file %s: %s\n" + % (header_name, msg)) + return msg + + if not include_quotes: + include_quotes = "<>" + + text = "%s%s\n#include %s%s%s\n\n" % (includetext, header, + include_quotes[0], header_name, include_quotes[1]) + + context.Display("Checking for %s header file %s... " % (lang, header_name)) + ret = context.CompileProg(text, suffix) + _YesNoResult(context, ret, "HAVE_" + header_name, text, + "Define to 1 if you have the <%s> header file." % header_name) + return ret + + +def CheckType(context, type_name, fallback = None, + header = None, language = None): + """ + Configure check for a C or C++ type "type_name". + Optional "header" can be defined to include a header file. + "language" should be "C" or "C++" and is used to select the compiler. + Default is "C". + Sets HAVE_type_name in context.havedict according to the result. + Note that this uses the current value of compiler and linker flags, make + sure $CFLAGS, $CPPFLAGS and $LIBS are set correctly. + Returns an empty string for success, an error message for failure. + """ + + # Include "confdefs.h" first, so that the header can use HAVE_HEADER_H. + if context.headerfilename: + includetext = '#include "%s"' % context.headerfilename + else: + includetext = '' + if not header: + header = "" + + lang, suffix, msg = _lang2suffix(language) + if msg: + context.Display("Cannot check for %s type: %s\n" % (type_name, msg)) + return msg + + # Remarks from autoconf about this test: + # - Grepping for the type in include files is not reliable (grep isn't + # portable anyway). + # - Using "TYPE my_var;" doesn't work for const qualified types in C++. + # Adding an initializer is not valid for some C++ classes. + # - Using the type as parameter to a function either fails for K&$ C or for + # C++. + # - Using "TYPE *my_var;" is valid in C for some types that are not + # declared (struct something). + # - Using "sizeof(TYPE)" is valid when TYPE is actually a variable. + # - Using the previous two together works reliably. + text = """ +%(include)s +%(header)s + +int main(void) { + if ((%(name)s *) 0) + return 0; + if (sizeof (%(name)s)) + return 0; +} +""" % { 'include': includetext, + 'header': header, + 'name': type_name } + + context.Display("Checking for %s type %s... " % (lang, type_name)) + ret = context.BuildProg(text, suffix) + _YesNoResult(context, ret, "HAVE_" + type_name, text, + "Define to 1 if the system has the type `%s'." % type_name) + if ret and fallback and context.headerfilename: + f = open(context.headerfilename, "a") + f.write("typedef %s %s;\n" % (fallback, type_name)) + f.close() + + return ret + +def CheckTypeSize(context, type_name, header = None, language = None, expect = None): + """This check can be used to get the size of a given type, or to check whether + the type is of expected size. + + Arguments: + - type : str + the type to check + - includes : sequence + list of headers to include in the test code before testing the type + - language : str + 'C' or 'C++' + - expect : int + if given, will test wether the type has the given number of bytes. + If not given, will automatically find the size. + + Returns: + status : int + 0 if the check failed, or the found size of the type if the check succeeded.""" + + # Include "confdefs.h" first, so that the header can use HAVE_HEADER_H. + if context.headerfilename: + includetext = '#include "%s"' % context.headerfilename + else: + includetext = '' + + if not header: + header = "" + + lang, suffix, msg = _lang2suffix(language) + if msg: + context.Display("Cannot check for %s type: %s\n" % (type_name, msg)) + return msg + + src = includetext + header + if expect is not None: + # Only check if the given size is the right one + context.Display('Checking %s is %d bytes... ' % (type_name, expect)) + + # test code taken from autoconf: this is a pretty clever hack to find that + # a type is of a given size using only compilation. This speeds things up + # quite a bit compared to straightforward code using TryRun + src = src + r""" +typedef %s scons_check_type; + +int main(void) +{ + static int test_array[1 - 2 * !(((long int) (sizeof(scons_check_type))) == %d)]; + test_array[0] = 0; + + return 0; +} +""" + + st = context.CompileProg(src % (type_name, expect), suffix) + if not st: + context.Display("yes\n") + _Have(context, "SIZEOF_%s" % type_name, expect, + "The size of `%s', as computed by sizeof." % type_name) + return expect + else: + context.Display("no\n") + _LogFailed(context, src, st) + return 0 + else: + # Only check if the given size is the right one + context.Message('Checking size of %s ... ' % type_name) + + # We have to be careful with the program we wish to test here since + # compilation will be attempted using the current environment's flags. + # So make sure that the program will compile without any warning. For + # example using: 'int main(int argc, char** argv)' will fail with the + # '-Wall -Werror' flags since the variables argc and argv would not be + # used in the program... + # + src = src + """ +#include +#include +int main(void) { + printf("%d", (int)sizeof(""" + type_name + """)); + return 0; +} + """ + st, out = context.RunProg(src, suffix) + try: + size = int(out) + except ValueError: + # If cannot convert output of test prog to an integer (the size), + # something went wront, so just fail + st = 1 + size = 0 + + if not st: + context.Display("yes\n") + _Have(context, "SIZEOF_%s" % type_name, size, + "The size of `%s', as computed by sizeof." % type_name) + return size + else: + context.Display("no\n") + _LogFailed(context, src, st) + return 0 + + return 0 + +def CheckDeclaration(context, symbol, includes = None, language = None): + """Checks whether symbol is declared. + + Use the same test as autoconf, that is test whether the symbol is defined + as a macro or can be used as an r-value. + + Arguments: + symbol : str + the symbol to check + includes : str + Optional "header" can be defined to include a header file. + language : str + only C and C++ supported. + + Returns: + status : bool + True if the check failed, False if succeeded.""" + + # Include "confdefs.h" first, so that the header can use HAVE_HEADER_H. + if context.headerfilename: + includetext = '#include "%s"' % context.headerfilename + else: + includetext = '' + + if not includes: + includes = "" + + lang, suffix, msg = _lang2suffix(language) + if msg: + context.Display("Cannot check for declaration %s: %s\n" % (symbol, msg)) + return msg + + src = includetext + includes + context.Display('Checking whether %s is declared... ' % symbol) + + src = src + r""" +int main(void) +{ +#ifndef %s + (void) %s; +#endif + ; + return 0; +} +""" % (symbol, symbol) + + st = context.CompileProg(src, suffix) + _YesNoResult(context, st, "HAVE_DECL_" + symbol, src, + "Set to 1 if %s is defined." % symbol) + return st + + +def CheckMember(context, aggregate_member, header = None, language = None): + """ + Configure check for a C or C++ member "aggregate_member". + Optional "header" can be defined to include a header file. + "language" should be "C" or "C++" and is used to select the compiler. + Default is "C". + Note that this uses the current value of compiler and linker flags, make + sure $CFLAGS, $CPPFLAGS and $LIBS are set correctly. + + Arguments: + aggregate_member : str + the member to check. For example, 'struct tm.tm_gmtoff'. + includes : str + Optional "header" can be defined to include a header file. + language : str + only C and C++ supported. + + Returns the status (0 or False = Passed, True/non-zero = Failed). + """ + + lang, suffix, msg = _lang2suffix(language) + if msg: + context.Display("Cannot check for member %s: %s\n" % (aggregate_member, msg)) + return True + context.Display("Checking for %s member %s... " % (lang, aggregate_member)) + fields = aggregate_member.split('.') + if len(fields) != 2: + msg = "shall contain just one dot, for example 'struct tm.tm_gmtoff'" + context.Display("Cannot check for member %s: %s\n" % (aggregate_member, msg)) + return True + aggregate, member = fields[0], fields[1] + + # Include "confdefs.h" first, so that the header can use HAVE_HEADER_H. + if context.headerfilename: + includetext = '#include "%s"' % context.headerfilename + else: + includetext = '' + if not header: + header = '' + text = ''' +%(include)s +%(header)s + +int main(void) { + if (sizeof ((%(aggregate)s *) 0)->%(member)s) + return 0; +}''' % {'include': includetext, + 'header': header, + 'aggregate': aggregate, + 'member': member} + + ret = context.BuildProg(text, suffix) + _YesNoResult(context, ret, "HAVE_" + aggregate_member, text, + "Define to 1 if the system has the member `%s`." % aggregate_member) + return ret + +def CheckLib(context, libs, func_name = None, header = None, + extra_libs = None, call = None, language = None, autoadd = 1, + append=True, unique=False): + """ + Configure check for a C or C++ libraries "libs". Searches through + the list of libraries, until one is found where the test succeeds. + Tests if "func_name" or "call" exists in the library. Note: if it exists + in another library the test succeeds anyway! + Optional "header" can be defined to include a header file. If not given a + default prototype for "func_name" is added. + Optional "extra_libs" is a list of library names to be added after + "lib_name" in the build command. To be used for libraries that "lib_name" + depends on. + Optional "call" replaces the call to "func_name" in the test code. It must + consist of complete C statements, including a trailing ";". + Both "func_name" and "call" arguments are optional, and in that case, just + linking against the libs is tested. + "language" should be "C" or "C++" and is used to select the compiler. + Default is "C". + Note that this uses the current value of compiler and linker flags, make + sure $CFLAGS, $CPPFLAGS and $LIBS are set correctly. + Returns an empty string for success, an error message for failure. + """ + # Include "confdefs.h" first, so that the header can use HAVE_HEADER_H. + if context.headerfilename: + includetext = '#include "%s"' % context.headerfilename + else: + includetext = '' + if not header: + header = "" + + text = """ +%s +%s""" % (includetext, header) + + # Add a function declaration if needed. + if func_name and func_name != "main": + if not header: + text = text + """ +#ifdef __cplusplus +extern "C" +#endif +char %s(); +""" % func_name + + # The actual test code. + if not call: + call = "%s();" % func_name + + # if no function to test, leave main() blank + text = text + """ +int +main() { + %s +return 0; +} +""" % (call or "") + + if call: + i = call.find("\n") + if i > 0: + calltext = call[:i] + ".." + elif call[-1] == ';': + calltext = call[:-1] + else: + calltext = call + + for lib_name in libs: + + lang, suffix, msg = _lang2suffix(language) + if msg: + context.Display("Cannot check for library %s: %s\n" % (lib_name, msg)) + return msg + + # if a function was specified to run in main(), say it + if call: + context.Display("Checking for %s in %s library %s... " + % (calltext, lang, lib_name)) + # otherwise, just say the name of library and language + else: + context.Display("Checking for %s library %s... " + % (lang, lib_name)) + + if lib_name: + l = [ lib_name ] + if extra_libs: + l.extend(extra_libs) + if append: + oldLIBS = context.AppendLIBS(l, unique) + else: + oldLIBS = context.PrependLIBS(l, unique) + sym = "HAVE_LIB" + lib_name + else: + oldLIBS = -1 + sym = None + + ret = context.BuildProg(text, suffix) + + _YesNoResult(context, ret, sym, text, + "Define to 1 if you have the `%s' library." % lib_name) + if oldLIBS != -1 and (ret or not autoadd): + context.SetLIBS(oldLIBS) + + if not ret: + return ret + + return ret + +def CheckProg(context, prog_name): + """ + Configure check for a specific program. + + Check whether program prog_name exists in path. If it is found, + returns the path for it, otherwise returns None. + """ + context.Display("Checking whether %s program exists..." % prog_name) + path = context.env.WhereIs(prog_name) + if path: + context.Display(path + "\n") + else: + context.Display("no\n") + return path + + +# +# END OF PUBLIC FUNCTIONS +# + +def _YesNoResult(context, ret, key, text, comment = None): + r""" + Handle the result of a test with a "yes" or "no" result. + + :Parameters: + - `ret` is the return value: empty if OK, error message when not. + - `key` is the name of the symbol to be defined (HAVE_foo). + - `text` is the source code of the program used for testing. + - `comment` is the C comment to add above the line defining the symbol (the comment is automatically put inside a /\* \*/). If None, no comment is added. + """ + if key: + _Have(context, key, not ret, comment) + if ret: + context.Display("no\n") + _LogFailed(context, text, ret) + else: + context.Display("yes\n") + + +def _Have(context, key, have, comment = None): + r""" + Store result of a test in context.havedict and context.headerfilename. + + :Parameters: + - `key` - is a "HAVE_abc" name. It is turned into all CAPITALS and non-alphanumerics are replaced by an underscore. + - `have` - value as it should appear in the header file, include quotes when desired and escape special characters! + - `comment` is the C comment to add above the line defining the symbol (the comment is automatically put inside a /\* \*/). If None, no comment is added. + + + The value of "have" can be: + - 1 - Feature is defined, add "#define key". + - 0 - Feature is not defined, add "/\* #undef key \*/". Adding "undef" is what autoconf does. Not useful for the compiler, but it shows that the test was done. + - number - Feature is defined to this number "#define key have". Doesn't work for 0 or 1, use a string then. + - string - Feature is defined to this string "#define key have". + + + """ + key_up = key.upper() + key_up = re.sub('[^A-Z0-9_]', '_', key_up) + context.havedict[key_up] = have + if have == 1: + line = "#define %s 1\n" % key_up + elif have == 0: + line = "/* #undef %s */\n" % key_up + elif isinstance(have, int): + line = "#define %s %d\n" % (key_up, have) + else: + line = "#define %s %s\n" % (key_up, str(have)) + + if comment is not None: + lines = "\n/* %s */\n" % comment + line + else: + lines = "\n" + line + + if context.headerfilename: + f = open(context.headerfilename, "a") + f.write(lines) + f.close() + elif hasattr(context,'config_h'): + context.config_h = context.config_h + lines + + +def _LogFailed(context, text, msg): + """ + Write to the log about a failed program. + Add line numbers, so that error messages can be understood. + """ + if LogInputFiles: + context.Log("Failed program was:\n") + lines = text.split('\n') + if len(lines) and lines[-1] == '': + lines = lines[:-1] # remove trailing empty line + n = 1 + for line in lines: + context.Log("%d: %s\n" % (n, line)) + n = n + 1 + if LogErrorMessages: + context.Log("Error message: %s\n" % msg) + + +def _lang2suffix(lang): + """ + Convert a language name to a suffix. + When "lang" is empty or None C is assumed. + Returns a tuple (lang, suffix, None) when it works. + For an unrecognized language returns (None, None, msg). + + Where: + - lang = the unified language name + - suffix = the suffix, including the leading dot + - msg = an error message + """ + if not lang or lang in ["C", "c"]: + return ("C", ".c", None) + if lang in ["c++", "C++", "cpp", "CXX", "cxx"]: + return ("C++", ".cpp", None) + + return None, None, "Unsupported language: %s" % lang + + +# vim: set sw=4 et sts=4 tw=79 fo+=l: + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Debug.py b/scons/scons-local-4.5.1/SCons/Debug.py new file mode 100644 index 000000000..fa077436c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Debug.py @@ -0,0 +1,251 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Code for debugging SCons internal things. + +Shouldn't be needed by most users. Quick shortcuts: + +from SCons.Debug import caller_trace +caller_trace() +""" + +import atexit +import os +import sys +import time +import weakref +import inspect + +# Global variable that gets set to 'True' by the Main script, +# when the creation of class instances should get tracked. +track_instances = False +# List of currently tracked classes +tracked_classes = {} + +def logInstanceCreation(instance, name=None): + if name is None: + name = instance.__class__.__name__ + if name not in tracked_classes: + tracked_classes[name] = [] + if hasattr(instance, '__dict__'): + tracked_classes[name].append(weakref.ref(instance)) + else: + # weakref doesn't seem to work when the instance + # contains only slots... + tracked_classes[name].append(instance) + +def string_to_classes(s): + if s == '*': + return sorted(tracked_classes.keys()) + else: + return s.split() + +def fetchLoggedInstances(classes="*"): + classnames = string_to_classes(classes) + return [(cn, len(tracked_classes[cn])) for cn in classnames] + +def countLoggedInstances(classes, file=sys.stdout): + for classname in string_to_classes(classes): + file.write("%s: %d\n" % (classname, len(tracked_classes[classname]))) + +def listLoggedInstances(classes, file=sys.stdout): + for classname in string_to_classes(classes): + file.write('\n%s:\n' % classname) + for ref in tracked_classes[classname]: + if inspect.isclass(ref): + obj = ref() + else: + obj = ref + if obj is not None: + file.write(' %s\n' % repr(obj)) + +def dumpLoggedInstances(classes, file=sys.stdout): + for classname in string_to_classes(classes): + file.write('\n%s:\n' % classname) + for ref in tracked_classes[classname]: + obj = ref() + if obj is not None: + file.write(' %s:\n' % obj) + for key, value in obj.__dict__.items(): + file.write(' %20s : %s\n' % (key, value)) + + +if sys.platform[:5] == "linux": + # Linux doesn't actually support memory usage stats from getrusage(). + def memory(): + with open('/proc/self/stat') as f: + mstr = f.read() + mstr = mstr.split()[22] + return int(mstr) +elif sys.platform[:6] == 'darwin': + #TODO really get memory stats for OS X + def memory(): + return 0 +elif sys.platform == 'win32': + from SCons.compat.win32 import get_peak_memory_usage + memory = get_peak_memory_usage +else: + try: + import resource + except ImportError: + def memory(): + return 0 + else: + def memory(): + res = resource.getrusage(resource.RUSAGE_SELF) + return res[4] + + +def caller_stack(): + """return caller's stack""" + import traceback + tb = traceback.extract_stack() + # strip itself and the caller from the output + tb = tb[:-2] + result = [] + for back in tb: + # (filename, line number, function name, text) + key = back[:3] + result.append('%s:%d(%s)' % func_shorten(key)) + return result + +caller_bases = {} +caller_dicts = {} + +def caller_trace(back=0): + """ + Trace caller stack and save info into global dicts, which + are printed automatically at the end of SCons execution. + """ + global caller_bases, caller_dicts + import traceback + tb = traceback.extract_stack(limit=3+back) + tb.reverse() + callee = tb[1][:3] + caller_bases[callee] = caller_bases.get(callee, 0) + 1 + for caller in tb[2:]: + caller = callee + caller[:3] + try: + entry = caller_dicts[callee] + except KeyError: + caller_dicts[callee] = entry = {} + entry[caller] = entry.get(caller, 0) + 1 + callee = caller + +# print a single caller and its callers, if any +def _dump_one_caller(key, file, level=0): + leader = ' '*level + for v,c in sorted([(-v,c) for c,v in caller_dicts[key].items()]): + file.write("%s %6d %s:%d(%s)\n" % ((leader,-v) + func_shorten(c[-3:]))) + if c in caller_dicts: + _dump_one_caller(c, file, level+1) + +# print each call tree +def dump_caller_counts(file=sys.stdout): + for k in sorted(caller_bases.keys()): + file.write("Callers of %s:%d(%s), %d calls:\n" + % (func_shorten(k) + (caller_bases[k],))) + _dump_one_caller(k, file) + +shorten_list = [ + ( '/scons/SCons/', 1), + ( '/src/engine/SCons/', 1), + ( '/usr/lib/python', 0), +] + +if os.sep != '/': + shorten_list = [(t[0].replace('/', os.sep), t[1]) for t in shorten_list] + +def func_shorten(func_tuple): + f = func_tuple[0] + for t in shorten_list: + i = f.find(t[0]) + if i >= 0: + if t[1]: + i = i + len(t[0]) + return (f[i:],)+func_tuple[1:] + return func_tuple + + +TraceFP = {} +if sys.platform == 'win32': + TraceDefault = 'con' +else: + TraceDefault = '/dev/tty' +TimeStampDefault = False +StartTime = time.perf_counter() +PreviousTime = StartTime + +def Trace(msg, tracefile=None, mode='w', tstamp=False): + """Write a trace message. + + Write messages when debugging which do not interfere with stdout. + Useful in tests, which monitor stdout and would break with + unexpected output. Trace messages can go to the console (which is + opened as a file), or to a disk file; the tracefile argument persists + across calls unless overridden. + + Args: + tracefile: file to write trace message to. If omitted, + write to the previous trace file (default: console). + mode: file open mode (default: 'w') + tstamp: write relative timestamps with trace. Outputs time since + scons was started, and time since last trace (default: False) + + """ + global TraceDefault + global TimeStampDefault + global PreviousTime + + def trace_cleanup(traceFP): + traceFP.close() + + if tracefile is None: + tracefile = TraceDefault + else: + TraceDefault = tracefile + if not tstamp: + tstamp = TimeStampDefault + else: + TimeStampDefault = tstamp + try: + fp = TraceFP[tracefile] + except KeyError: + try: + fp = TraceFP[tracefile] = open(tracefile, mode) + atexit.register(trace_cleanup, fp) + except TypeError: + # Assume we were passed an open file pointer. + fp = tracefile + if tstamp: + now = time.perf_counter() + fp.write('%8.4f %8.4f: ' % (now - StartTime, now - PreviousTime)) + PreviousTime = now + fp.write(msg) + fp.flush() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Defaults.py b/scons/scons-local-4.5.1/SCons/Defaults.py new file mode 100644 index 000000000..b21ce4c4a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Defaults.py @@ -0,0 +1,718 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. +# + +"""Builders and other things for the local site. + +Here's where we'll duplicate the functionality of autoconf until we +move it into the installation procedure or use something like qmconf. + +The code that reads the registry to find MSVC components was borrowed +from distutils.msvccompiler. +""" + +import os +import shutil +import stat +import sys +import time +from typing import List + +import SCons.Action +import SCons.Builder +import SCons.CacheDir +import SCons.Environment +import SCons.Errors +import SCons.PathList +import SCons.Scanner.Dir +import SCons.Subst +import SCons.Tool +from SCons.Util import is_List, is_String, is_Sequence, is_Tuple, is_Dict, flatten + +# A placeholder for a default Environment (for fetching source files +# from source code management systems and the like). This must be +# initialized later, after the top-level directory is set by the calling +# interface. +_default_env = None + + +# Lazily instantiate the default environment so the overhead of creating +# it doesn't apply when it's not needed. +def _fetch_DefaultEnvironment(*args, **kw): + """Returns the already-created default construction environment.""" + global _default_env + return _default_env + + +def DefaultEnvironment(*args, **kw): + """ + Initial public entry point for creating the default construction + Environment. + + After creating the environment, we overwrite our name + (DefaultEnvironment) with the _fetch_DefaultEnvironment() function, + which more efficiently returns the initialized default construction + environment without checking for its existence. + + (This function still exists with its _default_check because someone + else (*cough* Script/__init__.py *cough*) may keep a reference + to this function. So we can't use the fully functional idiom of + having the name originally be a something that *only* creates the + construction environment and then overwrites the name.) + """ + global _default_env + if not _default_env: + _default_env = SCons.Environment.Environment(*args, **kw) + _default_env.Decider('content') + global DefaultEnvironment + DefaultEnvironment = _fetch_DefaultEnvironment + _default_env._CacheDir_path = None + return _default_env + + +# Emitters for setting the shared attribute on object files, +# and an action for checking that all of the source files +# going into a shared library are, in fact, shared. +def StaticObjectEmitter(target, source, env): + for tgt in target: + tgt.attributes.shared = None + return target, source + + +def SharedObjectEmitter(target, source, env): + for tgt in target: + tgt.attributes.shared = 1 + return target, source + + +def SharedFlagChecker(source, target, env): + same = env.subst('$STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME') + if same == '0' or same == '' or same == 'False': + for src in source: + try: + shared = src.attributes.shared + except AttributeError: + shared = None + if not shared: + raise SCons.Errors.UserError( + "Source file: %s is static and is not compatible with shared target: %s" % (src, target[0])) + + +SharedCheck = SCons.Action.Action(SharedFlagChecker, None) + +# Some people were using these variable name before we made +# SourceFileScanner part of the public interface. Don't break their +# SConscript files until we've given them some fair warning and a +# transition period. +CScan = SCons.Tool.CScanner +DScan = SCons.Tool.DScanner +LaTeXScan = SCons.Tool.LaTeXScanner +ObjSourceScan = SCons.Tool.SourceFileScanner +ProgScan = SCons.Tool.ProgramScanner + +# These aren't really tool scanners, so they don't quite belong with +# the rest of those in Tool/__init__.py, but I'm not sure where else +# they should go. Leave them here for now. + +DirScanner = SCons.Scanner.Dir.DirScanner() +DirEntryScanner = SCons.Scanner.Dir.DirEntryScanner() + +# Actions for common languages. +CAction = SCons.Action.Action("$CCCOM", "$CCCOMSTR") +ShCAction = SCons.Action.Action("$SHCCCOM", "$SHCCCOMSTR") +CXXAction = SCons.Action.Action("$CXXCOM", "$CXXCOMSTR") +ShCXXAction = SCons.Action.Action("$SHCXXCOM", "$SHCXXCOMSTR") + +DAction = SCons.Action.Action("$DCOM", "$DCOMSTR") +ShDAction = SCons.Action.Action("$SHDCOM", "$SHDCOMSTR") + +ASAction = SCons.Action.Action("$ASCOM", "$ASCOMSTR") +ASPPAction = SCons.Action.Action("$ASPPCOM", "$ASPPCOMSTR") + +LinkAction = SCons.Action.Action("$LINKCOM", "$LINKCOMSTR") +ShLinkAction = SCons.Action.Action("$SHLINKCOM", "$SHLINKCOMSTR") + +LdModuleLinkAction = SCons.Action.Action("$LDMODULECOM", "$LDMODULECOMSTR") + +# Common tasks that we allow users to perform in platform-independent +# ways by creating ActionFactory instances. +ActionFactory = SCons.Action.ActionFactory + + +def get_paths_str(dest) -> str: + """Generates a string from *dest* for use in a strfunction. + + If *dest* is a list, manually converts each elem to a string. + """ + def quote(arg): + return f'"{arg}"' + + if is_List(dest): + elem_strs = [quote(d) for d in dest] + return f'[{", ".join(elem_strs)}]' + else: + return quote(dest) + + +permission_dic = { + 'u': { + 'r': stat.S_IRUSR, + 'w': stat.S_IWUSR, + 'x': stat.S_IXUSR + }, + 'g': { + 'r': stat.S_IRGRP, + 'w': stat.S_IWGRP, + 'x': stat.S_IXGRP + }, + 'o': { + 'r': stat.S_IROTH, + 'w': stat.S_IWOTH, + 'x': stat.S_IXOTH + } +} + + +def chmod_func(dest, mode) -> None: + """Implementation of the Chmod action function. + + *mode* can be either an integer (normally expressed in octal mode, + as in 0o755) or a string following the syntax of the POSIX chmod + command (for example "ugo+w"). The latter must be converted, since + the underlying Python only takes the numeric form. + """ + from string import digits + SCons.Node.FS.invalidate_node_memos(dest) + if not is_List(dest): + dest = [dest] + if is_String(mode) and 0 not in [i in digits for i in mode]: + mode = int(mode, 8) + if not is_String(mode): + for element in dest: + os.chmod(str(element), mode) + else: + mode = str(mode) + for operation in mode.split(","): + if "=" in operation: + operator = "=" + elif "+" in operation: + operator = "+" + elif "-" in operation: + operator = "-" + else: + raise SyntaxError("Could not find +, - or =") + operation_list = operation.split(operator) + if len(operation_list) != 2: + raise SyntaxError("More than one operator found") + user = operation_list[0].strip().replace("a", "ugo") + permission = operation_list[1].strip() + new_perm = 0 + for u in user: + for p in permission: + try: + new_perm = new_perm | permission_dic[u][p] + except KeyError: + raise SyntaxError("Unrecognized user or permission format") + for element in dest: + curr_perm = os.stat(str(element)).st_mode + if operator == "=": + os.chmod(str(element), new_perm) + elif operator == "+": + os.chmod(str(element), curr_perm | new_perm) + elif operator == "-": + os.chmod(str(element), curr_perm & ~new_perm) + + +def chmod_strfunc(dest, mode) -> str: + """strfunction for the Chmod action function.""" + if not is_String(mode): + return f'Chmod({get_paths_str(dest)}, {mode:#o})' + else: + return f'Chmod({get_paths_str(dest)}, "{mode}")' + + + +Chmod = ActionFactory(chmod_func, chmod_strfunc) + + + +def copy_func(dest, src, symlinks=True) -> int: + """Implementation of the Copy action function. + + Copies *src* to *dest*. If *src* is a list, *dest* must be + a directory, or not exist (will be created). + + Since Python :mod:`shutil` methods, which know nothing about + SCons Nodes, will be called to perform the actual copying, + args are converted to strings first. + + If *symlinks* evaluates true, then a symbolic link will be + shallow copied and recreated as a symbolic link; otherwise, copying + a symbolic link will be equivalent to copying the symbolic link's + final target regardless of symbolic link depth. + """ + + dest = str(dest) + src = [str(n) for n in src] if is_List(src) else str(src) + + SCons.Node.FS.invalidate_node_memos(dest) + if is_List(src): + # this fails only if dest exists and is not a dir + try: + os.makedirs(dest, exist_ok=True) + except FileExistsError: + raise SCons.Errors.BuildError( + errstr=( + 'Error: Copy() called with a list of sources, ' + 'which requires target to be a directory, ' + f'but "{dest}" is not a directory.' + ) + ) + for file in src: + shutil.copy2(file, dest) + return 0 + + elif os.path.islink(src): + if symlinks: + os.symlink(os.readlink(src), dest) + return 0 + + return copy_func(dest, os.path.realpath(src)) + + elif os.path.isfile(src): + shutil.copy2(src, dest) + return 0 + + else: + shutil.copytree(src, dest, symlinks) + return 0 + + +def copy_strfunc(dest, src, symlinks=True) -> str: + """strfunction for the Copy action function.""" + return f'Copy({get_paths_str(dest)}, {get_paths_str(src)})' + + +Copy = ActionFactory(copy_func, copy_strfunc) + + +def delete_func(dest, must_exist=False) -> None: + """Implementation of the Delete action function. + + Lets the Python :func:`os.unlink` raise an error if *dest* does not exist, + unless *must_exist* evaluates false (the default). + """ + SCons.Node.FS.invalidate_node_memos(dest) + if not is_List(dest): + dest = [dest] + for entry in dest: + entry = str(entry) + # os.path.exists returns False with broken links that exist + entry_exists = os.path.exists(entry) or os.path.islink(entry) + if not entry_exists and not must_exist: + continue + # os.path.isdir returns True when entry is a link to a dir + if os.path.isdir(entry) and not os.path.islink(entry): + shutil.rmtree(entry, True) + continue + os.unlink(entry) + + +def delete_strfunc(dest, must_exist=False) -> str: + """strfunction for the Delete action function.""" + return f'Delete({get_paths_str(dest)})' + + +Delete = ActionFactory(delete_func, delete_strfunc) + + +def mkdir_func(dest) -> None: + """Implementation of the Mkdir action function.""" + SCons.Node.FS.invalidate_node_memos(dest) + if not is_List(dest): + dest = [dest] + for entry in dest: + os.makedirs(str(entry), exist_ok=True) + + +Mkdir = ActionFactory(mkdir_func, lambda _dir: f'Mkdir({get_paths_str(_dir)})') + + +def move_func(dest, src) -> None: + """Implementation of the Move action function.""" + SCons.Node.FS.invalidate_node_memos(dest) + SCons.Node.FS.invalidate_node_memos(src) + shutil.move(src, dest) + + +Move = ActionFactory( + move_func, lambda dest, src: f'Move("{dest}", "{src}")', convert=str +) + + +def touch_func(dest) -> None: + """Implementation of the Touch action function.""" + SCons.Node.FS.invalidate_node_memos(dest) + if not is_List(dest): + dest = [dest] + for file in dest: + file = str(file) + mtime = int(time.time()) + if os.path.exists(file): + atime = os.path.getatime(file) + else: + with open(file, 'w'): + atime = mtime + os.utime(file, (atime, mtime)) + + +Touch = ActionFactory(touch_func, lambda file: f'Touch({get_paths_str(file)})') + + +# Internal utility functions + +# pylint: disable-msg=too-many-arguments +def _concat(prefix, items_iter, suffix, env, f=lambda x: x, target=None, source=None, affect_signature=True): + """ + Creates a new list from 'items_iter' by first interpolating each element + in the list using the 'env' dictionary and then calling f on the + list, and finally calling _concat_ixes to concatenate 'prefix' and + 'suffix' onto each element of the list. + """ + + if not items_iter: + return items_iter + + l = f(SCons.PathList.PathList(items_iter).subst_path(env, target, source)) + if l is not None: + items_iter = l + + if not affect_signature: + value = ['$('] + else: + value = [] + value += _concat_ixes(prefix, items_iter, suffix, env) + + if not affect_signature: + value += ["$)"] + + return value +# pylint: enable-msg=too-many-arguments + + +def _concat_ixes(prefix, items_iter, suffix, env): + """ + Creates a new list from 'items_iter' by concatenating the 'prefix' and + 'suffix' arguments onto each element of the list. A trailing space + on 'prefix' or leading space on 'suffix' will cause them to be put + into separate list elements rather than being concatenated. + """ + + result = [] + + # ensure that prefix and suffix are strings + prefix = str(env.subst(prefix, SCons.Subst.SUBST_RAW)) + suffix = str(env.subst(suffix, SCons.Subst.SUBST_RAW)) + + for x in flatten(items_iter): + if isinstance(x, SCons.Node.FS.File): + result.append(x) + continue + x = str(x) + if x: + + if prefix: + if prefix[-1] == ' ': + result.append(prefix[:-1]) + elif x[:len(prefix)] != prefix: + x = prefix + x + + result.append(x) + + if suffix: + if suffix[0] == ' ': + result.append(suffix[1:]) + elif x[-len(suffix):] != suffix: + result[-1] = result[-1] + suffix + + return result + + +def _stripixes(prefix, itms, suffix, stripprefixes, stripsuffixes, env, c=None): + """ + This is a wrapper around _concat()/_concat_ixes() that checks for + the existence of prefixes or suffixes on list items and strips them + where it finds them. This is used by tools (like the GNU linker) + that need to turn something like 'libfoo.a' into '-lfoo'. + """ + + if not itms: + return itms + + if not callable(c): + env_c = env['_concat'] + if env_c != _concat and callable(env_c): + # There's a custom _concat() method in the construction + # environment, and we've allowed people to set that in + # the past (see test/custom-concat.py), so preserve the + # backwards compatibility. + c = env_c + else: + c = _concat_ixes + + stripprefixes = list(map(env.subst, flatten(stripprefixes))) + stripsuffixes = list(map(env.subst, flatten(stripsuffixes))) + + stripped = [] + for l in SCons.PathList.PathList(itms).subst_path(env, None, None): + if isinstance(l, SCons.Node.FS.File): + stripped.append(l) + continue + + if not is_String(l): + l = str(l) + + for stripprefix in stripprefixes: + lsp = len(stripprefix) + if l[:lsp] == stripprefix: + l = l[lsp:] + # Do not strip more than one prefix + break + + for stripsuffix in stripsuffixes: + lss = len(stripsuffix) + if l[-lss:] == stripsuffix: + l = l[:-lss] + # Do not strip more than one suffix + break + + stripped.append(l) + + return c(prefix, stripped, suffix, env) + + +def processDefines(defs) -> List[str]: + """Return list of strings for preprocessor defines from *defs*. + + Resolves the different forms ``CPPDEFINES`` can be assembled in: + if the Append/Prepend routines are used beyond a initial setting it + will be a deque, but if written to only once (Environment initializer, + or direct write) it can be a multitude of types. + + Any prefix/suffix is handled elsewhere (usually :func:`_concat_ixes`). + + .. versionchanged:: 4.5.0 + Bare tuples are now treated the same as tuple-in-sequence, assumed + to describe a valued macro. Bare strings are now split on space. + A dictionary is no longer sorted before handling. + """ + dlist = [] + if is_List(defs): + for define in defs: + if define is None: + continue + elif is_Sequence(define): + if len(define) > 2: + raise SCons.Errors.UserError( + f"Invalid tuple in CPPDEFINES: {define!r}, " + "must be a tuple with only two elements" + ) + name, *value = define + if value and value[0] is not None: + # TODO: do we need to quote value if it contains space? + dlist.append(f"{name}={value[0]}") + else: + dlist.append(str(define[0])) + elif is_Dict(define): + for macro, value in define.items(): + if value is not None: + # TODO: do we need to quote value if it contains space? + dlist.append(f"{macro}={value}") + else: + dlist.append(str(macro)) + elif is_String(define): + dlist.append(str(define)) + else: + raise SCons.Errors.UserError( + f"CPPDEFINES entry {define!r} is not a tuple, list, " + "dict, string or None." + ) + elif is_Tuple(defs): + if len(defs) > 2: + raise SCons.Errors.UserError( + f"Invalid tuple in CPPDEFINES: {defs!r}, " + "must be a tuple with only two elements" + ) + name, *value = defs + if value and value[0] is not None: + # TODO: do we need to quote value if it contains space? + dlist.append(f"{name}={value[0]}") + else: + dlist.append(str(define[0])) + elif is_Dict(defs): + for macro, value in defs.items(): + if value is None: + dlist.append(str(macro)) + else: + dlist.append(f"{macro}={value}") + elif is_String(defs): + return defs.split() + else: + dlist.append(str(defs)) + + return dlist + + +def _defines(prefix, defs, suffix, env, target=None, source=None, c=_concat_ixes): + """A wrapper around :func:`_concat_ixes` that turns a list or string + into a list of C preprocessor command-line definitions. + """ + return c(prefix, env.subst_list(processDefines(defs), target=target, source=source), suffix, env) + + +class NullCmdGenerator: + """This is a callable class that can be used in place of other + command generators if you don't want them to do anything. + + The __call__ method for this class simply returns the thing + you instantiated it with. + + Example usage: + env["DO_NOTHING"] = NullCmdGenerator + env["LINKCOM"] = "${DO_NOTHING('$LINK $SOURCES $TARGET')}" + """ + + def __init__(self, cmd): + self.cmd = cmd + + def __call__(self, target, source, env, for_signature=None): + return self.cmd + + +class Variable_Method_Caller: + """A class for finding a construction variable on the stack and + calling one of its methods. + + We use this to support "construction variables" in our string + eval()s that actually stand in for methods--specifically, use + of "RDirs" in call to _concat that should actually execute the + "TARGET.RDirs" method. (We used to support this by creating a little + "build dictionary" that mapped RDirs to the method, but this got in + the way of Memoizing construction environments, because we had to + create new environment objects to hold the variables.) + """ + + def __init__(self, variable, method): + self.variable = variable + self.method = method + + def __call__(self, *args, **kw): + try: + 1 // 0 + except ZeroDivisionError: + # Don't start iterating with the current stack-frame to + # prevent creating reference cycles (f_back is safe). + frame = sys.exc_info()[2].tb_frame.f_back + variable = self.variable + while frame: + if variable in frame.f_locals: + v = frame.f_locals[variable] + if v: + method = getattr(v, self.method) + return method(*args, **kw) + frame = frame.f_back + return None + + +def __libversionflags(env, version_var, flags_var): + """ + if version_var is not empty, returns env[flags_var], otherwise returns None + :param env: + :param version_var: + :param flags_var: + :return: + """ + try: + if env.subst('$' + version_var): + return env[flags_var] + except KeyError: + pass + return None + + +def __lib_either_version_flag(env, version_var1, version_var2, flags_var): + """ + if $version_var1 or $version_var2 is not empty, returns env[flags_var], otherwise returns None + :param env: + :param version_var1: + :param version_var2: + :param flags_var: + :return: + """ + try: + if env.subst('$' + version_var1) or env.subst('$' + version_var2): + return env[flags_var] + except KeyError: + pass + return None + + +ConstructionEnvironment = { + 'BUILDERS': {}, + 'SCANNERS': [SCons.Tool.SourceFileScanner], + 'CONFIGUREDIR': '#/.sconf_temp', + 'CONFIGURELOG': '#/config.log', + 'CPPSUFFIXES': SCons.Tool.CSuffixes, + 'DSUFFIXES': SCons.Tool.DSuffixes, + 'ENV': {}, + 'IDLSUFFIXES': SCons.Tool.IDLSuffixes, + '_concat': _concat, + '_defines': _defines, + '_stripixes': _stripixes, + '_LIBFLAGS': '${_concat(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, __env__)}', + + '_LIBDIRFLAGS': '${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE, affect_signature=False)}', + '_CPPINCFLAGS': '${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, TARGET, SOURCE, affect_signature=False)}', + + '_CPPDEFFLAGS': '${_defines(CPPDEFPREFIX, CPPDEFINES, CPPDEFSUFFIX, __env__, TARGET, SOURCE)}', + + '__libversionflags': __libversionflags, + '__SHLIBVERSIONFLAGS': '${__libversionflags(__env__,"SHLIBVERSION","_SHLIBVERSIONFLAGS")}', + '__LDMODULEVERSIONFLAGS': '${__libversionflags(__env__,"LDMODULEVERSION","_LDMODULEVERSIONFLAGS")}', + '__DSHLIBVERSIONFLAGS': '${__libversionflags(__env__,"DSHLIBVERSION","_DSHLIBVERSIONFLAGS")}', + '__lib_either_version_flag': __lib_either_version_flag, + + 'TEMPFILE': NullCmdGenerator, + 'TEMPFILEARGJOIN': ' ', + 'TEMPFILEARGESCFUNC': SCons.Subst.quote_spaces, + 'Dir': Variable_Method_Caller('TARGET', 'Dir'), + 'Dirs': Variable_Method_Caller('TARGET', 'Dirs'), + 'File': Variable_Method_Caller('TARGET', 'File'), + 'RDirs': Variable_Method_Caller('TARGET', 'RDirs'), +} + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Environment.py b/scons/scons-local-4.5.1/SCons/Environment.py new file mode 100644 index 000000000..9140d2726 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Environment.py @@ -0,0 +1,2714 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Base class for construction Environments. + +These are the primary objects used to communicate dependency and +construction information to the build engine. + +Keyword arguments supplied when the construction Environment is created +are construction variables used to initialize the Environment. +""" + +import copy +import os +import sys +import re +import shlex +from collections import UserDict, deque + +import SCons.Action +import SCons.Builder +import SCons.Debug +from SCons.Debug import logInstanceCreation +import SCons.Defaults +from SCons.Errors import UserError, BuildError +import SCons.Memoize +import SCons.Node +import SCons.Node.Alias +import SCons.Node.FS +import SCons.Node.Python +import SCons.Platform +import SCons.SConf +import SCons.SConsign +import SCons.Subst +import SCons.Tool +import SCons.Warnings +from SCons.Util import ( + AppendPath, + CLVar, + LogicalLines, + MethodWrapper, + PrependPath, + Split, + WhereIs, + flatten, + is_Dict, + is_List, + is_Scalar, + is_Sequence, + is_String, + is_Tuple, + semi_deepcopy, + semi_deepcopy_dict, + to_String_for_subst, + uniquer_hashables, +) + +class _Null: + pass + +_null = _Null + +_warn_copy_deprecated = True +_warn_source_signatures_deprecated = True +_warn_target_signatures_deprecated = True + +CleanTargets = {} +CalculatorArgs = {} + +def alias_builder(env, target, source): + pass + +AliasBuilder = SCons.Builder.Builder( + action=alias_builder, + target_factory=SCons.Node.Alias.default_ans.Alias, + source_factory=SCons.Node.FS.Entry, + multi=True, + is_explicit=None, + name='AliasBuilder', +) + +def apply_tools(env, tools, toolpath): + # Store the toolpath in the Environment. + # This is expected to work even if no tools are given, so do this first. + if toolpath is not None: + env['toolpath'] = toolpath + if not tools: + return + + # Filter out null tools from the list. + for tool in [_f for _f in tools if _f]: + if is_List(tool) or is_Tuple(tool): + # toolargs should be a dict of kw args + toolname, toolargs, *rest = tool + _ = env.Tool(toolname, **toolargs) + else: + _ = env.Tool(tool) + +# These names are (or will be) controlled by SCons; users should never +# set or override them. The warning can optionally be turned off, +# but scons will still ignore the illegal variable names even if it's off. +reserved_construction_var_names = [ + 'CHANGED_SOURCES', + 'CHANGED_TARGETS', + 'SOURCE', + 'SOURCES', + 'TARGET', + 'TARGETS', + 'UNCHANGED_SOURCES', + 'UNCHANGED_TARGETS', +] + +future_reserved_construction_var_names = [ + #'HOST_OS', + #'HOST_ARCH', + #'HOST_CPU', +] + +def copy_non_reserved_keywords(dict): + result = semi_deepcopy(dict) + for k in result.copy().keys(): + if k in reserved_construction_var_names: + msg = "Ignoring attempt to set reserved variable `$%s'" + SCons.Warnings.warn(SCons.Warnings.ReservedVariableWarning, msg % k) + del result[k] + return result + +def _set_reserved(env, key, value): + msg = "Ignoring attempt to set reserved variable `$%s'" + SCons.Warnings.warn(SCons.Warnings.ReservedVariableWarning, msg % key) + +def _set_future_reserved(env, key, value): + env._dict[key] = value + msg = "`$%s' will be reserved in a future release and setting it will become ignored" + SCons.Warnings.warn(SCons.Warnings.FutureReservedVariableWarning, msg % key) + +def _set_BUILDERS(env, key, value): + try: + bd = env._dict[key] + for k in bd.copy().keys(): + del bd[k] + except KeyError: + bd = BuilderDict(bd, env) + env._dict[key] = bd + for k, v in value.items(): + if not SCons.Builder.is_a_Builder(v): + raise UserError('%s is not a Builder.' % repr(v)) + bd.update(value) + +def _del_SCANNERS(env, key): + del env._dict[key] + env.scanner_map_delete() + +def _set_SCANNERS(env, key, value): + env._dict[key] = value + env.scanner_map_delete() + +def _delete_duplicates(l, keep_last): + """Delete duplicates from a sequence, keeping the first or last.""" + seen=set() + result=[] + if keep_last: # reverse in & out, then keep first + l.reverse() + for i in l: + try: + if i not in seen: + result.append(i) + seen.add(i) + except TypeError: + # probably unhashable. Just keep it. + result.append(i) + if keep_last: + result.reverse() + return result + + +def _add_cppdefines( + env_dict: dict, + val, # add annotation? + prepend: bool = False, + unique: bool = False, + delete_existing: bool = False, +) -> None: + """Adds to ``CPPDEFINES``, using the rules for C preprocessor macros. + + This is split out from regular construction variable addition because + these entries can express either a macro with a replacement value or + one without. A macro with replacement value can be supplied as *val* + in three ways: as a combined string ``"name=value"``; as a tuple + ``(name, value)``, or as an entry in a dictionary ``{"name": value}``. + A list argument with multiple macros can also be given. + + Additions can be unconditional (duplicates allowed) or uniquing (no dupes). + + Note if a replacement value is supplied, *unique* requires a full + match to decide uniqueness - both the macro name and the replacement. + The inner :func:`_is_in` is used to figure that out. + + Args: + env_dict: the dictionary containing the ``CPPDEFINES`` to be modified. + val: the value to add, can be string, sequence or dict + prepend: whether to put *val* in front or back. + unique: whether to add *val* if it already exists. + delete_existing: if *unique* is true, add *val* after removing previous. + + .. versionadded:: 4.5.0 + """ + + def _add_define(item, defines: deque, prepend: bool = False) -> None: + """Convenience function to prepend/append a single value. + + Sole purpose is to shorten code in the outer function. + """ + if prepend: + defines.appendleft(item) + else: + defines.append(item) + + + def _is_in(item, defines: deque): + """Returns match for *item* if found in *defines*. + + Accounts for type differences: tuple ("FOO", "BAR"), list + ["FOO", "BAR"], string "FOO=BAR" and dict {"FOO": "BAR"} all + differ as far as Python equality comparison is concerned, but + are the same for purposes of creating the preprocessor macro. + Also an unvalued string should match something like ``("FOO", None)``. + Since the caller may wish to remove a matched entry, we need to + return it - cannot remove *item* itself unless it happened to + be an exact (type) match. + + Called from a place we know *defines* is always a deque, and + *item* will not be a dict, so don't need to do much type checking. + If this ends up used more generally, would need to adjust that. + + Note implied assumption that members of a list-valued define + will not be dicts - we cannot actually guarantee this, since + if the initial add is a list its contents are not converted. + """ + def _macro_conv(v) -> list: + """Normalizes a macro to a list for comparisons.""" + if is_Tuple(v): + return list(v) + elif is_String(v): + rv = v.split("=") + if len(rv) == 1: + return [v, None] + return rv + return v + + if item in defines: # cheap check first + return item + + item = _macro_conv(item) + for define in defines: + if item == _macro_conv(define): + return define + + return False + + key = 'CPPDEFINES' + try: + defines = env_dict[key] + except KeyError: + # This is a new entry, just save it as is. Defer conversion to + # preferred type until someone tries to amend the value. + # processDefines has no problem with unconverted values if it + # gets called without any later additions. + if is_String(val): + env_dict[key] = val.split() + else: + env_dict[key] = val + return + + # Convert type of existing to deque (if necessary) to simplify processing + # of additions - inserting at either end is cheap. Deferred conversion + # is also useful in case CPPDEFINES was set initially without calling + # through here (e.g. Environment kwarg, or direct assignment). + if isinstance(defines, deque): + # Already a deque? do nothing. Explicit check is so we don't get + # picked up by the is_list case below. + pass + elif is_String(defines): + env_dict[key] = deque(defines.split()) + elif is_Tuple(defines): + if len(defines) > 2: + raise SCons.Errors.UserError( + f"Invalid tuple in CPPDEFINES: {define!r}, must be a two-tuple" + ) + env_dict[key] = deque([defines]) + elif is_List(defines): + # a little extra work in case the initial container has dict + # item(s) inside it, so those can be matched by _is_in(). + result = deque() + for define in defines: + if is_Dict(define): + result.extend(define.items()) + else: + result.append(define) + env_dict[key] = result + elif is_Dict(defines): + env_dict[key] = deque(defines.items()) + else: + env_dict[key] = deque(defines) + defines = env_dict[key] # in case we reassigned due to conversion + + # now actually do the addition. + if is_Dict(val): + # Unpack the dict while applying to existing + for item in val.items(): + if unique: + match = _is_in(item, defines) + if match and delete_existing: + defines.remove(match) + _add_define(item, defines, prepend) + elif not match: + _add_define(item, defines, prepend) + else: + _add_define(item, defines, prepend) + + elif is_String(val): + for v in val.split(): + if unique: + match = _is_in(v, defines) + if match and delete_existing: + defines.remove(match) + _add_define(v, defines, prepend) + elif not match: + _add_define(v, defines, prepend) + else: + _add_define(v, defines, prepend) + + # A tuple appended to anything should yield -Dkey=value + elif is_Tuple(val): + if len(val) > 2: + raise SCons.Errors.UserError( + f"Invalid tuple added to CPPDEFINES: {val!r}, " + "must be a two-tuple" + ) + if len(val) == 1: + val = (val[0], None) # normalize + if not is_Scalar(val[0]) or not is_Scalar(val[1]): + raise SCons.Errors.UserError( + f"Invalid tuple added to CPPDEFINES: {val!r}, " + "values must be scalar" + ) + if unique: + match = _is_in(val, defines) + if match and delete_existing: + defines.remove(match) + _add_define(val, defines, prepend) + elif not match: + _add_define(val, defines, prepend) + else: + _add_define(val, defines, prepend) + + elif is_List(val): + tmp = [] + for item in val: + if unique: + match = _is_in(item, defines) + if match and delete_existing: + defines.remove(match) + tmp.append(item) + elif not match: + tmp.append(item) + else: + tmp.append(item) + + if prepend: + defines.extendleft(tmp) + else: + defines.extend(tmp) + + # else: # are there any other cases? processDefines doesn't think so. + + +# The following is partly based on code in a comment added by Peter +# Shannon at the following page (there called the "transplant" class): +# +# ASPN : Python Cookbook : Dynamically added methods to a class +# https://code.activestate.com/recipes/81732/ +# +# We had independently been using the idiom as BuilderWrapper, but +# factoring out the common parts into this base class, and making +# BuilderWrapper a subclass that overrides __call__() to enforce specific +# Builder calling conventions, simplified some of our higher-layer code. +# +# Note: MethodWrapper moved to SCons.Util as it was needed there +# and otherwise we had a circular import problem. + +class BuilderWrapper(MethodWrapper): + """ + A MethodWrapper subclass that that associates an environment with + a Builder. + + This mainly exists to wrap the __call__() function so that all calls + to Builders can have their argument lists massaged in the same way + (treat a lone argument as the source, treat two arguments as target + then source, make sure both target and source are lists) without + having to have cut-and-paste code to do it. + + As a bit of obsessive backwards compatibility, we also intercept + attempts to get or set the "env" or "builder" attributes, which were + the names we used before we put the common functionality into the + MethodWrapper base class. We'll keep this around for a while in case + people shipped Tool modules that reached into the wrapper (like the + Tool/qt.py module does, or did). There shouldn't be a lot attribute + fetching or setting on these, so a little extra work shouldn't hurt. + """ + def __call__(self, target=None, source=_null, *args, **kw): + if source is _null: + source = target + target = None + if target is not None and not is_List(target): + target = [target] + if source is not None and not is_List(source): + source = [source] + return super().__call__(target, source, *args, **kw) + + def __repr__(self): + return '' % repr(self.name) + + def __str__(self): + return self.__repr__() + + def __getattr__(self, name): + if name == 'env': + return self.object + elif name == 'builder': + return self.method + else: + raise AttributeError(name) + + def __setattr__(self, name, value): + if name == 'env': + self.object = value + elif name == 'builder': + self.method = value + else: + self.__dict__[name] = value + + # This allows a Builder to be executed directly + # through the Environment to which it's attached. + # In practice, we shouldn't need this, because + # builders actually get executed through a Node. + # But we do have a unit test for this, and can't + # yet rule out that it would be useful in the + # future, so leave it for now. + #def execute(self, **kw): + # kw['env'] = self.env + # self.builder.execute(**kw) + +class BuilderDict(UserDict): + """This is a dictionary-like class used by an Environment to hold + the Builders. We need to do this because every time someone changes + the Builders in the Environment's BUILDERS dictionary, we must + update the Environment's attributes.""" + def __init__(self, mapping, env): + # Set self.env before calling the superclass initialization, + # because it will end up calling our other methods, which will + # need to point the values in this dictionary to self.env. + self.env = env + super().__init__(mapping) + + def __semi_deepcopy__(self): + # These cannot be copied since they would both modify the same builder object, and indeed + # just copying would modify the original builder + raise TypeError( 'cannot semi_deepcopy a BuilderDict' ) + + def __setitem__(self, item, val): + try: + method = getattr(self.env, item).method + except AttributeError: + pass + else: + self.env.RemoveMethod(method) + super().__setitem__(item, val) + BuilderWrapper(self.env, val, item) + + def __delitem__(self, item): + super().__delitem__(item) + delattr(self.env, item) + + def update(self, mapping): + for i, v in mapping.items(): + self.__setitem__(i, v) + + + +_is_valid_var = re.compile(r'[_a-zA-Z]\w*$') + +def is_valid_construction_var(varstr): + """Return if the specified string is a legitimate construction + variable. + """ + return _is_valid_var.match(varstr) + + + +class SubstitutionEnvironment: + """Base class for different flavors of construction environments. + + This class contains a minimal set of methods that handle construction + variable expansion and conversion of strings to Nodes, which may or + may not be actually useful as a stand-alone class. Which methods + ended up in this class is pretty arbitrary right now. They're + basically the ones which we've empirically determined are common to + the different construction environment subclasses, and most of the + others that use or touch the underlying dictionary of construction + variables. + + Eventually, this class should contain all the methods that we + determine are necessary for a "minimal" interface to the build engine. + A full "native Python" SCons environment has gotten pretty heavyweight + with all of the methods and Tools and construction variables we've + jammed in there, so it would be nice to have a lighter weight + alternative for interfaces that don't need all of the bells and + whistles. (At some point, we'll also probably rename this class + "Base," since that more reflects what we want this class to become, + but because we've released comments that tell people to subclass + Environment.Base to create their own flavors of construction + environment, we'll save that for a future refactoring when this + class actually becomes useful.) + """ + + def __init__(self, **kw): + """Initialization of an underlying SubstitutionEnvironment class. + """ + if SCons.Debug.track_instances: logInstanceCreation(self, 'Environment.SubstitutionEnvironment') + self.fs = SCons.Node.FS.get_default_fs() + self.ans = SCons.Node.Alias.default_ans + self.lookup_list = SCons.Node.arg2nodes_lookups + self._dict = kw.copy() + self._init_special() + self.added_methods = [] + #self._memo = {} + + def _init_special(self): + """Initial the dispatch tables for special handling of + special construction variables.""" + self._special_del = {} + self._special_del['SCANNERS'] = _del_SCANNERS + + self._special_set = {} + for key in reserved_construction_var_names: + self._special_set[key] = _set_reserved + for key in future_reserved_construction_var_names: + self._special_set[key] = _set_future_reserved + self._special_set['BUILDERS'] = _set_BUILDERS + self._special_set['SCANNERS'] = _set_SCANNERS + + # Freeze the keys of self._special_set in a list for use by + # methods that need to check. + self._special_set_keys = list(self._special_set.keys()) + + def __eq__(self, other): + return self._dict == other._dict + + def __delitem__(self, key): + special = self._special_del.get(key) + if special: + special(self, key) + else: + del self._dict[key] + + def __getitem__(self, key): + return self._dict[key] + + def __setitem__(self, key, value): + # This is heavily used. This implementation is the best we have + # according to the timings in bench/env.__setitem__.py. + # + # The "key in self._special_set_keys" test here seems to perform + # pretty well for the number of keys we have. A hard-coded + # list worked a little better in Python 2.5, but that has the + # disadvantage of maybe getting out of sync if we ever add more + # variable names. + # So right now it seems like a good trade-off, but feel free to + # revisit this with bench/env.__setitem__.py as needed (and + # as newer versions of Python come out). + if key in self._special_set_keys: + self._special_set[key](self, key, value) + else: + # If we already have the entry, then it's obviously a valid + # key and we don't need to check. If we do check, using a + # global, pre-compiled regular expression directly is more + # efficient than calling another function or a method. + if key not in self._dict and not _is_valid_var.match(key): + raise UserError("Illegal construction variable `%s'" % key) + self._dict[key] = value + + def get(self, key, default=None): + """Emulates the get() method of dictionaries.""" + return self._dict.get(key, default) + + def __contains__(self, key): + return key in self._dict + + def keys(self): + """Emulates the keys() method of dictionaries.""" + return self._dict.keys() + + def values(self): + """Emulates the values() method of dictionaries.""" + return self._dict.values() + + def items(self): + """Emulates the items() method of dictionaries.""" + return self._dict.items() + + def setdefault(self, key, default=None): + """Emulates the setdefault() method of dictionaries.""" + return self._dict.setdefault(key, default) + + def arg2nodes(self, args, node_factory=_null, lookup_list=_null, **kw): + if node_factory is _null: + node_factory = self.fs.File + if lookup_list is _null: + lookup_list = self.lookup_list + + if not args: + return [] + + args = flatten(args) + + nodes = [] + for v in args: + if is_String(v): + n = None + for l in lookup_list: + n = l(v) + if n is not None: + break + if n is not None: + if is_String(n): + # n = self.subst(n, raw=1, **kw) + kw['raw'] = 1 + n = self.subst(n, **kw) + if node_factory: + n = node_factory(n) + if is_List(n): + nodes.extend(n) + else: + nodes.append(n) + elif node_factory: + # v = node_factory(self.subst(v, raw=1, **kw)) + kw['raw'] = 1 + v = node_factory(self.subst(v, **kw)) + if is_List(v): + nodes.extend(v) + else: + nodes.append(v) + else: + nodes.append(v) + + return nodes + + def gvars(self): + return self._dict + + def lvars(self): + return {} + + def subst(self, string, raw=0, target=None, source=None, conv=None, executor=None, overrides=False): + """Recursively interpolates construction variables from the + Environment into the specified string, returning the expanded + result. Construction variables are specified by a $ prefix + in the string and begin with an initial underscore or + alphabetic character followed by any number of underscores + or alphanumeric characters. The construction variable names + may be surrounded by curly braces to separate the name from + trailing characters. + """ + gvars = self.gvars() + lvars = self.lvars() + lvars['__env__'] = self + if executor: + lvars.update(executor.get_lvars()) + return SCons.Subst.scons_subst(string, self, raw, target, source, gvars, lvars, conv, overrides=overrides) + + def subst_kw(self, kw, raw=0, target=None, source=None): + nkw = {} + for k, v in kw.items(): + k = self.subst(k, raw, target, source) + if is_String(v): + v = self.subst(v, raw, target, source) + nkw[k] = v + return nkw + + def subst_list(self, string, raw=0, target=None, source=None, conv=None, executor=None, overrides=False): + """Calls through to SCons.Subst.scons_subst_list(). See + the documentation for that function.""" + gvars = self.gvars() + lvars = self.lvars() + lvars['__env__'] = self + if executor: + lvars.update(executor.get_lvars()) + return SCons.Subst.scons_subst_list(string, self, raw, target, source, gvars, lvars, conv, overrides=overrides) + + def subst_path(self, path, target=None, source=None): + """Substitute a path list, turning EntryProxies into Nodes + and leaving Nodes (and other objects) as-is.""" + + if not is_List(path): + path = [path] + + def s(obj): + """This is the "string conversion" routine that we have our + substitutions use to return Nodes, not strings. This relies + on the fact that an EntryProxy object has a get() method that + returns the underlying Node that it wraps, which is a bit of + architectural dependence that we might need to break or modify + in the future in response to additional requirements.""" + try: + get = obj.get + except AttributeError: + obj = to_String_for_subst(obj) + else: + obj = get() + return obj + + r = [] + for p in path: + if is_String(p): + p = self.subst(p, target=target, source=source, conv=s) + if is_List(p): + if len(p) == 1: + p = p[0] + else: + # We have an object plus a string, or multiple + # objects that we need to smush together. No choice + # but to make them into a string. + p = ''.join(map(to_String_for_subst, p)) + else: + p = s(p) + r.append(p) + return r + + subst_target_source = subst + + + def backtick(self, command) -> str: + """Emulate command substitution. + + Provides behavior conceptually like POSIX Shell notation + for running a command in backquotes (backticks) by running + ``command`` and returning the resulting output string. + + This is not really a public API any longer, it is provided for the + use of :meth:`ParseFlags` (which supports it using a syntax of + !command) and :meth:`ParseConfig`. + + Raises: + OSError: if the external command returned non-zero exit status. + """ + + import subprocess + + # common arguments + kw = { + "stdin": "devnull", + "stdout": subprocess.PIPE, + "stderr": subprocess.PIPE, + "universal_newlines": True, + } + # if the command is a list, assume it's been quoted + # othewise force a shell + if not is_List(command): + kw["shell"] = True + # run constructed command + p = SCons.Action._subproc(self, command, **kw) + out, err = p.communicate() + status = p.wait() + if err: + sys.stderr.write("" + err) + if status: + raise OSError("'%s' exited %d" % (command, status)) + return out + + + def AddMethod(self, function, name=None): + """ + Adds the specified function as a method of this construction + environment with the specified name. If the name is omitted, + the default name is the name of the function itself. + """ + method = MethodWrapper(self, function, name) + self.added_methods.append(method) + + def RemoveMethod(self, function): + """ + Removes the specified function's MethodWrapper from the + added_methods list, so we don't re-bind it when making a clone. + """ + self.added_methods = [dm for dm in self.added_methods if dm.method is not function] + + def Override(self, overrides): + """ + Produce a modified environment whose variables are overridden by + the overrides dictionaries. "overrides" is a dictionary that + will override the variables of this environment. + + This function is much more efficient than Clone() or creating + a new Environment because it doesn't copy the construction + environment dictionary, it just wraps the underlying construction + environment, and doesn't even create a wrapper object if there + are no overrides. + """ + if not overrides: return self + o = copy_non_reserved_keywords(overrides) + if not o: return self + overrides = {} + merges = None + for key, value in o.items(): + if key == 'parse_flags': + merges = value + else: + overrides[key] = SCons.Subst.scons_subst_once(value, self, key) + env = OverrideEnvironment(self, overrides) + if merges: + env.MergeFlags(merges) + return env + + def ParseFlags(self, *flags) -> dict: + """Return a dict of parsed flags. + + Parse ``flags`` and return a dict with the flags distributed into + the appropriate construction variable names. The flags are treated + as a typical set of command-line flags for a GNU-style toolchain, + such as might have been generated by one of the {foo}-config scripts, + and used to populate the entries based on knowledge embedded in + this method - the choices are not expected to be portable to other + toolchains. + + If one of the ``flags`` strings begins with a bang (exclamation mark), + it is assumed to be a command and the rest of the string is executed; + the result of that evaluation is then added to the dict. + """ + mapping = { + 'ASFLAGS' : CLVar(''), + 'CFLAGS' : CLVar(''), + 'CCFLAGS' : CLVar(''), + 'CXXFLAGS' : CLVar(''), + 'CPPDEFINES' : [], + 'CPPFLAGS' : CLVar(''), + 'CPPPATH' : [], + 'FRAMEWORKPATH' : CLVar(''), + 'FRAMEWORKS' : CLVar(''), + 'LIBPATH' : [], + 'LIBS' : [], + 'LINKFLAGS' : CLVar(''), + 'RPATH' : [], + } + + def do_parse(arg): + # if arg is a sequence, recurse with each element + if not arg: + return + + if not is_String(arg): + for t in arg: do_parse(t) + return + + # if arg is a command, execute it + if arg[0] == '!': + arg = self.backtick(arg[1:]) + + # utility function to deal with -D option + def append_define(name, mapping=mapping): + t = name.split('=') + if len(t) == 1: + mapping['CPPDEFINES'].append(name) + else: + mapping['CPPDEFINES'].append([t[0], '='.join(t[1:])]) + + # Loop through the flags and add them to the appropriate option. + # This tries to strike a balance between checking for all possible + # flags and keeping the logic to a finite size, so it doesn't + # check for some that don't occur often. It particular, if the + # flag is not known to occur in a config script and there's a way + # of passing the flag to the right place (by wrapping it in a -W + # flag, for example) we don't check for it. Note that most + # preprocessor options are not handled, since unhandled options + # are placed in CCFLAGS, so unless the preprocessor is invoked + # separately, these flags will still get to the preprocessor. + # Other options not currently handled: + # -iqoutedir (preprocessor search path) + # -u symbol (linker undefined symbol) + # -s (linker strip files) + # -static* (linker static binding) + # -shared* (linker dynamic binding) + # -symbolic (linker global binding) + # -R dir (deprecated linker rpath) + # IBM compilers may also accept -qframeworkdir=foo + + params = shlex.split(arg) + append_next_arg_to = None # for multi-word args + for arg in params: + if append_next_arg_to: + if append_next_arg_to == 'CPPDEFINES': + append_define(arg) + elif append_next_arg_to == '-include': + t = ('-include', self.fs.File(arg)) + mapping['CCFLAGS'].append(t) + elif append_next_arg_to == '-imacros': + t = ('-imacros', self.fs.File(arg)) + mapping['CCFLAGS'].append(t) + elif append_next_arg_to == '-isysroot': + t = ('-isysroot', arg) + mapping['CCFLAGS'].append(t) + mapping['LINKFLAGS'].append(t) + elif append_next_arg_to == '-isystem': + t = ('-isystem', arg) + mapping['CCFLAGS'].append(t) + elif append_next_arg_to == '-iquote': + t = ('-iquote', arg) + mapping['CCFLAGS'].append(t) + elif append_next_arg_to == '-idirafter': + t = ('-idirafter', arg) + mapping['CCFLAGS'].append(t) + elif append_next_arg_to == '-arch': + t = ('-arch', arg) + mapping['CCFLAGS'].append(t) + mapping['LINKFLAGS'].append(t) + elif append_next_arg_to == '--param': + t = ('--param', arg) + mapping['CCFLAGS'].append(t) + else: + mapping[append_next_arg_to].append(arg) + append_next_arg_to = None + elif not arg[0] in ['-', '+']: + mapping['LIBS'].append(self.fs.File(arg)) + elif arg == '-dylib_file': + mapping['LINKFLAGS'].append(arg) + append_next_arg_to = 'LINKFLAGS' + elif arg[:2] == '-L': + if arg[2:]: + mapping['LIBPATH'].append(arg[2:]) + else: + append_next_arg_to = 'LIBPATH' + elif arg[:2] == '-l': + if arg[2:]: + mapping['LIBS'].append(arg[2:]) + else: + append_next_arg_to = 'LIBS' + elif arg[:2] == '-I': + if arg[2:]: + mapping['CPPPATH'].append(arg[2:]) + else: + append_next_arg_to = 'CPPPATH' + elif arg[:4] == '-Wa,': + mapping['ASFLAGS'].append(arg[4:]) + mapping['CCFLAGS'].append(arg) + elif arg[:4] == '-Wl,': + if arg[:11] == '-Wl,-rpath=': + mapping['RPATH'].append(arg[11:]) + elif arg[:7] == '-Wl,-R,': + mapping['RPATH'].append(arg[7:]) + elif arg[:6] == '-Wl,-R': + mapping['RPATH'].append(arg[6:]) + else: + mapping['LINKFLAGS'].append(arg) + elif arg[:4] == '-Wp,': + mapping['CPPFLAGS'].append(arg) + elif arg[:2] == '-D': + if arg[2:]: + append_define(arg[2:]) + else: + append_next_arg_to = 'CPPDEFINES' + elif arg == '-framework': + append_next_arg_to = 'FRAMEWORKS' + elif arg[:14] == '-frameworkdir=': + mapping['FRAMEWORKPATH'].append(arg[14:]) + elif arg[:2] == '-F': + if arg[2:]: + mapping['FRAMEWORKPATH'].append(arg[2:]) + else: + append_next_arg_to = 'FRAMEWORKPATH' + elif arg in ( + '-mno-cygwin', + '-pthread', + '-openmp', + '-fmerge-all-constants', + '-fopenmp', + ) or arg.startswith('-fsanitize'): + mapping['CCFLAGS'].append(arg) + mapping['LINKFLAGS'].append(arg) + elif arg == '-mwindows': + mapping['LINKFLAGS'].append(arg) + elif arg[:5] == '-std=': + if '++' in arg[5:]: + key = 'CXXFLAGS' + else: + key = 'CFLAGS' + mapping[key].append(arg) + elif arg[0] == '+': + mapping['CCFLAGS'].append(arg) + mapping['LINKFLAGS'].append(arg) + elif arg in [ + '-include', + '-imacros', + '-isysroot', + '-isystem', + '-iquote', + '-idirafter', + '-arch', + '--param', + ]: + append_next_arg_to = arg + else: + mapping['CCFLAGS'].append(arg) + + for arg in flags: + do_parse(arg) + return mapping + + def MergeFlags(self, args, unique=True) -> None: + """Merge flags into construction variables. + + Merges the flags from *args* into this construction environent. + If *args* is not a dict, it is first converted to one with + flags distributed into appropriate construction variables. + See :meth:`ParseFlags`. + + Args: + args: flags to merge + unique: merge flags rather than appending (default: True). + When merging, path variables are retained from the front, + other construction variables from the end. + """ + if not is_Dict(args): + args = self.ParseFlags(args) + + if not unique: + self.Append(**args) + return + + for key, value in args.items(): + if not value: + continue + value = Split(value) + try: + orig = self[key] + except KeyError: + orig = value + else: + if not orig: + orig = value + elif value: + # Add orig and value. The logic here was lifted from + # part of env.Append() (see there for a lot of comments + # about the order in which things are tried) and is + # used mainly to handle coercion of strings to CLVar to + # "do the right thing" given (e.g.) an original CCFLAGS + # string variable like '-pipe -Wall'. + try: + orig = orig + value + except (KeyError, TypeError): + try: + add_to_orig = orig.append + except AttributeError: + value.insert(0, orig) + orig = value + else: + add_to_orig(value) + t = [] + if key[-4:] == 'PATH': + ### keep left-most occurence + for v in orig: + if v not in t: + t.append(v) + else: + ### keep right-most occurence + for v in orig[::-1]: + if v not in t: + t.insert(0, v) + self[key] = t + + +def default_decide_source(dependency, target, prev_ni, repo_node=None): + f = SCons.Defaults.DefaultEnvironment().decide_source + return f(dependency, target, prev_ni, repo_node) + + +def default_decide_target(dependency, target, prev_ni, repo_node=None): + f = SCons.Defaults.DefaultEnvironment().decide_target + return f(dependency, target, prev_ni, repo_node) + + +def default_copy_from_cache(env, src, dst): + return SCons.CacheDir.CacheDir.copy_from_cache(env, src, dst) + + +def default_copy_to_cache(env, src, dst): + return SCons.CacheDir.CacheDir.copy_to_cache(env, src, dst) + + +class Base(SubstitutionEnvironment): + """Base class for "real" construction Environments. + + These are the primary objects used to communicate dependency + and construction information to the build engine. + + Keyword arguments supplied when the construction Environment + is created are construction variables used to initialize the + Environment. + """ + + ####################################################################### + # This is THE class for interacting with the SCons build engine, + # and it contains a lot of stuff, so we're going to try to keep this + # a little organized by grouping the methods. + ####################################################################### + + ####################################################################### + # Methods that make an Environment act like a dictionary. These have + # the expected standard names for Python mapping objects. Note that + # we don't actually make an Environment a subclass of UserDict for + # performance reasons. Note also that we only supply methods for + # dictionary functionality that we actually need and use. + ####################################################################### + + def __init__( + self, + platform=None, + tools=None, + toolpath=None, + variables=None, + parse_flags=None, + **kw + ): + """Initialization of a basic SCons construction environment. + + Sets up special construction variables like BUILDER, + PLATFORM, etc., and searches for and applies available Tools. + + Note that we do *not* call the underlying base class + (SubsitutionEnvironment) initialization, because we need to + initialize things in a very specific order that doesn't work + with the much simpler base class initialization. + """ + if SCons.Debug.track_instances: logInstanceCreation(self, 'Environment.Base') + self._memo = {} + self.fs = SCons.Node.FS.get_default_fs() + self.ans = SCons.Node.Alias.default_ans + self.lookup_list = SCons.Node.arg2nodes_lookups + self._dict = semi_deepcopy(SCons.Defaults.ConstructionEnvironment) + self._init_special() + self.added_methods = [] + + # We don't use AddMethod, or define these as methods in this + # class, because we *don't* want these functions to be bound + # methods. They need to operate independently so that the + # settings will work properly regardless of whether a given + # target ends up being built with a Base environment or an + # OverrideEnvironment or what have you. + self.decide_target = default_decide_target + self.decide_source = default_decide_source + + self.cache_timestamp_newer = False + + self._dict['BUILDERS'] = BuilderDict(self._dict['BUILDERS'], self) + + if platform is None: + platform = self._dict.get('PLATFORM', None) + if platform is None: + platform = SCons.Platform.Platform() + if is_String(platform): + platform = SCons.Platform.Platform(platform) + self._dict['PLATFORM'] = str(platform) + platform(self) + + # these should be set by the platform, backstop just in case + self._dict['HOST_OS'] = self._dict.get('HOST_OS', None) + self._dict['HOST_ARCH'] = self._dict.get('HOST_ARCH', None) + + # these are not currently set by the platform, give them a default + self._dict['TARGET_OS'] = self._dict.get('TARGET_OS', None) + self._dict['TARGET_ARCH'] = self._dict.get('TARGET_ARCH', None) + + # Apply the passed-in and customizable variables to the + # environment before calling the tools, because they may use + # some of them during initialization. + if 'options' in kw: + # Backwards compatibility: they may stll be using the + # old "options" keyword. + variables = kw['options'] + del kw['options'] + self.Replace(**kw) + keys = list(kw.keys()) + if variables: + keys = keys + list(variables.keys()) + variables.Update(self) + + save = {} + for k in keys: + try: + save[k] = self._dict[k] + except KeyError: + # No value may have been set if they tried to pass in a + # reserved variable name like TARGETS. + pass + + SCons.Tool.Initializers(self) + + if tools is None: + tools = self._dict.get('TOOLS', None) + if tools is None: + tools = ['default'] + apply_tools(self, tools, toolpath) + + # Now restore the passed-in and customized variables + # to the environment, since the values the user set explicitly + # should override any values set by the tools. + for key, val in save.items(): + self._dict[key] = val + + # Finally, apply any flags to be merged in + if parse_flags: + self.MergeFlags(parse_flags) + + ####################################################################### + # Utility methods that are primarily for internal use by SCons. + # These begin with lower-case letters. + ####################################################################### + + def get_builder(self, name): + """Fetch the builder with the specified name from the environment. + """ + try: + return self._dict['BUILDERS'][name] + except KeyError: + return None + + def validate_CacheDir_class(self, custom_class=None): + """Validate the passed custom CacheDir class, or if no args are passed, + validate the custom CacheDir class from the environment. + """ + + if custom_class is None: + custom_class = self.get("CACHEDIR_CLASS", SCons.CacheDir.CacheDir) + if not issubclass(custom_class, SCons.CacheDir.CacheDir): + raise UserError("Custom CACHEDIR_CLASS %s not derived from CacheDir" % str(custom_class)) + return custom_class + + def get_CacheDir(self): + try: + path = self._CacheDir_path + except AttributeError: + path = SCons.Defaults.DefaultEnvironment()._CacheDir_path + + cachedir_class = self.validate_CacheDir_class() + try: + if (path == self._last_CacheDir_path + # this checks if the cachedir class type has changed from what the + # instantiated cache dir type is. If the are exactly the same we + # can just keep using the existing one, otherwise the user is requesting + # something new, so we will re-instantiate below. + and type(self._last_CacheDir) is cachedir_class): + return self._last_CacheDir + except AttributeError: + pass + + cd = cachedir_class(path) + self._last_CacheDir_path = path + self._last_CacheDir = cd + return cd + + def get_factory(self, factory, default='File'): + """Return a factory function for creating Nodes for this + construction environment. + """ + name = default + try: + is_node = issubclass(factory, SCons.Node.FS.Base) + except TypeError: + # The specified factory isn't a Node itself--it's + # most likely None, or possibly a callable. + pass + else: + if is_node: + # The specified factory is a Node (sub)class. Try to + # return the FS method that corresponds to the Node's + # name--that is, we return self.fs.Dir if they want a Dir, + # self.fs.File for a File, etc. + try: name = factory.__name__ + except AttributeError: pass + else: factory = None + if not factory: + # They passed us None, or we picked up a name from a specified + # class, so return the FS method. (Note that we *don't* + # use our own self.{Dir,File} methods because that would + # cause env.subst() to be called twice on the file name, + # interfering with files that have $$ in them.) + factory = getattr(self.fs, name) + return factory + + @SCons.Memoize.CountMethodCall + def _gsm(self): + try: + return self._memo['_gsm'] + except KeyError: + pass + + result = {} + + try: + scanners = self._dict['SCANNERS'] + except KeyError: + pass + else: + # Reverse the scanner list so that, if multiple scanners + # claim they can scan the same suffix, earlier scanners + # in the list will overwrite later scanners, so that + # the result looks like a "first match" to the user. + if not is_List(scanners): + scanners = [scanners] + else: + scanners = scanners[:] # copy so reverse() doesn't mod original + scanners.reverse() + for scanner in scanners: + for k in scanner.get_skeys(self): + if k and self['PLATFORM'] == 'win32': + k = k.lower() + result[k] = scanner + + self._memo['_gsm'] = result + + return result + + def get_scanner(self, skey): + """Find the appropriate scanner given a key (usually a file suffix). + """ + if skey and self['PLATFORM'] == 'win32': + skey = skey.lower() + return self._gsm().get(skey) + + def scanner_map_delete(self, kw=None): + """Delete the cached scanner map (if we need to). + """ + try: + del self._memo['_gsm'] + except KeyError: + pass + + def _update(self, other): + """Private method to update an environment's consvar dict directly. + + Bypasses the normal checks that occur when users try to set items. + """ + self._dict.update(other) + + def _update_onlynew(self, other): + """Private method to add new items to an environment's consvar dict. + + Only adds items from `other` whose keys do not already appear in + the existing dict; values from `other` are not used for replacement. + Bypasses the normal checks that occur when users try to set items. + """ + for k, v in other.items(): + if k not in self._dict: + self._dict[k] = v + + + def get_src_sig_type(self): + try: + return self.src_sig_type + except AttributeError: + t = SCons.Defaults.DefaultEnvironment().src_sig_type + self.src_sig_type = t + return t + + def get_tgt_sig_type(self): + try: + return self.tgt_sig_type + except AttributeError: + t = SCons.Defaults.DefaultEnvironment().tgt_sig_type + self.tgt_sig_type = t + return t + + ####################################################################### + # Public methods for manipulating an Environment. These begin with + # upper-case letters. The essential characteristic of methods in + # this section is that they do *not* have corresponding same-named + # global functions. For example, a stand-alone Append() function + # makes no sense, because Append() is all about appending values to + # an Environment's construction variables. + ####################################################################### + + def Append(self, **kw): + """Append values to construction variables in an Environment. + + The variable is created if it is not already present. + """ + + kw = copy_non_reserved_keywords(kw) + for key, val in kw.items(): + if key == 'CPPDEFINES': + _add_cppdefines(self._dict, val) + continue + + try: + orig = self._dict[key] + except KeyError: + # No existing var in the environment, so set to the new value. + self._dict[key] = val + continue + + try: + # Check if the original looks like a dict: has .update? + update_dict = orig.update + except AttributeError: + try: + # Just try to add them together. This will work + # in most cases, when the original and new values + # are compatible types. + self._dict[key] = orig + val + except (KeyError, TypeError): + try: + # Check if the original is a list: has .append? + add_to_orig = orig.append + except AttributeError: + # The original isn't a list, but the new + # value is (by process of elimination), + # so insert the original in the new value + # (if there's one to insert) and replace + # the variable with it. + if orig: + val.insert(0, orig) + self._dict[key] = val + else: + # The original is a list, so append the new + # value to it (if there's a value to append). + if val: + add_to_orig(val) + continue + + # The original looks like a dictionary, so update it + # based on what we think the value looks like. + # We can't just try adding the value because + # dictionaries don't have __add__() methods, and + # things like UserList will incorrectly coerce the + # original dict to a list (which we don't want). + if is_List(val): + for v in val: + orig[v] = None + else: + try: + update_dict(val) + except (AttributeError, TypeError, ValueError): + if is_Dict(val): + for k, v in val.items(): + orig[k] = v + else: + orig[val] = None + + self.scanner_map_delete(kw) + + def _canonicalize(self, path): + """Allow Dirs and strings beginning with # for top-relative. + + Note this uses the current env's fs (in self). + """ + if not is_String(path): # typically a Dir + path = str(path) + if path and path[0] == '#': + path = str(self.fs.Dir(path)) + return path + + def AppendENVPath(self, name, newpath, envname='ENV', + sep=os.pathsep, delete_existing=False): + """Append path elements to the path *name* in the *envname* + dictionary for this environment. Will only add any particular + path once, and will normpath and normcase all paths to help + assure this. This can also handle the case where the env + variable is a list instead of a string. + + If *delete_existing* is False, a *newpath* element already in the path + will not be moved to the end (it will be left where it is). + """ + + orig = '' + if envname in self._dict and name in self._dict[envname]: + orig = self._dict[envname][name] + + nv = AppendPath(orig, newpath, sep, delete_existing, canonicalize=self._canonicalize) + + if envname not in self._dict: + self._dict[envname] = {} + + self._dict[envname][name] = nv + + def AppendUnique(self, delete_existing=False, **kw): + """Append values to existing construction variables + in an Environment, if they're not already there. + If delete_existing is True, removes existing values first, so + values move to end. + """ + kw = copy_non_reserved_keywords(kw) + for key, val in kw.items(): + if key == 'CPPDEFINES': + _add_cppdefines(self._dict, val, unique=True, delete_existing=delete_existing) + continue + if is_List(val): + val = _delete_duplicates(val, delete_existing) + if key not in self._dict or self._dict[key] in ('', None): + self._dict[key] = val + elif is_Dict(self._dict[key]) and is_Dict(val): + self._dict[key].update(val) + elif is_List(val): + dk = self._dict[key] + if not is_List(dk): + dk = [dk] + if delete_existing: + dk = [x for x in dk if x not in val] + else: + val = [x for x in val if x not in dk] + self._dict[key] = dk + val + else: + dk = self._dict[key] + if is_List(dk): + # By elimination, val is not a list. Since dk is a + # list, wrap val in a list first. + if delete_existing: + dk = list(filter(lambda x, val=val: x not in val, dk)) + self._dict[key] = dk + [val] + else: + if val not in dk: + self._dict[key] = dk + [val] + else: + if delete_existing: + dk = [x for x in dk if x not in val] + self._dict[key] = dk + val + self.scanner_map_delete(kw) + + def Clone(self, tools=[], toolpath=None, parse_flags = None, **kw): + """Return a copy of a construction Environment. + + The copy is like a Python "deep copy"--that is, independent + copies are made recursively of each objects--except that + a reference is copied when an object is not deep-copyable + (like a function). There are no references to any mutable + objects in the original Environment. + """ + + builders = self._dict.get('BUILDERS', {}) + + clone = copy.copy(self) + # BUILDERS is not safe to do a simple copy + clone._dict = semi_deepcopy_dict(self._dict, ['BUILDERS']) + clone._dict['BUILDERS'] = BuilderDict(builders, clone) + + # Check the methods added via AddMethod() and re-bind them to + # the cloned environment. Only do this if the attribute hasn't + # been overwritten by the user explicitly and still points to + # the added method. + clone.added_methods = [] + for mw in self.added_methods: + if mw == getattr(self, mw.name): + clone.added_methods.append(mw.clone(clone)) + + clone._memo = {} + + # Apply passed-in variables before the tools + # so the tools can use the new variables + kw = copy_non_reserved_keywords(kw) + new = {} + for key, value in kw.items(): + new[key] = SCons.Subst.scons_subst_once(value, self, key) + clone.Replace(**new) + + apply_tools(clone, tools, toolpath) + + # apply them again in case the tools overwrote them + clone.Replace(**new) + + # Finally, apply any flags to be merged in + if parse_flags: + clone.MergeFlags(parse_flags) + + if SCons.Debug.track_instances: logInstanceCreation(self, 'Environment.EnvironmentClone') + return clone + + def _changed_build(self, dependency, target, prev_ni, repo_node=None): + if dependency.changed_state(target, prev_ni, repo_node): + return 1 + return self.decide_source(dependency, target, prev_ni, repo_node) + + def _changed_content(self, dependency, target, prev_ni, repo_node=None): + return dependency.changed_content(target, prev_ni, repo_node) + + def _changed_source(self, dependency, target, prev_ni, repo_node=None): + target_env = dependency.get_build_env() + type = target_env.get_tgt_sig_type() + if type == 'source': + return target_env.decide_source(dependency, target, prev_ni, repo_node) + else: + return target_env.decide_target(dependency, target, prev_ni, repo_node) + + def _changed_timestamp_then_content(self, dependency, target, prev_ni, repo_node=None): + return dependency.changed_timestamp_then_content(target, prev_ni, repo_node) + + def _changed_timestamp_newer(self, dependency, target, prev_ni, repo_node=None): + return dependency.changed_timestamp_newer(target, prev_ni, repo_node) + + def _changed_timestamp_match(self, dependency, target, prev_ni, repo_node=None): + return dependency.changed_timestamp_match(target, prev_ni, repo_node) + + def Decider(self, function): + self.cache_timestamp_newer = False + if function in ('MD5', 'content'): + # TODO: Handle if user requests MD5 and not content with deprecation notice + function = self._changed_content + elif function in ('MD5-timestamp', 'content-timestamp'): + function = self._changed_timestamp_then_content + elif function in ('timestamp-newer', 'make'): + function = self._changed_timestamp_newer + self.cache_timestamp_newer = True + elif function == 'timestamp-match': + function = self._changed_timestamp_match + elif not callable(function): + raise UserError("Unknown Decider value %s" % repr(function)) + + # We don't use AddMethod because we don't want to turn the + # function, which only expects three arguments, into a bound + # method, which would add self as an initial, fourth argument. + self.decide_target = function + self.decide_source = function + + + def Detect(self, progs): + """Return the first available program from one or more possibilities. + + Args: + progs (str or list): one or more command names to check for + + """ + if not is_List(progs): + progs = [progs] + for prog in progs: + path = self.WhereIs(prog) + if path: return prog + return None + + + def Dictionary(self, *args): + r"""Return construction variables from an environment. + + Args: + \*args (optional): variable names to look up + + Returns: + If `args` omitted, the dictionary of all construction variables. + If one arg, the corresponding value is returned. + If more than one arg, a list of values is returned. + + Raises: + KeyError: if any of `args` is not in the construction environment. + + """ + if not args: + return self._dict + dlist = [self._dict[x] for x in args] + if len(dlist) == 1: + dlist = dlist[0] + return dlist + + + def Dump(self, key=None, format='pretty'): + """ Return construction variables serialized to a string. + + Args: + key (optional): if None, format the whole dict of variables. + Else format the value of `key` (Default value = None) + format (str, optional): specify the format to serialize to. + `"pretty"` generates a pretty-printed string, + `"json"` a JSON-formatted string. + (Default value = `"pretty"`) + + """ + if key: + cvars = self.Dictionary(key) + else: + cvars = self.Dictionary() + + fmt = format.lower() + + if fmt == 'pretty': + import pprint + pp = pprint.PrettyPrinter(indent=2) + + # TODO: pprint doesn't do a nice job on path-style values + # if the paths contain spaces (i.e. Windows), because the + # algorithm tries to break lines on spaces, while breaking + # on the path-separator would be more "natural". Is there + # a better way to format those? + return pp.pformat(cvars) + + elif fmt == 'json': + import json + def non_serializable(obj): + return str(type(obj).__qualname__) + return json.dumps(cvars, indent=4, default=non_serializable) + else: + raise ValueError("Unsupported serialization format: %s." % fmt) + + + def FindIxes(self, paths, prefix, suffix): + """Search a list of paths for something that matches the prefix and suffix. + + Args: + paths: the list of paths or nodes. + prefix: construction variable for the prefix. + suffix: construction variable for the suffix. + + Returns: the matched path or None + + """ + + suffix = self.subst('$'+suffix) + prefix = self.subst('$'+prefix) + + for path in paths: + name = os.path.basename(str(path)) + if name[:len(prefix)] == prefix and name[-len(suffix):] == suffix: + return path + + + def ParseConfig(self, command, function=None, unique=True): + """Parse the result of running a command to update construction vars. + + Use ``function`` to parse the output of running ``command`` + in order to modify the current environment. + + Args: + command: a string or a list of strings representing a command + and its arguments. + function: called to process the result of ``command``, which will + be passed as ``args``. If ``function`` is omitted or ``None``, + :meth:`MergeFlags` is used. Takes 3 args ``(env, args, unique)`` + unique: whether no duplicate values are allowed (default true) + """ + if function is None: + + def parse_conf(env, cmd, unique=unique): + return env.MergeFlags(cmd, unique) + + function = parse_conf + if is_List(command): + command = ' '.join(command) + command = self.subst(command) + return function(self, self.backtick(command), unique) + + + def ParseDepends(self, filename, must_exist=None, only_one=False): + """ + Parse a mkdep-style file for explicit dependencies. This is + completely abusable, and should be unnecessary in the "normal" + case of proper SCons configuration, but it may help make + the transition from a Make hierarchy easier for some people + to swallow. It can also be genuinely useful when using a tool + that can write a .d file, but for which writing a scanner would + be too complicated. + """ + filename = self.subst(filename) + try: + with open(filename, 'r') as fp: + lines = LogicalLines(fp).readlines() + except IOError: + if must_exist: + raise + return + lines = [l for l in lines if l[0] != '#'] + tdlist = [] + for line in lines: + try: + target, depends = line.split(':', 1) + except (AttributeError, ValueError): + # Throws AttributeError if line isn't a string. Can throw + # ValueError if line doesn't split into two or more elements. + pass + else: + tdlist.append((target.split(), depends.split())) + if only_one: + targets = [] + for td in tdlist: + targets.extend(td[0]) + if len(targets) > 1: + raise UserError( + "More than one dependency target found in `%s': %s" + % (filename, targets)) + for target, depends in tdlist: + self.Depends(target, depends) + + def Platform(self, platform): + platform = self.subst(platform) + return SCons.Platform.Platform(platform)(self) + + def Prepend(self, **kw): + """Prepend values to construction variables in an Environment. + + The variable is created if it is not already present. + """ + + kw = copy_non_reserved_keywords(kw) + for key, val in kw.items(): + if key == 'CPPDEFINES': + _add_cppdefines(self._dict, val, prepend=True) + continue + try: + orig = self._dict[key] + except KeyError: + # No existing var in the environment so set to the new value. + self._dict[key] = val + continue + + try: + # Check if the original looks like a dict: has .update? + update_dict = orig.update + except AttributeError: + try: + # Just try to add them together. This will work + # in most cases, when the original and new values + # are compatible types. + self._dict[key] = val + orig + except (KeyError, TypeError): + try: + # Check if the added value is a list: has .append? + add_to_val = val.append + except AttributeError: + # The added value isn't a list, but the + # original is (by process of elimination), + # so insert the the new value in the original + # (if there's one to insert). + if val: + orig.insert(0, val) + else: + # The added value is a list, so append + # the original to it (if there's a value + # to append) and replace the original. + if orig: + add_to_val(orig) + self._dict[key] = val + continue + + # The original looks like a dictionary, so update it + # based on what we think the value looks like. + # We can't just try adding the value because + # dictionaries don't have __add__() methods, and + # things like UserList will incorrectly coerce the + # original dict to a list (which we don't want). + if is_List(val): + for v in val: + orig[v] = None + else: + try: + update_dict(val) + except (AttributeError, TypeError, ValueError): + if is_Dict(val): + for k, v in val.items(): + orig[k] = v + else: + orig[val] = None + + self.scanner_map_delete(kw) + + def PrependENVPath(self, name, newpath, envname='ENV', + sep=os.pathsep, delete_existing=True): + """Prepend path elements to the path *name* in the *envname* + dictionary for this environment. Will only add any particular + path once, and will normpath and normcase all paths to help + assure this. This can also handle the case where the env + variable is a list instead of a string. + + If *delete_existing* is False, a *newpath* component already in the path + will not be moved to the front (it will be left where it is). + """ + + orig = '' + if envname in self._dict and name in self._dict[envname]: + orig = self._dict[envname][name] + + nv = PrependPath(orig, newpath, sep, delete_existing, + canonicalize=self._canonicalize) + + if envname not in self._dict: + self._dict[envname] = {} + + self._dict[envname][name] = nv + + def PrependUnique(self, delete_existing=False, **kw): + """Prepend values to existing construction variables + in an Environment, if they're not already there. + If delete_existing is True, removes existing values first, so + values move to front. + """ + kw = copy_non_reserved_keywords(kw) + for key, val in kw.items(): + if key == 'CPPDEFINES': + _add_cppdefines(self._dict, val, unique=True, prepend=True, delete_existing=delete_existing) + continue + if is_List(val): + val = _delete_duplicates(val, not delete_existing) + if key not in self._dict or self._dict[key] in ('', None): + self._dict[key] = val + elif is_Dict(self._dict[key]) and is_Dict(val): + self._dict[key].update(val) + elif is_List(val): + dk = self._dict[key] + if not is_List(dk): + dk = [dk] + if delete_existing: + dk = [x for x in dk if x not in val] + else: + val = [x for x in val if x not in dk] + self._dict[key] = val + dk + else: + dk = self._dict[key] + if is_List(dk): + # By elimination, val is not a list. Since dk is a + # list, wrap val in a list first. + if delete_existing: + dk = [x for x in dk if x not in val] + self._dict[key] = [val] + dk + else: + if val not in dk: + self._dict[key] = [val] + dk + else: + if delete_existing: + dk = [x for x in dk if x not in val] + self._dict[key] = val + dk + self.scanner_map_delete(kw) + + def Replace(self, **kw): + """Replace existing construction variables in an Environment + with new construction variables and/or values. + """ + try: + kwbd = kw['BUILDERS'] + except KeyError: + pass + else: + kwbd = BuilderDict(kwbd,self) + del kw['BUILDERS'] + self.__setitem__('BUILDERS', kwbd) + kw = copy_non_reserved_keywords(kw) + self._update(semi_deepcopy(kw)) + self.scanner_map_delete(kw) + + def ReplaceIxes(self, path, old_prefix, old_suffix, new_prefix, new_suffix): + """ + Replace old_prefix with new_prefix and old_suffix with new_suffix. + + env - Environment used to interpolate variables. + path - the path that will be modified. + old_prefix - construction variable for the old prefix. + old_suffix - construction variable for the old suffix. + new_prefix - construction variable for the new prefix. + new_suffix - construction variable for the new suffix. + """ + old_prefix = self.subst('$'+old_prefix) + old_suffix = self.subst('$'+old_suffix) + + new_prefix = self.subst('$'+new_prefix) + new_suffix = self.subst('$'+new_suffix) + + dir,name = os.path.split(str(path)) + if name[:len(old_prefix)] == old_prefix: + name = name[len(old_prefix):] + if name[-len(old_suffix):] == old_suffix: + name = name[:-len(old_suffix)] + return os.path.join(dir, new_prefix+name+new_suffix) + + def SetDefault(self, **kw): + for k in list(kw.keys()): + if k in self._dict: + del kw[k] + self.Replace(**kw) + + def _find_toolpath_dir(self, tp): + return self.fs.Dir(self.subst(tp)).srcnode().get_abspath() + + def Tool(self, tool, toolpath=None, **kwargs) -> SCons.Tool.Tool: + """Find and run tool module *tool*. + + .. versionchanged:: 4.2 + returns the tool module rather than ``None``. + """ + if is_String(tool): + tool = self.subst(tool) + if toolpath is None: + toolpath = self.get('toolpath', []) + toolpath = list(map(self._find_toolpath_dir, toolpath)) + tool = SCons.Tool.Tool(tool, toolpath, **kwargs) + tool(self) + return tool + + def WhereIs(self, prog, path=None, pathext=None, reject=None): + """Find prog in the path. """ + if not prog: # nothing to search for, just give up + return None + if path is None: + try: + path = self['ENV']['PATH'] + except KeyError: + pass + elif is_String(path): + path = self.subst(path) + if pathext is None: + try: + pathext = self['ENV']['PATHEXT'] + except KeyError: + pass + elif is_String(pathext): + pathext = self.subst(pathext) + prog = CLVar(self.subst(prog)) # support "program --with-args" + path = WhereIs(prog[0], path, pathext, reject) + if path: + return path + return None + + ####################################################################### + # Public methods for doing real "SCons stuff" (manipulating + # dependencies, setting attributes on targets, etc.). These begin + # with upper-case letters. The essential characteristic of methods + # in this section is that they all *should* have corresponding + # same-named global functions. + ####################################################################### + + def Action(self, *args, **kw): + def subst_string(a, self=self): + if is_String(a): + a = self.subst(a) + return a + nargs = list(map(subst_string, args)) + nkw = self.subst_kw(kw) + return SCons.Action.Action(*nargs, **nkw) + + def AddPreAction(self, files, action): + nodes = self.arg2nodes(files, self.fs.Entry) + action = SCons.Action.Action(action) + uniq = {} + for executor in [n.get_executor() for n in nodes]: + uniq[executor] = 1 + for executor in uniq.keys(): + executor.add_pre_action(action) + return nodes + + def AddPostAction(self, files, action): + nodes = self.arg2nodes(files, self.fs.Entry) + action = SCons.Action.Action(action) + uniq = {} + for executor in [n.get_executor() for n in nodes]: + uniq[executor] = 1 + for executor in uniq.keys(): + executor.add_post_action(action) + return nodes + + def Alias(self, target, source=[], action=None, **kw): + tlist = self.arg2nodes(target, self.ans.Alias) + if not is_List(source): + source = [source] + source = [_f for _f in source if _f] + + if not action: + if not source: + # There are no source files and no action, so just + # return a target list of classic Alias Nodes, without + # any builder. The externally visible effect is that + # this will make the wrapping Script.BuildTask class + # say that there's "Nothing to be done" for this Alias, + # instead of that it's "up to date." + return tlist + + # No action, but there are sources. Re-call all the target + # builders to add the sources to each target. + result = [] + for t in tlist: + bld = t.get_builder(AliasBuilder) + result.extend(bld(self, t, source)) + return result + + nkw = self.subst_kw(kw) + nkw.update({ + 'action' : SCons.Action.Action(action), + 'source_factory' : self.fs.Entry, + 'multi' : 1, + 'is_explicit' : None, + }) + bld = SCons.Builder.Builder(**nkw) + + # Apply the Builder separately to each target so that the Aliases + # stay separate. If we did one "normal" Builder call with the + # whole target list, then all of the target Aliases would be + # associated under a single Executor. + result = [] + for t in tlist: + # Calling the convert() method will cause a new Executor to be + # created from scratch, so we have to explicitly initialize + # it with the target's existing sources, plus our new ones, + # so nothing gets lost. + b = t.get_builder() + if b is None or b is AliasBuilder: + b = bld + else: + nkw['action'] = b.action + action + b = SCons.Builder.Builder(**nkw) + t.convert() + result.extend(b(self, t, t.sources + source)) + return result + + def AlwaysBuild(self, *targets): + tlist = [] + for t in targets: + tlist.extend(self.arg2nodes(t, self.fs.Entry)) + for t in tlist: + t.set_always_build() + return tlist + + def Builder(self, **kw): + nkw = self.subst_kw(kw) + return SCons.Builder.Builder(**nkw) + + def CacheDir(self, path, custom_class=None): + if path is not None: + path = self.subst(path) + self._CacheDir_path = path + + if custom_class: + self['CACHEDIR_CLASS'] = self.validate_CacheDir_class(custom_class) + + if SCons.Action.execute_actions: + # Only initialize the CacheDir if -n/-no_exec was NOT specified. + # Now initialized the CacheDir and prevent a race condition which can + # happen when there's no existing cache dir and you are building with + # multiple threads, but initializing it before the task walk starts + self.get_CacheDir() + + def Clean(self, targets, files): + global CleanTargets + tlist = self.arg2nodes(targets, self.fs.Entry) + flist = self.arg2nodes(files, self.fs.Entry) + for t in tlist: + try: + CleanTargets[t].extend(flist) + except KeyError: + CleanTargets[t] = flist + + def Configure(self, *args, **kw): + nargs = [self] + if args: + nargs = nargs + self.subst_list(args)[0] + nkw = self.subst_kw(kw) + nkw['_depth'] = kw.get('_depth', 0) + 1 + try: + nkw['custom_tests'] = self.subst_kw(nkw['custom_tests']) + except KeyError: + pass + return SCons.SConf.SConf(*nargs, **nkw) + + def Command(self, target, source, action, **kw): + """Builds the supplied target files from the supplied + source files using the supplied action. Action may + be any type that the Builder constructor will accept + for an action.""" + bkw = { + 'action': action, + 'target_factory': self.fs.Entry, + 'source_factory': self.fs.Entry, + } + # source scanner + try: + bkw['source_scanner'] = kw['source_scanner'] + except KeyError: + pass + else: + del kw['source_scanner'] + + # target scanner + try: + bkw['target_scanner'] = kw['target_scanner'] + except KeyError: + pass + else: + del kw['target_scanner'] + + # source factory + try: + bkw['source_factory'] = kw['source_factory'] + except KeyError: + pass + else: + del kw['source_factory'] + + # target factory + try: + bkw['target_factory'] = kw['target_factory'] + except KeyError: + pass + else: + del kw['target_factory'] + + bld = SCons.Builder.Builder(**bkw) + return bld(self, target, source, **kw) + + def Depends(self, target, dependency): + """Explicity specify that 'target's depend on 'dependency'.""" + tlist = self.arg2nodes(target, self.fs.Entry) + dlist = self.arg2nodes(dependency, self.fs.Entry) + for t in tlist: + t.add_dependency(dlist) + return tlist + + def Dir(self, name, *args, **kw): + """ + """ + s = self.subst(name) + if is_Sequence(s): + result=[] + for e in s: + result.append(self.fs.Dir(e, *args, **kw)) + return result + return self.fs.Dir(s, *args, **kw) + + def PyPackageDir(self, modulename): + s = self.subst(modulename) + if is_Sequence(s): + result=[] + for e in s: + result.append(self.fs.PyPackageDir(e)) + return result + return self.fs.PyPackageDir(s) + + def NoClean(self, *targets): + """Tags a target so that it will not be cleaned by -c""" + tlist = [] + for t in targets: + tlist.extend(self.arg2nodes(t, self.fs.Entry)) + for t in tlist: + t.set_noclean() + return tlist + + def NoCache(self, *targets): + """Tags a target so that it will not be cached""" + tlist = [] + for t in targets: + tlist.extend(self.arg2nodes(t, self.fs.Entry)) + for t in tlist: + t.set_nocache() + return tlist + + def Entry(self, name, *args, **kw): + """ + """ + s = self.subst(name) + if is_Sequence(s): + result=[] + for e in s: + result.append(self.fs.Entry(e, *args, **kw)) + return result + return self.fs.Entry(s, *args, **kw) + + def Environment(self, **kw): + return SCons.Environment.Environment(**self.subst_kw(kw)) + + def Execute(self, action, *args, **kw): + """Directly execute an action through an Environment + """ + action = self.Action(action, *args, **kw) + result = action([], [], self) + if isinstance(result, BuildError): + errstr = result.errstr + if result.filename: + errstr = result.filename + ': ' + errstr + sys.stderr.write("scons: *** %s\n" % errstr) + return result.status + else: + return result + + def File(self, name, *args, **kw): + """ + """ + s = self.subst(name) + if is_Sequence(s): + result=[] + for e in s: + result.append(self.fs.File(e, *args, **kw)) + return result + return self.fs.File(s, *args, **kw) + + def FindFile(self, file, dirs): + file = self.subst(file) + nodes = self.arg2nodes(dirs, self.fs.Dir) + return SCons.Node.FS.find_file(file, tuple(nodes)) + + def Flatten(self, sequence): + return flatten(sequence) + + def GetBuildPath(self, files): + result = list(map(str, self.arg2nodes(files, self.fs.Entry))) + if is_List(files): + return result + else: + return result[0] + + def Glob(self, pattern, ondisk=True, source=False, strings=False, exclude=None): + return self.fs.Glob(self.subst(pattern), ondisk, source, strings, exclude) + + def Ignore(self, target, dependency): + """Ignore a dependency.""" + tlist = self.arg2nodes(target, self.fs.Entry) + dlist = self.arg2nodes(dependency, self.fs.Entry) + for t in tlist: + t.add_ignore(dlist) + return tlist + + def Literal(self, string): + return SCons.Subst.Literal(string) + + def Local(self, *targets): + ret = [] + for targ in targets: + if isinstance(targ, SCons.Node.Node): + targ.set_local() + ret.append(targ) + else: + for t in self.arg2nodes(targ, self.fs.Entry): + t.set_local() + ret.append(t) + return ret + + def Precious(self, *targets): + tlist = [] + for t in targets: + tlist.extend(self.arg2nodes(t, self.fs.Entry)) + for t in tlist: + t.set_precious() + return tlist + + def Pseudo(self, *targets): + tlist = [] + for t in targets: + tlist.extend(self.arg2nodes(t, self.fs.Entry)) + for t in tlist: + t.set_pseudo() + return tlist + + def Repository(self, *dirs, **kw): + dirs = self.arg2nodes(list(dirs), self.fs.Dir) + self.fs.Repository(*dirs, **kw) + + def Requires(self, target, prerequisite): + """Specify that 'prerequisite' must be built before 'target', + (but 'target' does not actually depend on 'prerequisite' + and need not be rebuilt if it changes).""" + tlist = self.arg2nodes(target, self.fs.Entry) + plist = self.arg2nodes(prerequisite, self.fs.Entry) + for t in tlist: + t.add_prerequisite(plist) + return tlist + + def Scanner(self, *args, **kw): + nargs = [] + for arg in args: + if is_String(arg): + arg = self.subst(arg) + nargs.append(arg) + nkw = self.subst_kw(kw) + return SCons.Scanner.ScannerBase(*nargs, **nkw) + + def SConsignFile(self, name=SCons.SConsign.current_sconsign_filename(), dbm_module=None): + if name is not None: + name = self.subst(name) + if not os.path.isabs(name): + name = os.path.join(str(self.fs.SConstruct_dir), name) + if name: + name = os.path.normpath(name) + sconsign_dir = os.path.dirname(name) + if sconsign_dir and not os.path.exists(sconsign_dir): + self.Execute(SCons.Defaults.Mkdir(sconsign_dir)) + SCons.SConsign.File(name, dbm_module) + + def SideEffect(self, side_effect, target): + """Tell scons that side_effects are built as side + effects of building targets.""" + side_effects = self.arg2nodes(side_effect, self.fs.Entry) + targets = self.arg2nodes(target, self.fs.Entry) + + added_side_effects = [] + for side_effect in side_effects: + if side_effect.multiple_side_effect_has_builder(): + raise UserError("Multiple ways to build the same target were specified for: %s" % str(side_effect)) + side_effect.add_source(targets) + side_effect.side_effect = 1 + self.Precious(side_effect) + added = False + for target in targets: + if side_effect not in target.side_effects: + target.side_effects.append(side_effect) + added = True + if added: + added_side_effects.append(side_effect) + return added_side_effects + + def Split(self, arg): + """This function converts a string or list into a list of strings + or Nodes. This makes things easier for users by allowing files to + be specified as a white-space separated list to be split. + + The input rules are: + - A single string containing names separated by spaces. These will be + split apart at the spaces. + - A single Node instance + - A list containing either strings or Node instances. Any strings + in the list are not split at spaces. + + In all cases, the function returns a list of Nodes and strings.""" + + if is_List(arg): + return list(map(self.subst, arg)) + elif is_String(arg): + return self.subst(arg).split() + else: + return [self.subst(arg)] + + def Value(self, value, built_value=None, name=None): + """Return a Value (Python expression) node. + + .. versionchanged:: 4.0 + the *name* parameter was added. + """ + return SCons.Node.Python.ValueWithMemo(value, built_value, name) + + def VariantDir(self, variant_dir, src_dir, duplicate=1): + variant_dir = self.arg2nodes(variant_dir, self.fs.Dir)[0] + src_dir = self.arg2nodes(src_dir, self.fs.Dir)[0] + self.fs.VariantDir(variant_dir, src_dir, duplicate) + + def FindSourceFiles(self, node='.') -> list: + """Return a list of all source files.""" + node = self.arg2nodes(node, self.fs.Entry)[0] + + sources = [] + def build_source(ss): + for s in ss: + if isinstance(s, SCons.Node.FS.Dir): + build_source(s.all_children()) + elif s.has_builder(): + build_source(s.sources) + elif isinstance(s.disambiguate(), SCons.Node.FS.File): + sources.append(s) + build_source(node.all_children()) + + def final_source(node): + while node != node.srcnode(): + node = node.srcnode() + return node + sources = list(map(final_source, sources)) + # remove duplicates + return list(set(sources)) + + def FindInstalledFiles(self): + """ returns the list of all targets of the Install and InstallAs Builder. + """ + from SCons.Tool import install + if install._UNIQUE_INSTALLED_FILES is None: + install._UNIQUE_INSTALLED_FILES = uniquer_hashables(install._INSTALLED_FILES) + return install._UNIQUE_INSTALLED_FILES + + +class OverrideEnvironment(Base): + """A proxy that overrides variables in a wrapped construction + environment by returning values from an overrides dictionary in + preference to values from the underlying subject environment. + + This is a lightweight (I hope) proxy that passes through most use of + attributes to the underlying Environment.Base class, but has just + enough additional methods defined to act like a real construction + environment with overridden values. It can wrap either a Base + construction environment, or another OverrideEnvironment, which + can in turn nest arbitrary OverrideEnvironments... + + Note that we do *not* call the underlying base class + (SubsitutionEnvironment) initialization, because we get most of those + from proxying the attributes of the subject construction environment. + But because we subclass SubstitutionEnvironment, this class also + has inherited arg2nodes() and subst*() methods; those methods can't + be proxied because they need *this* object's methods to fetch the + values from the overrides dictionary. + """ + + def __init__(self, subject, overrides=None): + if SCons.Debug.track_instances: logInstanceCreation(self, 'Environment.OverrideEnvironment') + self.__dict__['__subject'] = subject + if overrides is None: + self.__dict__['overrides'] = {} + else: + self.__dict__['overrides'] = overrides + + # Methods that make this class act like a proxy. + def __getattr__(self, name): + attr = getattr(self.__dict__['__subject'], name) + # Here we check if attr is one of the Wrapper classes. For + # example when a pseudo-builder is being called from an + # OverrideEnvironment. + # + # These wrappers when they're constructed capture the + # Environment they are being constructed with and so will not + # have access to overrided values. So we rebuild them with the + # OverrideEnvironment so they have access to overrided values. + if isinstance(attr, MethodWrapper): + return attr.clone(self) + else: + return attr + + def __setattr__(self, name, value): + setattr(self.__dict__['__subject'], name, value) + + # Methods that make this class act like a dictionary. + def __getitem__(self, key): + try: + return self.__dict__['overrides'][key] + except KeyError: + return self.__dict__['__subject'].__getitem__(key) + + def __setitem__(self, key, value): + if not is_valid_construction_var(key): + raise UserError("Illegal construction variable `%s'" % key) + self.__dict__['overrides'][key] = value + + def __delitem__(self, key): + try: + del self.__dict__['overrides'][key] + except KeyError: + deleted = 0 + else: + deleted = 1 + try: + result = self.__dict__['__subject'].__delitem__(key) + except KeyError: + if not deleted: + raise + result = None + return result + + def get(self, key, default=None): + """Emulates the get() method of dictionaries.""" + try: + return self.__dict__['overrides'][key] + except KeyError: + return self.__dict__['__subject'].get(key, default) + + def __contains__(self, key): + if key in self.__dict__['overrides']: + return True + return key in self.__dict__['__subject'] + + def Dictionary(self, *args): + d = self.__dict__['__subject'].Dictionary().copy() + d.update(self.__dict__['overrides']) + if not args: + return d + dlist = [d[x] for x in args] + if len(dlist) == 1: + dlist = dlist[0] + return dlist + + def items(self): + """Emulates the items() method of dictionaries.""" + return self.Dictionary().items() + + def keys(self): + """Emulates the keys() method of dictionaries.""" + return self.Dictionary().keys() + + def values(self): + """Emulates the values() method of dictionaries.""" + return self.Dictionary().values() + + def setdefault(self, key, default=None): + """Emulates the setdefault() method of dictionaries.""" + try: + return self.__getitem__(key) + except KeyError: + self.__dict__['overrides'][key] = default + return default + + # Overridden private construction environment methods. + def _update(self, other): + self.__dict__['overrides'].update(other) + + def _update_onlynew(self, other): + """Update a dict with new keys. + + Unlike the .update method, if the key is already present, + it is not replaced. + """ + for k, v in other.items(): + if k not in self.__dict__['overrides']: + self.__dict__['overrides'][k] = v + + def gvars(self): + return self.__dict__['__subject'].gvars() + + def lvars(self): + lvars = self.__dict__['__subject'].lvars() + lvars.update(self.__dict__['overrides']) + return lvars + + # Overridden public construction environment methods. + def Replace(self, **kw): + kw = copy_non_reserved_keywords(kw) + self.__dict__['overrides'].update(semi_deepcopy(kw)) + + +# The entry point that will be used by the external world +# to refer to a construction environment. This allows the wrapper +# interface to extend a construction environment for its own purposes +# by subclassing SCons.Environment.Base and then assigning the +# class to SCons.Environment.Environment. + +Environment = Base + + +def NoSubstitutionProxy(subject): + """ + An entry point for returning a proxy subclass instance that overrides + the subst*() methods so they don't actually perform construction + variable substitution. This is specifically intended to be the shim + layer in between global function calls (which don't want construction + variable substitution) and the DefaultEnvironment() (which would + substitute variables if left to its own devices). + + We have to wrap this in a function that allows us to delay definition of + the class until it's necessary, so that when it subclasses Environment + it will pick up whatever Environment subclass the wrapper interface + might have assigned to SCons.Environment.Environment. + """ + class _NoSubstitutionProxy(Environment): + def __init__(self, subject): + self.__dict__['__subject'] = subject + + def __getattr__(self, name): + return getattr(self.__dict__['__subject'], name) + + def __setattr__(self, name, value): + return setattr(self.__dict__['__subject'], name, value) + + def executor_to_lvars(self, kwdict): + if 'executor' in kwdict: + kwdict['lvars'] = kwdict['executor'].get_lvars() + del kwdict['executor'] + else: + kwdict['lvars'] = {} + + def raw_to_mode(self, mapping): + try: + raw = mapping['raw'] + except KeyError: + pass + else: + del mapping['raw'] + mapping['mode'] = raw + + def subst(self, string, *args, **kwargs): + return string + + def subst_kw(self, kw, *args, **kwargs): + return kw + + def subst_list(self, string, *args, **kwargs): + nargs = (string, self,) + args + nkw = kwargs.copy() + nkw['gvars'] = {} + self.executor_to_lvars(nkw) + self.raw_to_mode(nkw) + return SCons.Subst.scons_subst_list(*nargs, **nkw) + + def subst_target_source(self, string, *args, **kwargs): + nargs = (string, self,) + args + nkw = kwargs.copy() + nkw['gvars'] = {} + self.executor_to_lvars(nkw) + self.raw_to_mode(nkw) + return SCons.Subst.scons_subst(*nargs, **nkw) + + return _NoSubstitutionProxy(subject) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/EnvironmentValues.py b/scons/scons-local-4.5.1/SCons/EnvironmentValues.py new file mode 100644 index 000000000..c5eb972c2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/EnvironmentValues.py @@ -0,0 +1,119 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +import re + +_is_valid_var = re.compile(r'[_a-zA-Z]\w*$') + +_rm = re.compile(r'\$[()]') +_remove = re.compile(r'\$\([^$]*(\$[^)][^$]*)*\$\)') + +# Regular expressions for splitting strings and handling substitutions, +# for use by the scons_subst() and scons_subst_list() functions: +# +# The first expression compiled matches all of the $-introduced tokens +# that we need to process in some way, and is used for substitutions. +# The expressions it matches are: +# +# "$$" +# "$(" +# "$)" +# "$variable" [must begin with alphabetic or underscore] +# "${any stuff}" +# +# The second expression compiled is used for splitting strings into tokens +# to be processed, and it matches all of the tokens listed above, plus +# the following that affect how arguments do or don't get joined together: +# +# " " [white space] +# "non-white-space" [without any dollar signs] +# "$" [single dollar sign] +# +_dollar_exps_str = r'\$[\$\(\)]|\$[_a-zA-Z][\.\w]*|\${[^}]*}' +_dollar_exps = re.compile(r'(%s)' % _dollar_exps_str) +_separate_args = re.compile(r'(%s|\s+|[^\s$]+|\$)' % _dollar_exps_str) + +# This regular expression is used to replace strings of multiple white +# space characters in the string result from the scons_subst() function. +_space_sep = re.compile(r'[\t ]+(?![^{]*})') + +class ValueTypes: + """ + Enum to store what type of value the variable holds. + """ + UNKNOWN = 0 + STRING = 1 + CALLABLE = 2 + VARIABLE = 3 + + +class EnvironmentValue: + """ + Hold a single value. We're going to cache parsed version of the file + We're going to keep track of variables which feed into this values evaluation + """ + def __init__(self, value): + self.value = value + self.var_type = ValueTypes.UNKNOWN + + if callable(self.value): + self.var_type = ValueTypes.CALLABLE + else: + self.parse_value() + + + def parse_value(self): + """ + Scan the string and break into component values + """ + + try: + if '$' not in self.value: + self._parsed = self.value + self.var_type = ValueTypes.STRING + else: + # Now we need to parse the specified string + result = _dollar_exps.sub(sub_match, args) + print(result) + except TypeError: + # likely callable? either way we don't parse + self._parsed = self.value + + def parse_trial(self): + """ + Try alternate parsing methods. + :return: + """ + parts = [] + for c in self.value: + pass + + +class EnvironmentValues: + """ + A class to hold all the environment variables + """ + def __init__(self, **kw): + self._dict = {} + for k in kw: + self._dict[k] = EnvironmentValue(kw[k]) diff --git a/scons/scons-local-4.5.1/SCons/EnvironmentValuesTest.py b/scons/scons-local-4.5.1/SCons/EnvironmentValuesTest.py new file mode 100644 index 000000000..074aa85ca --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/EnvironmentValuesTest.py @@ -0,0 +1,39 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +import unittest + +from SCons.EnvironmentValues import EnvironmentValues + +class MyTestCase(unittest.TestCase): + def test_simple_environmentValues(self): + """Test comparing SubstitutionEnvironments + """ + + env1 = EnvironmentValues(XXX='x') + env2 = EnvironmentValues(XXX='x',XX="$X", X1="${X}", X2="$($X$)") + + + +if __name__ == '__main__': + unittest.main() diff --git a/scons/scons-local-4.5.1/SCons/Errors.py b/scons/scons-local-4.5.1/SCons/Errors.py new file mode 100644 index 000000000..d37cb6de4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Errors.py @@ -0,0 +1,211 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons exception classes. + +Used to handle internal and user errors in SCons. +""" + +import shutil +import SCons.Util + +# Note that not all Errors are defined here, some are at the point of use + + +class BuildError(Exception): + """SCons Errors that can occur while building. + + A :class:`BuildError` exception contains information both + about the erorr itself, and what caused the error. + + Attributes: + node: (*cause*) the error occurred while building this target node(s) + errstr: (*info*) a description of the error message + status: (*info*) the return code of the action that caused the build error. + Must be set to a non-zero value even if the build error is not due + to an action returning a non-zero returned code. + exitstatus: (*info*) SCons exit status due to this build error. + Must be nonzero unless due to an explicit :meth:`Exit` call. + Not always the same as ``status``, since actions return a status + code that should be respected, but SCons typically exits with 2 + irrespective of the return value of the failed action. + filename: (*info*) The name of the file or directory that caused the + build error. Set to ``None`` if no files are associated with + this error. This might be different from the target + being built. For example, failure to create the + directory in which the target file will appear. It + can be ``None`` if the error is not due to a particular + filename. + executor: (*cause*) the executor that caused the build to fail (might + be ``None`` if the build failures is not due to the executor failing) + action: (*cause*) the action that caused the build to fail (might be + ``None`` if the build failures is not due to the an + action failure) + command: (*cause*) the command line for the action that caused the + build to fail (might be ``None`` if the build failures + is not due to the an action failure) + exc_info: (*info*) Info about exception that caused the build + error. Set to ``(None, None, None)`` if this build + error is not due to an exception. + + """ + + def __init__(self, + node=None, errstr="Unknown error", status=2, exitstatus=2, + filename=None, executor=None, action=None, command=None, + exc_info=(None, None, None)): + + # py3: errstr should be string and not bytes. + + self.errstr = SCons.Util.to_String(errstr) + self.status = status + self.exitstatus = exitstatus + self.filename = filename + self.exc_info = exc_info + + self.node = node + self.executor = executor + self.action = action + self.command = command + + super().__init__(node, errstr, status, exitstatus, filename, + executor, action, command, exc_info) + + def __str__(self): + if self.filename: + return self.filename + ': ' + self.errstr + else: + return self.errstr + +class InternalError(Exception): + pass + +class UserError(Exception): + pass + +class StopError(Exception): + pass + +class SConsEnvironmentError(Exception): + pass + +class MSVCError(IOError): + pass + +class ExplicitExit(Exception): + def __init__(self, node=None, status=None, *args): + self.node = node + self.status = status + self.exitstatus = status + super().__init__(*args) + +def convert_to_BuildError(status, exc_info=None): + """Convert a return code to a BuildError Exception. + + The `buildError.status` we set here will normally be + used as the exit status of the "scons" process. + + Args: + status: can either be a return code or an Exception. + exc_info (tuple, optional): explicit exception information. + + """ + + if not exc_info and isinstance(status, Exception): + exc_info = (status.__class__, status, None) + + + if isinstance(status, BuildError): + buildError = status + buildError.exitstatus = 2 # always exit with 2 on build errors + elif isinstance(status, ExplicitExit): + status = status.status + errstr = 'Explicit exit, status %s' % status + buildError = BuildError( + errstr=errstr, + status=status, # might be 0, OK here + exitstatus=status, # might be 0, OK here + exc_info=exc_info) + elif isinstance(status, (StopError, UserError)): + buildError = BuildError( + errstr=str(status), + status=2, + exitstatus=2, + exc_info=exc_info) + elif isinstance(status, shutil.SameFileError): + # PY3 has a exception for when copying file to itself + # It's object provides info differently than below + try: + filename = status.filename + except AttributeError: + filename = None + + buildError = BuildError( + errstr=status.args[0], + status=status.errno, + exitstatus=2, + filename=filename, + exc_info=exc_info) + + elif isinstance(status, (SConsEnvironmentError, OSError, IOError)): + # If an IOError/OSError happens, raise a BuildError. + # Report the name of the file or directory that caused the + # error, which might be different from the target being built + # (for example, failure to create the directory in which the + # target file will appear). + filename = getattr(status, 'filename', None) + strerror = getattr(status, 'strerror', str(status)) + errno = getattr(status, 'errno', 2) + + buildError = BuildError( + errstr=strerror, + status=errno, + exitstatus=2, + filename=filename, + exc_info=exc_info) + elif isinstance(status, Exception): + buildError = BuildError( + errstr='%s : %s' % (status.__class__.__name__, status), + status=2, + exitstatus=2, + exc_info=exc_info) + elif SCons.Util.is_String(status): + buildError = BuildError( + errstr=status, + status=2, + exitstatus=2) + else: + buildError = BuildError( + errstr="Error %s" % status, + status=status, + exitstatus=2) + + #import sys + #sys.stderr.write("convert_to_BuildError: status %s => (errstr %s, status %s)\n"%(status,buildError.errstr, buildError.status)) + return buildError + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Executor.py b/scons/scons-local-4.5.1/SCons/Executor.py new file mode 100644 index 000000000..274af6ad9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Executor.py @@ -0,0 +1,660 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Execute actions with specific lists of target and source Nodes.""" + +import collections + +import SCons.Errors +import SCons.Memoize +import SCons.Util +from SCons.compat import NoSlotsPyPy +import SCons.Debug +from SCons.Debug import logInstanceCreation + +class Batch: + """Remembers exact association between targets + and sources of executor.""" + + __slots__ = ('targets', + 'sources') + + def __init__(self, targets=[], sources=[]): + self.targets = targets + self.sources = sources + + + +class TSList(collections.UserList): + """A class that implements $TARGETS or $SOURCES expansions by wrapping + an executor Method. This class is used in the Executor.lvars() + to delay creation of NodeList objects until they're needed. + + Note that we subclass collections.UserList purely so that the + is_Sequence() function will identify an object of this class as + a list during variable expansion. We're not really using any + collections.UserList methods in practice. + """ + def __init__(self, func): + self.func = func + def __getattr__(self, attr): + nl = self.func() + return getattr(nl, attr) + def __getitem__(self, i): + nl = self.func() + return nl[i] + def __str__(self): + nl = self.func() + return str(nl) + def __repr__(self): + nl = self.func() + return repr(nl) + +class TSObject: + """A class that implements $TARGET or $SOURCE expansions by wrapping + an Executor method. + """ + def __init__(self, func): + self.func = func + def __getattr__(self, attr): + n = self.func() + return getattr(n, attr) + def __str__(self): + n = self.func() + if n: + return str(n) + return '' + def __repr__(self): + n = self.func() + if n: + return repr(n) + return '' + +def rfile(node): + """ + A function to return the results of a Node's rfile() method, + if it exists, and the Node itself otherwise (if it's a Value + Node, e.g.). + """ + try: + rfile = node.rfile + except AttributeError: + return node + else: + return rfile() + + +def execute_nothing(obj, target, kw): + return 0 + +def execute_action_list(obj, target, kw): + """Actually execute the action list.""" + env = obj.get_build_env() + kw = obj.get_kw(kw) + status = 0 + for act in obj.get_action_list(): + args = ([], [], env) + status = act(*args, **kw) + if isinstance(status, SCons.Errors.BuildError): + status.executor = obj + raise status # TODO pylint E0702: raising int not allowed + elif status: + msg = "Error %s" % status + raise SCons.Errors.BuildError( + errstr=msg, + node=obj.batches[0].targets, + executor=obj, + action=act) + return status + +_do_execute_map = {0 : execute_nothing, + 1 : execute_action_list} + + +def execute_actions_str(obj): + env = obj.get_build_env() + return "\n".join([action.genstring(obj.get_all_targets(), + obj.get_all_sources(), + env) + for action in obj.get_action_list()]) + +def execute_null_str(obj): + return '' + +_execute_str_map = {0 : execute_null_str, + 1 : execute_actions_str} + + +class Executor(object, metaclass=NoSlotsPyPy): + """A class for controlling instances of executing an action. + + This largely exists to hold a single association of an action, + environment, list of environment override dictionaries, targets + and sources for later processing as needed. + """ + + __slots__ = ('pre_actions', + 'post_actions', + 'env', + 'overridelist', + 'batches', + 'builder_kw', + '_memo', + 'lvars', + '_changed_sources_list', + '_changed_targets_list', + '_unchanged_sources_list', + '_unchanged_targets_list', + 'action_list', + '_do_execute', + '_execute_str') + + def __init__(self, action, env=None, overridelist=[{}], + targets=[], sources=[], builder_kw={}): + if SCons.Debug.track_instances: logInstanceCreation(self, 'Executor.Executor') + self.set_action_list(action) + self.pre_actions = [] + self.post_actions = [] + self.env = env + self.overridelist = overridelist + if targets or sources: + self.batches = [Batch(targets[:], sources[:])] + else: + self.batches = [] + self.builder_kw = builder_kw + self._do_execute = 1 + self._execute_str = 1 + self._memo = {} + + def get_lvars(self): + try: + return self.lvars + except AttributeError: + self.lvars = { + 'CHANGED_SOURCES' : TSList(self._get_changed_sources), + 'CHANGED_TARGETS' : TSList(self._get_changed_targets), + 'SOURCE' : TSObject(self._get_source), + 'SOURCES' : TSList(self._get_sources), + 'TARGET' : TSObject(self._get_target), + 'TARGETS' : TSList(self._get_targets), + 'UNCHANGED_SOURCES' : TSList(self._get_unchanged_sources), + 'UNCHANGED_TARGETS' : TSList(self._get_unchanged_targets), + } + return self.lvars + + def _get_changes(self): + cs = [] + ct = [] + us = [] + ut = [] + for b in self.batches: + # don't add targets marked always build to unchanged lists + # add to changed list as they always need to build + if not b.targets[0].always_build and b.targets[0].is_up_to_date(): + us.extend(list(map(rfile, b.sources))) + ut.extend(b.targets) + else: + cs.extend(list(map(rfile, b.sources))) + ct.extend(b.targets) + self._changed_sources_list = SCons.Util.NodeList(cs) + self._changed_targets_list = SCons.Util.NodeList(ct) + self._unchanged_sources_list = SCons.Util.NodeList(us) + self._unchanged_targets_list = SCons.Util.NodeList(ut) + + def _get_changed_sources(self, *args, **kw): + try: + return self._changed_sources_list + except AttributeError: + self._get_changes() + return self._changed_sources_list + + def _get_changed_targets(self, *args, **kw): + try: + return self._changed_targets_list + except AttributeError: + self._get_changes() + return self._changed_targets_list + + def _get_source(self, *args, **kw): + return rfile(self.batches[0].sources[0]).get_subst_proxy() + + def _get_sources(self, *args, **kw): + return SCons.Util.NodeList([rfile(n).get_subst_proxy() for n in self.get_all_sources()]) + + def _get_target(self, *args, **kw): + return self.batches[0].targets[0].get_subst_proxy() + + def _get_targets(self, *args, **kw): + return SCons.Util.NodeList([n.get_subst_proxy() for n in self.get_all_targets()]) + + def _get_unchanged_sources(self, *args, **kw): + try: + return self._unchanged_sources_list + except AttributeError: + self._get_changes() + return self._unchanged_sources_list + + def _get_unchanged_targets(self, *args, **kw): + try: + return self._unchanged_targets_list + except AttributeError: + self._get_changes() + return self._unchanged_targets_list + + def get_action_targets(self): + if not self.action_list: + return [] + targets_string = self.action_list[0].get_targets(self.env, self) + if targets_string[0] == '$': + targets_string = targets_string[1:] + return self.get_lvars()[targets_string] + + def set_action_list(self, action): + if not SCons.Util.is_List(action): + if not action: + raise SCons.Errors.UserError("Executor must have an action.") + action = [action] + self.action_list = action + + def get_action_list(self): + if self.action_list is None: + return [] + return self.pre_actions + self.action_list + self.post_actions + + def get_all_targets(self): + """Returns all targets for all batches of this Executor.""" + result = [] + for batch in self.batches: + result.extend(batch.targets) + return result + + def get_all_sources(self): + """Returns all sources for all batches of this Executor.""" + result = [] + for batch in self.batches: + result.extend(batch.sources) + return result + + def get_all_children(self): + """Returns all unique children (dependencies) for all batches + of this Executor. + + The Taskmaster can recognize when it's already evaluated a + Node, so we don't have to make this list unique for its intended + canonical use case, but we expect there to be a lot of redundancy + (long lists of batched .cc files #including the same .h files + over and over), so removing the duplicates once up front should + save the Taskmaster a lot of work. + """ + result = [] + for target in self.get_all_targets(): + result.extend(target.children()) + return SCons.Util.uniquer_hashables(result) + + def get_all_prerequisites(self): + """Returns all unique (order-only) prerequisites for all batches + of this Executor. + """ + result = [] + for target in self.get_all_targets(): + if target.prerequisites is not None: + result.extend(target.prerequisites) + return SCons.Util.uniquer_hashables(result) + + def get_action_side_effects(self): + + """Returns all side effects for all batches of this + Executor used by the underlying Action. + """ + result = [] + for target in self.get_action_targets(): + result.extend(target.side_effects) + return SCons.Util.uniquer_hashables(result) + + @SCons.Memoize.CountMethodCall + def get_build_env(self): + """Fetch or create the appropriate build Environment + for this Executor. + """ + try: + return self._memo['get_build_env'] + except KeyError: + pass + + # Create the build environment instance with appropriate + # overrides. These get evaluated against the current + # environment's construction variables so that users can + # add to existing values by referencing the variable in + # the expansion. + overrides = {} + for odict in self.overridelist: + overrides.update(odict) + + import SCons.Defaults + env = self.env or SCons.Defaults.DefaultEnvironment() + build_env = env.Override(overrides) + + self._memo['get_build_env'] = build_env + + return build_env + + def get_build_scanner_path(self, scanner): + """Fetch the scanner path for this executor's targets and sources. + """ + env = self.get_build_env() + try: + cwd = self.batches[0].targets[0].cwd + except (IndexError, AttributeError): + cwd = None + return scanner.path(env, cwd, + self.get_all_targets(), + self.get_all_sources()) + + def get_kw(self, kw={}): + result = self.builder_kw.copy() + result.update(kw) + result['executor'] = self + return result + + # use extra indirection because with new-style objects (Python 2.2 + # and above) we can't override special methods, and nullify() needs + # to be able to do this. + + def __call__(self, target, **kw): + return _do_execute_map[self._do_execute](self, target, kw) + + def cleanup(self): + self._memo = {} + + def add_sources(self, sources): + """Add source files to this Executor's list. This is necessary + for "multi" Builders that can be called repeatedly to build up + a source file list for a given target.""" + # TODO(batch): extend to multiple batches + assert (len(self.batches) == 1) + # TODO(batch): remove duplicates? + sources = [x for x in sources if x not in self.batches[0].sources] + self.batches[0].sources.extend(sources) + + def get_sources(self): + return self.batches[0].sources + + def add_batch(self, targets, sources): + """Add pair of associated target and source to this Executor's list. + This is necessary for "batch" Builders that can be called repeatedly + to build up a list of matching target and source files that will be + used in order to update multiple target files at once from multiple + corresponding source files, for tools like MSVC that support it.""" + self.batches.append(Batch(targets, sources)) + + def prepare(self): + """ + Preparatory checks for whether this Executor can go ahead + and (try to) build its targets. + """ + for s in self.get_all_sources(): + if s.missing(): + msg = "Source `%s' not found, needed by target `%s'." + raise SCons.Errors.StopError(msg % (s, self.batches[0].targets[0])) + + def add_pre_action(self, action): + self.pre_actions.append(action) + + def add_post_action(self, action): + self.post_actions.append(action) + + # another extra indirection for new-style objects and nullify... + + def __str__(self): + return _execute_str_map[self._execute_str](self) + + def nullify(self): + self.cleanup() + self._do_execute = 0 + self._execute_str = 0 + + @SCons.Memoize.CountMethodCall + def get_contents(self): + """Fetch the signature contents. This is the main reason this + class exists, so we can compute this once and cache it regardless + of how many target or source Nodes there are. + + Returns bytes + """ + try: + return self._memo['get_contents'] + except KeyError: + pass + env = self.get_build_env() + + action_list = self.get_action_list() + all_targets = self.get_all_targets() + all_sources = self.get_all_sources() + + result = bytearray("",'utf-8').join([action.get_contents(all_targets, + all_sources, + env) + for action in action_list]) + + self._memo['get_contents'] = result + return result + + def get_timestamp(self): + """Fetch a time stamp for this Executor. We don't have one, of + course (only files do), but this is the interface used by the + timestamp module. + """ + return 0 + + def scan_targets(self, scanner): + # TODO(batch): scan by batches + self.scan(scanner, self.get_all_targets()) + + def scan_sources(self, scanner): + # TODO(batch): scan by batches + if self.batches[0].sources: + self.scan(scanner, self.get_all_sources()) + + def scan(self, scanner, node_list): + """Scan a list of this Executor's files (targets or sources) for + implicit dependencies and update all of the targets with them. + This essentially short-circuits an N*M scan of the sources for + each individual target, which is a hell of a lot more efficient. + """ + env = self.get_build_env() + path = self.get_build_scanner_path + kw = self.get_kw() + + # TODO(batch): scan by batches) + deps = [] + + for node in node_list: + node.disambiguate() + deps.extend(node.get_implicit_deps(env, scanner, path, kw)) + + deps.extend(self.get_implicit_deps()) + + for tgt in self.get_all_targets(): + tgt.add_to_implicit(deps) + + def _get_unignored_sources_key(self, node, ignore=()): + return (node,) + tuple(ignore) + + @SCons.Memoize.CountDictCall(_get_unignored_sources_key) + def get_unignored_sources(self, node, ignore=()): + key = (node,) + tuple(ignore) + try: + memo_dict = self._memo['get_unignored_sources'] + except KeyError: + memo_dict = {} + self._memo['get_unignored_sources'] = memo_dict + else: + try: + return memo_dict[key] + except KeyError: + pass + + if node: + # TODO: better way to do this (it's a linear search, + # but it may not be critical path)? + sourcelist = [] + for b in self.batches: + if node in b.targets: + sourcelist = b.sources + break + else: + sourcelist = self.get_all_sources() + if ignore: + idict = {} + for i in ignore: + idict[i] = 1 + sourcelist = [s for s in sourcelist if s not in idict] + + memo_dict[key] = sourcelist + + return sourcelist + + def get_implicit_deps(self): + """Return the executor's implicit dependencies, i.e. the nodes of + the commands to be executed.""" + result = [] + build_env = self.get_build_env() + for act in self.get_action_list(): + deps = act.get_implicit_deps(self.get_all_targets(), + self.get_all_sources(), + build_env) + result.extend(deps) + return result + + + +_batch_executors = {} + +def GetBatchExecutor(key): + return _batch_executors[key] + +def AddBatchExecutor(key, executor): + assert key not in _batch_executors + _batch_executors[key] = executor + +nullenv = None + + +class NullEnvironment(SCons.Util.Null): + import SCons.CacheDir + _CacheDir_path = None + _CacheDir = SCons.CacheDir.CacheDir(None) + def get_CacheDir(self): + return self._CacheDir + + +def get_NullEnvironment(): + """Use singleton pattern for Null Environments.""" + global nullenv + + if nullenv is None: + nullenv = NullEnvironment() + return nullenv + +class Null(object, metaclass=NoSlotsPyPy): + """A null Executor, with a null build Environment, that does + nothing when the rest of the methods call it. + + This might be able to disappear when we refactor things to + disassociate Builders from Nodes entirely, so we're not + going to worry about unit tests for this--at least for now. + """ + + __slots__ = ('pre_actions', + 'post_actions', + 'env', + 'overridelist', + 'batches', + 'builder_kw', + '_memo', + 'lvars', + '_changed_sources_list', + '_changed_targets_list', + '_unchanged_sources_list', + '_unchanged_targets_list', + 'action_list', + '_do_execute', + '_execute_str') + + def __init__(self, *args, **kw): + if SCons.Debug.track_instances: + logInstanceCreation(self, 'Executor.Null') + self.batches = [Batch(kw['targets'][:], [])] + def get_build_env(self): + return get_NullEnvironment() + def get_build_scanner_path(self): + return None + def cleanup(self): + pass + def prepare(self): + pass + def get_unignored_sources(self, *args, **kw): + return tuple(()) + def get_action_targets(self): + return [] + def get_action_list(self): + return [] + def get_all_targets(self): + return self.batches[0].targets + def get_all_sources(self): + return self.batches[0].targets[0].sources + def get_all_children(self): + return self.batches[0].targets[0].children() + def get_all_prerequisites(self): + return [] + def get_action_side_effects(self): + return [] + def __call__(self, *args, **kw): + return 0 + def get_contents(self): + return '' + def _morph(self): + """Morph this Null executor to a real Executor object.""" + batches = self.batches + self.__class__ = Executor + self.__init__([]) + self.batches = batches + + # The following methods require morphing this Null Executor to a + # real Executor object. + + def add_pre_action(self, action): + self._morph() + self.add_pre_action(action) + def add_post_action(self, action): + self._morph() + self.add_post_action(action) + def set_action_list(self, action): + self._morph() + self.set_action_list(action) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Memoize.py b/scons/scons-local-4.5.1/SCons/Memoize.py new file mode 100644 index 000000000..b02c1445b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Memoize.py @@ -0,0 +1,242 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Decorator-based memoizer to count caching stats. + +A decorator-based implementation to count hits and misses of the computed +values that various methods cache in memory. + +Use of this modules assumes that wrapped methods be coded to cache their +values in a consistent way. In particular, it requires that the class uses a +dictionary named "_memo" to store the cached values. + +Here is an example of wrapping a method that returns a computed value, +with no input parameters:: + + @SCons.Memoize.CountMethodCall + def foo(self): + + try: # Memoization + return self._memo['foo'] # Memoization + except KeyError: # Memoization + pass # Memoization + + result = self.compute_foo_value() + + self._memo['foo'] = result # Memoization + + return result + +Here is an example of wrapping a method that will return different values +based on one or more input arguments:: + + def _bar_key(self, argument): # Memoization + return argument # Memoization + + @SCons.Memoize.CountDictCall(_bar_key) + def bar(self, argument): + + memo_key = argument # Memoization + try: # Memoization + memo_dict = self._memo['bar'] # Memoization + except KeyError: # Memoization + memo_dict = {} # Memoization + self._memo['dict'] = memo_dict # Memoization + else: # Memoization + try: # Memoization + return memo_dict[memo_key] # Memoization + except KeyError: # Memoization + pass # Memoization + + result = self.compute_bar_value(argument) + + memo_dict[memo_key] = result # Memoization + + return result + +Deciding what to cache is tricky, because different configurations +can have radically different performance tradeoffs, and because the +tradeoffs involved are often so non-obvious. Consequently, deciding +whether or not to cache a given method will likely be more of an art than +a science, but should still be based on available data from this module. +Here are some VERY GENERAL guidelines about deciding whether or not to +cache return values from a method that's being called a lot: + + -- The first question to ask is, "Can we change the calling code + so this method isn't called so often?" Sometimes this can be + done by changing the algorithm. Sometimes the *caller* should + be memoized, not the method you're looking at. + + -- The memoized function should be timed with multiple configurations + to make sure it doesn't inadvertently slow down some other + configuration. + + -- When memoizing values based on a dictionary key composed of + input arguments, you don't need to use all of the arguments + if some of them don't affect the return values. + +""" + +# A flag controlling whether or not we actually use memoization. +use_memoizer = None + +# Global list of counter objects +CounterList = {} + +class Counter: + """ + Base class for counting memoization hits and misses. + + We expect that the initialization in a matching decorator will + fill in the correct class name and method name that represents + the name of the function being counted. + """ + def __init__(self, cls_name, method_name): + """ + """ + self.cls_name = cls_name + self.method_name = method_name + self.hit = 0 + self.miss = 0 + def key(self): + return self.cls_name+'.'+self.method_name + def display(self): + print(" {:7d} hits {:7d} misses {}()".format(self.hit, self.miss, self.key())) + def __eq__(self, other): + try: + return self.key() == other.key() + except AttributeError: + return True + +class CountValue(Counter): + """ + A counter class for simple, atomic memoized values. + + A CountValue object should be instantiated in a decorator for each of + the class's methods that memoizes its return value by simply storing + the return value in its _memo dictionary. + """ + def count(self, *args, **kw): + """ Counts whether the memoized value has already been + set (a hit) or not (a miss). + """ + obj = args[0] + if self.method_name in obj._memo: + self.hit = self.hit + 1 + else: + self.miss = self.miss + 1 + +class CountDict(Counter): + """ + A counter class for memoized values stored in a dictionary, with + keys based on the method's input arguments. + + A CountDict object is instantiated in a decorator for each of the + class's methods that memoizes its return value in a dictionary, + indexed by some key that can be computed from one or more of + its input arguments. + """ + def __init__(self, cls_name, method_name, keymaker): + """ + """ + super().__init__(cls_name, method_name) + self.keymaker = keymaker + def count(self, *args, **kw): + """ Counts whether the computed key value is already present + in the memoization dictionary (a hit) or not (a miss). + """ + obj = args[0] + try: + memo_dict = obj._memo[self.method_name] + except KeyError: + self.miss = self.miss + 1 + else: + key = self.keymaker(*args, **kw) + if key in memo_dict: + self.hit = self.hit + 1 + else: + self.miss = self.miss + 1 + +def Dump(title=None): + """ Dump the hit/miss count for all the counters + collected so far. + """ + if title: + print(title) + for counter in sorted(CounterList): + CounterList[counter].display() + +def EnableMemoization(): + global use_memoizer + use_memoizer = 1 + +def CountMethodCall(fn): + """ Decorator for counting memoizer hits/misses while retrieving + a simple value in a class method. It wraps the given method + fn and uses a CountValue object to keep track of the + caching statistics. + Wrapping gets enabled by calling EnableMemoization(). + """ + if use_memoizer: + def wrapper(self, *args, **kwargs): + global CounterList + key = self.__class__.__name__+'.'+fn.__name__ + if key not in CounterList: + CounterList[key] = CountValue(self.__class__.__name__, fn.__name__) + CounterList[key].count(self, *args, **kwargs) + return fn(self, *args, **kwargs) + wrapper.__name__= fn.__name__ + return wrapper + else: + return fn + +def CountDictCall(keyfunc): + """ Decorator for counting memoizer hits/misses while accessing + dictionary values with a key-generating function. Like + CountMethodCall above, it wraps the given method + fn and uses a CountDict object to keep track of the + caching statistics. The dict-key function keyfunc has to + get passed in the decorator call and gets stored in the + CountDict instance. + Wrapping gets enabled by calling EnableMemoization(). + """ + def decorator(fn): + if use_memoizer: + def wrapper(self, *args, **kwargs): + global CounterList + key = self.__class__.__name__+'.'+fn.__name__ + if key not in CounterList: + CounterList[key] = CountDict(self.__class__.__name__, fn.__name__, keyfunc) + CounterList[key].count(self, *args, **kwargs) + return fn(self, *args, **kwargs) + wrapper.__name__= fn.__name__ + return wrapper + else: + return fn + return decorator + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Node/Alias.py b/scons/scons-local-4.5.1/SCons/Node/Alias.py new file mode 100644 index 000000000..1125c22f6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Node/Alias.py @@ -0,0 +1,176 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Alias nodes. + +This creates a hash of global Aliases (dummy targets). +""" + +import collections + +import SCons.Errors +import SCons.Node +import SCons.Util +from SCons.Util import hash_signature + +class AliasNameSpace(collections.UserDict): + def Alias(self, name, **kw): + if isinstance(name, SCons.Node.Alias.Alias): + return name + try: + a = self[name] + except KeyError: + a = SCons.Node.Alias.Alias(name, **kw) + self[name] = a + return a + + def lookup(self, name, **kw): + try: + return self[name] + except KeyError: + return None + +class AliasNodeInfo(SCons.Node.NodeInfoBase): + __slots__ = ('csig',) + current_version_id = 2 + field_list = ['csig'] + def str_to_node(self, s): + return default_ans.Alias(s) + + def __getstate__(self): + """ + Return all fields that shall be pickled. Walk the slots in the class + hierarchy and add those to the state dictionary. If a '__dict__' slot is + available, copy all entries to the dictionary. Also include the version + id, which is fixed for all instances of a class. + """ + state = getattr(self, '__dict__', {}).copy() + for obj in type(self).mro(): + for name in getattr(obj,'__slots__',()): + if hasattr(self, name): + state[name] = getattr(self, name) + + state['_version_id'] = self.current_version_id + try: + del state['__weakref__'] + except KeyError: + pass + + return state + + def __setstate__(self, state): + """ + Restore the attributes from a pickled state. + """ + # TODO check or discard version + del state['_version_id'] + for key, value in state.items(): + if key not in ('__weakref__',): + setattr(self, key, value) + + +class AliasBuildInfo(SCons.Node.BuildInfoBase): + __slots__ = () + current_version_id = 2 + +class Alias(SCons.Node.Node): + + NodeInfo = AliasNodeInfo + BuildInfo = AliasBuildInfo + + def __init__(self, name): + super().__init__() + self.name = name + self.changed_since_last_build = 1 + self.store_info = 0 + + def str_for_display(self): + return '"' + self.__str__() + '"' + + def __str__(self): + return self.name + + def make_ready(self): + self.get_csig() + + really_build = SCons.Node.Node.build + is_up_to_date = SCons.Node.Node.children_are_up_to_date + + def is_under(self, dir): + # Make Alias nodes get built regardless of + # what directory scons was run from. Alias nodes + # are outside the filesystem: + return 1 + + def get_contents(self): + """The contents of an alias is the concatenation + of the content signatures of all its sources.""" + childsigs = [n.get_csig() for n in self.children()] + return ''.join(childsigs) + + def sconsign(self): + """An Alias is not recorded in .sconsign files""" + pass + + # + # + # + + def build(self): + """A "builder" for aliases.""" + pass + + def convert(self): + try: del self.builder + except AttributeError: pass + self.reset_executor() + self.build = self.really_build + + def get_csig(self): + """ + Generate a node's content signature, the digested signature + of its content. + + node - the node + cache - alternate node to use for the signature cache + returns - the content signature + """ + try: + return self.ninfo.csig + except AttributeError: + pass + + contents = self.get_contents() + csig = hash_signature(contents) + self.get_ninfo().csig = csig + return csig + +default_ans = AliasNameSpace() + +SCons.Node.arg2nodes_lookups.append(default_ans.lookup) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Node/FS.py b/scons/scons-local-4.5.1/SCons/Node/FS.py new file mode 100644 index 000000000..67e1ff608 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Node/FS.py @@ -0,0 +1,3873 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""File system nodes. + +These Nodes represent the canonical external objects that people think +of when they think of building software: files and directories. + +This holds a "default_fs" variable that should be initialized with an FS +that can be used by scripts or modules looking for the canonical default. +""" + +import codecs +import fnmatch +import importlib.util +import os +import re +import shutil +import stat +import sys +import time +from itertools import chain +from typing import Optional + +import SCons.Action +import SCons.Debug +import SCons.Errors +import SCons.Memoize +import SCons.Node +import SCons.Node.Alias +import SCons.Subst +import SCons.Util +import SCons.Warnings +from SCons.Debug import logInstanceCreation, Trace +from SCons.Util import hash_signature, hash_file_signature, hash_collect + +print_duplicate = 0 + +MD5_TIMESTAMP_DEBUG = False + + +def sconsign_none(node): + raise NotImplementedError + +def sconsign_dir(node): + """Return the .sconsign file info for this directory, + creating it first if necessary.""" + if not node._sconsign: + import SCons.SConsign + node._sconsign = SCons.SConsign.ForDirectory(node) + return node._sconsign + +_sconsign_map = {0 : sconsign_none, + 1 : sconsign_dir} + +class FileBuildInfoFileToCsigMappingError(Exception): + pass + +class EntryProxyAttributeError(AttributeError): + """ + An AttributeError subclass for recording and displaying the name + of the underlying Entry involved in an AttributeError exception. + """ + def __init__(self, entry_proxy, attribute): + super().__init__() + self.entry_proxy = entry_proxy + self.attribute = attribute + def __str__(self): + entry = self.entry_proxy.get() + fmt = "%s instance %s has no attribute %s" + return fmt % (entry.__class__.__name__, + repr(entry.name), + repr(self.attribute)) + +# The max_drift value: by default, use a cached signature value for +# any file that's been untouched for more than two days. +default_max_drift = 2*24*60*60 + +# +# We stringify these file system Nodes a lot. Turning a file system Node +# into a string is non-trivial, because the final string representation +# can depend on a lot of factors: whether it's a derived target or not, +# whether it's linked to a repository or source directory, and whether +# there's duplication going on. The normal technique for optimizing +# calculations like this is to memoize (cache) the string value, so you +# only have to do the calculation once. +# +# A number of the above factors, however, can be set after we've already +# been asked to return a string for a Node, because a Repository() or +# VariantDir() call or the like may not occur until later in SConscript +# files. So this variable controls whether we bother trying to save +# string values for Nodes. The wrapper interface can set this whenever +# they're done mucking with Repository and VariantDir and the other stuff, +# to let this module know it can start returning saved string values +# for Nodes. +# +Save_Strings = None + +def save_strings(val): + global Save_Strings + Save_Strings = val + +# +# Avoid unnecessary function calls by recording a Boolean value that +# tells us whether or not os.path.splitdrive() actually does anything +# on this system, and therefore whether we need to bother calling it +# when looking up path names in various methods below. +# + +do_splitdrive = None +_my_splitdrive =None + +def initialize_do_splitdrive(): + global do_splitdrive + global has_unc + drive, path = os.path.splitdrive('X:/foo') + # splitunc is removed from python 3.7 and newer + # so we can also just test if splitdrive works with UNC + has_unc = (hasattr(os.path, 'splitunc') + or os.path.splitdrive(r'\\split\drive\test')[0] == r'\\split\drive') + + do_splitdrive = not not drive or has_unc + + global _my_splitdrive + if has_unc: + def splitdrive(p): + if p[1:2] == ':': + return p[:2], p[2:] + if p[0:2] == '//': + # Note that we leave a leading slash in the path + # because UNC paths are always absolute. + return '//', p[1:] + return '', p + else: + def splitdrive(p): + if p[1:2] == ':': + return p[:2], p[2:] + return '', p + _my_splitdrive = splitdrive + + # Keep some commonly used values in global variables to skip to + # module look-up costs. + global OS_SEP + global UNC_PREFIX + global os_sep_is_slash + + OS_SEP = os.sep + UNC_PREFIX = OS_SEP + OS_SEP + os_sep_is_slash = OS_SEP == '/' + +initialize_do_splitdrive() + +# Used to avoid invoking os.path.normpath if not necessary. +needs_normpath_check = re.compile( + r''' + # We need to renormalize the path if it contains any consecutive + # '/' characters. + .*// | + + # We need to renormalize the path if it contains a '..' directory. + # Note that we check for all the following cases: + # + # a) The path is a single '..' + # b) The path starts with '..'. E.g. '../' or '../moredirs' + # but we not match '..abc/'. + # c) The path ends with '..'. E.g. '/..' or 'dirs/..' + # d) The path contains a '..' in the middle. + # E.g. dirs/../moredirs + + (.*/)?\.\.(?:/|$) | + + # We need to renormalize the path if it contains a '.' + # directory, but NOT if it is a single '.' '/' characters. We + # do not want to match a single '.' because this case is checked + # for explicitly since this is common enough case. + # + # Note that we check for all the following cases: + # + # a) We don't match a single '.' + # b) We match if the path starts with '.'. E.g. './' or + # './moredirs' but we not match '.abc/'. + # c) We match if the path ends with '.'. E.g. '/.' or + # 'dirs/.' + # d) We match if the path contains a '.' in the middle. + # E.g. dirs/./moredirs + + \./|.*/\.(?:/|$) + + ''', + re.VERBOSE + ) +needs_normpath_match = needs_normpath_check.match + +# +# SCons.Action objects for interacting with the outside world. +# +# The Node.FS methods in this module should use these actions to +# create and/or remove files and directories; they should *not* use +# os.{link,symlink,unlink,mkdir}(), etc., directly. +# +# Using these SCons.Action objects ensures that descriptions of these +# external activities are properly displayed, that the displays are +# suppressed when the -s (silent) option is used, and (most importantly) +# the actions are disabled when the the -n option is used, in which case +# there should be *no* changes to the external file system(s)... +# + +# For Now disable hard & softlinks for win32 +# PY3 supports them, but the rest of SCons is not ready for this +# in some cases user permissions may be required. +# TODO: See if theres a reasonable way to enable using links on win32/64 + +if hasattr(os, 'link') and sys.platform != 'win32': + def _hardlink_func(fs, src, dst): + # If the source is a symlink, we can't just hard-link to it + # because a relative symlink may point somewhere completely + # different. We must disambiguate the symlink and then + # hard-link the final destination file. + while fs.islink(src): + link = fs.readlink(src) + if not os.path.isabs(link): + src = link + else: + src = os.path.join(os.path.dirname(src), link) + fs.link(src, dst) +else: + _hardlink_func = None + +if hasattr(os, 'symlink') and sys.platform != 'win32': + def _softlink_func(fs, src, dst): + fs.symlink(src, dst) +else: + _softlink_func = None + +def _copy_func(fs, src, dest): + shutil.copy2(src, dest) + st = fs.stat(src) + fs.chmod(dest, stat.S_IMODE(st.st_mode) | stat.S_IWRITE) + + +Valid_Duplicates = ['hard-soft-copy', 'soft-hard-copy', + 'hard-copy', 'soft-copy', 'copy'] + +Link_Funcs = [] # contains the callables of the specified duplication style + +def set_duplicate(duplicate): + # Fill in the Link_Funcs list according to the argument + # (discarding those not available on the platform). + + # Set up the dictionary that maps the argument names to the + # underlying implementations. We do this inside this function, + # not in the top-level module code, so that we can remap os.link + # and os.symlink for testing purposes. + link_dict = { + 'hard' : _hardlink_func, + 'soft' : _softlink_func, + 'copy' : _copy_func + } + + if duplicate not in Valid_Duplicates: + raise SCons.Errors.InternalError("The argument of set_duplicate " + "should be in Valid_Duplicates") + global Link_Funcs + Link_Funcs = [] + for func in duplicate.split('-'): + if link_dict[func]: + Link_Funcs.append(link_dict[func]) + +def LinkFunc(target, source, env): + """ + Relative paths cause problems with symbolic links, so + we use absolute paths, which may be a problem for people + who want to move their soft-linked src-trees around. Those + people should use the 'hard-copy' mode, softlinks cannot be + used for that; at least I have no idea how ... + """ + src = source[0].get_abspath() + dest = target[0].get_abspath() + dir, file = os.path.split(dest) + if dir and not target[0].fs.isdir(dir): + os.makedirs(dir) + if not Link_Funcs: + # Set a default order of link functions. + set_duplicate('hard-soft-copy') + fs = source[0].fs + # Now link the files with the previously specified order. + for func in Link_Funcs: + try: + func(fs, src, dest) + break + except (IOError, OSError): + # An OSError indicates something happened like a permissions + # problem or an attempt to symlink across file-system + # boundaries. An IOError indicates something like the file + # not existing. In either case, keeping trying additional + # functions in the list and only raise an error if the last + # one failed. + if func == Link_Funcs[-1]: + # exception of the last link method (copy) are fatal + raise + return 0 + +Link = SCons.Action.Action(LinkFunc, None) +def LocalString(target, source, env): + return 'Local copy of %s from %s' % (target[0], source[0]) + +LocalCopy = SCons.Action.Action(LinkFunc, LocalString) + +def UnlinkFunc(target, source, env): + t = target[0] + t.fs.unlink(t.get_abspath()) + return 0 + +Unlink = SCons.Action.Action(UnlinkFunc, None) + +def MkdirFunc(target, source, env): + t = target[0] + # This os.path.exists test looks redundant, but it's possible + # when using Install() to install multiple dirs outside the + # source tree to get a case where t.exists() is true but + # the path does already exist, so this prevents spurious + # build failures in that case. See test/Install/multi-dir. + if not t.exists() and not os.path.exists(t.get_abspath()): + t.fs.mkdir(t.get_abspath()) + return 0 + +Mkdir = SCons.Action.Action(MkdirFunc, None, presub=None) + +MkdirBuilder = None + +def get_MkdirBuilder(): + global MkdirBuilder + if MkdirBuilder is None: + import SCons.Builder + import SCons.Defaults + # "env" will get filled in by Executor.get_build_env() + # calling SCons.Defaults.DefaultEnvironment() when necessary. + MkdirBuilder = SCons.Builder.Builder(action = Mkdir, + env = None, + explain = None, + is_explicit = None, + target_scanner = SCons.Defaults.DirEntryScanner, + name = "MkdirBuilder") + return MkdirBuilder + +class _Null: + pass + +_null = _Null() + +# Cygwin's os.path.normcase pretends it's on a case-sensitive filesystem. +_is_cygwin = sys.platform == "cygwin" +if os.path.normcase("TeSt") == os.path.normpath("TeSt") and not _is_cygwin: + def _my_normcase(x): + return x +else: + def _my_normcase(x): + return x.upper() + + +class DiskChecker: + """ + Implement disk check variation. + + This Class will hold functions to determine what this particular disk + checking implementation should do when enabled or disabled. + """ + def __init__(self, disk_check_type, do_check_function, ignore_check_function): + self.disk_check_type = disk_check_type + self.do_check_function = do_check_function + self.ignore_check_function = ignore_check_function + self.func = do_check_function + + def __call__(self, *args, **kw): + return self.func(*args, **kw) + + def enable(self, disk_check_type_list): + """ + If the current object's disk_check_type matches any in the list passed + :param disk_check_type_list: List of disk checks to enable + :return: + """ + if self.disk_check_type in disk_check_type_list: + self.func = self.do_check_function + else: + self.func = self.ignore_check_function + + +def do_diskcheck_match(node, predicate, errorfmt): + result = predicate() + try: + # If calling the predicate() cached a None value from stat(), + # remove it so it doesn't interfere with later attempts to + # build this Node as we walk the DAG. (This isn't a great way + # to do this, we're reaching into an interface that doesn't + # really belong to us, but it's all about performance, so + # for now we'll just document the dependency...) + if node._memo['stat'] is None: + del node._memo['stat'] + except (AttributeError, KeyError): + pass + if result: + raise TypeError(errorfmt % node.get_abspath()) + + +def ignore_diskcheck_match(node, predicate, errorfmt): + pass + + +diskcheck_match = DiskChecker('match', do_diskcheck_match, ignore_diskcheck_match) + +diskcheckers = [ + diskcheck_match, +] + + +def set_diskcheck(enabled_checkers): + for dc in diskcheckers: + dc.enable(enabled_checkers) + + +def diskcheck_types(): + return [dc.disk_check_type for dc in diskcheckers] + + +class EntryProxy(SCons.Util.Proxy): + + __str__ = SCons.Util.Delegate('__str__') + + # In PY3 if a class defines __eq__, then it must explicitly provide + # __hash__. Since SCons.Util.Proxy provides __eq__ we need the following + # see: https://docs.python.org/3/reference/datamodel.html#object.__hash__ + __hash__ = SCons.Util.Delegate('__hash__') + + def __get_abspath(self): + entry = self.get() + return SCons.Subst.SpecialAttrWrapper(entry.get_abspath(), + entry.name + "_abspath") + + def __get_relpath(self): + entry = self.get() + return SCons.Subst.SpecialAttrWrapper(entry.get_relpath(), + entry.name + "_relpath") + + def __get_filebase(self): + name = self.get().name + return SCons.Subst.SpecialAttrWrapper(SCons.Util.splitext(name)[0], + name + "_filebase") + + def __get_suffix(self): + name = self.get().name + return SCons.Subst.SpecialAttrWrapper(SCons.Util.splitext(name)[1], + name + "_suffix") + + def __get_file(self): + name = self.get().name + return SCons.Subst.SpecialAttrWrapper(name, name + "_file") + + def __get_base_path(self): + """Return the file's directory and file name, with the + suffix stripped.""" + entry = self.get() + return SCons.Subst.SpecialAttrWrapper(SCons.Util.splitext(entry.get_path())[0], + entry.name + "_base") + + def __get_posix_path(self): + """Return the path with / as the path separator, + regardless of platform.""" + if os_sep_is_slash: + return self + else: + entry = self.get() + r = entry.get_path().replace(OS_SEP, '/') + return SCons.Subst.SpecialAttrWrapper(r, entry.name + "_posix") + + def __get_windows_path(self): + r"""Return the path with \ as the path separator, + regardless of platform.""" + if OS_SEP == '\\': + return self + else: + entry = self.get() + r = entry.get_path().replace(OS_SEP, '\\') + return SCons.Subst.SpecialAttrWrapper(r, entry.name + "_windows") + + def __get_srcnode(self): + return EntryProxy(self.get().srcnode()) + + def __get_srcdir(self): + """Returns the directory containing the source node linked to this + node via VariantDir(), or the directory of this node if not linked.""" + return EntryProxy(self.get().srcnode().dir) + + def __get_rsrcnode(self): + return EntryProxy(self.get().srcnode().rfile()) + + def __get_rsrcdir(self): + """Returns the directory containing the source node linked to this + node via VariantDir(), or the directory of this node if not linked.""" + return EntryProxy(self.get().srcnode().rfile().dir) + + def __get_dir(self): + return EntryProxy(self.get().dir) + + dictSpecialAttrs = { "base" : __get_base_path, + "posix" : __get_posix_path, + "windows" : __get_windows_path, + "win32" : __get_windows_path, + "srcpath" : __get_srcnode, + "srcdir" : __get_srcdir, + "dir" : __get_dir, + "abspath" : __get_abspath, + "relpath" : __get_relpath, + "filebase" : __get_filebase, + "suffix" : __get_suffix, + "file" : __get_file, + "rsrcpath" : __get_rsrcnode, + "rsrcdir" : __get_rsrcdir, + } + + def __getattr__(self, name): + # This is how we implement the "special" attributes + # such as base, posix, srcdir, etc. + try: + attr_function = self.dictSpecialAttrs[name] + except KeyError: + try: + attr = SCons.Util.Proxy.__getattr__(self, name) + except AttributeError: + # Raise our own AttributeError subclass with an + # overridden __str__() method that identifies the + # name of the entry that caused the exception. + raise EntryProxyAttributeError(self, name) + return attr + else: + return attr_function(self) + + +class Base(SCons.Node.Node): + """A generic class for file system entries. This class is for + when we don't know yet whether the entry being looked up is a file + or a directory. Instances of this class can morph into either + Dir or File objects by a later, more precise lookup. + + Note: this class does not define __cmp__ and __hash__ for + efficiency reasons. SCons does a lot of comparing of + Node.FS.{Base,Entry,File,Dir} objects, so those operations must be + as fast as possible, which means we want to use Python's built-in + object identity comparisons. + """ + + __slots__ = ['name', + 'fs', + '_abspath', + '_labspath', + '_path', + '_tpath', + '_path_elements', + 'dir', + 'cwd', + 'duplicate', + '_local', + 'sbuilder', + '_proxy', + '_func_sconsign'] + + def __init__(self, name, directory, fs): + """Initialize a generic Node.FS.Base object. + + Call the superclass initialization, take care of setting up + our relative and absolute paths, identify our parent + directory, and indicate that this node should use + signatures.""" + + if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.FS.Base') + super().__init__() + + # Filenames and paths are probably reused and are intern'ed to save some memory. + # Filename with extension as it was specified when the object was + # created; to obtain filesystem path, use Python str() function + self.name = SCons.Util.silent_intern(name) + self.fs = fs #: Reference to parent Node.FS object + + assert directory, "A directory must be provided" + + self._abspath = None + self._labspath = None + self._path = None + self._tpath = None + self._path_elements = None + + self.dir = directory + self.cwd = None # will hold the SConscript directory for target nodes + self.duplicate = directory.duplicate + self.changed_since_last_build = 2 + self._func_sconsign = 0 + self._func_exists = 2 + self._func_rexists = 2 + self._func_get_contents = 0 + self._func_target_from_source = 1 + self.store_info = 1 + + def str_for_display(self): + return '"' + self.__str__() + '"' + + def must_be_same(self, klass): + """ + This node, which already existed, is being looked up as the + specified klass. Raise an exception if it isn't. + """ + if isinstance(self, klass) or klass is Entry: + return + raise TypeError("Tried to lookup %s '%s' as a %s." %\ + (self.__class__.__name__, self.get_internal_path(), klass.__name__)) + + def get_dir(self): + return self.dir + + def get_suffix(self): + return SCons.Util.splitext(self.name)[1] + + def rfile(self): + return self + + def __getattr__(self, attr): + """ Together with the node_bwcomp dict defined below, + this method provides a simple backward compatibility + layer for the Node attributes 'abspath', 'labspath', + 'path', 'tpath', 'suffix' and 'path_elements'. These Node + attributes used to be directly available in v2.3 and earlier, but + have been replaced by getter methods that initialize the + single variables lazily when required, in order to save memory. + The redirection to the getters lets older Tools and + SConstruct continue to work without any additional changes, + fully transparent to the user. + Note, that __getattr__ is only called as fallback when the + requested attribute can't be found, so there should be no + speed performance penalty involved for standard builds. + """ + if attr in node_bwcomp: + return node_bwcomp[attr](self) + + raise AttributeError("%r object has no attribute %r" % + (self.__class__, attr)) + + def __str__(self): + """A Node.FS.Base object's string representation is its path + name.""" + global Save_Strings + if Save_Strings: + return self._save_str() + return self._get_str() + + def __lt__(self, other): + """ less than operator used by sorting on py3""" + return str(self) < str(other) + + @SCons.Memoize.CountMethodCall + def _save_str(self): + try: + return self._memo['_save_str'] + except KeyError: + pass + result = SCons.Util.silent_intern(self._get_str()) + self._memo['_save_str'] = result + return result + + def _get_str(self): + global Save_Strings + if self.duplicate or self.is_derived(): + return self.get_path() + srcnode = self.srcnode() + if srcnode.stat() is None and self.stat() is not None: + result = self.get_path() + else: + result = srcnode.get_path() + if not Save_Strings: + # We're not at the point where we're saving the string + # representations of FS Nodes (because we haven't finished + # reading the SConscript files and need to have str() return + # things relative to them). That also means we can't yet + # cache values returned (or not returned) by stat(), since + # Python code in the SConscript files might still create + # or otherwise affect the on-disk file. So get rid of the + # values that the underlying stat() method saved. + try: del self._memo['stat'] + except KeyError: pass + if self is not srcnode: + try: del srcnode._memo['stat'] + except KeyError: pass + return result + + rstr = __str__ + + @SCons.Memoize.CountMethodCall + def stat(self): + try: + return self._memo['stat'] + except KeyError: + pass + try: + result = self.fs.stat(self.get_abspath()) + except os.error: + result = None + + self._memo['stat'] = result + return result + + @SCons.Memoize.CountMethodCall + def lstat(self): + try: + return self._memo['lstat'] + except KeyError: + pass + try: + result = self.fs.lstat(self.get_abspath()) + except os.error: + result = None + + self._memo['lstat'] = result + return result + + def exists(self): + return SCons.Node._exists_map[self._func_exists](self) + + def rexists(self): + return SCons.Node._rexists_map[self._func_rexists](self) + + def getmtime(self): + st = self.stat() + + if st: + return st[stat.ST_MTIME] + else: + return None + + def getsize(self): + st = self.stat() + + if st: + return st.st_size + else: + return None + + def isdir(self): + st = self.stat() + return st is not None and stat.S_ISDIR(st.st_mode) + + def isfile(self): + st = self.stat() + return st is not None and stat.S_ISREG(st.st_mode) + + if hasattr(os, 'symlink'): + def islink(self): + st = self.lstat() + return st is not None and stat.S_ISLNK(st.st_mode) + else: + def islink(self): + return False # no symlinks + + def is_under(self, dir): + if self is dir: + return 1 + else: + return self.dir.is_under(dir) + + def set_local(self): + self._local = 1 + + def srcnode(self): + """If this node is in a build path, return the node + corresponding to its source file. Otherwise, return + ourself. + """ + srcdir_list = self.dir.srcdir_list() + if srcdir_list: + srcnode = srcdir_list[0].Entry(self.name) + srcnode.must_be_same(self.__class__) + return srcnode + return self + + def get_path(self, dir=None): + """Return path relative to the current working directory of the + Node.FS.Base object that owns us.""" + if not dir: + dir = self.fs.getcwd() + if self == dir: + return '.' + path_elems = self.get_path_elements() + pathname = '' + try: i = path_elems.index(dir) + except ValueError: + for p in path_elems[:-1]: + pathname += p.dirname + else: + for p in path_elems[i+1:-1]: + pathname += p.dirname + return pathname + path_elems[-1].name + + def set_src_builder(self, builder): + """Set the source code builder for this node.""" + self.sbuilder = builder + if not self.has_builder(): + self.builder_set(builder) + + def src_builder(self): + """Fetch the source code builder for this node. + + If there isn't one, we cache the source code builder specified + for the directory (which in turn will cache the value from its + parent directory, and so on up to the file system root). + """ + try: + scb = self.sbuilder + except AttributeError: + scb = self.dir.src_builder() + self.sbuilder = scb + return scb + + def get_abspath(self): + """Get the absolute path of the file.""" + return self.dir.entry_abspath(self.name) + + def get_labspath(self): + """Get the absolute path of the file.""" + return self.dir.entry_labspath(self.name) + + def get_relpath(self): + """Get the path of the file relative to the root SConstruct file's directory.""" + return os.path.relpath(self.dir.entry_abspath(self.name), self.fs.SConstruct_dir.get_abspath()) + + def get_internal_path(self): + if self.dir._path == '.': + return self.name + else: + return self.dir.entry_path(self.name) + + def get_tpath(self): + if self.dir._tpath == '.': + return self.name + else: + return self.dir.entry_tpath(self.name) + + def get_path_elements(self): + return self.dir._path_elements + [self] + + def for_signature(self): + # Return just our name. Even an absolute path would not work, + # because that can change thanks to symlinks or remapped network + # paths. + return self.name + + def get_subst_proxy(self): + try: + return self._proxy + except AttributeError: + ret = EntryProxy(self) + self._proxy = ret + return ret + + def target_from_source(self, prefix, suffix, splitext=SCons.Util.splitext): + """ + + Generates a target entry that corresponds to this entry (usually + a source file) with the specified prefix and suffix. + + Note that this method can be overridden dynamically for generated + files that need different behavior. See Tool/swig.py for + an example. + """ + return SCons.Node._target_from_source_map[self._func_target_from_source](self, prefix, suffix, splitext) + + def _Rfindalldirs_key(self, pathlist): + return pathlist + + @SCons.Memoize.CountDictCall(_Rfindalldirs_key) + def Rfindalldirs(self, pathlist): + """ + Return all of the directories for a given path list, including + corresponding "backing" directories in any repositories. + + The Node lookups are relative to this Node (typically a + directory), so memoizing result saves cycles from looking + up the same path for each target in a given directory. + """ + try: + memo_dict = self._memo['Rfindalldirs'] + except KeyError: + memo_dict = {} + self._memo['Rfindalldirs'] = memo_dict + else: + try: + return memo_dict[pathlist] + except KeyError: + pass + + create_dir_relative_to_self = self.Dir + result = [] + for path in pathlist: + if isinstance(path, SCons.Node.Node): + result.append(path) + else: + dir = create_dir_relative_to_self(path) + result.extend(dir.get_all_rdirs()) + + memo_dict[pathlist] = result + + return result + + def RDirs(self, pathlist): + """Search for a list of directories in the Repository list.""" + cwd = self.cwd or self.fs._cwd + return cwd.Rfindalldirs(pathlist) + + @SCons.Memoize.CountMethodCall + def rentry(self): + try: + return self._memo['rentry'] + except KeyError: + pass + result = self + if not self.exists(): + norm_name = _my_normcase(self.name) + for dir in self.dir.get_all_rdirs(): + try: + node = dir.entries[norm_name] + except KeyError: + if dir.entry_exists_on_disk(self.name): + result = dir.Entry(self.name) + break + self._memo['rentry'] = result + return result + + def _glob1(self, pattern, ondisk=True, source=False, strings=False): + return [] + +# Dict that provides a simple backward compatibility +# layer for the Node attributes 'abspath', 'labspath', +# 'relpath', 'path', 'tpath' and 'path_elements'. +# @see Base.__getattr__ above +node_bwcomp = {'abspath' : Base.get_abspath, + 'labspath' : Base.get_labspath, + 'relpath' : Base.get_relpath, + 'path' : Base.get_internal_path, + 'tpath' : Base.get_tpath, + 'path_elements' : Base.get_path_elements, + 'suffix' : Base.get_suffix} + +class Entry(Base): + """This is the class for generic Node.FS entries--that is, things + that could be a File or a Dir, but we're just not sure yet. + Consequently, the methods in this class really exist just to + transform their associated object into the right class when the + time comes, and then call the same-named method in the transformed + class.""" + + __slots__ = ['scanner_paths', + 'cachedir_csig', + 'cachesig', + 'repositories', + 'srcdir', + 'entries', + 'searched', + '_sconsign', + 'variant_dirs', + 'root', + 'dirname', + 'on_disk_entries', + 'released_target_info', + 'contentsig'] + + def __init__(self, name, directory, fs): + super().__init__(name, directory, fs) + self._func_exists = 3 + self._func_get_contents = 1 + + def diskcheck_match(self): + pass + + def disambiguate(self, must_exist=None): + """ + """ + if self.isfile(): + self.__class__ = File + self._morph() + self.clear() + elif self.isdir(): + self.__class__ = Dir + self._morph() + else: + # There was nothing on-disk at this location, so look in + # the src directory. + # + # We can't just use self.srcnode() straight away because + # that would create an actual Node for this file in the src + # directory, and there might not be one. Instead, use the + # dir_on_disk() method to see if there's something on-disk + # with that name, in which case we can go ahead and call + # self.srcnode() to create the right type of entry. + srcdir = self.dir.srcnode() + if srcdir != self.dir and \ + srcdir.entry_exists_on_disk(self.name) and \ + self.srcnode().isdir(): + self.__class__ = Dir + self._morph() + elif must_exist: + msg = "No such file or directory: '%s'" % self.get_abspath() + raise SCons.Errors.UserError(msg) + else: + self.__class__ = File + self._morph() + self.clear() + return self + + def rfile(self): + """We're a generic Entry, but the caller is actually looking for + a File at this point, so morph into one.""" + self.__class__ = File + self._morph() + self.clear() + return File.rfile(self) + + def scanner_key(self): + return self.get_suffix() + + def get_contents(self): + """Fetch the contents of the entry. Returns the exact binary + contents of the file.""" + return SCons.Node._get_contents_map[self._func_get_contents](self) + + def get_text_contents(self): + """Fetch the decoded text contents of a Unicode encoded Entry. + + Since this should return the text contents from the file + system, we check to see into what sort of subclass we should + morph this Entry.""" + try: + self = self.disambiguate(must_exist=1) + except SCons.Errors.UserError: + # There was nothing on disk with which to disambiguate + # this entry. Leave it as an Entry, but return a null + # string so calls to get_text_contents() in emitters and + # the like (e.g. in qt.py) don't have to disambiguate by + # hand or catch the exception. + return '' + else: + return self.get_text_contents() + + def must_be_same(self, klass): + """Called to make sure a Node is a Dir. Since we're an + Entry, we can morph into one.""" + if self.__class__ is not klass: + self.__class__ = klass + self._morph() + self.clear() + + # The following methods can get called before the Taskmaster has + # had a chance to call disambiguate() directly to see if this Entry + # should really be a Dir or a File. We therefore use these to call + # disambiguate() transparently (from our caller's point of view). + # + # Right now, this minimal set of methods has been derived by just + # looking at some of the methods that will obviously be called early + # in any of the various Taskmasters' calling sequences, and then + # empirically figuring out which additional methods are necessary + # to make various tests pass. + + def exists(self): + return SCons.Node._exists_map[self._func_exists](self) + + def rel_path(self, other): + d = self.disambiguate() + if d.__class__ is Entry: + raise Exception("rel_path() could not disambiguate File/Dir") + return d.rel_path(other) + + def new_ninfo(self): + return self.disambiguate().new_ninfo() + + def _glob1(self, pattern, ondisk=True, source=False, strings=False): + return self.disambiguate()._glob1(pattern, ondisk, source, strings) + + def get_subst_proxy(self): + return self.disambiguate().get_subst_proxy() + +# This is for later so we can differentiate between Entry the class and Entry +# the method of the FS class. +_classEntry = Entry + + +class LocalFS: + """ + This class implements an abstraction layer for operations involving + a local file system. Essentially, this wraps any function in + the os, os.path or shutil modules that we use to actually go do + anything with or to the local file system. + + Note that there's a very good chance we'll refactor this part of + the architecture in some way as we really implement the interface(s) + for remote file system Nodes. For example, the right architecture + might be to have this be a subclass instead of a base class. + Nevertheless, we're using this as a first step in that direction. + + We're not using chdir() yet because the calling subclass method + needs to use os.chdir() directly to avoid recursion. Will we + really need this one? + """ + + def chmod(self, path, mode): + return os.chmod(path, mode) + + def copy(self, src, dst): + return shutil.copy(src, dst) + + def copy2(self, src, dst): + return shutil.copy2(src, dst) + + def exists(self, path): + return os.path.exists(path) + + def getmtime(self, path): + return os.path.getmtime(path) + + def getsize(self, path): + return os.path.getsize(path) + + def isdir(self, path): + return os.path.isdir(path) + + def isfile(self, path): + return os.path.isfile(path) + + def link(self, src, dst): + return os.link(src, dst) + + def lstat(self, path): + return os.lstat(path) + + def listdir(self, path): + return os.listdir(path) + + def scandir(self, path): + return os.scandir(path) + + def makedirs(self, path, mode=0o777, exist_ok=False): + return os.makedirs(path, mode=mode, exist_ok=exist_ok) + + def mkdir(self, path, mode=0o777): + return os.mkdir(path, mode=mode) + + def rename(self, old, new): + return os.rename(old, new) + + def stat(self, path): + return os.stat(path) + + def symlink(self, src, dst): + return os.symlink(src, dst) + + def open(self, path): + return open(path) + + def unlink(self, path): + return os.unlink(path) + + if hasattr(os, 'symlink'): + + def islink(self, path): + return os.path.islink(path) + + else: + + def islink(self, path): + return False # no symlinks + + if hasattr(os, 'readlink'): + + def readlink(self, file): + return os.readlink(file) + + else: + + def readlink(self, file): + return '' + + +class FS(LocalFS): + + def __init__(self, path = None): + """Initialize the Node.FS subsystem. + + The supplied path is the top of the source tree, where we + expect to find the top-level build file. If no path is + supplied, the current directory is the default. + + The path argument must be a valid absolute path. + """ + if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.FS') + + self._memo = {} + + self.Root = {} + self.SConstruct_dir = None + self.max_drift = default_max_drift + + self.Top = None + if path is None: + self.pathTop = os.getcwd() + else: + self.pathTop = path + self.defaultDrive = _my_normcase(_my_splitdrive(self.pathTop)[0]) + + self.Top = self.Dir(self.pathTop) + self.Top._path = '.' + self.Top._tpath = '.' + self._cwd = self.Top + + DirNodeInfo.fs = self + FileNodeInfo.fs = self + + def set_SConstruct_dir(self, dir): + self.SConstruct_dir = dir + + def get_max_drift(self): + return self.max_drift + + def set_max_drift(self, max_drift): + self.max_drift = max_drift + + def getcwd(self): + if hasattr(self, "_cwd"): + return self._cwd + else: + return "" + + def chdir(self, dir, change_os_dir=False): + """Change the current working directory for lookups. + If change_os_dir is true, we will also change the "real" cwd + to match. + """ + curr=self._cwd + try: + if dir is not None: + self._cwd = dir + if change_os_dir: + os.chdir(dir.get_abspath()) + except OSError: + self._cwd = curr + raise + + def get_root(self, drive): + """ + Returns the root directory for the specified drive, creating + it if necessary. + """ + drive = _my_normcase(drive) + try: + return self.Root[drive] + except KeyError: + root = RootDir(drive, self) + self.Root[drive] = root + if not drive: + self.Root[self.defaultDrive] = root + elif drive == self.defaultDrive: + self.Root[''] = root + return root + + def _lookup(self, p, directory, fsclass, create=1): + """ + The generic entry point for Node lookup with user-supplied data. + + This translates arbitrary input into a canonical Node.FS object + of the specified fsclass. The general approach for strings is + to turn it into a fully normalized absolute path and then call + the root directory's lookup_abs() method for the heavy lifting. + + If the path name begins with '#', it is unconditionally + interpreted relative to the top-level directory of this FS. '#' + is treated as a synonym for the top-level SConstruct directory, + much like '~' is treated as a synonym for the user's home + directory in a UNIX shell. So both '#foo' and '#/foo' refer + to the 'foo' subdirectory underneath the top-level SConstruct + directory. + + If the path name is relative, then the path is looked up relative + to the specified directory, or the current directory (self._cwd, + typically the SConscript directory) if the specified directory + is None. + """ + if isinstance(p, Base): + # It's already a Node.FS object. Make sure it's the right + # class and return. + p.must_be_same(fsclass) + return p + # str(p) in case it's something like a proxy object + p = str(p) + + if not os_sep_is_slash: + p = p.replace(OS_SEP, '/') + + if p[0:1] == '#': + # There was an initial '#', so we strip it and override + # whatever directory they may have specified with the + # top-level SConstruct directory. + p = p[1:] + directory = self.Top + + # There might be a drive letter following the + # '#'. Although it is not described in the SCons man page, + # the regression test suite explicitly tests for that + # syntax. It seems to mean the following thing: + # + # Assuming the the SCons top dir is in C:/xxx/yyy, + # '#X:/toto' means X:/xxx/yyy/toto. + # + # i.e. it assumes that the X: drive has a directory + # structure similar to the one found on drive C:. + if do_splitdrive: + drive, p = _my_splitdrive(p) + if drive: + root = self.get_root(drive) + else: + root = directory.root + else: + root = directory.root + + # We can only strip trailing after splitting the drive + # since the drive might the UNC '//' prefix. + p = p.strip('/') + + needs_normpath = needs_normpath_match(p) + + # The path is relative to the top-level SCons directory. + if p in ('', '.'): + p = directory.get_labspath() + else: + p = directory.get_labspath() + '/' + p + else: + if do_splitdrive: + drive, p = _my_splitdrive(p) + if drive and not p: + # This causes a naked drive letter to be treated + # as a synonym for the root directory on that + # drive. + p = '/' + else: + drive = '' + + # We can only strip trailing '/' since the drive might the + # UNC '//' prefix. + if p != '/': + p = p.rstrip('/') + + needs_normpath = needs_normpath_match(p) + + if p[0:1] == '/': + # Absolute path + root = self.get_root(drive) + else: + # This is a relative lookup or to the current directory + # (the path name is not absolute). Add the string to the + # appropriate directory lookup path, after which the whole + # thing gets normalized. + if directory: + if not isinstance(directory, Dir): + directory = self.Dir(directory) + else: + directory = self._cwd + + if p in ('', '.'): + p = directory.get_labspath() + else: + p = directory.get_labspath() + '/' + p + + if drive: + root = self.get_root(drive) + else: + root = directory.root + + if needs_normpath is not None: + # Normalize a pathname. Will return the same result for + # equivalent paths. + # + # We take advantage of the fact that we have an absolute + # path here for sure. In addition, we know that the + # components of lookup path are separated by slashes at + # this point. Because of this, this code is about 2X + # faster than calling os.path.normpath() followed by + # replacing os.sep with '/' again. + ins = p.split('/')[1:] + outs = [] + for d in ins: + if d == '..': + try: + outs.pop() + except IndexError: + pass + elif d not in ('', '.'): + outs.append(d) + p = '/' + '/'.join(outs) + + return root._lookup_abs(p, fsclass, create) + + def Entry(self, name, directory = None, create = 1): + """Look up or create a generic Entry node with the specified name. + If the name is a relative path (begins with ./, ../, or a file + name), then it is looked up relative to the supplied directory + node, or to the top level directory of the FS (supplied at + construction time) if no directory is supplied. + """ + return self._lookup(name, directory, Entry, create) + + def File(self, name, directory = None, create = 1): + """Look up or create a File node with the specified name. If + the name is a relative path (begins with ./, ../, or a file name), + then it is looked up relative to the supplied directory node, + or to the top level directory of the FS (supplied at construction + time) if no directory is supplied. + + This method will raise TypeError if a directory is found at the + specified path. + """ + return self._lookup(name, directory, File, create) + + def Dir(self, name, directory = None, create = True): + """Look up or create a Dir node with the specified name. If + the name is a relative path (begins with ./, ../, or a file name), + then it is looked up relative to the supplied directory node, + or to the top level directory of the FS (supplied at construction + time) if no directory is supplied. + + This method will raise TypeError if a normal file is found at the + specified path. + """ + return self._lookup(name, directory, Dir, create) + + def VariantDir(self, variant_dir, src_dir, duplicate=1): + """Link the supplied variant directory to the source directory + for purposes of building files.""" + + if not isinstance(src_dir, SCons.Node.Node): + src_dir = self.Dir(src_dir) + if not isinstance(variant_dir, SCons.Node.Node): + variant_dir = self.Dir(variant_dir) + if src_dir.is_under(variant_dir): + raise SCons.Errors.UserError("Source directory cannot be under variant directory.") + if variant_dir.srcdir: + if variant_dir.srcdir == src_dir: + return # We already did this. + raise SCons.Errors.UserError("'%s' already has a source directory: '%s'."%(variant_dir, variant_dir.srcdir)) + variant_dir.link(src_dir, duplicate) + + def Repository(self, *dirs): + """Specify Repository directories to search.""" + for d in dirs: + if not isinstance(d, SCons.Node.Node): + d = self.Dir(d) + self.Top.addRepository(d) + + def PyPackageDir(self, modulename): + r"""Locate the directory of a given python module name + + For example scons might resolve to + Windows: C:\Python27\Lib\site-packages\scons-2.5.1 + Linux: /usr/lib/scons + + This can be useful when we want to determine a toolpath based on a python module name""" + + dirpath = '' + + # Python3 Code + modspec = importlib.util.find_spec(modulename) + dirpath = os.path.dirname(modspec.origin) + return self._lookup(dirpath, None, Dir, True) + + + def variant_dir_target_climb(self, orig, dir, tail): + """Create targets in corresponding variant directories + + Climb the directory tree, and look up path names + relative to any linked variant directories we find. + + Even though this loops and walks up the tree, we don't memoize + the return value because this is really only used to process + the command-line targets. + """ + targets = [] + message = None + fmt = "building associated VariantDir targets: %s" + start_dir = dir + while dir: + for bd in dir.variant_dirs: + if start_dir.is_under(bd): + # If already in the build-dir location, don't reflect + return [orig], fmt % str(orig) + p = os.path.join(bd._path, *tail) + targets.append(self.Entry(p)) + tail = [dir.name] + tail + dir = dir.up() + if targets: + message = fmt % ' '.join(map(str, targets)) + return targets, message + + def Glob(self, pathname, ondisk=True, source=True, strings=False, exclude=None, cwd=None): + """ + Globs + + This is mainly a shim layer + """ + if cwd is None: + cwd = self.getcwd() + return cwd.glob(pathname, ondisk, source, strings, exclude) + +class DirNodeInfo(SCons.Node.NodeInfoBase): + __slots__ = () + # This should get reset by the FS initialization. + current_version_id = 2 + + fs = None + + def str_to_node(self, s): + top = self.fs.Top + root = top.root + if do_splitdrive: + drive, s = _my_splitdrive(s) + if drive: + root = self.fs.get_root(drive) + if not os.path.isabs(s): + s = top.get_labspath() + '/' + s + return root._lookup_abs(s, Entry) + +class DirBuildInfo(SCons.Node.BuildInfoBase): + __slots__ = () + current_version_id = 2 + +glob_magic_check = re.compile('[*?[]') + +def has_glob_magic(s): + return glob_magic_check.search(s) is not None + +class Dir(Base): + """A class for directories in a file system. + """ + + __slots__ = ['scanner_paths', + 'cachedir_csig', + 'cachesig', + 'repositories', + 'srcdir', + 'entries', + 'searched', + '_sconsign', + 'variant_dirs', + 'root', + 'dirname', + 'on_disk_entries', + 'released_target_info', + 'contentsig'] + + NodeInfo = DirNodeInfo + BuildInfo = DirBuildInfo + + def __init__(self, name, directory, fs): + if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.FS.Dir') + super().__init__(name, directory, fs) + self._morph() + + def _morph(self): + """Turn a file system Node (either a freshly initialized directory + object or a separate Entry object) into a proper directory object. + + Set up this directory's entries and hook it into the file + system tree. Specify that directories (this Node) don't use + signatures for calculating whether they're current. + """ + + self.repositories = [] + self.srcdir = None + + self.entries = {'.': self, '..': self.dir} + self.cwd = self + self.searched = 0 + self._sconsign = None + self.variant_dirs = [] + self.root = self.dir.root + self.changed_since_last_build = 3 + self._func_sconsign = 1 + self._func_exists = 2 + self._func_get_contents = 2 + + self._abspath = SCons.Util.silent_intern(self.dir.entry_abspath(self.name)) + self._labspath = SCons.Util.silent_intern(self.dir.entry_labspath(self.name)) + if self.dir._path == '.': + self._path = SCons.Util.silent_intern(self.name) + else: + self._path = SCons.Util.silent_intern(self.dir.entry_path(self.name)) + if self.dir._tpath == '.': + self._tpath = SCons.Util.silent_intern(self.name) + else: + self._tpath = SCons.Util.silent_intern(self.dir.entry_tpath(self.name)) + self._path_elements = self.dir._path_elements + [self] + + # For directories, we make a difference between the directory + # 'name' and the directory 'dirname'. The 'name' attribute is + # used when we need to print the 'name' of the directory or + # when we it is used as the last part of a path. The 'dirname' + # is used when the directory is not the last element of the + # path. The main reason for making that distinction is that + # for RoorDir's the dirname can not be easily inferred from + # the name. For example, we have to add a '/' after a drive + # letter but not after a UNC path prefix ('//'). + self.dirname = self.name + OS_SEP + + # Don't just reset the executor, replace its action list, + # because it might have some pre-or post-actions that need to + # be preserved. + # + # But don't reset the executor if there is a non-null executor + # attached already. The existing executor might have other + # targets, in which case replacing the action list with a + # Mkdir action is a big mistake. + if not hasattr(self, 'executor'): + self.builder = get_MkdirBuilder() + self.get_executor().set_action_list(self.builder.action) + else: + # Prepend MkdirBuilder action to existing action list + l = self.get_executor().action_list + a = get_MkdirBuilder().action + l.insert(0, a) + self.get_executor().set_action_list(l) + + def diskcheck_match(self): + diskcheck_match(self, self.isfile, + "File %s found where directory expected.") + + def __clearRepositoryCache(self, duplicate=None): + """Called when we change the repository(ies) for a directory. + This clears any cached information that is invalidated by changing + the repository.""" + + for node in self.entries.values(): + if node != self.dir: + if node != self and isinstance(node, Dir): + node.__clearRepositoryCache(duplicate) + else: + node.clear() + try: + del node._srcreps + except AttributeError: + pass + if duplicate is not None: + node.duplicate = duplicate + + def __resetDuplicate(self, node): + if node != self: + node.duplicate = node.get_dir().duplicate + + def Entry(self, name): + """ + Looks up or creates an entry node named 'name' relative to + this directory. + """ + return self.fs.Entry(name, self) + + def Dir(self, name, create=True): + """ + Looks up or creates a directory node named 'name' relative to + this directory. + """ + return self.fs.Dir(name, self, create) + + def File(self, name): + """ + Looks up or creates a file node named 'name' relative to + this directory. + """ + return self.fs.File(name, self) + + def link(self, srcdir, duplicate): + """Set this directory as the variant directory for the + supplied source directory.""" + self.srcdir = srcdir + self.duplicate = duplicate + self.__clearRepositoryCache(duplicate) + srcdir.variant_dirs.append(self) + + def getRepositories(self): + """Returns a list of repositories for this directory. + """ + if self.srcdir and not self.duplicate: + return self.srcdir.get_all_rdirs() + self.repositories + return self.repositories + + @SCons.Memoize.CountMethodCall + def get_all_rdirs(self): + try: + return list(self._memo['get_all_rdirs']) + except KeyError: + pass + + result = [self] + fname = '.' + dir = self + while dir: + for rep in dir.getRepositories(): + result.append(rep.Dir(fname)) + if fname == '.': + fname = dir.name + else: + fname = dir.name + OS_SEP + fname + dir = dir.up() + + self._memo['get_all_rdirs'] = list(result) + + return result + + def addRepository(self, dir): + if dir != self and dir not in self.repositories: + self.repositories.append(dir) + dir._tpath = '.' + self.__clearRepositoryCache() + + def up(self): + return self.dir + + def _rel_path_key(self, other): + return str(other) + + @SCons.Memoize.CountDictCall(_rel_path_key) + def rel_path(self, other): + """Return a path to "other" relative to this directory. + """ + + # This complicated and expensive method, which constructs relative + # paths between arbitrary Node.FS objects, is no longer used + # by SCons itself. It was introduced to store dependency paths + # in .sconsign files relative to the target, but that ended up + # being significantly inefficient. + # + # We're continuing to support the method because some SConstruct + # files out there started using it when it was available, and + # we're all about backwards compatibility.. + + try: + memo_dict = self._memo['rel_path'] + except KeyError: + memo_dict = {} + self._memo['rel_path'] = memo_dict + else: + try: + return memo_dict[other] + except KeyError: + pass + + if self is other: + result = '.' + + elif other not in self._path_elements: + try: + other_dir = other.get_dir() + except AttributeError: + result = str(other) + else: + if other_dir is None: + result = other.name + else: + dir_rel_path = self.rel_path(other_dir) + if dir_rel_path == '.': + result = other.name + else: + result = dir_rel_path + OS_SEP + other.name + else: + i = self._path_elements.index(other) + 1 + + path_elems = ['..'] * (len(self._path_elements) - i) \ + + [n.name for n in other._path_elements[i:]] + + result = OS_SEP.join(path_elems) + + memo_dict[other] = result + + return result + + def get_env_scanner(self, env, kw={}): + import SCons.Defaults + return SCons.Defaults.DirEntryScanner + + def get_target_scanner(self): + import SCons.Defaults + return SCons.Defaults.DirEntryScanner + + def get_found_includes(self, env, scanner, path): + """Return this directory's implicit dependencies. + + We don't bother caching the results because the scan typically + shouldn't be requested more than once (as opposed to scanning + .h file contents, which can be requested as many times as the + files is #included by other files). + """ + if not scanner: + return [] + # Clear cached info for this Dir. If we already visited this + # directory on our walk down the tree (because we didn't know at + # that point it was being used as the source for another Node) + # then we may have calculated build signature before realizing + # we had to scan the disk. Now that we have to, though, we need + # to invalidate the old calculated signature so that any node + # dependent on our directory structure gets one that includes + # info about everything on disk. + self.clear() + return scanner(self, env, path) + + # + # Taskmaster interface subsystem + # + + def prepare(self): + pass + + def build(self, **kw): + """A null "builder" for directories.""" + global MkdirBuilder + if self.builder is not MkdirBuilder: + SCons.Node.Node.build(self, **kw) + + # + # + # + + def _create(self): + """Create this directory, silently and without worrying about + whether the builder is the default or not.""" + listDirs = [] + parent = self + while parent: + if parent.exists(): + break + listDirs.append(parent) + p = parent.up() + if p is None: + # Don't use while: - else: for this condition because + # if so, then parent is None and has no .path attribute. + raise SCons.Errors.StopError(parent._path) + parent = p + listDirs.reverse() + for dirnode in listDirs: + try: + # Don't call dirnode.build(), call the base Node method + # directly because we definitely *must* create this + # directory. The dirnode.build() method will suppress + # the build if it's the default builder. + SCons.Node.Node.build(dirnode) + dirnode.get_executor().nullify() + # The build() action may or may not have actually + # created the directory, depending on whether the -n + # option was used or not. Delete the _exists and + # _rexists attributes so they can be reevaluated. + dirnode.clear() + except OSError: + pass + + def multiple_side_effect_has_builder(self): + global MkdirBuilder + return self.builder is not MkdirBuilder and self.has_builder() + + def alter_targets(self): + """Return any corresponding targets in a variant directory. + """ + return self.fs.variant_dir_target_climb(self, self, []) + + def scanner_key(self): + """A directory does not get scanned.""" + return None + + def get_text_contents(self): + """We already emit things in text, so just return the binary + version.""" + return self.get_contents() + + def get_contents(self): + """Return content signatures and names of all our children + separated by new-lines. Ensure that the nodes are sorted.""" + return SCons.Node._get_contents_map[self._func_get_contents](self) + + def get_csig(self): + """Compute the content signature for Directory nodes. In + general, this is not needed and the content signature is not + stored in the DirNodeInfo. However, if get_contents on a Dir + node is called which has a child directory, the child + directory should return the hash of its contents.""" + contents = self.get_contents() + return hash_signature(contents) + + def do_duplicate(self, src): + pass + + def is_up_to_date(self): + """If any child is not up-to-date, then this directory isn't, + either.""" + if self.builder is not MkdirBuilder and not self.exists(): + return 0 + up_to_date = SCons.Node.up_to_date + for kid in self.children(): + if kid.get_state() > up_to_date: + return 0 + return 1 + + def rdir(self): + if not self.exists(): + norm_name = _my_normcase(self.name) + for dir in self.dir.get_all_rdirs(): + try: node = dir.entries[norm_name] + except KeyError: node = dir.dir_on_disk(self.name) + if node and node.exists() and \ + (isinstance(dir, Dir) or isinstance(dir, Entry)): + return node + return self + + def sconsign(self): + """Return the .sconsign file info for this directory. """ + return _sconsign_map[self._func_sconsign](self) + + def srcnode(self): + """Dir has a special need for srcnode()...if we + have a srcdir attribute set, then that *is* our srcnode.""" + if self.srcdir: + return self.srcdir + return Base.srcnode(self) + + def get_timestamp(self) -> int: + """Return the latest timestamp from among our children""" + stamp = 0 + for kid in self.children(): + if kid.get_timestamp() > stamp: + stamp = kid.get_timestamp() + return stamp + + def get_abspath(self) -> str: + """Get the absolute path of the file.""" + return self._abspath + + def get_labspath(self) -> str: + """Get the absolute path of the file.""" + return self._labspath + + def get_internal_path(self): + return self._path + + def get_tpath(self): + return self._tpath + + def get_path_elements(self): + return self._path_elements + + def entry_abspath(self, name): + return self._abspath + OS_SEP + name + + def entry_labspath(self, name): + return self._labspath + '/' + name + + def entry_path(self, name): + return self._path + OS_SEP + name + + def entry_tpath(self, name): + return self._tpath + OS_SEP + name + + def entry_exists_on_disk(self, name): + """ Searches through the file/dir entries of the current + directory, and returns True if a physical entry with the given + name could be found. + + @see rentry_exists_on_disk + """ + try: + d = self.on_disk_entries + except AttributeError: + d = {} + try: + entries = os.listdir(self._abspath) + except OSError: + pass + else: + for entry in map(_my_normcase, entries): + d[entry] = True + self.on_disk_entries = d + if sys.platform == 'win32' or sys.platform == 'cygwin': + name = _my_normcase(name) + result = d.get(name) + if result is None: + # Belt-and-suspenders for Windows: check directly for + # 8.3 file names that don't show up in os.listdir(). + result = os.path.exists(self._abspath + OS_SEP + name) + d[name] = result + return result + else: + return name in d + + def rentry_exists_on_disk(self, name): + """ Searches through the file/dir entries of the current + *and* all its remote directories (repos), and returns + True if a physical entry with the given name could be found. + The local directory (self) gets searched first, so + repositories take a lower precedence regarding the + searching order. + + @see entry_exists_on_disk + """ + + rentry_exists = self.entry_exists_on_disk(name) + if not rentry_exists: + # Search through the repository folders + norm_name = _my_normcase(name) + for rdir in self.get_all_rdirs(): + try: + node = rdir.entries[norm_name] + if node: + rentry_exists = True + break + except KeyError: + if rdir.entry_exists_on_disk(name): + rentry_exists = True + break + return rentry_exists + + @SCons.Memoize.CountMethodCall + def srcdir_list(self): + try: + return self._memo['srcdir_list'] + except KeyError: + pass + + result = [] + + dirname = '.' + dir = self + while dir: + if dir.srcdir: + result.append(dir.srcdir.Dir(dirname)) + dirname = dir.name + OS_SEP + dirname + dir = dir.up() + + self._memo['srcdir_list'] = result + + return result + + def srcdir_duplicate(self, name): + for dir in self.srcdir_list(): + if self.is_under(dir): + # We shouldn't source from something in the build path; + # variant_dir is probably under src_dir, in which case + # we are reflecting. + break + if dir.entry_exists_on_disk(name): + srcnode = dir.Entry(name).disambiguate() + if self.duplicate: + node = self.Entry(name).disambiguate() + node.do_duplicate(srcnode) + return node + else: + return srcnode + return None + + def _srcdir_find_file_key(self, filename): + return filename + + @SCons.Memoize.CountDictCall(_srcdir_find_file_key) + def srcdir_find_file(self, filename): + try: + memo_dict = self._memo['srcdir_find_file'] + except KeyError: + memo_dict = {} + self._memo['srcdir_find_file'] = memo_dict + else: + try: + return memo_dict[filename] + except KeyError: + pass + + def func(node): + if (isinstance(node, File) or isinstance(node, Entry)) and \ + (node.is_derived() or node.exists()): + return node + return None + + norm_name = _my_normcase(filename) + + for rdir in self.get_all_rdirs(): + try: node = rdir.entries[norm_name] + except KeyError: node = rdir.file_on_disk(filename) + else: node = func(node) + if node: + result = (node, self) + memo_dict[filename] = result + return result + + for srcdir in self.srcdir_list(): + for rdir in srcdir.get_all_rdirs(): + try: node = rdir.entries[norm_name] + except KeyError: node = rdir.file_on_disk(filename) + else: node = func(node) + if node: + result = (File(filename, self, self.fs), srcdir) + memo_dict[filename] = result + return result + + result = (None, None) + memo_dict[filename] = result + return result + + def dir_on_disk(self, name): + if self.entry_exists_on_disk(name): + try: return self.Dir(name) + except TypeError: pass + node = self.srcdir_duplicate(name) + if isinstance(node, File): + return None + return node + + def file_on_disk(self, name): + if self.entry_exists_on_disk(name): + try: return self.File(name) + except TypeError: pass + node = self.srcdir_duplicate(name) + if isinstance(node, Dir): + return None + return node + + def walk(self, func, arg): + """ + Walk this directory tree by calling the specified function + for each directory in the tree. + + This behaves like the os.path.walk() function, but for in-memory + Node.FS.Dir objects. The function takes the same arguments as + the functions passed to os.path.walk(): + + func(arg, dirname, fnames) + + Except that "dirname" will actually be the directory *Node*, + not the string. The '.' and '..' entries are excluded from + fnames. The fnames list may be modified in-place to filter the + subdirectories visited or otherwise impose a specific order. + The "arg" argument is always passed to func() and may be used + in any way (or ignored, passing None is common). + """ + entries = self.entries + names = list(entries.keys()) + names.remove('.') + names.remove('..') + func(arg, self, names) + for dirname in [n for n in names if isinstance(entries[n], Dir)]: + entries[dirname].walk(func, arg) + + def glob(self, pathname, ondisk=True, source=False, strings=False, exclude=None) -> list: + """Returns a list of Nodes (or strings) matching a pathname pattern. + + Pathname patterns follow POSIX shell syntax:: + + * matches everything + ? matches any single character + [seq] matches any character in seq (ranges allowed) + [!seq] matches any char not in seq + + The wildcard characters can be escaped by enclosing in brackets. + A leading dot is not matched by a wildcard, and needs to be + explicitly included in the pattern to be matched. Matches also + do not span directory separators. + + The matches take into account Repositories, returning a local + Node if a corresponding entry exists in a Repository (either + an in-memory Node or something on disk). + + The underlying algorithm is adapted from a rather old version + of :func:`glob.glob` function in the Python standard library + (heavily modified), and uses :func:`fnmatch.fnmatch` under the covers. + + This is the internal implementation of the external Glob API. + + Args: + pattern: pathname pattern to match. + ondisk: if false, restricts matches to in-memory Nodes. + By defafult, matches entries that exist on-disk in addition + to in-memory Nodes. + source: if true, corresponding source Nodes are returned if + globbing in a variant directory. The default behavior + is to return Nodes local to the variant directory. + strings: if true, returns the matches as strings instead of + Nodes. The strings are path names relative to this directory. + exclude: if not ``None``, must be a pattern or a list of patterns + following the same POSIX shell semantics. Elements matching at + least one pattern from *exclude* will be excluded from the result. + + """ + dirname, basename = os.path.split(pathname) + if not dirname: + result = self._glob1(basename, ondisk, source, strings) + else: + if has_glob_magic(dirname): + list = self.glob(dirname, ondisk, source, strings=False, exclude=exclude) + else: + list = [self.Dir(dirname, create=True)] + result = [] + for dir in list: + r = dir._glob1(basename, ondisk, source, strings) + if strings: + r = [os.path.join(str(dir), x) for x in r] + result.extend(r) + if exclude: + excludes = [] + excludeList = SCons.Util.flatten(exclude) + for x in excludeList: + r = self.glob(x, ondisk, source, strings) + excludes.extend(r) + result = [x for x in result if not any(fnmatch.fnmatch(str(x), str(e)) for e in SCons.Util.flatten(excludes))] + return sorted(result, key=lambda a: str(a)) + + def _glob1(self, pattern, ondisk=True, source=False, strings=False): + """ + Globs for and returns a list of entry names matching a single + pattern in this directory. + + This searches any repositories and source directories for + corresponding entries and returns a Node (or string) relative + to the current directory if an entry is found anywhere. + + TODO: handle pattern with no wildcard. Python's glob.glob uses + a separate _glob0 function to do this. + """ + search_dir_list = self.get_all_rdirs() + for srcdir in self.srcdir_list(): + search_dir_list.extend(srcdir.get_all_rdirs()) + + selfEntry = self.Entry + names = [] + for dir in search_dir_list: + # We use the .name attribute from the Node because the keys of + # the dir.entries dictionary are normalized (that is, all upper + # case) on case-insensitive systems like Windows. + node_names = [ v.name for k, v in dir.entries.items() + if k not in ('.', '..') ] + names.extend(node_names) + if not strings: + # Make sure the working directory (self) actually has + # entries for all Nodes in repositories or variant dirs. + for name in node_names: selfEntry(name) + if ondisk: + try: + disk_names = os.listdir(dir._abspath) + except os.error: + continue + names.extend(disk_names) + if not strings: + # We're going to return corresponding Nodes in + # the local directory, so we need to make sure + # those Nodes exist. We only want to create + # Nodes for the entries that will match the + # specified pattern, though, which means we + # need to filter the list here, even though + # the overall list will also be filtered later, + # after we exit this loop. + if pattern[0] != '.': + disk_names = [x for x in disk_names if x[0] != '.'] + disk_names = fnmatch.filter(disk_names, pattern) + dirEntry = dir.Entry + for name in disk_names: + # Add './' before disk filename so that '#' at + # beginning of filename isn't interpreted. + name = './' + name + node = dirEntry(name).disambiguate() + n = selfEntry(name) + if n.__class__ != node.__class__: + n.__class__ = node.__class__ + n._morph() + + names = set(names) + if pattern[0] != '.': + names = [x for x in names if x[0] != '.'] + names = fnmatch.filter(names, pattern) + + if strings: + return names + + return [self.entries[_my_normcase(n)] for n in names] + +class RootDir(Dir): + """A class for the root directory of a file system. + + This is the same as a Dir class, except that the path separator + ('/' or '\\') is actually part of the name, so we don't need to + add a separator when creating the path names of entries within + this directory. + """ + + __slots__ = ('_lookupDict', 'abspath', 'path') + + def __init__(self, drive, fs): + if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.FS.RootDir') + SCons.Node.Node.__init__(self) + + # Handle all the types of drives: + if drive == '': + # No drive, regular UNIX root or Windows default drive. + name = OS_SEP + dirname = OS_SEP + elif drive == '//': + # UNC path + name = UNC_PREFIX + dirname = UNC_PREFIX + else: + # Windows drive letter + name = drive + dirname = drive + OS_SEP + + # Filename with extension as it was specified when the object was + # created; to obtain filesystem path, use Python str() function + self.name = SCons.Util.silent_intern(name) + self.fs = fs #: Reference to parent Node.FS object + + self._path_elements = [self] + self.dir = self + self._func_rexists = 2 + self._func_target_from_source = 1 + self.store_info = 1 + + # Now set our paths to what we really want them to be. The + # name should already contain any necessary separators, such + # as the initial drive letter (the name) plus the directory + # separator, except for the "lookup abspath," which does not + # have the drive letter. + self._abspath = dirname + self._labspath = '' + self._path = dirname + self._tpath = dirname + self.dirname = dirname + + # EntryProxy interferes with this class and turns drive paths on + # Windows such as "C:" into "C:\C:". Avoid this problem by setting + # commonly-accessed attributes directly. + self.abspath = self._abspath + self.path = self._path + + self._morph() + + self.duplicate = 0 + self._lookupDict = {'': self, '/': self} + + self.root = self + # The // entry is necessary because os.path.normpath() + # preserves double slashes at the beginning of a path on Posix + # platforms. + if not has_unc: + self._lookupDict['//'] = self + + def _morph(self): + """Turn a file system Node (either a freshly initialized directory + object or a separate Entry object) into a proper directory object. + + Set up this directory's entries and hook it into the file + system tree. Specify that directories (this Node) don't use + signatures for calculating whether they're current. + """ + + self.repositories = [] + self.srcdir = None + + self.entries = {'.': self, '..': self.dir} + self.cwd = self + self.searched = 0 + self._sconsign = None + self.variant_dirs = [] + self.changed_since_last_build = 3 + self._func_sconsign = 1 + self._func_exists = 2 + self._func_get_contents = 2 + + # Don't just reset the executor, replace its action list, + # because it might have some pre-or post-actions that need to + # be preserved. + # + # But don't reset the executor if there is a non-null executor + # attached already. The existing executor might have other + # targets, in which case replacing the action list with a + # Mkdir action is a big mistake. + if not hasattr(self, 'executor'): + self.builder = get_MkdirBuilder() + self.get_executor().set_action_list(self.builder.action) + else: + # Prepend MkdirBuilder action to existing action list + l = self.get_executor().action_list + a = get_MkdirBuilder().action + l.insert(0, a) + self.get_executor().set_action_list(l) + + + def must_be_same(self, klass): + if klass is Dir: + return + Base.must_be_same(self, klass) + + def _lookup_abs(self, p, klass, create=True): + """ + Fast (?) lookup of a *normalized* absolute path. + + This method is intended for use by internal lookups with + already-normalized path data. For general-purpose lookups, + use the FS.Entry(), FS.Dir() or FS.File() methods. + + The caller is responsible for making sure we're passed a + normalized absolute path; we merely let Python's dictionary look + up and return the One True Node.FS object for the path. + + If a Node for the specified "p" doesn't already exist, and + "create" is specified, the Node may be created after recursive + invocation to find or create the parent directory or directories. + """ + k = _my_normcase(p) + try: + result = self._lookupDict[k] + except KeyError: + if not create: + msg = "No such file or directory: '%s' in '%s' (and create is False)" % (p, str(self)) + raise SCons.Errors.UserError(msg) + # There is no Node for this path name, and we're allowed + # to create it. + dir_name, file_name = p.rsplit('/', 1) + dir_node = self._lookup_abs(dir_name, Dir) + result = klass(file_name, dir_node, self.fs) + + # Double-check on disk (as configured) that the Node we + # created matches whatever is out there in the real world. + result.diskcheck_match() + + self._lookupDict[k] = result + dir_node.entries[_my_normcase(file_name)] = result + dir_node.implicit = None + else: + # There is already a Node for this path name. Allow it to + # complain if we were looking for an inappropriate type. + result.must_be_same(klass) + return result + + def __str__(self): + return self._abspath + + def entry_abspath(self, name): + return self._abspath + name + + def entry_labspath(self, name): + return '/' + name + + def entry_path(self, name): + return self._path + name + + def entry_tpath(self, name): + return self._tpath + name + + def is_under(self, dir): + if self is dir: + return 1 + else: + return 0 + + def up(self): + return None + + def get_dir(self): + return None + + def src_builder(self): + return _null + + +class FileNodeInfo(SCons.Node.NodeInfoBase): + __slots__ = ('csig', 'timestamp', 'size') + current_version_id = 2 + + field_list = ['csig', 'timestamp', 'size'] + + # This should get reset by the FS initialization. + fs = None + + def str_to_node(self, s): + top = self.fs.Top + root = top.root + if do_splitdrive: + drive, s = _my_splitdrive(s) + if drive: + root = self.fs.get_root(drive) + if not os.path.isabs(s): + s = top.get_labspath() + '/' + s + return root._lookup_abs(s, Entry) + + def __getstate__(self): + """ + Return all fields that shall be pickled. Walk the slots in the class + hierarchy and add those to the state dictionary. If a '__dict__' slot is + available, copy all entries to the dictionary. Also include the version + id, which is fixed for all instances of a class. + """ + state = getattr(self, '__dict__', {}).copy() + for obj in type(self).mro(): + for name in getattr(obj, '__slots__', ()): + if hasattr(self, name): + state[name] = getattr(self, name) + + state['_version_id'] = self.current_version_id + try: + del state['__weakref__'] + except KeyError: + pass + + return state + + def __setstate__(self, state): + """ + Restore the attributes from a pickled state. + """ + # TODO check or discard version + del state['_version_id'] + for key, value in state.items(): + if key not in ('__weakref__',): + setattr(self, key, value) + + def __eq__(self, other): + return self.csig == other.csig and self.timestamp == other.timestamp and self.size == other.size + + def __ne__(self, other): + return not self.__eq__(other) + + +class FileBuildInfo(SCons.Node.BuildInfoBase): + """ + This is info loaded from sconsign. + + Attributes unique to FileBuildInfo: + dependency_map : Caches file->csig mapping + for all dependencies. Currently this is only used when using + MD5-timestamp decider. + It's used to ensure that we copy the correct csig from the + previous build to be written to .sconsign when current build + is done. Previously the matching of csig to file was strictly + by order they appeared in bdepends, bsources, or bimplicit, + and so a change in order or count of any of these could + yield writing wrong csig, and then false positive rebuilds + """ + __slots__ = ['dependency_map', ] + current_version_id = 2 + + def __setattr__(self, key, value): + + # If any attributes are changed in FileBuildInfo, we need to + # invalidate the cached map of file name to content signature + # heald in dependency_map. Currently only used with + # MD5-timestamp decider + if key != 'dependency_map' and hasattr(self, 'dependency_map'): + del self.dependency_map + + return super().__setattr__(key, value) + + def convert_to_sconsign(self): + """ + Converts this FileBuildInfo object for writing to a .sconsign file + + This replaces each Node in our various dependency lists with its + usual string representation: relative to the top-level SConstruct + directory, or an absolute path if it's outside. + """ + if os_sep_is_slash: + node_to_str = str + else: + def node_to_str(n): + try: + s = n.get_internal_path() + except AttributeError: + s = str(n) + else: + s = s.replace(OS_SEP, '/') + return s + for attr in ['bsources', 'bdepends', 'bimplicit']: + try: + val = getattr(self, attr) + except AttributeError: + pass + else: + setattr(self, attr, list(map(node_to_str, val))) + + def convert_from_sconsign(self, dir, name): + """ + Converts a newly-read FileBuildInfo object for in-SCons use + + For normal up-to-date checking, we don't have any conversion to + perform--but we're leaving this method here to make that clear. + """ + pass + + def prepare_dependencies(self): + """ + Prepares a FileBuildInfo object for explaining what changed + + The bsources, bdepends and bimplicit lists have all been + stored on disk as paths relative to the top-level SConstruct + directory. Convert the strings to actual Nodes (for use by the + --debug=explain code and --implicit-cache). + """ + attrs = [ + ('bsources', 'bsourcesigs'), + ('bdepends', 'bdependsigs'), + ('bimplicit', 'bimplicitsigs'), + ] + for (nattr, sattr) in attrs: + try: + strings = getattr(self, nattr) + nodeinfos = getattr(self, sattr) + except AttributeError: + continue + if strings is None or nodeinfos is None: + continue + nodes = [] + for s, ni in zip(strings, nodeinfos): + if not isinstance(s, SCons.Node.Node): + s = ni.str_to_node(s) + nodes.append(s) + setattr(self, nattr, nodes) + + def format(self, names=0): + result = [] + bkids = self.bsources + self.bdepends + self.bimplicit + bkidsigs = self.bsourcesigs + self.bdependsigs + self.bimplicitsigs + for bkid, bkidsig in zip(bkids, bkidsigs): + result.append(str(bkid) + ': ' + + ' '.join(bkidsig.format(names=names))) + if not hasattr(self,'bact'): + self.bact = "none" + result.append('%s [%s]' % (self.bactsig, self.bact)) + return '\n'.join(result) + + +class File(Base): + """A class for files in a file system. + """ + + __slots__ = ['scanner_paths', + 'cachedir_csig', + 'cachesig', + 'repositories', + 'srcdir', + 'entries', + 'searched', + '_sconsign', + 'variant_dirs', + 'root', + 'dirname', + 'on_disk_entries', + 'released_target_info', + 'contentsig'] + + NodeInfo = FileNodeInfo + BuildInfo = FileBuildInfo + + # Although the command-line argument is in kilobytes, this is in bytes. + hash_chunksize = 65536 + + def diskcheck_match(self): + diskcheck_match(self, self.isdir, + "Directory %s found where file expected.") + + def __init__(self, name, directory, fs): + if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.FS.File') + super().__init__(name, directory, fs) + self._morph() + + def Entry(self, name): + """Create an entry node named 'name' relative to + the directory of this file.""" + return self.dir.Entry(name) + + def Dir(self, name, create=True): + """Create a directory node named 'name' relative to + the directory of this file.""" + return self.dir.Dir(name, create=create) + + def Dirs(self, pathlist): + """Create a list of directories relative to the SConscript + directory of this file.""" + return [self.Dir(p) for p in pathlist] + + def File(self, name): + """Create a file node named 'name' relative to + the directory of this file.""" + return self.dir.File(name) + + def _morph(self): + """Turn a file system node into a File object.""" + self.scanner_paths = {} + if not hasattr(self, '_local'): + self._local = 0 + if not hasattr(self, 'released_target_info'): + self.released_target_info = False + + self.store_info = 1 + self._func_exists = 4 + self._func_get_contents = 3 + + # Initialize this Node's decider function to decide_source() because + # every file is a source file until it has a Builder attached... + self.changed_since_last_build = 4 + + # If there was already a Builder set on this entry, then + # we need to make sure we call the target-decider function, + # not the source-decider. Reaching in and doing this by hand + # is a little bogus. We'd prefer to handle this by adding + # an Entry.builder_set() method that disambiguates like the + # other methods, but that starts running into problems with the + # fragile way we initialize Dir Nodes with their Mkdir builders, + # yet still allow them to be overridden by the user. Since it's + # not clear right now how to fix that, stick with what works + # until it becomes clear... + if self.has_builder(): + self.changed_since_last_build = 5 + + def scanner_key(self): + return self.get_suffix() + + def get_contents(self) -> bytes: + """Return the contents of the file as bytes.""" + return SCons.Node._get_contents_map[self._func_get_contents](self) + + def get_text_contents(self) -> str: + """Return the contents of the file in text form. + + This attempts to figure out what the encoding of the text is + based upon the BOM bytes, and then decodes the contents so that + it's a valid python string. + """ + contents = self.get_contents() + # The behavior of various decode() methods and functions + # w.r.t. the initial BOM bytes is different for different + # encodings and/or Python versions. ('utf-8' does not strip + # them, but has a 'utf-8-sig' which does; 'utf-16' seems to + # strip them; etc.) Just sidestep all the complication by + # explicitly stripping the BOM before we decode(). + if contents[:len(codecs.BOM_UTF8)] == codecs.BOM_UTF8: + return contents[len(codecs.BOM_UTF8):].decode('utf-8') + if contents[:len(codecs.BOM_UTF16_LE)] == codecs.BOM_UTF16_LE: + return contents[len(codecs.BOM_UTF16_LE):].decode('utf-16-le') + if contents[:len(codecs.BOM_UTF16_BE)] == codecs.BOM_UTF16_BE: + return contents[len(codecs.BOM_UTF16_BE):].decode('utf-16-be') + try: + return contents.decode('utf-8') + except UnicodeDecodeError as e: + try: + return contents.decode('latin-1') + except UnicodeDecodeError as e: + return contents.decode('utf-8', errors='backslashreplace') + + def get_content_hash(self) -> str: + """ + Compute and return the hash for this file. + """ + if not self.rexists(): + return hash_signature(SCons.Util.NOFILE) + fname = self.rfile().get_abspath() + try: + cs = hash_file_signature(fname, chunksize=File.hash_chunksize) + except EnvironmentError as e: + if not e.filename: + e.filename = fname + raise + return cs + + @SCons.Memoize.CountMethodCall + def get_size(self) -> int: + try: + return self._memo['get_size'] + except KeyError: + pass + + if self.rexists(): + size = self.rfile().getsize() + else: + # sentinel value for doesn't exist, even in repository + size = -1 + + self._memo['get_size'] = size + return size + + @SCons.Memoize.CountMethodCall + def get_timestamp(self) -> int: + try: + return self._memo['get_timestamp'] + except KeyError: + pass + + if self.rexists(): + timestamp = self.rfile().getmtime() + else: + timestamp = 0 + + self._memo['get_timestamp'] = timestamp + return timestamp + + convert_copy_attrs = [ + 'bsources', + 'bimplicit', + 'bdepends', + 'bact', + 'bactsig', + 'ninfo', + ] + + convert_sig_attrs = [ + 'bsourcesigs', + 'bimplicitsigs', + 'bdependsigs', + ] + + def convert_old_entry(self, old_entry): + # Convert a .sconsign entry from before the Big Signature + # Refactoring, doing what we can to convert its information + # to the new .sconsign entry format. + # + # The old format looked essentially like this: + # + # BuildInfo + # .ninfo (NodeInfo) + # .bsig + # .csig + # .timestamp + # .size + # .bsources + # .bsourcesigs ("signature" list) + # .bdepends + # .bdependsigs ("signature" list) + # .bimplicit + # .bimplicitsigs ("signature" list) + # .bact + # .bactsig + # + # The new format looks like this: + # + # .ninfo (NodeInfo) + # .bsig + # .csig + # .timestamp + # .size + # .binfo (BuildInfo) + # .bsources + # .bsourcesigs (NodeInfo list) + # .bsig + # .csig + # .timestamp + # .size + # .bdepends + # .bdependsigs (NodeInfo list) + # .bsig + # .csig + # .timestamp + # .size + # .bimplicit + # .bimplicitsigs (NodeInfo list) + # .bsig + # .csig + # .timestamp + # .size + # .bact + # .bactsig + # + # The basic idea of the new structure is that a NodeInfo always + # holds all available information about the state of a given Node + # at a certain point in time. The various .b*sigs lists can just + # be a list of pointers to the .ninfo attributes of the different + # dependent nodes, without any copying of information until it's + # time to pickle it for writing out to a .sconsign file. + # + # The complicating issue is that the *old* format only stored one + # "signature" per dependency, based on however the *last* build + # was configured. We don't know from just looking at it whether + # it was a build signature, a content signature, or a timestamp + # "signature". Since we no longer use build signatures, the + # best we can do is look at the length and if it's thirty two, + # assume that it was (or might have been) a content signature. + # If it was actually a build signature, then it will cause a + # rebuild anyway when it doesn't match the new content signature, + # but that's probably the best we can do. + import SCons.SConsign + new_entry = SCons.SConsign.SConsignEntry() + new_entry.binfo = self.new_binfo() + binfo = new_entry.binfo + for attr in self.convert_copy_attrs: + try: + value = getattr(old_entry, attr) + except AttributeError: + continue + setattr(binfo, attr, value) + delattr(old_entry, attr) + for attr in self.convert_sig_attrs: + try: + sig_list = getattr(old_entry, attr) + except AttributeError: + continue + value = [] + for sig in sig_list: + ninfo = self.new_ninfo() + if len(sig) == 32: + ninfo.csig = sig + else: + ninfo.timestamp = sig + value.append(ninfo) + setattr(binfo, attr, value) + delattr(old_entry, attr) + return new_entry + + @SCons.Memoize.CountMethodCall + def get_stored_info(self): + try: + return self._memo['get_stored_info'] + except KeyError: + pass + + try: + sconsign_entry = self.dir.sconsign().get_entry(self.name) + except (KeyError, EnvironmentError): + import SCons.SConsign + sconsign_entry = SCons.SConsign.SConsignEntry() + sconsign_entry.binfo = self.new_binfo() + sconsign_entry.ninfo = self.new_ninfo() + else: + if isinstance(sconsign_entry, FileBuildInfo): + # This is a .sconsign file from before the Big Signature + # Refactoring; convert it as best we can. + sconsign_entry = self.convert_old_entry(sconsign_entry) + try: + delattr(sconsign_entry.ninfo, 'bsig') + except AttributeError: + pass + + self._memo['get_stored_info'] = sconsign_entry + + return sconsign_entry + + def get_stored_implicit(self): + binfo = self.get_stored_info().binfo + binfo.prepare_dependencies() + try: return binfo.bimplicit + except AttributeError: return None + + def rel_path(self, other): + return self.dir.rel_path(other) + + def _get_found_includes_key(self, env, scanner, path): + return (id(env), id(scanner), path) + + @SCons.Memoize.CountDictCall(_get_found_includes_key) + def get_found_includes(self, env, scanner, path): + """Return the included implicit dependencies in this file. + Cache results so we only scan the file once per path + regardless of how many times this information is requested. + """ + memo_key = (id(env), id(scanner), path) + try: + memo_dict = self._memo['get_found_includes'] + except KeyError: + memo_dict = {} + self._memo['get_found_includes'] = memo_dict + else: + try: + return memo_dict[memo_key] + except KeyError: + pass + + if scanner: + result = [n.disambiguate() for n in scanner(self, env, path)] + else: + result = [] + + memo_dict[memo_key] = result + + return result + + def _createDir(self): + # ensure that the directories for this node are + # created. + self.dir._create() + + def push_to_cache(self): + """Try to push the node into a cache + """ + # This should get called before the Nodes' .built() method is + # called, which would clear the build signature if the file has + # a source scanner. + # + # We have to clear the local memoized values *before* we push + # the node to cache so that the memoization of the self.exists() + # return value doesn't interfere. + if self.nocache: + return + self.clear_memoized_values() + if self.exists(): + self.get_build_env().get_CacheDir().push(self) + + def retrieve_from_cache(self): + """Try to retrieve the node's content from a cache + + This method is called from multiple threads in a parallel build, + so only do thread safe stuff here. Do thread unsafe stuff in + built(). + + Returns true if the node was successfully retrieved. + """ + if self.nocache: + return None + if not self.is_derived(): + return None + return self.get_build_env().get_CacheDir().retrieve(self) + + def visited(self): + if self.exists() and self.executor is not None: + self.get_build_env().get_CacheDir().push_if_forced(self) + + ninfo = self.get_ninfo() + + csig = self.get_max_drift_csig() + if csig: + ninfo.csig = csig + + ninfo.timestamp = self.get_timestamp() + ninfo.size = self.get_size() + + if not self.has_builder(): + # This is a source file, but it might have been a target file + # in another build that included more of the DAG. Copy + # any build information that's stored in the .sconsign file + # into our binfo object so it doesn't get lost. + old = self.get_stored_info() + self.get_binfo().merge(old.binfo) + + SCons.Node.store_info_map[self.store_info](self) + + def release_target_info(self): + """Called just after this node has been marked + up-to-date or was built completely. + + This is where we try to release as many target node infos + as possible for clean builds and update runs, in order + to minimize the overall memory consumption. + + We'd like to remove a lot more attributes like self.sources + and self.sources_set, but they might get used + in a next build step. For example, during configuration + the source files for a built E{*}.o file are used to figure out + which linker to use for the resulting Program (gcc vs. g++)! + That's why we check for the 'keep_targetinfo' attribute, + config Nodes and the Interactive mode just don't allow + an early release of most variables. + + In the same manner, we can't simply remove the self.attributes + here. The smart linking relies on the shared flag, and some + parts of the java Tool use it to transport information + about nodes... + + @see: built() and Node.release_target_info() + """ + if self.released_target_info or SCons.Node.interactive: + return + + if not hasattr(self.attributes, 'keep_targetinfo'): + # Cache some required values, before releasing + # stuff like env, executor and builder... + self.changed(allowcache=True) + self.get_contents_sig() + self.get_build_env() + # Now purge unneeded stuff to free memory... + self.executor = None + self._memo.pop('rfile', None) + self.prerequisites = None + # Cleanup lists, but only if they're empty + if not len(self.ignore_set): + self.ignore_set = None + if not len(self.implicit_set): + self.implicit_set = None + if not len(self.depends_set): + self.depends_set = None + if not len(self.ignore): + self.ignore = None + if not len(self.depends): + self.depends = None + # Mark this node as done, we only have to release + # the memory once... + self.released_target_info = True + + def find_src_builder(self): + if self.rexists(): + return None + scb = self.dir.src_builder() + if scb is _null: + scb = None + if scb is not None: + try: + b = self.builder + except AttributeError: + b = None + if b is None: + self.builder_set(scb) + return scb + + def has_src_builder(self): + """Return whether this Node has a source builder or not. + + If this Node doesn't have an explicit source code builder, this + is where we figure out, on the fly, if there's a transparent + source code builder for it. + + Note that if we found a source builder, we also set the + self.builder attribute, so that all of the methods that actually + *build* this file don't have to do anything different. + """ + try: + scb = self.sbuilder + except AttributeError: + scb = self.sbuilder = self.find_src_builder() + return scb is not None + + def alter_targets(self): + """Return any corresponding targets in a variant directory. + """ + if self.is_derived(): + return [], None + return self.fs.variant_dir_target_climb(self, self.dir, [self.name]) + + def _rmv_existing(self): + self.clear_memoized_values() + if SCons.Node.print_duplicate: + print("dup: removing existing target {}".format(self)) + e = Unlink(self, [], None) + if isinstance(e, SCons.Errors.BuildError): + raise e + + # + # Taskmaster interface subsystem + # + + def make_ready(self): + self.has_src_builder() + self.get_binfo() + + def prepare(self): + """Prepare for this file to be created.""" + SCons.Node.Node.prepare(self) + + if self.get_state() != SCons.Node.up_to_date: + # Exists will report False for dangling symlinks so if it + # exists or is a link (which would mean it's a dangling + # link) then we should remove it as appropriate. + if self.exists() or self.islink(): + if self.is_derived() and not self.precious: + self._rmv_existing() + else: + try: + self._createDir() + except SCons.Errors.StopError as drive: + raise SCons.Errors.StopError("No drive `{}' for target `{}'.".format(drive, self)) + + # + # + # + + def remove(self): + """Remove this file.""" + if self.exists() or self.islink(): + self.fs.unlink(self.get_internal_path()) + return 1 + return None + + def do_duplicate(self, src): + self._createDir() + if SCons.Node.print_duplicate: + print("dup: relinking variant '{}' from '{}'".format(self, src)) + Unlink(self, None, None) + e = Link(self, src, None) + if isinstance(e, SCons.Errors.BuildError): + raise SCons.Errors.StopError("Cannot duplicate `{}' in `{}': {}.".format(src.get_internal_path(), self.dir._path, e.errstr)) + self.linked = 1 + # The Link() action may or may not have actually + # created the file, depending on whether the -n + # option was used or not. Delete the _exists and + # _rexists attributes so they can be reevaluated. + self.clear() + + @SCons.Memoize.CountMethodCall + def exists(self): + try: + return self._memo['exists'] + except KeyError: + pass + result = SCons.Node._exists_map[self._func_exists](self) + self._memo['exists'] = result + return result + + # + # SIGNATURE SUBSYSTEM + # + + def get_max_drift_csig(self) -> Optional[str]: + """ + Returns the content signature currently stored for this node + if it's been unmodified longer than the max_drift value, or the + max_drift value is 0. Returns None otherwise. + """ + old = self.get_stored_info() + mtime = self.get_timestamp() + + max_drift = self.fs.max_drift + if max_drift > 0: + if (time.time() - mtime) > max_drift: + try: + n = old.ninfo + if n.timestamp and n.csig and n.timestamp == mtime: + return n.csig + except AttributeError: + pass + elif max_drift == 0: + try: + return old.ninfo.csig + except AttributeError: + pass + + return None + + def get_csig(self) -> str: + """Generate a node's content signature.""" + ninfo = self.get_ninfo() + try: + return ninfo.csig + except AttributeError: + pass + + csig = self.get_max_drift_csig() + if csig is None: + try: + size = self.get_size() + if size == -1: + contents = SCons.Util.NOFILE + elif size < File.hash_chunksize: + contents = self.get_contents() + else: + csig = self.get_content_hash() + except IOError: + # This can happen if there's actually a directory on-disk, + # which can be the case if they've disabled disk checks, + # or if an action with a File target actually happens to + # create a same-named directory by mistake. + csig = '' + else: + if not csig: + csig = SCons.Util.hash_signature(contents) + + ninfo.csig = csig + + return csig + + # + # DECISION SUBSYSTEM + # + + def builder_set(self, builder): + SCons.Node.Node.builder_set(self, builder) + self.changed_since_last_build = 5 + + def built(self): + """Called just after this File node is successfully built. + + Just like for 'release_target_info' we try to release + some more target node attributes in order to minimize the + overall memory consumption. + + @see: release_target_info + """ + + SCons.Node.Node.built(self) + + if (not SCons.Node.interactive and + not hasattr(self.attributes, 'keep_targetinfo')): + # Ensure that the build infos get computed and cached... + SCons.Node.store_info_map[self.store_info](self) + # ... then release some more variables. + self._specific_sources = False + self._labspath = None + self._save_str() + self.cwd = None + + self.scanner_paths = None + + def changed(self, node=None, allowcache=False): + """ + Returns if the node is up-to-date with respect to the BuildInfo + stored last time it was built. + + For File nodes this is basically a wrapper around Node.changed(), + but we allow the return value to get cached after the reference + to the Executor got released in release_target_info(). + + @see: Node.changed() + """ + if node is None: + try: + return self._memo['changed'] + except KeyError: + pass + + has_changed = SCons.Node.Node.changed(self, node) + if allowcache: + self._memo['changed'] = has_changed + return has_changed + + def changed_content(self, target, prev_ni, repo_node=None): + cur_csig = self.get_csig() + try: + return cur_csig != prev_ni.csig + except AttributeError: + return 1 + + def changed_state(self, target, prev_ni, repo_node=None): + return self.state != SCons.Node.up_to_date + + + # Caching node -> string mapping for the below method + __dmap_cache = {} + __dmap_sig_cache = {} + + + def _build_dependency_map(self, binfo): + """ + Build mapping from file -> signature + + Args: + self - self + binfo - buildinfo from node being considered + + Returns: + dictionary of file->signature mappings + """ + + # For an "empty" binfo properties like bsources + # do not exist: check this to avoid exception. + if (len(binfo.bsourcesigs) + len(binfo.bdependsigs) + + len(binfo.bimplicitsigs)) == 0: + return {} + + binfo.dependency_map = { child:signature for child, signature in zip(chain(binfo.bsources, binfo.bdepends, binfo.bimplicit), + chain(binfo.bsourcesigs, binfo.bdependsigs, binfo.bimplicitsigs))} + + return binfo.dependency_map + + # @profile + def _add_strings_to_dependency_map(self, dmap): + """ + In the case comparing node objects isn't sufficient, we'll add the strings for the nodes to the dependency map + :return: + """ + + first_string = str(next(iter(dmap))) + + # print("DMAP:%s"%id(dmap)) + if first_string not in dmap: + string_dict = {str(child): signature for child, signature in dmap.items()} + dmap.update(string_dict) + return dmap + + def _get_previous_signatures(self, dmap): + """ + Return a list of corresponding csigs from previous + build in order of the node/files in children. + + Args: + self - self + dmap - Dictionary of file -> csig + + Returns: + List of csigs for provided list of children + """ + prev = [] + # MD5_TIMESTAMP_DEBUG = False + + if len(dmap) == 0: + if MD5_TIMESTAMP_DEBUG: print("Nothing dmap shortcutting") + return None + elif MD5_TIMESTAMP_DEBUG: print("len(dmap):%d"%len(dmap)) + + + # First try retrieving via Node + if MD5_TIMESTAMP_DEBUG: print("Checking if self is in map:%s id:%s type:%s"%(str(self), id(self), type(self))) + df = dmap.get(self, False) + if df: + return df + + # Now check if self's repository file is in map. + rf = self.rfile() + if MD5_TIMESTAMP_DEBUG: print("Checking if self.rfile is in map:%s id:%s type:%s"%(str(rf), id(rf), type(rf))) + rfm = dmap.get(rf, False) + if rfm: + return rfm + + # get default string for node and then also string swapping os.altsep for os.sep (/ for \) + c_strs = [str(self)] + + if os.altsep: + c_strs.append(c_strs[0].replace(os.sep, os.altsep)) + + # In some cases the dependency_maps' keys are already strings check. + # Check if either string is now in dmap. + for s in c_strs: + if MD5_TIMESTAMP_DEBUG: print("Checking if str(self) is in map :%s" % s) + df = dmap.get(s, False) + if df: + return df + + # Strings don't exist in map, add them and try again + # If there are no strings in this dmap, then add them. + # This may not be necessary, we could walk the nodes in the dmap and check each string + # rather than adding ALL the strings to dmap. In theory that would be n/2 vs 2n str() calls on node + # if not dmap.has_strings: + dmap = self._add_strings_to_dependency_map(dmap) + + # In some cases the dependency_maps' keys are already strings check. + # Check if either string is now in dmap. + for s in c_strs: + if MD5_TIMESTAMP_DEBUG: print("Checking if str(self) is in map (now with strings) :%s" % s) + df = dmap.get(s, False) + if df: + return df + + # Lastly use nodes get_path() to generate string and see if that's in dmap + if not df: + try: + # this should yield a path which matches what's in the sconsign + c_str = self.get_path() + if os.altsep: + c_str = c_str.replace(os.sep, os.altsep) + + if MD5_TIMESTAMP_DEBUG: print("Checking if self.get_path is in map (now with strings) :%s" % s) + + df = dmap.get(c_str, None) + + except AttributeError as e: + raise FileBuildInfoFileToCsigMappingError("No mapping from file name to content signature for :%s"%c_str) + + return df + + def changed_timestamp_then_content(self, target, prev_ni, node=None): + """ + Used when decider for file is Timestamp-MD5 + + NOTE: If the timestamp hasn't changed this will skip md5'ing the + file and just copy the prev_ni provided. If the prev_ni + is wrong. It will propagate it. + See: https://github.com/SCons/scons/issues/2980 + + Args: + self - dependency + target - target + prev_ni - The NodeInfo object loaded from previous builds .sconsign + node - Node instance. Check this node for file existence/timestamp + if specified. + + Returns: + Boolean - Indicates if node(File) has changed. + """ + + if node is None: + node = self + # Now get sconsign name -> csig map and then get proper prev_ni if possible + bi = node.get_stored_info().binfo + rebuilt = False + try: + dependency_map = bi.dependency_map + except AttributeError as e: + dependency_map = self._build_dependency_map(bi) + rebuilt = True + + if len(dependency_map) == 0: + # If there's no dependency map, there's no need to find the + # prev_ni as there aren't any + # shortcut the rest of the logic + if MD5_TIMESTAMP_DEBUG: print("Skipping checks len(dmap)=0") + + # We still need to get the current file's csig + # This should be slightly faster than calling self.changed_content(target, new_prev_ni) + self.get_csig() + return True + + new_prev_ni = self._get_previous_signatures(dependency_map) + new = self.changed_timestamp_match(target, new_prev_ni) + + if MD5_TIMESTAMP_DEBUG: + old = self.changed_timestamp_match(target, prev_ni) + + if old != new: + print("Mismatch self.changed_timestamp_match(%s, prev_ni) old:%s new:%s"%(str(target), old, new)) + new_prev_ni = self._get_previous_signatures(dependency_map) + + if not new: + try: + # NOTE: We're modifying the current node's csig in a query. + self.get_ninfo().csig = new_prev_ni.csig + except AttributeError: + pass + return False + return self.changed_content(target, new_prev_ni) + + def changed_timestamp_newer(self, target, prev_ni, repo_node=None): + try: + return self.get_timestamp() > target.get_timestamp() + except AttributeError: + return 1 + + def changed_timestamp_match(self, target, prev_ni, repo_node=None): + """ + Return True if the timestamps don't match or if there is no previous timestamp + :param target: + :param prev_ni: Information about the node from the previous build + :return: + """ + try: + return self.get_timestamp() != prev_ni.timestamp + except AttributeError: + return 1 + + def is_up_to_date(self): + """Check for whether the Node is current + In all cases self is the target we're checking to see if it's up to date + """ + + T = 0 + if T: Trace('is_up_to_date(%s):' % self) + if not self.exists(): + if T: Trace(' not self.exists():') + # The file (always a target) doesn't exist locally... + r = self.rfile() + if r != self: + # ...but there is one (always a target) in a Repository... + if not self.changed(r): + if T: Trace(' changed(%s):' % r) + # ...and it's even up-to-date... + if self._local: + # ...and they'd like a local copy. + e = LocalCopy(self, r, None) + if isinstance(e, SCons.Errors.BuildError): + # Likely this should be re-raising exception e + # (which would be BuildError) + raise e + SCons.Node.store_info_map[self.store_info](self) + if T: Trace(' 1\n') + return 1 + self.changed() + if T: Trace(' None\n') + return None + else: + r = self.changed() + if T: Trace(' self.exists(): %s\n' % r) + return not r + + @SCons.Memoize.CountMethodCall + def rfile(self): + try: + return self._memo['rfile'] + except KeyError: + pass + result = self + if not self.exists(): + norm_name = _my_normcase(self.name) + for repo_dir in self.dir.get_all_rdirs(): + try: + node = repo_dir.entries[norm_name] + except KeyError: + node = repo_dir.file_on_disk(self.name) + + if node and node.exists() and \ + (isinstance(node, File) or isinstance(node, Entry) + or not node.is_derived()): + result = node + # Copy over our local attributes to the repository + # Node so we identify shared object files in the + # repository and don't assume they're static. + # + # This isn't perfect; the attribute would ideally + # be attached to the object in the repository in + # case it was built statically in the repository + # and we changed it to shared locally, but that's + # rarely the case and would only occur if you + # intentionally used the same suffix for both + # shared and static objects anyway. So this + # should work well in practice. + result.attributes = self.attributes + break + self._memo['rfile'] = result + return result + + def find_repo_file(self): + """ + For this node, find if there exists a corresponding file in one or more repositories + :return: list of corresponding files in repositories + """ + retvals = [] + + norm_name = _my_normcase(self.name) + for repo_dir in self.dir.get_all_rdirs(): + try: + node = repo_dir.entries[norm_name] + except KeyError: + node = repo_dir.file_on_disk(self.name) + + if node and node.exists() and \ + (isinstance(node, File) or isinstance(node, Entry) + or not node.is_derived()): + retvals.append(node) + + return retvals + + + def rstr(self): + return str(self.rfile()) + + def get_cachedir_csig(self): + """ + Fetch a Node's content signature for purposes of computing + another Node's cachesig. + + This is a wrapper around the normal get_csig() method that handles + the somewhat obscure case of using CacheDir with the -n option. + Any files that don't exist would normally be "built" by fetching + them from the cache, but the normal get_csig() method will try + to open up the local file, which doesn't exist because the -n + option meant we didn't actually pull the file from cachedir. + But since the file *does* actually exist in the cachedir, we + can use its contents for the csig. + """ + try: + return self.cachedir_csig + except AttributeError: + pass + + cache = self.get_build_env().get_CacheDir() + cachedir, cachefile = cache.cachepath(self) + if not self.exists() and cachefile and os.path.exists(cachefile): + self.cachedir_csig = cache.get_cachedir_csig(self) + else: + self.cachedir_csig = self.get_csig() + return self.cachedir_csig + + def get_contents_sig(self): + """ + A helper method for get_cachedir_bsig. + + It computes and returns the signature for this + node's contents. + """ + + try: + return self.contentsig + except AttributeError: + pass + + executor = self.get_executor() + + result = self.contentsig = hash_signature(executor.get_contents()) + return result + + def get_cachedir_bsig(self): + """ + Return the signature for a cached file, including + its children. + + It adds the path of the cached file to the cache signature, + because multiple targets built by the same action will all + have the same build signature, and we have to differentiate + them somehow. + + Signature should normally be string of hex digits. + """ + try: + return self.cachesig + except AttributeError: + pass + + # Collect signatures for all children + children = self.children() + sigs = [n.get_cachedir_csig() for n in children] + + # Append this node's signature... + sigs.append(self.get_contents_sig()) + + # ...and it's path + sigs.append(self.get_internal_path()) + + # Merge this all into a single signature + result = self.cachesig = hash_collect(sigs) + return result + +default_fs = None + +def get_default_fs(): + global default_fs + if not default_fs: + default_fs = FS() + return default_fs + +class FileFinder: + """ + """ + + def __init__(self): + self._memo = {} + + def filedir_lookup(self, p, fd=None): + """ + A helper method for find_file() that looks up a directory for + a file we're trying to find. This only creates the Dir Node if + it exists on-disk, since if the directory doesn't exist we know + we won't find any files in it... :-) + + It would be more compact to just use this as a nested function + with a default keyword argument (see the commented-out version + below), but that doesn't work unless you have nested scopes, + so we define it here just so this work under Python 1.5.2. + """ + if fd is None: + fd = self.default_filedir + dir, name = os.path.split(fd) + drive, d = _my_splitdrive(dir) + if not name and d[:1] in ('/', OS_SEP): + #return p.fs.get_root(drive).dir_on_disk(name) + return p.fs.get_root(drive) + if dir: + p = self.filedir_lookup(p, dir) + if not p: + return None + norm_name = _my_normcase(name) + try: + node = p.entries[norm_name] + except KeyError: + return p.dir_on_disk(name) + if isinstance(node, Dir): + return node + if isinstance(node, Entry): + node.must_be_same(Dir) + return node + return None + + def _find_file_key(self, filename, paths, verbose=None): + # Note: paths could be a list, which is not hashable. If it is, convert + # it to a tuple, which is hashable. + paths_entry = tuple(paths) if isinstance(paths, list) else paths + return (filename, paths_entry) + + @SCons.Memoize.CountDictCall(_find_file_key) + def find_file(self, filename, paths, verbose=None): + """ + Find a node corresponding to either a derived file or a file that exists already. + + Only the first file found is returned, and none is returned if no file is found. + + filename: A filename to find + paths: A list of directory path *nodes* to search in. Can be represented as a list, a tuple, or a callable that is called with no arguments and returns the list or tuple. + + returns The node created from the found file. + + """ + memo_key = self._find_file_key(filename, paths) + try: + memo_dict = self._memo['find_file'] + except KeyError: + memo_dict = {} + self._memo['find_file'] = memo_dict + else: + try: + return memo_dict[memo_key] + except KeyError: + pass + + if verbose and not callable(verbose): + if not SCons.Util.is_String(verbose): + verbose = "find_file" + _verbose = ' %s: ' % verbose + verbose = lambda s: sys.stdout.write(_verbose + s) + + filedir, filename = os.path.split(filename) + if filedir: + self.default_filedir = filedir + paths = [_f for _f in map(self.filedir_lookup, paths) if _f] + + result = None + for dir in paths: + if verbose: + verbose("looking for '%s' in '%s' ...\n" % (filename, dir)) + node, d = dir.srcdir_find_file(filename) + if node: + if verbose: + verbose("... FOUND '%s' in '%s'\n" % (filename, d)) + result = node + break + + memo_dict[memo_key] = result + + return result + +find_file = FileFinder().find_file + + +def invalidate_node_memos(targets): + """ + Invalidate the memoized values of all Nodes (files or directories) + that are associated with the given entries. Has been added to + clear the cache of nodes affected by a direct execution of an + action (e.g. Delete/Copy/Chmod). Existing Node caches become + inconsistent if the action is run through Execute(). The argument + `targets` can be a single Node object or filename, or a sequence + of Nodes/filenames. + """ + from traceback import extract_stack + + # First check if the cache really needs to be flushed. Only + # actions run in the SConscript with Execute() seem to be + # affected. XXX The way to check if Execute() is in the stacktrace + # is a very dirty hack and should be replaced by a more sensible + # solution. + for f in extract_stack(): + if f[2] == 'Execute' and f[0][-14:] == 'Environment.py': + break + else: + # Dont have to invalidate, so return + return + + if not SCons.Util.is_List(targets): + targets = [targets] + + for entry in targets: + # If the target is a Node object, clear the cache. If it is a + # filename, look up potentially existing Node object first. + try: + entry.clear_memoized_values() + except AttributeError: + # Not a Node object, try to look up Node by filename. XXX + # This creates Node objects even for those filenames which + # do not correspond to an existing Node object. + node = get_default_fs().Entry(entry) + if node: + node.clear_memoized_values() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Node/Python.py b/scons/scons-local-4.5.1/SCons/Node/Python.py new file mode 100644 index 000000000..57416ef0b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Node/Python.py @@ -0,0 +1,202 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Python nodes.""" + +import SCons.Node + +_memo_lookup_map = {} + + +class ValueNodeInfo(SCons.Node.NodeInfoBase): + __slots__ = ('csig',) + current_version_id = 2 + + field_list = ['csig'] + + def str_to_node(self, s): + return ValueWithMemo(s) + + def __getstate__(self): + """ + Return all fields that shall be pickled. Walk the slots in the class + hierarchy and add those to the state dictionary. If a '__dict__' slot + is available, copy all entries to the dictionary. Also include the + version id, which is fixed for all instances of a class. + """ + state = getattr(self, '__dict__', {}).copy() + for obj in type(self).mro(): + for name in getattr(obj, '__slots__', ()): + if hasattr(self, name): + state[name] = getattr(self, name) + + state['_version_id'] = self.current_version_id + try: + del state['__weakref__'] + except KeyError: + pass + + return state + + def __setstate__(self, state): + """ + Restore the attributes from a pickled state. + """ + # TODO check or discard version + del state['_version_id'] + for key, value in state.items(): + if key not in ('__weakref__',): + setattr(self, key, value) + + +class ValueBuildInfo(SCons.Node.BuildInfoBase): + __slots__ = () + current_version_id = 2 + + +class Value(SCons.Node.Node): + """A Node class for values represented by Python expressions. + + Values are typically passed on the command line or generated + by a script, but not from a file or some other source. + + .. versionchanged:: 4.0 + the *name* parameter was added. + """ + + NodeInfo = ValueNodeInfo + BuildInfo = ValueBuildInfo + + def __init__(self, value, built_value=None, name=None): + super().__init__() + self.value = value + self.changed_since_last_build = 6 + self.store_info = 0 + if built_value is not None: + self.built_value = built_value + + # Set a name so it can be a child of a node and not break + # its parent's implementation of Node.get_contents. + if name: + self.name = name + else: + self.name = str(value) + + def str_for_display(self): + return repr(self.value) + + def __str__(self): + return str(self.value) + + def make_ready(self): + self.get_csig() + + def build(self, **kw): + if not hasattr(self, 'built_value'): + SCons.Node.Node.build(self, **kw) + + is_up_to_date = SCons.Node.Node.children_are_up_to_date + + def is_under(self, dir): + # Make Value nodes get built regardless of + # what directory scons was run from. Value nodes + # are outside the filesystem: + return 1 + + def write(self, built_value): + """Set the value of the node.""" + self.built_value = built_value + + def read(self): + """Return the value. If necessary, the value is built.""" + self.build() + if not hasattr(self, 'built_value'): + self.built_value = self.value + return self.built_value + + def get_text_contents(self) -> str: + """By the assumption that the node.built_value is a + deterministic product of the sources, the contents of a Value + are the concatenation of all the contents of its sources. As + the value need not be built when get_contents() is called, we + cannot use the actual node.built_value.""" + ###TODO: something reasonable about universal newlines + contents = str(self.value) + for kid in self.children(None): + # Get csig() value of child as this is more efficent + contents = contents + kid.get_csig() + return contents + + def get_contents(self) -> bytes: + """Get contents for signature calculations.""" + return self.get_text_contents().encode() + + def get_csig(self, calc=None): + """Because we're a Python value node and don't have a real + timestamp, we get to ignore the calculator and just use the + value contents. + + Returns string. Ideally string of hex digits. (Not bytes) + """ + try: + return self.ninfo.csig + except AttributeError: + pass + + contents = self.get_text_contents() + + self.get_ninfo().csig = contents + return contents + + +def ValueWithMemo(value, built_value=None, name=None): + """Memoized :class:`Value` node factory. + + .. versionchanged:: 4.0 + the *name* parameter was added. + """ + global _memo_lookup_map + + # No current support for memoizing a value that needs to be built. + if built_value: + return Value(value, built_value, name=name) + + try: + memo_lookup_key = hash((value, name)) + except TypeError: + # Non-primitive types will hit this codepath. + return Value(value, name=name) + + try: + return _memo_lookup_map[memo_lookup_key] + except KeyError: + v = Value(value, built_value, name) + _memo_lookup_map[memo_lookup_key] = v + return v + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Node/__init__.py b/scons/scons-local-4.5.1/SCons/Node/__init__.py new file mode 100644 index 000000000..bb0986859 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Node/__init__.py @@ -0,0 +1,1784 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""The Node package for the SCons software construction utility. + +This is, in many ways, the heart of SCons. + +A Node is where we encapsulate all of the dependency information about +any thing that SCons can build, or about any thing which SCons can use +to build some other thing. The canonical "thing," of course, is a file, +but a Node can also represent something remote (like a web page) or +something completely abstract (like an Alias). + +Each specific type of "thing" is specifically represented by a subclass +of the Node base class: Node.FS.File for files, Node.Alias for aliases, +etc. Dependency information is kept here in the base class, and +information specific to files/aliases/etc. is in the subclass. The +goal, if we've done this correctly, is that any type of "thing" should +be able to depend on any other type of "thing." + +""" + +import collections +import copy +from itertools import chain, zip_longest + +import SCons.Debug +import SCons.Executor +import SCons.Memoize +from SCons.compat import NoSlotsPyPy +from SCons.Debug import logInstanceCreation, Trace +from SCons.Util import hash_signature, is_List, UniqueList, render_tree + +print_duplicate = 0 + +def classname(obj): + return str(obj.__class__).split('.')[-1] + +# Set to false if we're doing a dry run. There's more than one of these +# little treats +do_store_info = True + +# Node states +# +# These are in "priority" order, so that the maximum value for any +# child/dependency of a node represents the state of that node if +# it has no builder of its own. The canonical example is a file +# system directory, which is only up to date if all of its children +# were up to date. +no_state = 0 +pending = 1 +executing = 2 +up_to_date = 3 +executed = 4 +failed = 5 + +StateString = { + 0 : "no_state", + 1 : "pending", + 2 : "executing", + 3 : "up_to_date", + 4 : "executed", + 5 : "failed", +} + +# controls whether implicit dependencies are cached: +implicit_cache = 0 + +# controls whether implicit dep changes are ignored: +implicit_deps_unchanged = 0 + +# controls whether the cached implicit deps are ignored: +implicit_deps_changed = 0 + +# A variable that can be set to an interface-specific function be called +# to annotate a Node with information about its creation. +def do_nothing_node(node): pass + +Annotate = do_nothing_node + +# global set for recording all processed SContruct/SConscript nodes +SConscriptNodes = set() + +# Gets set to 'True' if we're running in interactive mode. Is +# currently used to release parts of a target's info during +# clean builds and update runs (see release_target_info). +interactive = False + +def is_derived_none(node): + raise NotImplementedError + +def is_derived_node(node): + """ + Returns true if this node is derived (i.e. built). + """ + return node.has_builder() or node.side_effect + +_is_derived_map = {0 : is_derived_none, + 1 : is_derived_node} + +def exists_none(node): + raise NotImplementedError + +def exists_always(node): + return 1 + +def exists_base(node): + return node.stat() is not None + +def exists_entry(node): + """Return if the Entry exists. Check the file system to see + what we should turn into first. Assume a file if there's no + directory.""" + node.disambiguate() + return _exists_map[node._func_exists](node) + + +def exists_file(node): + # Duplicate from source path if we are set up to do this. + if node.duplicate and not node.is_derived() and not node.linked: + src = node.srcnode() + if src is not node: + # At this point, src is meant to be copied in a variant directory. + src = src.rfile() + if src.get_abspath() != node.get_abspath(): + if src.exists(): + node.do_duplicate(src) + # Can't return 1 here because the duplication might + # not actually occur if the -n option is being used. + else: + # The source file does not exist. Make sure no old + # copy remains in the variant directory. + if print_duplicate: + print("dup: no src for %s, unlinking old variant copy" % node) + if exists_base(node) or node.islink(): + node.fs.unlink(node.get_internal_path()) + # Return None explicitly because the Base.exists() call + # above will have cached its value if the file existed. + return None + return exists_base(node) + +_exists_map = {0 : exists_none, + 1 : exists_always, + 2 : exists_base, + 3 : exists_entry, + 4 : exists_file} + + +def rexists_none(node): + raise NotImplementedError + +def rexists_node(node): + return node.exists() + +def rexists_base(node): + return node.rfile().exists() + +_rexists_map = {0 : rexists_none, + 1 : rexists_node, + 2 : rexists_base} + +def get_contents_none(node): + raise NotImplementedError + +def get_contents_entry(node): + """Fetch the contents of the entry. Returns the exact binary + contents of the file.""" + try: + node = node.disambiguate(must_exist=1) + except SCons.Errors.UserError: + # There was nothing on disk with which to disambiguate + # this entry. Leave it as an Entry, but return a null + # string so calls to get_contents() in emitters and the + # like (e.g. in qt.py) don't have to disambiguate by hand + # or catch the exception. + return '' + else: + return _get_contents_map[node._func_get_contents](node) + +def get_contents_dir(node): + """Return content signatures and names of all our children + separated by new-lines. Ensure that the nodes are sorted.""" + contents = [] + for n in sorted(node.children(), key=lambda t: t.name): + contents.append('%s %s\n' % (n.get_csig(), n.name)) + return ''.join(contents) + +def get_contents_file(node): + if not node.rexists(): + return b'' + fname = node.rfile().get_abspath() + try: + with open(fname, "rb") as fp: + contents = fp.read() + except EnvironmentError as e: + if not e.filename: + e.filename = fname + raise + return contents + +_get_contents_map = {0 : get_contents_none, + 1 : get_contents_entry, + 2 : get_contents_dir, + 3 : get_contents_file} + +def target_from_source_none(node, prefix, suffix, splitext): + raise NotImplementedError + +def target_from_source_base(node, prefix, suffix, splitext): + return node.dir.Entry(prefix + splitext(node.name)[0] + suffix) + +_target_from_source_map = {0 : target_from_source_none, + 1 : target_from_source_base} + +# +# The new decider subsystem for Nodes +# +# We would set and overwrite the changed_since_last_build function +# before, but for being able to use slots (less memory!) we now have +# a dictionary of the different decider functions. Then in the Node +# subclasses we simply store the index to the decider that should be +# used by it. +# + +# +# First, the single decider functions +# +def changed_since_last_build_node(node, target, prev_ni, repo_node=None): + """ + + Must be overridden in a specific subclass to return True if this + Node (a dependency) has changed since the last time it was used + to build the specified target. prev_ni is this Node's state (for + example, its file timestamp, length, maybe content signature) + as of the last time the target was built. + + Note that this method is called through the dependency, not the + target, because a dependency Node must be able to use its own + logic to decide if it changed. For example, File Nodes need to + obey if we're configured to use timestamps, but Python Value Nodes + never use timestamps and always use the content. If this method + were called through the target, then each Node's implementation + of this method would have to have more complicated logic to + handle all the different Node types on which it might depend. + """ + raise NotImplementedError + + +def changed_since_last_build_alias(node, target, prev_ni, repo_node=None): + cur_csig = node.get_csig() + try: + return cur_csig != prev_ni.csig + except AttributeError: + return 1 + + +def changed_since_last_build_entry(node, target, prev_ni, repo_node=None): + node.disambiguate() + return _decider_map[node.changed_since_last_build](node, target, prev_ni, repo_node) + + +def changed_since_last_build_state_changed(node, target, prev_ni, repo_node=None): + return node.state != SCons.Node.up_to_date + + +def decide_source(node, target, prev_ni, repo_node=None): + return target.get_build_env().decide_source(node, target, prev_ni, repo_node) + + +def decide_target(node, target, prev_ni, repo_node=None): + return target.get_build_env().decide_target(node, target, prev_ni, repo_node) + + +def changed_since_last_build_python(node, target, prev_ni, repo_node=None): + cur_csig = node.get_csig() + try: + return cur_csig != prev_ni.csig + except AttributeError: + return 1 + + +# +# Now, the mapping from indices to decider functions +# +_decider_map = {0 : changed_since_last_build_node, + 1 : changed_since_last_build_alias, + 2 : changed_since_last_build_entry, + 3 : changed_since_last_build_state_changed, + 4 : decide_source, + 5 : decide_target, + 6 : changed_since_last_build_python} + +do_store_info = True + +# +# The new store_info subsystem for Nodes +# +# We would set and overwrite the store_info function +# before, but for being able to use slots (less memory!) we now have +# a dictionary of the different functions. Then in the Node +# subclasses we simply store the index to the info method that should be +# used by it. +# + +# +# First, the single info functions +# + +def store_info_pass(node): + pass + +def store_info_file(node): + # Merge our build information into the already-stored entry. + # This accommodates "chained builds" where a file that's a target + # in one build (SConstruct file) is a source in a different build. + # See test/chained-build.py for the use case. + if do_store_info: + node.dir.sconsign().store_info(node.name, node) + + +store_info_map = {0 : store_info_pass, + 1 : store_info_file} + +# Classes for signature info for Nodes. + +class NodeInfoBase: + """ + The generic base class for signature information for a Node. + + Node subclasses should subclass NodeInfoBase to provide their own + logic for dealing with their own Node-specific signature information. + """ + __slots__ = ('__weakref__',) + current_version_id = 2 + + def update(self, node): + try: + field_list = self.field_list + except AttributeError: + return + for f in field_list: + try: + delattr(self, f) + except AttributeError: + pass + try: + func = getattr(node, 'get_' + f) + except AttributeError: + pass + else: + setattr(self, f, func()) + + def convert(self, node, val): + pass + + def merge(self, other): + """ + Merge the fields of another object into this object. Already existing + information is overwritten by the other instance's data. + WARNING: If a '__dict__' slot is added, it should be updated instead of + replaced. + """ + state = other.__getstate__() + self.__setstate__(state) + + def format(self, field_list=None, names=0): + if field_list is None: + try: + field_list = self.field_list + except AttributeError: + field_list = list(getattr(self, '__dict__', {}).keys()) + for obj in type(self).mro(): + for slot in getattr(obj, '__slots__', ()): + if slot not in ('__weakref__', '__dict__'): + field_list.append(slot) + field_list.sort() + fields = [] + for field in field_list: + try: + f = getattr(self, field) + except AttributeError: + f = None + f = str(f) + if names: + f = field + ': ' + f + fields.append(f) + return fields + + def __getstate__(self): + """ + Return all fields that shall be pickled. Walk the slots in the class + hierarchy and add those to the state dictionary. If a '__dict__' slot is + available, copy all entries to the dictionary. Also include the version + id, which is fixed for all instances of a class. + """ + state = getattr(self, '__dict__', {}).copy() + for obj in type(self).mro(): + for name in getattr(obj,'__slots__',()): + if hasattr(self, name): + state[name] = getattr(self, name) + + state['_version_id'] = self.current_version_id + try: + del state['__weakref__'] + except KeyError: + pass + return state + + def __setstate__(self, state): + """ + Restore the attributes from a pickled state. The version is discarded. + """ + # TODO check or discard version + del state['_version_id'] + + for key, value in state.items(): + if key not in ('__weakref__',): + setattr(self, key, value) + + +class BuildInfoBase: + """ + The generic base class for build information for a Node. + + This is what gets stored in a .sconsign file for each target file. + It contains a NodeInfo instance for this node (signature information + that's specific to the type of Node) and direct attributes for the + generic build stuff we have to track: sources, explicit dependencies, + implicit dependencies, and action information. + """ + __slots__ = ("bsourcesigs", "bdependsigs", "bimplicitsigs", "bactsig", + "bsources", "bdepends", "bact", "bimplicit", "__weakref__") + current_version_id = 2 + + def __init__(self): + # Create an object attribute from the class attribute so it ends up + # in the pickled data in the .sconsign file. + self.bsourcesigs = [] + self.bdependsigs = [] + self.bimplicitsigs = [] + self.bactsig = None + + def merge(self, other): + """ + Merge the fields of another object into this object. Already existing + information is overwritten by the other instance's data. + WARNING: If a '__dict__' slot is added, it should be updated instead of + replaced. + """ + state = other.__getstate__() + self.__setstate__(state) + + def __getstate__(self): + """ + Return all fields that shall be pickled. Walk the slots in the class + hierarchy and add those to the state dictionary. If a '__dict__' slot is + available, copy all entries to the dictionary. Also include the version + id, which is fixed for all instances of a class. + """ + state = getattr(self, '__dict__', {}).copy() + for obj in type(self).mro(): + for name in getattr(obj,'__slots__',()): + if hasattr(self, name): + state[name] = getattr(self, name) + + state['_version_id'] = self.current_version_id + try: + del state['__weakref__'] + except KeyError: + pass + return state + + def __setstate__(self, state): + """ + Restore the attributes from a pickled state. + """ + # TODO check or discard version + del state['_version_id'] + for key, value in state.items(): + if key not in ('__weakref__',): + setattr(self, key, value) + + +class Node(object, metaclass=NoSlotsPyPy): + """The base Node class, for entities that we know how to + build, or use to build other Nodes. + """ + + __slots__ = ['sources', + 'sources_set', + 'target_peers', + '_specific_sources', + 'depends', + 'depends_set', + 'ignore', + 'ignore_set', + 'prerequisites', + 'implicit', + 'waiting_parents', + 'waiting_s_e', + 'ref_count', + 'wkids', + 'env', + 'state', + 'precious', + 'noclean', + 'nocache', + 'cached', + 'always_build', + 'includes', + 'attributes', + 'side_effect', + 'side_effects', + 'linked', + '_memo', + 'executor', + 'binfo', + 'ninfo', + 'builder', + 'is_explicit', + 'implicit_set', + 'changed_since_last_build', + 'store_info', + 'pseudo', + '_tags', + '_func_is_derived', + '_func_exists', + '_func_rexists', + '_func_get_contents', + '_func_target_from_source'] + + class Attrs: + __slots__ = ('shared', '__dict__') + + + def __init__(self): + if SCons.Debug.track_instances: logInstanceCreation(self, 'Node.Node') + # Note that we no longer explicitly initialize a self.builder + # attribute to None here. That's because the self.builder + # attribute may be created on-the-fly later by a subclass (the + # canonical example being a builder to fetch a file from a + # source code system like CVS or Subversion). + + # Each list of children that we maintain is accompanied by a + # dictionary used to look up quickly whether a node is already + # present in the list. Empirical tests showed that it was + # fastest to maintain them as side-by-side Node attributes in + # this way, instead of wrapping up each list+dictionary pair in + # a class. (Of course, we could always still do that in the + # future if we had a good reason to...). + self.sources = [] # source files used to build node + self.sources_set = set() + self._specific_sources = False + self.depends = [] # explicit dependencies (from Depends) + self.depends_set = set() + self.ignore = [] # dependencies to ignore + self.ignore_set = set() + self.prerequisites = None + self.implicit = None # implicit (scanned) dependencies (None means not scanned yet) + self.waiting_parents = set() + self.waiting_s_e = set() + self.ref_count = 0 + self.wkids = None # Kids yet to walk, when it's an array + + self.env = None + self.state = no_state + self.precious = None + self.pseudo = False + self.noclean = 0 + self.nocache = 0 + self.cached = 0 # is this node pulled from cache? + self.always_build = None + self.includes = None + self.attributes = self.Attrs() # Generic place to stick information about the Node. + self.side_effect = 0 # true iff this node is a side effect + self.side_effects = [] # the side effects of building this target + self.linked = 0 # is this node linked to the variant directory? + self.changed_since_last_build = 0 + self.store_info = 0 + self._tags = None + self._func_is_derived = 1 + self._func_exists = 1 + self._func_rexists = 1 + self._func_get_contents = 0 + self._func_target_from_source = 0 + self.ninfo = None + + self.clear_memoized_values() + + # Let the interface in which the build engine is embedded + # annotate this Node with its own info (like a description of + # what line in what file created the node, for example). + Annotate(self) + + def disambiguate(self, must_exist=None): + return self + + def get_suffix(self): + return '' + + @SCons.Memoize.CountMethodCall + def get_build_env(self): + """Fetch the appropriate Environment to build this node. + """ + try: + return self._memo['get_build_env'] + except KeyError: + pass + result = self.get_executor().get_build_env() + self._memo['get_build_env'] = result + return result + + def get_build_scanner_path(self, scanner): + """Fetch the appropriate scanner path for this node.""" + return self.get_executor().get_build_scanner_path(scanner) + + def set_executor(self, executor): + """Set the action executor for this node.""" + self.executor = executor + + def get_executor(self, create=1): + """Fetch the action executor for this node. Create one if + there isn't already one, and requested to do so.""" + try: + executor = self.executor + except AttributeError: + if not create: + raise + try: + act = self.builder.action + except AttributeError: + executor = SCons.Executor.Null(targets=[self]) + else: + executor = SCons.Executor.Executor(act, + self.env or self.builder.env, + [self.builder.overrides], + [self], + self.sources) + self.executor = executor + return executor + + def executor_cleanup(self): + """Let the executor clean up any cached information.""" + try: + executor = self.get_executor(create=None) + except AttributeError: + pass + else: + if executor is not None: + executor.cleanup() + + def reset_executor(self): + """Remove cached executor; forces recompute when needed.""" + try: + delattr(self, 'executor') + except AttributeError: + pass + + def push_to_cache(self): + """Try to push a node into a cache + """ + pass + + def retrieve_from_cache(self): + """Try to retrieve the node's content from a cache + + This method is called from multiple threads in a parallel build, + so only do thread safe stuff here. Do thread unsafe stuff + in :meth:`built`. + + Returns true if the node was successfully retrieved. + """ + return 0 + + # + # Taskmaster interface subsystem + # + + def make_ready(self): + """Get a Node ready for evaluation. + + This is called before the Taskmaster decides if the Node is + up-to-date or not. Overriding this method allows for a Node + subclass to be disambiguated if necessary, or for an implicit + source builder to be attached. + """ + pass + + def prepare(self): + """Prepare for this Node to be built. + + This is called after the Taskmaster has decided that the Node + is out-of-date and must be rebuilt, but before actually calling + the method to build the Node. + + This default implementation checks that explicit or implicit + dependencies either exist or are derived, and initializes the + BuildInfo structure that will hold the information about how + this node is, uh, built. + + (The existence of source files is checked separately by the + Executor, which aggregates checks for all of the targets built + by a specific action.) + + Overriding this method allows for for a Node subclass to remove + the underlying file from the file system. Note that subclass + methods should call this base class method to get the child + check and the BuildInfo structure. + """ + if self.depends is not None: + for d in self.depends: + if d.missing(): + msg = "Explicit dependency `%s' not found, needed by target `%s'." + raise SCons.Errors.StopError(msg % (d, self)) + if self.implicit is not None: + for i in self.implicit: + if i.missing(): + msg = "Implicit dependency `%s' not found, needed by target `%s'." + raise SCons.Errors.StopError(msg % (i, self)) + self.binfo = self.get_binfo() + + def build(self, **kw): + """Actually build the node. + + This is called by the Taskmaster after it's decided that the + Node is out-of-date and must be rebuilt, and after the + :meth:`prepare` method has gotten everything, uh, prepared. + + This method is called from multiple threads in a parallel build, + so only do thread safe stuff here. Do thread unsafe stuff + in :meth:`built`. + + """ + try: + self.get_executor()(self, **kw) + except SCons.Errors.BuildError as e: + e.node = self + raise + + def built(self): + """Called just after this node is successfully built.""" + + # Clear the implicit dependency caches of any Nodes + # waiting for this Node to be built. + for parent in self.waiting_parents: + parent.implicit = None + + # Handle issue where builder emits more than one target and + # the source file for the builder is generated. + # in that case only the first target was getting it's .implicit + # cleared when the source file is built (second scan). + # leaving only partial implicits from scan before source file is generated + # typically the compiler only. Then scanned files are appended + # This is persisted to sconsign and rebuild causes false rebuilds + # because the ordering of the implicit list then changes to what it + # should have been. + # This is at least the following bugs + # https://github.com/SCons/scons/issues/2811 + # https://jira.mongodb.org/browse/SERVER-33111 + try: + for peer in parent.target_peers: + peer.implicit = None + except AttributeError: + pass + + + self.clear() + + if self.pseudo: + if self.exists(): + raise SCons.Errors.UserError("Pseudo target " + str(self) + " must not exist") + else: + if not self.exists() and do_store_info: + SCons.Warnings.warn(SCons.Warnings.TargetNotBuiltWarning, + "Cannot find target " + str(self) + " after building") + self.ninfo.update(self) + + def visited(self): + """Called just after this node has been visited (with or + without a build).""" + try: + binfo = self.binfo + except AttributeError: + # Apparently this node doesn't need build info, so + # don't bother calculating or storing it. + pass + else: + self.ninfo.update(self) + SCons.Node.store_info_map[self.store_info](self) + + def release_target_info(self): + """Called just after this node has been marked + up-to-date or was built completely. + + This is where we try to release as many target node infos + as possible for clean builds and update runs, in order + to minimize the overall memory consumption. + + By purging attributes that aren't needed any longer after + a Node (=File) got built, we don't have to care that much how + many KBytes a Node actually requires...as long as we free + the memory shortly afterwards. + + @see: built() and File.release_target_info() + """ + pass + + def add_to_waiting_s_e(self, node): + self.waiting_s_e.add(node) + + def add_to_waiting_parents(self, node): + """ + Returns the number of nodes added to our waiting parents list: + 1 if we add a unique waiting parent, 0 if not. (Note that the + returned values are intended to be used to increment a reference + count, so don't think you can "clean up" this function by using + True and False instead...) + """ + wp = self.waiting_parents + if node in wp: + return 0 + wp.add(node) + return 1 + + def postprocess(self): + """Clean up anything we don't need to hang onto after we've + been built.""" + self.executor_cleanup() + self.waiting_parents = set() + + def clear(self): + """Completely clear a Node of all its cached state (so that it + can be re-evaluated by interfaces that do continuous integration + builds). + """ + # The del_binfo() call here isn't necessary for normal execution, + # but is for interactive mode, where we might rebuild the same + # target and need to start from scratch. + self.del_binfo() + self.clear_memoized_values() + self.ninfo = self.new_ninfo() + self.executor_cleanup() + for attr in ['cachedir_csig', 'cachesig', 'contentsig']: + try: + delattr(self, attr) + except AttributeError: + pass + self.cached = 0 + self.includes = None + + def clear_memoized_values(self): + self._memo = {} + + def builder_set(self, builder): + self.builder = builder + try: + del self.executor + except AttributeError: + pass + + def has_builder(self): + """Return whether this Node has a builder or not. + + In Boolean tests, this turns out to be a *lot* more efficient + than simply examining the builder attribute directly ("if + node.builder: ..."). When the builder attribute is examined + directly, it ends up calling __getattr__ for both the __len__ + and __bool__ attributes on instances of our Builder Proxy + class(es), generating a bazillion extra calls and slowing + things down immensely. + """ + try: + b = self.builder + except AttributeError: + # There was no explicit builder for this Node, so initialize + # the self.builder attribute to None now. + b = self.builder = None + return b is not None + + def set_explicit(self, is_explicit): + self.is_explicit = is_explicit + + def has_explicit_builder(self): + """Return whether this Node has an explicit builder + + This allows an internal Builder created by SCons to be marked + non-explicit, so that it can be overridden by an explicit + builder that the user supplies (the canonical example being + directories).""" + try: + return self.is_explicit + except AttributeError: + self.is_explicit = None + return self.is_explicit + + def get_builder(self, default_builder=None): + """Return the set builder, or a specified default value""" + try: + return self.builder + except AttributeError: + return default_builder + + multiple_side_effect_has_builder = has_builder + + def is_derived(self): + """ + Returns true if this node is derived (i.e. built). + + This should return true only for nodes whose path should be in + the variant directory when duplicate=0 and should contribute their build + signatures when they are used as source files to other derived files. For + example: source with source builders are not derived in this sense, + and hence should not return true. + """ + return _is_derived_map[self._func_is_derived](self) + + def is_sconscript(self): + """ Returns true if this node is an sconscript """ + return self in SConscriptNodes + + def is_conftest(self): + """ Returns true if this node is an conftest node""" + try: + self.attributes.conftest_node + except AttributeError: + return False + return True + + def check_attributes(self, name): + """ Simple API to check if the node.attributes for name has been set""" + return getattr(getattr(self, "attributes", None), name, None) + + + def alter_targets(self): + """Return a list of alternate targets for this Node. + """ + return [], None + + def get_found_includes(self, env, scanner, path): + """Return the scanned include lines (implicit dependencies) + found in this node. + + The default is no implicit dependencies. We expect this method + to be overridden by any subclass that can be scanned for + implicit dependencies. + """ + return [] + + def get_implicit_deps(self, env, initial_scanner, path_func, kw = {}): + """Return a list of implicit dependencies for this node. + + This method exists to handle recursive invocation of the scanner + on the implicit dependencies returned by the scanner, if the + scanner's recursive flag says that we should. + """ + nodes = [self] + seen = set(nodes) + dependencies = [] + path_memo = {} + + root_node_scanner = self._get_scanner(env, initial_scanner, None, kw) + + while nodes: + node = nodes.pop(0) + + scanner = node._get_scanner(env, initial_scanner, root_node_scanner, kw) + if not scanner: + continue + + try: + path = path_memo[scanner] + except KeyError: + path = path_func(scanner) + path_memo[scanner] = path + + included_deps = [x for x in node.get_found_includes(env, scanner, path) if x not in seen] + if included_deps: + dependencies.extend(included_deps) + seen.update(included_deps) + nodes.extend(scanner.recurse_nodes(included_deps)) + + return dependencies + + def _get_scanner(self, env, initial_scanner, root_node_scanner, kw): + if initial_scanner: + # handle explicit scanner case + scanner = initial_scanner.select(self) + else: + # handle implicit scanner case + scanner = self.get_env_scanner(env, kw) + if scanner: + scanner = scanner.select(self) + + if not scanner: + # no scanner could be found for the given node's scanner key; + # thus, make an attempt at using a default. + scanner = root_node_scanner + + return scanner + + def get_env_scanner(self, env, kw={}): + return env.get_scanner(self.scanner_key()) + + def get_target_scanner(self): + return self.builder.target_scanner + + def get_source_scanner(self, node): + """Fetch the source scanner for the specified node + + NOTE: "self" is the target being built, "node" is + the source file for which we want to fetch the scanner. + + Implies self.has_builder() is true; again, expect to only be + called from locations where this is already verified. + + This function may be called very often; it attempts to cache + the scanner found to improve performance. + """ + scanner = None + try: + scanner = self.builder.source_scanner + except AttributeError: + pass + if not scanner: + # The builder didn't have an explicit scanner, so go look up + # a scanner from env['SCANNERS'] based on the node's scanner + # key (usually the file extension). + scanner = self.get_env_scanner(self.get_build_env()) + if scanner: + scanner = scanner.select(node) + return scanner + + def add_to_implicit(self, deps): + if not hasattr(self, 'implicit') or self.implicit is None: + self.implicit = [] + self.implicit_set = set() + self._children_reset() + self._add_child(self.implicit, self.implicit_set, deps) + + def scan(self): + """Scan this node's dependents for implicit dependencies.""" + # Don't bother scanning non-derived files, because we don't + # care what their dependencies are. + # Don't scan again, if we already have scanned. + if self.implicit is not None: + return + self.implicit = [] + self.implicit_set = set() + self._children_reset() + if not self.has_builder(): + return + + build_env = self.get_build_env() + executor = self.get_executor() + + # Here's where we implement --implicit-cache. + if implicit_cache and not implicit_deps_changed: + implicit = self.get_stored_implicit() + if implicit is not None: + # We now add the implicit dependencies returned from the + # stored .sconsign entry to have already been converted + # to Nodes for us. (We used to run them through a + # source_factory function here.) + + # Update all of the targets with them. This + # essentially short-circuits an N*M scan of the + # sources for each individual target, which is a hell + # of a lot more efficient. + for tgt in executor.get_all_targets(): + tgt.add_to_implicit(implicit) + + if implicit_deps_unchanged or self.is_up_to_date(): + return + # one of this node's sources has changed, + # so we must recalculate the implicit deps for all targets + for tgt in executor.get_all_targets(): + tgt.implicit = [] + tgt.implicit_set = set() + + # Have the executor scan the sources. + executor.scan_sources(self.builder.source_scanner) + + # If there's a target scanner, have the executor scan the target + # node itself and associated targets that might be built. + scanner = self.get_target_scanner() + if scanner: + executor.scan_targets(scanner) + + def scanner_key(self): + return None + + def select_scanner(self, scanner): + """Selects a scanner for this Node. + + This is a separate method so it can be overridden by Node + subclasses (specifically, Node.FS.Dir) that *must* use their + own Scanner and don't select one the Scanner.Selector that's + configured for the target. + """ + return scanner.select(self) + + def env_set(self, env, safe=0): + if safe and self.env: + return + self.env = env + + # + # SIGNATURE SUBSYSTEM + # + + NodeInfo = NodeInfoBase + BuildInfo = BuildInfoBase + + def new_ninfo(self): + ninfo = self.NodeInfo() + return ninfo + + def get_ninfo(self): + if self.ninfo is not None: + return self.ninfo + self.ninfo = self.new_ninfo() + return self.ninfo + + def new_binfo(self): + binfo = self.BuildInfo() + return binfo + + def get_binfo(self): + """ + Fetch a node's build information. + + node - the node whose sources will be collected + cache - alternate node to use for the signature cache + returns - the build signature + + This no longer handles the recursive descent of the + node's children's signatures. We expect that they're + already built and updated by someone else, if that's + what's wanted. + """ + try: + return self.binfo + except AttributeError: + pass + + binfo = self.new_binfo() + self.binfo = binfo + + executor = self.get_executor() + ignore_set = self.ignore_set + + if self.has_builder(): + binfo.bact = str(executor) + binfo.bactsig = hash_signature(executor.get_contents()) + + if self._specific_sources: + sources = [s for s in self.sources if s not in ignore_set] + + else: + sources = executor.get_unignored_sources(self, self.ignore) + + seen = set() + binfo.bsources = [s for s in sources if s not in seen and not seen.add(s)] + binfo.bsourcesigs = [s.get_ninfo() for s in binfo.bsources] + + binfo.bdepends = [d for d in self.depends if d not in ignore_set] + binfo.bdependsigs = [d.get_ninfo() for d in self.depends] + + # Because self.implicit is initialized to None (and not empty list []) + # we have to handle this case + if not self.implicit: + binfo.bimplicit = [] + binfo.bimplicitsigs = [] + else: + binfo.bimplicit = [i for i in self.implicit if i not in ignore_set] + binfo.bimplicitsigs = [i.get_ninfo() for i in binfo.bimplicit] + + return binfo + + def del_binfo(self): + """Delete the build info from this node.""" + try: + delattr(self, 'binfo') + except AttributeError: + pass + + def get_csig(self): + try: + return self.ninfo.csig + except AttributeError: + ninfo = self.get_ninfo() + ninfo.csig = hash_signature(self.get_contents()) + return self.ninfo.csig + + def get_cachedir_csig(self): + return self.get_csig() + + def get_stored_info(self): + return None + + def get_stored_implicit(self): + """Fetch the stored implicit dependencies""" + return None + + # + # + # + + def set_precious(self, precious = 1): + """Set the Node's precious value.""" + self.precious = precious + + def set_pseudo(self, pseudo = True): + """Set the Node's precious value.""" + self.pseudo = pseudo + + def set_noclean(self, noclean = 1): + """Set the Node's noclean value.""" + # Make sure noclean is an integer so the --debug=stree + # output in Util.py can use it as an index. + self.noclean = noclean and 1 or 0 + + def set_nocache(self, nocache = 1): + """Set the Node's nocache value.""" + # Make sure nocache is an integer so the --debug=stree + # output in Util.py can use it as an index. + self.nocache = nocache and 1 or 0 + + def set_always_build(self, always_build = 1): + """Set the Node's always_build value.""" + self.always_build = always_build + + def exists(self): + """Does this node exists?""" + return _exists_map[self._func_exists](self) + + def rexists(self): + """Does this node exist locally or in a repository?""" + # There are no repositories by default: + return _rexists_map[self._func_rexists](self) + + def get_contents(self): + """Fetch the contents of the entry.""" + return _get_contents_map[self._func_get_contents](self) + + def missing(self): + return not self.is_derived() and \ + not self.linked and \ + not self.rexists() + + def remove(self): + """Remove this Node: no-op by default.""" + return None + + def add_dependency(self, depend): + """Adds dependencies.""" + try: + self._add_child(self.depends, self.depends_set, depend) + except TypeError as e: + e = e.args[0] + if is_List(e): + s = list(map(str, e)) + else: + s = str(e) + raise SCons.Errors.UserError("attempted to add a non-Node dependency to %s:\n\t%s is a %s, not a Node" % (str(self), s, type(e))) + + def add_prerequisite(self, prerequisite): + """Adds prerequisites""" + if self.prerequisites is None: + self.prerequisites = UniqueList() + self.prerequisites.extend(prerequisite) + self._children_reset() + + def add_ignore(self, depend): + """Adds dependencies to ignore.""" + try: + self._add_child(self.ignore, self.ignore_set, depend) + except TypeError as e: + e = e.args[0] + if is_List(e): + s = list(map(str, e)) + else: + s = str(e) + raise SCons.Errors.UserError("attempted to ignore a non-Node dependency of %s:\n\t%s is a %s, not a Node" % (str(self), s, type(e))) + + def add_source(self, source): + """Adds sources.""" + if self._specific_sources: + return + try: + self._add_child(self.sources, self.sources_set, source) + except TypeError as e: + e = e.args[0] + if is_List(e): + s = list(map(str, e)) + else: + s = str(e) + raise SCons.Errors.UserError("attempted to add a non-Node as source of %s:\n\t%s is a %s, not a Node" % (str(self), s, type(e))) + + def _add_child(self, collection, set, child): + """Adds 'child' to 'collection', first checking 'set' to see if it's + already present.""" + added = None + for c in child: + if c not in set: + set.add(c) + collection.append(c) + added = 1 + if added: + self._children_reset() + + def set_specific_source(self, source): + self.add_source(source) + self._specific_sources = True + + def add_wkid(self, wkid): + """Add a node to the list of kids waiting to be evaluated""" + if self.wkids is not None: + self.wkids.append(wkid) + + def _children_reset(self): + self.clear_memoized_values() + # We need to let the Executor clear out any calculated + # build info that it's cached so we can re-calculate it. + self.executor_cleanup() + + @SCons.Memoize.CountMethodCall + def _children_get(self): + try: + return self._memo['_children_get'] + except KeyError: + pass + + # The return list may contain duplicate Nodes, especially in + # source trees where there are a lot of repeated #includes + # of a tangle of .h files. Profiling shows, however, that + # eliminating the duplicates with a brute-force approach that + # preserves the order (that is, something like: + # + # u = [] + # for n in list: + # if n not in u: + # u.append(n)" + # + # takes more cycles than just letting the underlying methods + # hand back cached values if a Node's information is requested + # multiple times. (Other methods of removing duplicates, like + # using dictionary keys, lose the order, and the only ordered + # dictionary patterns I found all ended up using "not in" + # internally anyway...) + if self.ignore_set: + iter = chain.from_iterable([_f for _f in [self.sources, self.depends, self.implicit] if _f]) + + children = [] + for i in iter: + if i not in self.ignore_set: + children.append(i) + else: + children = self.all_children(scan=0) + + self._memo['_children_get'] = children + return children + + def all_children(self, scan=1): + """Return a list of all the node's direct children.""" + if scan: + self.scan() + + # The return list may contain duplicate Nodes, especially in + # source trees where there are a lot of repeated #includes + # of a tangle of .h files. Profiling shows, however, that + # eliminating the duplicates with a brute-force approach that + # preserves the order (that is, something like: + # + # u = [] + # for n in list: + # if n not in u: + # u.append(n)" + # + # takes more cycles than just letting the underlying methods + # hand back cached values if a Node's information is requested + # multiple times. (Other methods of removing duplicates, like + # using dictionary keys, lose the order, and the only ordered + # dictionary patterns I found all ended up using "not in" + # internally anyway...) + return list(chain.from_iterable([_f for _f in [self.sources, self.depends, self.implicit] if _f])) + + def children(self, scan=1): + """Return a list of the node's direct children, minus those + that are ignored by this node.""" + if scan: + self.scan() + return self._children_get() + + def set_state(self, state): + self.state = state + + def get_state(self): + return self.state + + def get_env(self): + env = self.env + if not env: + import SCons.Defaults + env = SCons.Defaults.DefaultEnvironment() + return env + + def Decider(self, function): + foundkey = None + for k, v in _decider_map.items(): + if v == function: + foundkey = k + break + if not foundkey: + foundkey = len(_decider_map) + _decider_map[foundkey] = function + self.changed_since_last_build = foundkey + + def Tag(self, key, value): + """ Add a user-defined tag. """ + if not self._tags: + self._tags = {} + self._tags[key] = value + + def GetTag(self, key): + """ Return a user-defined tag. """ + if not self._tags: + return None + return self._tags.get(key, None) + + def changed(self, node=None, allowcache=False): + """ + Returns if the node is up-to-date with respect to the BuildInfo + stored last time it was built. The default behavior is to compare + it against our own previously stored BuildInfo, but the stored + BuildInfo from another Node (typically one in a Repository) + can be used instead. + + Note that we now *always* check every dependency. We used to + short-circuit the check by returning as soon as we detected + any difference, but we now rely on checking every dependency + to make sure that any necessary Node information (for example, + the content signature of an #included .h file) is updated. + + The allowcache option was added for supporting the early + release of the executor/builder structures, right after + a File target was built. When set to true, the return + value of this changed method gets cached for File nodes. + Like this, the executor isn't needed any longer for subsequent + calls to changed(). + + @see: FS.File.changed(), FS.File.release_target_info() + """ + t = 0 + if t: Trace('changed(%s [%s], %s)' % (self, classname(self), node)) + if node is None: + node = self + + result = False + + bi = node.get_stored_info().binfo + then = bi.bsourcesigs + bi.bdependsigs + bi.bimplicitsigs + children = self.children() + + diff = len(children) - len(then) + if diff: + # The old and new dependency lists are different lengths. + # This always indicates that the Node must be rebuilt. + # We also extend the old dependency list with enough None + # entries to equal the new dependency list, for the benefit + # of the loop below that updates node information. + then.extend([None] * diff) + if t: Trace(': old %s new %s' % (len(then), len(children))) + result = True + + for child, prev_ni in zip(children, then): + if _decider_map[child.changed_since_last_build](child, self, prev_ni, node): + if t: Trace(': %s changed' % child) + result = True + + if self.has_builder(): + contents = self.get_executor().get_contents() + newsig = hash_signature(contents) + if bi.bactsig != newsig: + if t: Trace(': bactsig %s != newsig %s' % (bi.bactsig, newsig)) + result = True + + if not result: + if t: Trace(': up to date') + + if t: Trace('\n') + + return result + + def is_up_to_date(self): + """Default check for whether the Node is current: unknown Node + subtypes are always out of date, so they will always get built.""" + return None + + def children_are_up_to_date(self): + """Alternate check for whether the Node is current: If all of + our children were up-to-date, then this Node was up-to-date, too. + + The SCons.Node.Alias and SCons.Node.Python.Value subclasses + rebind their current() method to this method.""" + # Allow the children to calculate their signatures. + self.binfo = self.get_binfo() + if self.always_build: + return None + state = 0 + for kid in self.children(None): + s = kid.get_state() + if s and (not state or s > state): + state = s + return (state == 0 or state == SCons.Node.up_to_date) + + def is_literal(self): + """Always pass the string representation of a Node to + the command interpreter literally.""" + return 1 + + def render_include_tree(self): + """ + Return a text representation, suitable for displaying to the + user, of the include tree for the sources of this node. + """ + if self.is_derived(): + env = self.get_build_env() + if env: + for s in self.sources: + scanner = self.get_source_scanner(s) + if scanner: + path = self.get_build_scanner_path(scanner) + else: + path = None + def f(node, env=env, scanner=scanner, path=path): + return node.get_found_includes(env, scanner, path) + return render_tree(s, f, 1) + else: + return None + + def get_abspath(self): + """ + Return an absolute path to the Node. This will return simply + str(Node) by default, but for Node types that have a concept of + relative path, this might return something different. + """ + return str(self) + + def for_signature(self): + """ + Return a string representation of the Node that will always + be the same for this particular Node, no matter what. This + is by contrast to the __str__() method, which might, for + instance, return a relative path for a file Node. The purpose + of this method is to generate a value to be used in signature + calculation for the command line used to build a target, and + we use this method instead of str() to avoid unnecessary + rebuilds. This method does not need to return something that + would actually work in a command line; it can return any kind of + nonsense, so long as it does not change. + """ + return str(self) + + def get_string(self, for_signature): + """This is a convenience function designed primarily to be + used in command generators (i.e., CommandGeneratorActions or + Environment variables that are callable), which are called + with a for_signature argument that is nonzero if the command + generator is being called to generate a signature for the + command line, which determines if we should rebuild or not. + + Such command generators should use this method in preference + to str(Node) when converting a Node to a string, passing + in the for_signature parameter, such that we will call + Node.for_signature() or str(Node) properly, depending on whether + we are calculating a signature or actually constructing a + command line.""" + if for_signature: + return self.for_signature() + return str(self) + + def get_subst_proxy(self): + """ + This method is expected to return an object that will function + exactly like this Node, except that it implements any additional + special features that we would like to be in effect for + Environment variable substitution. The principle use is that + some Nodes would like to implement a __getattr__() method, + but putting that in the Node type itself has a tendency to kill + performance. We instead put it in a proxy and return it from + this method. It is legal for this method to return self + if no new functionality is needed for Environment substitution. + """ + return self + + def explain(self): + if not self.exists(): + return "building `%s' because it doesn't exist\n" % self + + if self.always_build: + return "rebuilding `%s' because AlwaysBuild() is specified\n" % self + + old = self.get_stored_info() + if old is None: + return None + + old = old.binfo + old.prepare_dependencies() + + try: + old_bkids = old.bsources + old.bdepends + old.bimplicit + old_bkidsigs = old.bsourcesigs + old.bdependsigs + old.bimplicitsigs + except AttributeError: + return "Cannot explain why `%s' is being rebuilt: No previous build information found\n" % self + + new = self.get_binfo() + + new_bkids = new.bsources + new.bdepends + new.bimplicit + new_bkidsigs = new.bsourcesigs + new.bdependsigs + new.bimplicitsigs + + osig = dict(list(zip(old_bkids, old_bkidsigs))) + nsig = dict(list(zip(new_bkids, new_bkidsigs))) + + # The sources and dependencies we'll want to report are all stored + # as relative paths to this target's directory, but we want to + # report them relative to the top-level SConstruct directory, + # so we only print them after running them through this lambda + # to turn them into the right relative Node and then return + # its string. + def stringify( s, E=self.dir.Entry): + if hasattr( s, 'dir' ) : + return str(E(s)) + return str(s) + + lines = [] + + removed = [x for x in old_bkids if x not in new_bkids] + if removed: + removed = [stringify(r) for r in removed] + fmt = "`%s' is no longer a dependency\n" + lines.extend([fmt % s for s in removed]) + + for k in new_bkids: + if k not in old_bkids: + lines.append("`%s' is a new dependency\n" % stringify(k)) + else: + changed = _decider_map[k.changed_since_last_build](k, self, osig[k]) + + if changed: + lines.append("`%s' changed\n" % stringify(k)) + + if len(lines) == 0 and old_bkids != new_bkids: + lines.append("the dependency order changed:\n") + lines.append("->Sources\n") + for (o,n) in zip_longest(old.bsources, new.bsources, fillvalue=None): + lines.append("Old:%s\tNew:%s\n"%(o,n)) + lines.append("->Depends\n") + for (o,n) in zip_longest(old.bdepends, new.bdepends, fillvalue=None): + lines.append("Old:%s\tNew:%s\n"%(o,n)) + lines.append("->Implicit\n") + for (o,n) in zip_longest(old.bimplicit, new.bimplicit, fillvalue=None): + lines.append("Old:%s\tNew:%s\n"%(o,n)) + + if len(lines) == 0: + def fmt_with_title(title, strlines): + lines = strlines.split('\n') + sep = '\n' + ' '*(15 + len(title)) + return ' '*15 + title + sep.join(lines) + '\n' + if old.bactsig != new.bactsig: + if old.bact == new.bact: + lines.append("the contents of the build action changed\n" + + fmt_with_title('action: ', new.bact)) + + # lines.append("the contents of the build action changed [%s] [%s]\n"%(old.bactsig,new.bactsig) + + # fmt_with_title('action: ', new.bact)) + else: + lines.append("the build action changed:\n" + + fmt_with_title('old: ', old.bact) + + fmt_with_title('new: ', new.bact)) + + if len(lines) == 0: + return "rebuilding `%s' for unknown reasons\n" % self + + preamble = "rebuilding `%s' because" % self + if len(lines) == 1: + return "%s %s" % (preamble, lines[0]) + else: + lines = ["%s:\n" % preamble] + lines + return ( ' '*11).join(lines) + +class NodeList(collections.UserList): + def __str__(self): + return str(list(map(str, self.data))) + +def get_children(node, parent): return node.children() +def ignore_cycle(node, stack): pass +def do_nothing(node, parent): pass + +class Walker: + """An iterator for walking a Node tree. + + This is depth-first, children are visited before the parent. + The Walker object can be initialized with any node, and + returns the next node on the descent with each get_next() call. + get the children of a node instead of calling 'children'. + 'cycle_func' is an optional function that will be called + when a cycle is detected. + + This class does not get caught in node cycles caused, for example, + by C header file include loops. + """ + def __init__(self, node, kids_func=get_children, + cycle_func=ignore_cycle, + eval_func=do_nothing): + self.kids_func = kids_func + self.cycle_func = cycle_func + self.eval_func = eval_func + node.wkids = copy.copy(kids_func(node, None)) + self.stack = [node] + self.history = {} # used to efficiently detect and avoid cycles + self.history[node] = None + + def get_next(self): + """Return the next node for this walk of the tree. + + This function is intentionally iterative, not recursive, + to sidestep any issues of stack size limitations. + """ + + while self.stack: + if self.stack[-1].wkids: + node = self.stack[-1].wkids.pop(0) + if not self.stack[-1].wkids: + self.stack[-1].wkids = None + if node in self.history: + self.cycle_func(node, self.stack) + else: + node.wkids = copy.copy(self.kids_func(node, self.stack[-1])) + self.stack.append(node) + self.history[node] = None + else: + node = self.stack.pop() + del self.history[node] + if node: + if self.stack: + parent = self.stack[-1] + else: + parent = None + self.eval_func(node, parent) + return node + return None + + def is_done(self): + return not self.stack + + +arg2nodes_lookups = [] + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/PathList.py b/scons/scons-local-4.5.1/SCons/PathList.py new file mode 100644 index 000000000..a7e666dfa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/PathList.py @@ -0,0 +1,224 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Handle lists of directory paths. + +These are the path lists that get set as CPPPATH, LIBPATH, +etc.) with as much caching of data and efficiency as we can, while +still keeping the evaluation delayed so that we Do the Right Thing +(almost) regardless of how the variable is specified. +""" + +import os + +import SCons.Memoize +import SCons.Node +import SCons.Util + +# +# Variables to specify the different types of entries in a PathList object: +# + +TYPE_STRING_NO_SUBST = 0 # string with no '$' +TYPE_STRING_SUBST = 1 # string containing '$' +TYPE_OBJECT = 2 # other object + +def node_conv(obj): + """ + This is the "string conversion" routine that we have our substitutions + use to return Nodes, not strings. This relies on the fact that an + EntryProxy object has a get() method that returns the underlying + Node that it wraps, which is a bit of architectural dependence + that we might need to break or modify in the future in response to + additional requirements. + """ + try: + get = obj.get + except AttributeError: + if isinstance(obj, SCons.Node.Node) or SCons.Util.is_Sequence( obj ): + result = obj + else: + result = str(obj) + else: + result = get() + return result + +class _PathList: + """ + An actual PathList object. + """ + def __init__(self, pathlist): + """ + Initializes a PathList object, canonicalizing the input and + pre-processing it for quicker substitution later. + + The stored representation of the PathList is a list of tuples + containing (type, value), where the "type" is one of the TYPE_* + variables defined above. We distinguish between: + + strings that contain no '$' and therefore need no + delayed-evaluation string substitution (we expect that there + will be many of these and that we therefore get a pretty + big win from avoiding string substitution) + + strings that contain '$' and therefore need substitution + (the hard case is things like '${TARGET.dir}/include', + which require re-evaluation for every target + source) + + other objects (which may be something like an EntryProxy + that needs a method called to return a Node) + + Pre-identifying the type of each element in the PathList up-front + and storing the type in the list of tuples is intended to reduce + the amount of calculation when we actually do the substitution + over and over for each target. + """ + if SCons.Util.is_String(pathlist): + pathlist = pathlist.split(os.pathsep) + elif not SCons.Util.is_Sequence(pathlist): + pathlist = [pathlist] + + pl = [] + for p in pathlist: + try: + found = '$' in p + except (AttributeError, TypeError): + type = TYPE_OBJECT + else: + if not found: + type = TYPE_STRING_NO_SUBST + else: + type = TYPE_STRING_SUBST + pl.append((type, p)) + + self.pathlist = tuple(pl) + + def __len__(self): return len(self.pathlist) + + def __getitem__(self, i): return self.pathlist[i] + + def subst_path(self, env, target, source): + """ + Performs construction variable substitution on a pre-digested + PathList for a specific target and source. + """ + result = [] + for type, value in self.pathlist: + if type == TYPE_STRING_SUBST: + value = env.subst(value, target=target, source=source, + conv=node_conv) + if SCons.Util.is_Sequence(value): + result.extend(SCons.Util.flatten(value)) + elif value: + result.append(value) + elif type == TYPE_OBJECT: + value = node_conv(value) + if value: + result.append(value) + elif value: + result.append(value) + return tuple(result) + + +class PathListCache: + """ + A class to handle caching of PathList lookups. + + This class gets instantiated once and then deleted from the namespace, + so it's used as a Singleton (although we don't enforce that in the + usual Pythonic ways). We could have just made the cache a dictionary + in the module namespace, but putting it in this class allows us to + use the same Memoizer pattern that we use elsewhere to count cache + hits and misses, which is very valuable. + + Lookup keys in the cache are computed by the _PathList_key() method. + Cache lookup should be quick, so we don't spend cycles canonicalizing + all forms of the same lookup key. For example, 'x:y' and ['x', + 'y'] logically represent the same list, but we don't bother to + split string representations and treat those two equivalently. + (Note, however, that we do, treat lists and tuples the same.) + + The main type of duplication we're trying to catch will come from + looking up the same path list from two different clones of the + same construction environment. That is, given + + env2 = env1.Clone() + + both env1 and env2 will have the same CPPPATH value, and we can + cheaply avoid re-parsing both values of CPPPATH by using the + common value from this cache. + """ + def __init__(self): + self._memo = {} + + def _PathList_key(self, pathlist): + """ + Returns the key for memoization of PathLists. + + Note that we want this to be pretty quick, so we don't completely + canonicalize all forms of the same list. For example, + 'dir1:$ROOT/dir2' and ['$ROOT/dir1', 'dir'] may logically + represent the same list if you're executing from $ROOT, but + we're not going to bother splitting strings into path elements, + or massaging strings into Nodes, to identify that equivalence. + We just want to eliminate obvious redundancy from the normal + case of re-using exactly the same cloned value for a path. + """ + if SCons.Util.is_Sequence(pathlist): + pathlist = tuple(SCons.Util.flatten(pathlist)) + return pathlist + + @SCons.Memoize.CountDictCall(_PathList_key) + def PathList(self, pathlist): + """ + Returns the cached _PathList object for the specified pathlist, + creating and caching a new object as necessary. + """ + pathlist = self._PathList_key(pathlist) + try: + memo_dict = self._memo['PathList'] + except KeyError: + memo_dict = {} + self._memo['PathList'] = memo_dict + else: + try: + return memo_dict[pathlist] + except KeyError: + pass + + result = _PathList(pathlist) + + memo_dict[pathlist] = result + + return result + +PathList = PathListCache().PathList + + +del PathListCache + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Platform/__init__.py b/scons/scons-local-4.5.1/SCons/Platform/__init__.py new file mode 100644 index 000000000..3fa5a75e2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Platform/__init__.py @@ -0,0 +1,355 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons platform selection. + +Looks for modules that define a callable object that can modify a +construction environment as appropriate for a given platform. + +Note that we take a more simplistic view of "platform" than Python does. +We're looking for a single string that determines a set of +tool-independent variables with which to initialize a construction +environment. Consequently, we'll examine both sys.platform and os.name +(and anything else that might come in to play) in order to return some +specification which is unique enough for our purposes. + +Note that because this subsystem just *selects* a callable that can +modify a construction environment, it's possible for people to define +their own "platform specification" in an arbitrary callable function. +No one needs to use or tie in to this subsystem in order to roll +their own platform definition. +""" + +import SCons.compat + +import importlib +import os +import sys +import tempfile + +import SCons.Errors +import SCons.Subst +import SCons.Tool + + +def platform_default(): + r"""Return the platform string for our execution environment. + + The returned value should map to one of the SCons/Platform/\*.py + files. Since scons is architecture independent, though, we don't + care about the machine architecture. + """ + osname = os.name + if osname == 'java': + osname = os._osType + if osname == 'posix': + if sys.platform == 'cygwin': + return 'cygwin' + elif sys.platform.find('irix') != -1: + return 'irix' + elif sys.platform.find('sunos') != -1: + return 'sunos' + elif sys.platform.find('hp-ux') != -1: + return 'hpux' + elif sys.platform.find('aix') != -1: + return 'aix' + elif sys.platform.find('darwin') != -1: + return 'darwin' + else: + return 'posix' + elif os.name == 'os2': + return 'os2' + else: + return sys.platform + + +def platform_module(name=platform_default()): + """Return the imported module for the platform. + + This looks for a module name that matches the specified argument. + If the name is unspecified, we fetch the appropriate default for + our execution environment. + """ + full_name = 'SCons.Platform.' + name + try: + return sys.modules[full_name] + except KeyError: + try: + # the specific platform module is a relative import + mod = importlib.import_module("." + name, __name__) + except ModuleNotFoundError: + try: + # This support was added to enable running inside + # a py2exe bundle a long time ago - unclear if it's + # still needed. It is *not* intended to load individual + # platform modules stored in a zipfile. + import zipimport + + platform = sys.modules['SCons.Platform'].__path__[0] + importer = zipimport.zipimporter(platform) + if not hasattr(importer, 'find_spec'): + # zipimport only added find_spec, exec_module in 3.10, + # unlike importlib, where they've been around since 3.4. + # If we don't have 'em, use the old way. + mod = importer.load_module(full_name) + else: + spec = importer.find_spec(full_name) + mod = importlib.util.module_from_spec(spec) + importer.exec_module(mod) + sys.modules[full_name] = mod + except zipimport.ZipImportError: + raise SCons.Errors.UserError("No platform named '%s'" % name) + + setattr(SCons.Platform, name, mod) + return mod + + +def DefaultToolList(platform, env): + """Select a default tool list for the specified platform.""" + return SCons.Tool.tool_list(platform, env) + + +class PlatformSpec: + def __init__(self, name, generate): + self.name = name + self.generate = generate + + def __call__(self, *args, **kw): + return self.generate(*args, **kw) + + def __str__(self): + return self.name + + +class TempFileMunge: + """Convert long command lines to use a temporary file. + + You can set an Environment variable (usually ``TEMPFILE``) to this, + then call it with a string argument, and it will perform temporary + file substitution on it. This is used to circumvent limitations on + the length of command lines. Example:: + + env["TEMPFILE"] = TempFileMunge + env["LINKCOM"] = "${TEMPFILE('$LINK $TARGET $SOURCES','$LINKCOMSTR')}" + + By default, the name of the temporary file used begins with a + prefix of '@'. This may be configured for other tool chains by + setting the ``TEMPFILEPREFIX`` variable. Example:: + + env["TEMPFILEPREFIX"] = '-@' # diab compiler + env["TEMPFILEPREFIX"] = '-via' # arm tool chain + env["TEMPFILEPREFIX"] = '' # (the empty string) PC Lint + + You can configure the extension of the temporary file through the + ``TEMPFILESUFFIX`` variable, which defaults to '.lnk' (see comments + in the code below). Example:: + + env["TEMPFILESUFFIX"] = '.lnt' # PC Lint + + Entries in the temporary file are separated by the value of the + ``TEMPFILEARGJOIN`` variable, which defaults to an OS-appropriate value. + + A default argument escape function is ``SCons.Subst.quote_spaces``. + If you need to apply extra operations on a command argument before + writing to a temporary file(fix Windows slashes, normalize paths, etc.), + please set `TEMPFILEARGESCFUNC` variable to a custom function. Example:: + + import sys + import re + from SCons.Subst import quote_spaces + + WINPATHSEP_RE = re.compile(r"\\([^\"'\\]|$)") + + + def tempfile_arg_esc_func(arg): + arg = quote_spaces(arg) + if sys.platform != "win32": + return arg + # GCC requires double Windows slashes, let's use UNIX separator + return WINPATHSEP_RE.sub(r"/\1", arg) + + + env["TEMPFILEARGESCFUNC"] = tempfile_arg_esc_func + + """ + def __init__(self, cmd, cmdstr = None): + self.cmd = cmd + self.cmdstr = cmdstr + + def __call__(self, target, source, env, for_signature): + if for_signature: + # If we're being called for signature calculation, it's + # because we're being called by the string expansion in + # Subst.py, which has the logic to strip any $( $) that + # may be in the command line we squirreled away. So we + # just return the raw command line and let the upper + # string substitution layers do their thing. + return self.cmd + + # Now we're actually being called because someone is actually + # going to try to execute the command, so we have to do our + # own expansion. + cmd = env.subst_list(self.cmd, SCons.Subst.SUBST_CMD, target, source)[0] + try: + maxline = int(env.subst('$MAXLINELENGTH')) + except ValueError: + maxline = 2048 + + length = 0 + for c in cmd: + length += len(c) + length += len(cmd) - 1 + if length <= maxline: + return self.cmd + + # Check if we already created the temporary file for this target + # It should have been previously done by Action.strfunction() call + if SCons.Util.is_List(target): + node = target[0] + else: + node = target + + cmdlist = None + + if SCons.Util.is_List(self.cmd): + cmdlist_key = tuple(self.cmd) + else: + cmdlist_key = self.cmd + + if node and hasattr(node.attributes, 'tempfile_cmdlist'): + cmdlist = node.attributes.tempfile_cmdlist.get(cmdlist_key, None) + if cmdlist is not None: + return cmdlist + + # Default to the .lnk suffix for the benefit of the Phar Lap + # linkloc linker, which likes to append an .lnk suffix if + # none is given. + if 'TEMPFILESUFFIX' in env: + suffix = env.subst('$TEMPFILESUFFIX') + else: + suffix = '.lnk' + + if 'TEMPFILEDIR' in env: + tempfile_dir = env.subst('$TEMPFILEDIR') + os.makedirs(tempfile_dir, exist_ok=True) + else: + tempfile_dir = None + + fd, tmp = tempfile.mkstemp(suffix, dir=tempfile_dir, text=True) + native_tmp = SCons.Util.get_native_path(tmp) + + if env.get('SHELL', None) == 'sh': + # The sh shell will try to escape the backslashes in the + # path, so unescape them. + native_tmp = native_tmp.replace('\\', r'\\\\') + # In Cygwin, we want to use rm to delete the temporary + # file, because del does not exist in the sh shell. + rm = env.Detect('rm') or 'del' + else: + # Don't use 'rm' if the shell is not sh, because rm won't + # work with the Windows shells (cmd.exe or command.com) or + # Windows path names. + rm = 'del' + + if 'TEMPFILEPREFIX' in env: + prefix = env.subst('$TEMPFILEPREFIX') + else: + prefix = '@' + + tempfile_esc_func = env.get('TEMPFILEARGESCFUNC', SCons.Subst.quote_spaces) + args = [ + tempfile_esc_func(arg) + for arg in cmd[1:] + ] + join_char = env.get('TEMPFILEARGJOIN', ' ') + os.write(fd, bytearray(join_char.join(args) + "\n", 'utf-8')) + os.close(fd) + + # XXX Using the SCons.Action.print_actions value directly + # like this is bogus, but expedient. This class should + # really be rewritten as an Action that defines the + # __call__() and strfunction() methods and lets the + # normal action-execution logic handle whether or not to + # print/execute the action. The problem, though, is all + # of that is decided before we execute this method as + # part of expanding the $TEMPFILE construction variable. + # Consequently, refactoring this will have to wait until + # we get more flexible with allowing Actions to exist + # independently and get strung together arbitrarily like + # Ant tasks. In the meantime, it's going to be more + # user-friendly to not let obsession with architectural + # purity get in the way of just being helpful, so we'll + # reach into SCons.Action directly. + if SCons.Action.print_actions: + cmdstr = env.subst(self.cmdstr, SCons.Subst.SUBST_RAW, target, + source) if self.cmdstr is not None else '' + # Print our message only if XXXCOMSTR returns an empty string + if len(cmdstr) == 0 : + cmdstr = ("Using tempfile "+native_tmp+" for command line:\n"+ + str(cmd[0]) + " " + " ".join(args)) + self._print_cmd_str(target, source, env, cmdstr) + + cmdlist = [cmd[0], prefix + native_tmp + '\n' + rm, native_tmp] + + # Store the temporary file command list into the target Node.attributes + # to avoid creating two temporary files one for print and one for execute. + if node is not None: + try: + # Storing in tempfile_cmdlist by self.cmd provided when intializing + # $TEMPFILE{} fixes issue raised in PR #3140 and #3553 + node.attributes.tempfile_cmdlist[cmdlist_key] = cmdlist + except AttributeError: + node.attributes.tempfile_cmdlist = {cmdlist_key: cmdlist} + + return cmdlist + + def _print_cmd_str(self, target, source, env, cmdstr): + # check if the user has specified a cmd line print function + print_func = None + try: + get = env.get + except AttributeError: + pass + else: + print_func = get('PRINT_CMD_LINE_FUNC') + + # use the default action cmd line print if user did not supply one + if not print_func: + action = SCons.Action._ActionAction() + action.print_cmd_line(cmdstr, target, source, env) + else: + print_func(cmdstr, target, source, env) + + +def Platform(name = platform_default()): + """Select a canned Platform specification.""" + + module = platform_module(name) + spec = PlatformSpec(name, module.generate) + return spec + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Platform/aix.py b/scons/scons-local-4.5.1/SCons/Platform/aix.py new file mode 100644 index 000000000..e5f34b45f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Platform/aix.py @@ -0,0 +1,81 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Platform-specific initialization for IBM AIX systems. + +There normally shouldn't be any need to import this module directly. It +will usually be imported through the generic SCons.Platform.Platform() +selection method. +""" + +import subprocess + +from . import posix + +import SCons.Util +import SCons.Action + +def get_xlc(env, xlc=None, packages=[]): + # Use the AIX package installer tool lslpp to figure out where a + # given xl* compiler is installed and what version it is. + xlcPath = None + xlcVersion = None + + if xlc is None: + xlc = env.get('CC', 'xlc') + if SCons.Util.is_List(xlc): + xlc = xlc[0] + for package in packages: + # find the installed filename, which may be a symlink as well + pipe = SCons.Action._subproc(env, ['lslpp', '-fc', package], + stdin = 'devnull', + stderr = 'devnull', + universal_newlines=True, + stdout = subprocess.PIPE) + # output of lslpp is something like this: + # #Path:Fileset:File + # /usr/lib/objrepos:vac.C 6.0.0.0:/usr/vac/exe/xlCcpp + # /usr/lib/objrepos:vac.C 6.0.0.0:/usr/vac/bin/xlc_r -> /usr/vac/bin/xlc + for line in pipe.stdout: + if xlcPath: + continue # read everything to let lslpp terminate + fileset, filename = line.split(':')[1:3] + filename = filename.split()[0] + if ('/' in xlc and filename == xlc) \ + or ('/' not in xlc and filename.endswith('/' + xlc)): + xlcVersion = fileset.split()[1] + xlcPath, sep, xlc = filename.rpartition('/') + return (xlcPath, xlc, xlcVersion) + +def generate(env): + posix.generate(env) + #Based on AIX 5.2: ARG_MAX=24576 - 3000 for environment expansion + env['MAXLINELENGTH'] = 21576 + env['SHLIBSUFFIX'] = '.a' + env['HOST_OS'] = 'aix' + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Platform/cygwin.py b/scons/scons-local-4.5.1/SCons/Platform/cygwin.py new file mode 100644 index 000000000..82e1d616b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Platform/cygwin.py @@ -0,0 +1,61 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Platform-specific initialization for Cygwin systems. + +There normally shouldn't be any need to import this module directly. It +will usually be imported through the generic SCons.Platform.Platform() +selection method. +""" + +import sys + +from . import posix +from SCons.Platform import TempFileMunge + +CYGWIN_DEFAULT_PATHS = [] +if sys.platform == 'win32': + CYGWIN_DEFAULT_PATHS = [ + r'C:\cygwin64\bin', + r'C:\cygwin\bin' + ] + +def generate(env): + posix.generate(env) + + env['PROGPREFIX'] = '' + env['PROGSUFFIX'] = '.exe' + env['SHLIBPREFIX'] = '' + env['SHLIBSUFFIX'] = '.dll' + env['LIBPREFIXES'] = [ '$LIBPREFIX', '$SHLIBPREFIX', '$IMPLIBPREFIX' ] + env['LIBSUFFIXES'] = [ '$LIBSUFFIX', '$SHLIBSUFFIX', '$IMPLIBSUFFIX' ] + env['TEMPFILE'] = TempFileMunge + env['TEMPFILEPREFIX'] = '@' + env['MAXLINELENGTH'] = 2048 + env['HOST_OS'] = 'cygwin' + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Platform/darwin.py b/scons/scons-local-4.5.1/SCons/Platform/darwin.py new file mode 100644 index 000000000..dcaf5c80f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Platform/darwin.py @@ -0,0 +1,71 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Platform-specific initialization for Mac OS X systems. + +There normally shouldn't be any need to import this module directly. It +will usually be imported through the generic SCons.Platform.Platform() +selection method. +""" + +from . import posix +import os + + +def generate(env): + posix.generate(env) + env['SHLIBSUFFIX'] = '.dylib' + env['HOST_OS'] = 'darwin' + # put macports paths at front to override Apple's versions, fink path is after + # For now let people who want Macports or Fink tools specify it! + # env['ENV']['PATH'] = '/opt/local/bin:/opt/local/sbin:' + env['ENV']['PATH'] + ':/sw/bin' + + # Store extra system paths in env['ENV']['PATHOSX'] + + filelist = ['/etc/paths',] + # make sure this works on Macs with Tiger or earlier + try: + dirlist = os.listdir('/etc/paths.d') + except FileNotFoundError: + dirlist = [] + + for file in dirlist: + filelist.append('/etc/paths.d/'+file) + + for file in filelist: + if os.path.isfile(file): + with open(file, 'r') as f: + lines = f.readlines() + for line in lines: + if line: + env.AppendENVPath('PATHOSX', line.strip('\n')) + + # Not sure why this wasn't the case all along? + if env['ENV'].get('PATHOSX', False) and os.environ.get('SCONS_USE_MAC_PATHS', False): + env.AppendENVPath('PATH',env['ENV']['PATHOSX']) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Platform/hpux.py b/scons/scons-local-4.5.1/SCons/Platform/hpux.py new file mode 100644 index 000000000..642f1feff --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Platform/hpux.py @@ -0,0 +1,45 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Platform-specific initialization for HP-UX systems. + +There normally shouldn't be any need to import this module directly. It +will usually be imported through the generic SCons.Platform.Platform() +selection method. +""" + +from . import posix + +def generate(env): + posix.generate(env) + #Based on HP-UX11i: ARG_MAX=2048000 - 3000 for environment expansion + env['MAXLINELENGTH'] = 2045000 + + env['SHLIBSUFFIX'] = '.sl' + env['HOST_OS'] = 'hpux' + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Platform/irix.py b/scons/scons-local-4.5.1/SCons/Platform/irix.py new file mode 100644 index 000000000..4d6be540d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Platform/irix.py @@ -0,0 +1,41 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Platform-specific initialization for SGI IRIX systems. + +There normally shouldn't be any need to import this module directly. It +will usually be imported through the generic SCons.Platform.Platform() +selection method. +""" + +from . import posix + +def generate(env): + posix.generate(env) + env['HOST_OS'] = 'irix' + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Platform/mingw.py b/scons/scons-local-4.5.1/SCons/Platform/mingw.py new file mode 100644 index 000000000..1d38a9bdb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Platform/mingw.py @@ -0,0 +1,33 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Platform-specific initialization for the MinGW system.""" + +import sys + +MINGW_DEFAULT_PATHS = [] +if sys.platform == 'win32': + MINGW_DEFAULT_PATHS = [ + r'C:\msys64', + r'C:\msys' + ] diff --git a/scons/scons-local-4.5.1/SCons/Platform/os2.py b/scons/scons-local-4.5.1/SCons/Platform/os2.py new file mode 100644 index 000000000..6b412eed2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Platform/os2.py @@ -0,0 +1,55 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Platform-specific initialization for OS/2 systems. + +There normally shouldn't be any need to import this module directly. It +will usually be imported through the generic SCons.Platform.Platform() +selection method. +""" + +from . import win32 + +def generate(env): + if 'ENV' not in env: + env['ENV'] = {} + env['OBJPREFIX'] = '' + env['OBJSUFFIX'] = '.obj' + env['SHOBJPREFIX'] = '$OBJPREFIX' + env['SHOBJSUFFIX'] = '$OBJSUFFIX' + env['PROGPREFIX'] = '' + env['PROGSUFFIX'] = '.exe' + env['LIBPREFIX'] = '' + env['LIBSUFFIX'] = '.lib' + env['SHLIBPREFIX'] = '' + env['SHLIBSUFFIX'] = '.dll' + env['LIBPREFIXES'] = '$LIBPREFIX' + env['LIBSUFFIXES'] = [ '$LIBSUFFIX', '$SHLIBSUFFIX' ] + env['HOST_OS'] = 'os2' + env['HOST_ARCH'] = win32.get_architecture().arch + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Platform/posix.py b/scons/scons-local-4.5.1/SCons/Platform/posix.py new file mode 100644 index 000000000..75b6c0bf2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Platform/posix.py @@ -0,0 +1,124 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Platform-specific initialization for POSIX (Linux, UNIX, etc.) systems. + +There normally shouldn't be any need to import this module directly. It +will usually be imported through the generic SCons.Platform.Platform() +selection method. +""" + +import platform +import subprocess + +from SCons.Platform import TempFileMunge +from SCons.Platform.virtualenv import ImportVirtualenv +from SCons.Platform.virtualenv import ignore_virtualenv, enable_virtualenv + +exitvalmap = { + 2 : 127, + 13 : 126, +} + +def escape(arg): + """escape shell special characters""" + slash = '\\' + special = '"$' + + arg = arg.replace(slash, slash+slash) + for c in special: + arg = arg.replace(c, slash+c) + + # print("ESCAPE RESULT: %s" % arg) + return '"' + arg + '"' + + +def exec_subprocess(l, env): + proc = subprocess.Popen(l, env = env, close_fds = True) + return proc.wait() + +def subprocess_spawn(sh, escape, cmd, args, env): + return exec_subprocess([sh, '-c', ' '.join(args)], env) + +def exec_popen3(l, env, stdout, stderr): + proc = subprocess.Popen(l, env = env, close_fds = True, + stdout = stdout, + stderr = stderr) + return proc.wait() + +def piped_env_spawn(sh, escape, cmd, args, env, stdout, stderr): + # spawn using Popen3 combined with the env command + # the command name and the command's stdout is written to stdout + # the command's stderr is written to stderr + return exec_popen3([sh, '-c', ' '.join(args)], + env, stdout, stderr) + + +def generate(env): + # Bearing in mind we have python 2.4 as a baseline, we can just do this: + spawn = subprocess_spawn + pspawn = piped_env_spawn + # Note that this means that 'escape' is no longer used + + if 'ENV' not in env: + env['ENV'] = {} + env['ENV']['PATH'] = '/usr/local/bin:/opt/bin:/bin:/usr/bin:/snap/bin' + env['OBJPREFIX'] = '' + env['OBJSUFFIX'] = '.o' + env['SHOBJPREFIX'] = '$OBJPREFIX' + env['SHOBJSUFFIX'] = '$OBJSUFFIX' + env['PROGPREFIX'] = '' + env['PROGSUFFIX'] = '' + env['LIBPREFIX'] = 'lib' + env['LIBSUFFIX'] = '.a' + env['SHLIBPREFIX'] = '$LIBPREFIX' + env['SHLIBSUFFIX'] = '.so' + env['LIBPREFIXES'] = [ '$LIBPREFIX' ] + env['LIBSUFFIXES'] = [ '$LIBSUFFIX', '$SHLIBSUFFIX' ] + env['HOST_OS'] = 'posix' + env['HOST_ARCH'] = platform.machine() + env['PSPAWN'] = pspawn + env['SPAWN'] = spawn + env['SHELL'] = 'sh' + env['ESCAPE'] = escape + env['TEMPFILE'] = TempFileMunge + env['TEMPFILEPREFIX'] = '@' + #Based on LINUX: ARG_MAX=ARG_MAX=131072 - 3000 for environment expansion + #Note: specific platforms might rise or lower this value + env['MAXLINELENGTH'] = 128072 + + # This platform supports RPATH specifications. + env['__RPATH'] = '$_RPATH' + + # GDC is GCC family, but DMD and LDC have different options. + # Must be able to have GCC and DMD work in the same build, so: + env['__DRPATH'] = '$_DRPATH' + + if enable_virtualenv and not ignore_virtualenv: + ImportVirtualenv(env) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Platform/sunos.py b/scons/scons-local-4.5.1/SCons/Platform/sunos.py new file mode 100644 index 000000000..86924335f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Platform/sunos.py @@ -0,0 +1,47 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Platform-specific initialization for Sun systems. + +There normally shouldn't be any need to import this module directly. It +will usually be imported through the generic SCons.Platform.Platform() +selection method. +""" + +from . import posix + +def generate(env): + posix.generate(env) + # Based on sunSparc 8:32bit + # ARG_MAX=1048320 - 3000 for environment expansion + env['MAXLINELENGTH'] = 1045320 + env['PKGINFO'] = 'pkginfo' + env['PKGCHK'] = '/usr/sbin/pkgchk' + env['ENV']['PATH'] = env['ENV']['PATH'] + ':/opt/SUNWspro/bin:/usr/ccs/bin' + env['HOST_OS'] = 'sunos' + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Platform/virtualenv.py b/scons/scons-local-4.5.1/SCons/Platform/virtualenv.py new file mode 100644 index 000000000..2204a595b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Platform/virtualenv.py @@ -0,0 +1,115 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""'Platform" support for a Python virtualenv.""" + +import os +import sys +import SCons.Util + + +virtualenv_enabled_by_default = False + + +def _enable_virtualenv_default(): + return SCons.Util.get_os_env_bool('SCONS_ENABLE_VIRTUALENV', virtualenv_enabled_by_default) + + +def _ignore_virtualenv_default(): + return SCons.Util.get_os_env_bool('SCONS_IGNORE_VIRTUALENV', False) + + +enable_virtualenv = _enable_virtualenv_default() +ignore_virtualenv = _ignore_virtualenv_default() +virtualenv_variables = ['VIRTUAL_ENV', 'PIPENV_ACTIVE'] + + +def _running_in_virtualenv(): + """Returns True if scons is executed within a virtualenv""" + # see https://stackoverflow.com/a/42580137 + return (hasattr(sys, 'real_prefix') or + (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix)) + + +def _is_path_in(path, base): + """Returns true if **path** is located under the **base** directory.""" + if not path or not base: # empty path may happen, base too + return False + rp = os.path.relpath(path, base) + return (not rp.startswith(os.path.pardir)) and (not rp == os.path.curdir) + + +def _inject_venv_variables(env): + if 'ENV' not in env: + env['ENV'] = {} + ENV = env['ENV'] + for name in virtualenv_variables: + try: + ENV[name] = os.environ[name] + except KeyError: + pass + +def _inject_venv_path(env, path_list=None): + """Modify environment such that SCons will take into account its virtualenv + when running external tools.""" + if path_list is None: + path_list = os.getenv('PATH') + env.PrependENVPath('PATH', select_paths_in_venv(path_list)) + + +def select_paths_in_venv(path_list): + """Returns a list of paths from **path_list** which are under virtualenv's + home directory.""" + if SCons.Util.is_String(path_list): + path_list = path_list.split(os.path.pathsep) + # Find in path_list the paths under the virtualenv's home + return [path for path in path_list if IsInVirtualenv(path)] + + +def ImportVirtualenv(env): + """Copies virtualenv-related environment variables from OS environment + to ``env['ENV']`` and prepends virtualenv's PATH to ``env['ENV']['PATH']``. + """ + _inject_venv_variables(env) + _inject_venv_path(env) + + +def Virtualenv(): + """Returns path to the virtualenv home if scons is executing within a + virtualenv or None, if not.""" + if _running_in_virtualenv(): + return sys.prefix + return None + + +def IsInVirtualenv(path): + """Returns True, if **path** is under virtualenv's home directory. If not, + or if we don't use virtualenv, returns False.""" + return _is_path_in(path, Virtualenv()) + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Platform/win32.py b/scons/scons-local-4.5.1/SCons/Platform/win32.py new file mode 100644 index 000000000..990794f96 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Platform/win32.py @@ -0,0 +1,429 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Platform-specific initialization for Win32 systems. + +There normally shouldn't be any need to import this module directly. It +will usually be imported through the generic SCons.Platform.Platform() +selection method. +""" + +import os +import os.path +import platform +import sys +import tempfile + +from SCons.Platform.posix import exitvalmap +from SCons.Platform import TempFileMunge +from SCons.Platform.virtualenv import ImportVirtualenv +from SCons.Platform.virtualenv import ignore_virtualenv, enable_virtualenv +import SCons.Util + +CHOCO_DEFAULT_PATH = [ + r'C:\ProgramData\chocolatey\bin' +] + +if False: + # Now swap out shutil.filecopy and filecopy2 for win32 api native CopyFile + try: + from ctypes import windll + import shutil + + CopyFile = windll.kernel32.CopyFileA + SetFileTime = windll.kernel32.SetFileTime + + _shutil_copy = shutil.copy + _shutil_copy2 = shutil.copy2 + + shutil.copy2 = CopyFile + + def win_api_copyfile(src,dst): + CopyFile(src,dst) + os.utime(dst) + + shutil.copy = win_api_copyfile + + except AttributeError: + parallel_msg = \ + "Couldn't override shutil.copy or shutil.copy2 falling back to shutil defaults" + + + + + + + +try: + import threading + spawn_lock = threading.Lock() + + # This locked version of spawnve works around a Windows + # MSVCRT bug, because its spawnve is not thread-safe. + # Without this, python can randomly crash while using -jN. + # See the python bug at http://bugs.python.org/issue6476 + # and SCons issue at + # https://github.com/SCons/scons/issues/2449 + def spawnve(mode, file, args, env): + spawn_lock.acquire() + try: + if mode == os.P_WAIT: + ret = os.spawnve(os.P_NOWAIT, file, args, env) + else: + ret = os.spawnve(mode, file, args, env) + finally: + spawn_lock.release() + if mode == os.P_WAIT: + pid, status = os.waitpid(ret, 0) + ret = status >> 8 + return ret +except ImportError: + # Use the unsafe method of spawnve. + # Please, don't try to optimize this try-except block + # away by assuming that the threading module is always present. + # In the test test/option-j.py we intentionally call SCons with + # a fake threading.py that raises an import exception right away, + # simulating a non-existent package. + def spawnve(mode, file, args, env): + return os.spawnve(mode, file, args, env) + +# The upshot of all this is that, if you are using Python 1.5.2, +# you had better have cmd or command.com in your PATH when you run +# scons. + + +def piped_spawn(sh, escape, cmd, args, env, stdout, stderr): + # There is no direct way to do that in python. What we do + # here should work for most cases: + # In case stdout (stderr) is not redirected to a file, + # we redirect it into a temporary file tmpFileStdout + # (tmpFileStderr) and copy the contents of this file + # to stdout (stderr) given in the argument + # Note that because this will paste shell redirection syntax + # into the cmdline, we have to call a shell to run the command, + # even though that's a bit of a performance hit. + if not sh: + sys.stderr.write("scons: Could not find command interpreter, is it in your PATH?\n") + return 127 + + # one temporary file for stdout and stderr + tmpFileStdout, tmpFileStdoutName = tempfile.mkstemp(text=True) + os.close(tmpFileStdout) # don't need open until the subproc is done + tmpFileStderr, tmpFileStderrName = tempfile.mkstemp(text=True) + os.close(tmpFileStderr) + + # check if output is redirected + stdoutRedirected = False + stderrRedirected = False + for arg in args: + # are there more possibilities to redirect stdout ? + if arg.find(">", 0, 1) != -1 or arg.find("1>", 0, 2) != -1: + stdoutRedirected = True + # are there more possibilities to redirect stderr ? + if arg.find("2>", 0, 2) != -1: + stderrRedirected = True + + # redirect output of non-redirected streams to our tempfiles + if not stdoutRedirected: + args.append(">" + tmpFileStdoutName) + if not stderrRedirected: + args.append("2>" + tmpFileStderrName) + + # actually do the spawn + try: + args = [sh, '/C', escape(' '.join(args))] + ret = spawnve(os.P_WAIT, sh, args, env) + except OSError as e: + # catch any error + try: + ret = exitvalmap[e.errno] + except KeyError: + sys.stderr.write("scons: unknown OSError exception code %d - %s: %s\n" % (e.errno, cmd, e.strerror)) + if stderr is not None: + stderr.write("scons: %s: %s\n" % (cmd, e.strerror)) + + # copy child output from tempfiles to our streams + # and do clean up stuff + if stdout is not None and not stdoutRedirected: + try: + with open(tmpFileStdoutName, "r") as tmpFileStdout: + stdout.write(tmpFileStdout.read()) + os.remove(tmpFileStdoutName) + except (IOError, OSError): + pass + + if stderr is not None and not stderrRedirected: + try: + with open(tmpFileStderrName, "r") as tmpFileStderr: + stderr.write(tmpFileStderr.read()) + os.remove(tmpFileStderrName) + except (IOError, OSError): + pass + + return ret + + +def exec_spawn(l, env): + try: + result = spawnve(os.P_WAIT, l[0], l, env) + except (OSError, EnvironmentError) as e: + try: + result = exitvalmap[e.errno] + sys.stderr.write("scons: %s: %s\n" % (l[0], e.strerror)) + except KeyError: + result = 127 + if len(l) > 2: + if len(l[2]) < 1000: + command = ' '.join(l[0:3]) + else: + command = l[0] + else: + command = l[0] + sys.stderr.write("scons: unknown OSError exception code %d - '%s': %s\n" % (e.errno, command, e.strerror)) + return result + + +def spawn(sh, escape, cmd, args, env): + if not sh: + sys.stderr.write("scons: Could not find command interpreter, is it in your PATH?\n") + return 127 + return exec_spawn([sh, '/C', escape(' '.join(args))], env) + +# Windows does not allow special characters in file names anyway, so no +# need for a complex escape function, we will just quote the arg, except +# that "cmd /c" requires that if an argument ends with a backslash it +# needs to be escaped so as not to interfere with closing double quote +# that we add. +def escape(x): + if x[-1] == '\\': + x = x + '\\' + return '"' + x + '"' + +# Get the windows system directory name +_system_root = None + + +def get_system_root(): + global _system_root + if _system_root is not None: + return _system_root + + # A resonable default if we can't read the registry + val = os.environ.get('SystemRoot', "C:\\WINDOWS") + + if SCons.Util.can_read_reg: + try: + # Look for Windows NT system root + k=SCons.Util.RegOpenKeyEx(SCons.Util.hkey_mod.HKEY_LOCAL_MACHINE, + 'Software\\Microsoft\\Windows NT\\CurrentVersion') + val, tok = SCons.Util.RegQueryValueEx(k, 'SystemRoot') + except SCons.Util.RegError: + try: + # Okay, try the Windows 9x system root + k=SCons.Util.RegOpenKeyEx(SCons.Util.hkey_mod.HKEY_LOCAL_MACHINE, + 'Software\\Microsoft\\Windows\\CurrentVersion') + val, tok = SCons.Util.RegQueryValueEx(k, 'SystemRoot') + except KeyboardInterrupt: + raise + except: + pass + + _system_root = val + return val + + +def get_program_files_dir(): + """ + Get the location of the program files directory + Returns + ------- + + """ + # Now see if we can look in the registry... + val = '' + if SCons.Util.can_read_reg: + try: + # Look for Windows Program Files directory + k=SCons.Util.RegOpenKeyEx(SCons.Util.hkey_mod.HKEY_LOCAL_MACHINE, + 'Software\\Microsoft\\Windows\\CurrentVersion') + val, tok = SCons.Util.RegQueryValueEx(k, 'ProgramFilesDir') + except SCons.Util.RegError: + val = '' + + if val == '': + # A reasonable default if we can't read the registry + # (Actually, it's pretty reasonable even if we can :-) + val = os.path.join(os.path.dirname(get_system_root()),"Program Files") + + return val + + +class ArchDefinition: + """ + Determine which windows CPU were running on. + A class for defining architecture-specific settings and logic. + """ + def __init__(self, arch, synonyms=[]): + self.arch = arch + self.synonyms = synonyms + +SupportedArchitectureList = [ + ArchDefinition( + 'x86', + ['i386', 'i486', 'i586', 'i686'], + ), + + ArchDefinition( + 'x86_64', + ['AMD64', 'amd64', 'em64t', 'EM64T', 'x86_64'], + ), + + ArchDefinition( + 'ia64', + ['IA64'], + ), +] + +SupportedArchitectureMap = {} +for a in SupportedArchitectureList: + SupportedArchitectureMap[a.arch] = a + for s in a.synonyms: + SupportedArchitectureMap[s] = a + + +def get_architecture(arch=None): + """Returns the definition for the specified architecture string. + + If no string is specified, the system default is returned (as defined + by the PROCESSOR_ARCHITEW6432 or PROCESSOR_ARCHITECTURE environment + variables). + """ + if arch is None: + arch = os.environ.get('PROCESSOR_ARCHITEW6432') + if not arch: + arch = os.environ.get('PROCESSOR_ARCHITECTURE') + return SupportedArchitectureMap.get(arch, ArchDefinition(platform.machine(), [platform.machine()])) + + +def generate(env): + # Attempt to find cmd.exe (for WinNT/2k/XP) or + # command.com for Win9x + cmd_interp = '' + # First see if we can look in the registry... + if SCons.Util.can_read_reg: + try: + # Look for Windows NT system root + k=SCons.Util.RegOpenKeyEx(SCons.Util.hkey_mod.HKEY_LOCAL_MACHINE, + 'Software\\Microsoft\\Windows NT\\CurrentVersion') + val, tok = SCons.Util.RegQueryValueEx(k, 'SystemRoot') + cmd_interp = os.path.join(val, 'System32\\cmd.exe') + except SCons.Util.RegError: + try: + # Okay, try the Windows 9x system root + k=SCons.Util.RegOpenKeyEx(SCons.Util.hkey_mod.HKEY_LOCAL_MACHINE, + 'Software\\Microsoft\\Windows\\CurrentVersion') + val, tok = SCons.Util.RegQueryValueEx(k, 'SystemRoot') + cmd_interp = os.path.join(val, 'command.com') + except KeyboardInterrupt: + raise + except: + pass + + # For the special case of not having access to the registry, we + # use a temporary path and pathext to attempt to find the command + # interpreter. If we fail, we try to find the interpreter through + # the env's PATH. The problem with that is that it might not + # contain an ENV and a PATH. + if not cmd_interp: + systemroot = get_system_root() + tmp_path = systemroot + os.pathsep + \ + os.path.join(systemroot,'System32') + tmp_pathext = '.com;.exe;.bat;.cmd' + if 'PATHEXT' in os.environ: + tmp_pathext = os.environ['PATHEXT'] + cmd_interp = SCons.Util.WhereIs('cmd', tmp_path, tmp_pathext) + if not cmd_interp: + cmd_interp = SCons.Util.WhereIs('command', tmp_path, tmp_pathext) + + if not cmd_interp: + cmd_interp = env.Detect('cmd') + if not cmd_interp: + cmd_interp = env.Detect('command') + + if 'ENV' not in env: + env['ENV'] = {} + + # Import things from the external environment to the construction + # environment's ENV. This is a potential slippery slope, because we + # *don't* want to make builds dependent on the user's environment by + # default. We're doing this for SystemRoot, though, because it's + # needed for anything that uses sockets, and seldom changes, and + # for SystemDrive because it's related. + # + # Weigh the impact carefully before adding other variables to this list. + import_env = ['SystemDrive', 'SystemRoot', 'TEMP', 'TMP', 'USERPROFILE'] + for var in import_env: + v = os.environ.get(var) + if v: + env['ENV'][var] = v + + if 'COMSPEC' not in env['ENV']: + v = os.environ.get("COMSPEC") + if v: + env['ENV']['COMSPEC'] = v + + env.AppendENVPath('PATH', get_system_root() + '\\System32') + + env['ENV']['PATHEXT'] = '.COM;.EXE;.BAT;.CMD' + env['OBJPREFIX'] = '' + env['OBJSUFFIX'] = '.obj' + env['SHOBJPREFIX'] = '$OBJPREFIX' + env['SHOBJSUFFIX'] = '$OBJSUFFIX' + env['PROGPREFIX'] = '' + env['PROGSUFFIX'] = '.exe' + env['LIBPREFIX'] = '' + env['LIBSUFFIX'] = '.lib' + env['SHLIBPREFIX'] = '' + env['SHLIBSUFFIX'] = '.dll' + env['LIBPREFIXES'] = [ '$LIBPREFIX' ] + env['LIBSUFFIXES'] = [ '$LIBSUFFIX' ] + env['PSPAWN'] = piped_spawn + env['SPAWN'] = spawn + env['SHELL'] = cmd_interp + env['TEMPFILE'] = TempFileMunge + env['TEMPFILEPREFIX'] = '@' + env['MAXLINELENGTH'] = 2048 + env['ESCAPE'] = escape + + env['HOST_OS'] = 'win32' + env['HOST_ARCH'] = get_architecture().arch + + if enable_virtualenv and not ignore_virtualenv: + ImportVirtualenv(env) + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/SConf.py b/scons/scons-local-4.5.1/SCons/SConf.py new file mode 100644 index 000000000..136be279b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/SConf.py @@ -0,0 +1,1156 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Autoconf-like configuration support. + +In other words, SConf allows to run tests on the build machine to detect +capabilities of system and do some things based on result: generate config +files, header files for C/C++, update variables in environment. + +Tests on the build system can detect if compiler sees header files, if +libraries are installed, if some command line options are supported etc. +""" + +import SCons.compat + +import atexit +import io +import os +import re +import sys +import traceback + +import SCons.Action +import SCons.Builder +import SCons.Errors +import SCons.Taskmaster.Job +import SCons.Node.FS +import SCons.Taskmaster +import SCons.Util +import SCons.Warnings +import SCons.Conftest + +from SCons.Debug import Trace +from collections import defaultdict + +# Turn off the Conftest error logging +SCons.Conftest.LogInputFiles = 0 +SCons.Conftest.LogErrorMessages = 0 + +# Set +build_type = None +build_types = ['clean', 'help'] + +def SetBuildType(buildtype): + global build_type + build_type = buildtype + +# to be set, if we are in dry-run mode +dryrun = 0 + +AUTO=0 # use SCons dependency scanning for up-to-date checks +FORCE=1 # force all tests to be rebuilt +CACHE=2 # force all tests to be taken from cache (raise an error, if necessary) +cache_mode = AUTO + +def _set_conftest_node(node): + node.attributes.conftest_node = 1 + +def SetCacheMode(mode): + """Set the Configure cache mode. mode must be one of "auto", "force", + or "cache".""" + global cache_mode + if mode == "auto": + cache_mode = AUTO + elif mode == "force": + cache_mode = FORCE + elif mode == "cache": + cache_mode = CACHE + else: + raise ValueError("SCons.SConf.SetCacheMode: Unknown mode " + mode) + +progress_display = SCons.Util.display # will be overwritten by SCons.Script +def SetProgressDisplay(display): + """Set the progress display to use (called from SCons.Script)""" + global progress_display + progress_display = display + +SConfFS = None + +_ac_build_counter = defaultdict(int) +_ac_config_logs = {} # all config.log files created in this build +_ac_config_hs = {} # all config.h files created in this build +sconf_global = None # current sconf object + +def _createConfigH(target, source, env): + t = open(str(target[0]), "w") + defname = re.sub('[^A-Za-z0-9_]', '_', str(target[0]).upper()) + t.write("""#ifndef %(DEFNAME)s_SEEN +#define %(DEFNAME)s_SEEN + +""" % {'DEFNAME' : defname}) + t.write(source[0].get_contents().decode()) + t.write(""" +#endif /* %(DEFNAME)s_SEEN */ +""" % {'DEFNAME' : defname}) + t.close() + +def _stringConfigH(target, source, env): + return "scons: Configure: creating " + str(target[0]) + + +def NeedConfigHBuilder(): + if len(_ac_config_hs) == 0: + return False + else: + return True + +def CreateConfigHBuilder(env): + """Called if necessary just before the building targets phase begins.""" + action = SCons.Action.Action(_createConfigH, + _stringConfigH) + sconfigHBld = SCons.Builder.Builder(action=action) + env.Append( BUILDERS={'SConfigHBuilder':sconfigHBld} ) + for k, v in _ac_config_hs.items(): + env.SConfigHBuilder(k, env.Value(v)) + + +class SConfWarning(SCons.Warnings.SConsWarning): + pass +SCons.Warnings.enableWarningClass(SConfWarning) + +# some error definitions +class SConfError(SCons.Errors.UserError): + def __init__(self,msg): + super().__init__(msg) + +class ConfigureDryRunError(SConfError): + """Raised when a file or directory needs to be updated during a Configure + process, but the user requested a dry-run""" + def __init__(self,target): + if not isinstance(target, SCons.Node.FS.File): + msg = 'Cannot create configure directory "%s" within a dry-run.' % str(target) + else: + msg = 'Cannot update configure test "%s" within a dry-run.' % str(target) + super().__init__(msg) + +class ConfigureCacheError(SConfError): + """Raised when a use explicitely requested the cache feature, but the test + is run the first time.""" + def __init__(self,target): + super().__init__('"%s" is not yet built and cache is forced.' % str(target)) + + +# define actions for building text files +def _createSource(target, source, env): + fd = open(str(target[0]), "w") + fd.write(source[0].get_contents().decode()) + fd.close() + + +def _stringSource( target, source, env ): + return (str(target[0]) + ' <-\n |' + + source[0].get_contents().decode().replace( '\n', "\n |" ) ) + +class SConfBuildInfo(SCons.Node.FS.FileBuildInfo): + """ + Special build info for targets of configure tests. Additional members + are result (did the builder succeed last time?) and string, which + contains messages of the original build phase. + """ + __slots__ = ('result', 'string') + + def __init__(self): + self.result = None # -> 0/None -> no error, != 0 error + self.string = None # the stdout / stderr output when building the target + + def set_build_result(self, result, string): + self.result = result + self.string = string + + +class Streamer: + """ + 'Sniffer' for a file-like writable object. Similar to the unix tool tee. + """ + def __init__(self, orig): + self.orig = orig + self.s = io.StringIO() + + def write(self, str): + if self.orig: + self.orig.write(str) + try: + self.s.write(str) + except TypeError as e: + # "unicode argument expected" bug in IOStream (python 2.x) + self.s.write(str.decode()) + + def writelines(self, lines): + for l in lines: + self.write(l + '\n') + + def getvalue(self): + """ + Return everything written to orig since the Streamer was created. + """ + return self.s.getvalue() + + def flush(self): + if self.orig: + self.orig.flush() + self.s.flush() + + +class SConfBuildTask(SCons.Taskmaster.AlwaysTask): + """ + This is almost the same as SCons.Script.BuildTask. Handles SConfErrors + correctly and knows about the current cache_mode. + """ + non_sconf_nodes = set() + + def display(self, message): + if sconf_global.logstream: + sconf_global.logstream.write("scons: Configure: " + message + "\n") + + def display_cached_string(self, bi): + """ + Logs the original builder messages, given the SConfBuildInfo instance + bi. + """ + if not isinstance(bi, SConfBuildInfo): + SCons.Warnings.warn( + SConfWarning, + "The stored build information has an unexpected class: %s" % bi.__class__ + ) + else: + self.display("The original builder output was:\n" + + (" |" + str(bi.string)).replace("\n", "\n |")) + + def failed(self): + # check, if the reason was a ConfigureDryRunError or a + # ConfigureCacheError and if yes, reraise the exception + exc_type = self.exc_info()[0] + if issubclass(exc_type, SConfError): + # TODO pylint E0704: bare raise not inside except + raise + elif issubclass(exc_type, SCons.Errors.BuildError): + # we ignore Build Errors (occurs, when a test doesn't pass) + # Clear the exception to prevent the contained traceback + # to build a reference cycle. + self.exc_clear() + else: + self.display('Caught exception while building "%s":\n' % + self.targets[0]) + sys.excepthook(*self.exc_info()) + return SCons.Taskmaster.Task.failed(self) + + def collect_node_states(self): + # returns (is_up_to_date, cached_error, cachable) + # where is_up_to_date is 1, if the node(s) are up_to_date + # cached_error is 1, if the node(s) are up_to_date, but the + # build will fail + # cachable is 0, if some nodes are not in our cache + T = 0 + changed = False + cached_error = False + cachable = True + for t in self.targets: + if T: Trace('%s' % t) + bi = t.get_stored_info().binfo + if isinstance(bi, SConfBuildInfo): + if T: Trace(': SConfBuildInfo') + if cache_mode == CACHE: + t.set_state(SCons.Node.up_to_date) + if T: Trace(': set_state(up_to-date)') + else: + if T: Trace(': get_state() %s' % t.get_state()) + if T: Trace(': changed() %s' % t.changed()) + if t.get_state() != SCons.Node.up_to_date and t.changed(): + changed = True + if T: Trace(': changed %s' % changed) + cached_error = cached_error or bi.result + else: + if T: Trace(': else') + # the node hasn't been built in a SConf context or doesn't + # exist + cachable = False + changed = ( t.get_state() != SCons.Node.up_to_date ) + if T: Trace(': changed %s' % changed) + if T: Trace('\n') + return (not changed, cached_error, cachable) + + def execute(self): + if not self.targets[0].has_builder(): + return + + sconf = sconf_global + + is_up_to_date, cached_error, cachable = self.collect_node_states() + + if cache_mode == CACHE and not cachable: + raise ConfigureCacheError(self.targets[0]) + elif cache_mode == FORCE: + is_up_to_date = 0 + + if cached_error and is_up_to_date: + self.display("Building \"%s\" failed in a previous run and all " + "its sources are up to date." % str(self.targets[0])) + binfo = self.targets[0].get_stored_info().binfo + self.display_cached_string(binfo) + raise SCons.Errors.BuildError # will be 'caught' in self.failed + elif is_up_to_date: + self.display("\"%s\" is up to date." % str(self.targets[0])) + binfo = self.targets[0].get_stored_info().binfo + self.display_cached_string(binfo) + elif dryrun: + raise ConfigureDryRunError(self.targets[0]) + else: + # note stdout and stderr are the same here + s = sys.stdout = sys.stderr = Streamer(sys.stdout) + try: + env = self.targets[0].get_build_env() + env['PSTDOUT'] = env['PSTDERR'] = s + try: + sconf.cached = 0 + self.targets[0].build() + finally: + sys.stdout = sys.stderr = env['PSTDOUT'] = \ + env['PSTDERR'] = sconf.logstream + except KeyboardInterrupt: + raise + except SystemExit: + exc_value = sys.exc_info()[1] + raise SCons.Errors.ExplicitExit(self.targets[0],exc_value.code) + except Exception as e: + for t in self.targets: + binfo = SConfBuildInfo() + binfo.merge(t.get_binfo()) + binfo.set_build_result(1, s.getvalue()) + sconsign_entry = SCons.SConsign.SConsignEntry() + sconsign_entry.binfo = binfo + #sconsign_entry.ninfo = self.get_ninfo() + # We'd like to do this as follows: + # t.store_info(binfo) + # However, we need to store it as an SConfBuildInfo + # object, and store_info() will turn it into a + # regular FileNodeInfo if the target is itself a + # regular File. + sconsign = t.dir.sconsign() + sconsign.set_entry(t.name, sconsign_entry) + sconsign.merge() + raise e + else: + for t in self.targets: + binfo = SConfBuildInfo() + binfo.merge(t.get_binfo()) + binfo.set_build_result(0, s.getvalue()) + sconsign_entry = SCons.SConsign.SConsignEntry() + sconsign_entry.binfo = binfo + #sconsign_entry.ninfo = self.get_ninfo() + # We'd like to do this as follows: + # t.store_info(binfo) + # However, we need to store it as an SConfBuildInfo + # object, and store_info() will turn it into a + # regular FileNodeInfo if the target is itself a + # regular File. + sconsign = t.dir.sconsign() + sconsign.set_entry(t.name, sconsign_entry) + sconsign.merge() + + def make_ready_current(self): + # We're overriding make_ready_current() call to add to the list + # of nodes used by this task, filtering out any nodes created + # by the checker for it's own purpose. + self.non_sconf_nodes.update([t for t in self.targets if not t.is_conftest()]) + super().make_ready_current() + make_ready = make_ready_current + + def postprocess(self): + # We're done executing this task, so now we'll go through all the + # nodes used by this task which aren't nodes created for + # Configure checkers, but rather are existing or built files + # and reset their node info. + # If we do not reset their node info, any changes in these + # nodes will not trigger builds in the normal build process + for node in self.non_sconf_nodes: + node.ninfo = node.new_ninfo() + super().postprocess() + +class SConfBase: + """This is simply a class to represent a configure context. After + creating a SConf object, you can call any tests. After finished with your + tests, be sure to call the Finish() method, which returns the modified + environment. + Some words about caching: In most cases, it is not necessary to cache + Test results explicitly. Instead, we use the scons dependency checking + mechanism. For example, if one wants to compile a test program + (SConf.TryLink), the compiler is only called, if the program dependencies + have changed. However, if the program could not be compiled in a former + SConf run, we need to explicitly cache this error. + """ + + def __init__(self, env, custom_tests = {}, conf_dir='$CONFIGUREDIR', + log_file='$CONFIGURELOG', config_h = None, _depth = 0): + """Constructor. Pass additional tests in the custom_tests-dictionary, + e.g. custom_tests={'CheckPrivate':MyPrivateTest}, where MyPrivateTest + defines a custom test. + Note also the conf_dir and log_file arguments (you may want to + build tests in the VariantDir, not in the SourceDir) + """ + global SConfFS + + # Now create isolated override so setting source_decider doesn't affect parent Environment + if cache_mode == FORCE: + self.original_env = env + self.env = env.Clone() + + # Set up the Decider() to force rebuilds by saying + # that every source has changed. Note that we still + # call the environment's underlying source decider so + # that the correct .sconsign info will get calculated + # and keep the build state consistent. + def force_build(dependency, target, prev_ni, + repo_node=None, + env_decider=env.decide_source): + try: + env_decider(dependency, target, prev_ni, repo_node) + except Exception as e: + raise e + return True + + if self.env.decide_source.__code__ is not force_build.__code__: + self.env.Decider(force_build) + + else: + self.env = env + + # print("Override env:%s"%env) + + if not SConfFS: + SConfFS = SCons.Node.FS.default_fs or \ + SCons.Node.FS.FS(env.fs.pathTop) + if sconf_global is not None: + raise SCons.Errors.UserError("""Configure() called while another Configure() exists. + Please call .Finish() before creating and second Configure() context""") + + if log_file is not None: + log_file = SConfFS.File(env.subst(log_file)) + self.logfile = log_file + self.logstream = None + self.lastTarget = None + self.depth = _depth + self.cached = 0 # will be set, if all test results are cached + + # add default tests + default_tests = { + 'CheckCC' : CheckCC, + 'CheckCXX' : CheckCXX, + 'CheckSHCC' : CheckSHCC, + 'CheckSHCXX' : CheckSHCXX, + 'CheckFunc' : CheckFunc, + 'CheckType' : CheckType, + 'CheckTypeSize' : CheckTypeSize, + 'CheckMember' : CheckMember, + 'CheckDeclaration' : CheckDeclaration, + 'CheckHeader' : CheckHeader, + 'CheckCHeader' : CheckCHeader, + 'CheckCXXHeader' : CheckCXXHeader, + 'CheckLib' : CheckLib, + 'CheckLibWithHeader' : CheckLibWithHeader, + 'CheckProg' : CheckProg, + } + self.AddTests(default_tests) + self.AddTests(custom_tests) + self.confdir = SConfFS.Dir(env.subst(conf_dir)) + if config_h is not None: + config_h = SConfFS.File(config_h) + self.config_h = config_h + self._startup() + + def Finish(self): + """Call this method after finished with your tests: + env = sconf.Finish() + """ + self._shutdown() + + return self.env + + def Define(self, name, value = None, comment = None): + """ + Define a pre processor symbol name, with the optional given value in the + current config header. + + If value is None (default), then #define name is written. If value is not + none, then #define name value is written. + + comment is a string which will be put as a C comment in the header, to explain the meaning of the value + (appropriate C comments will be added automatically). + """ + lines = [] + if comment: + comment_str = "/* %s */" % comment + lines.append(comment_str) + + if value is not None: + define_str = "#define %s %s" % (name, value) + else: + define_str = "#define %s" % name + lines.append(define_str) + lines.append('') + + self.config_h_text = self.config_h_text + '\n'.join(lines) + + def BuildNodes(self, nodes): + """ + Tries to build the given nodes immediately. Returns 1 on success, + 0 on error. + """ + if self.logstream is not None: + # override stdout / stderr to write in log file + oldStdout = sys.stdout + sys.stdout = self.logstream + oldStderr = sys.stderr + sys.stderr = self.logstream + + # the engine assumes the current path is the SConstruct directory ... + old_fs_dir = SConfFS.getcwd() + old_os_dir = os.getcwd() + SConfFS.chdir(SConfFS.Top, change_os_dir=True) + + # Because we take responsibility here for writing out our + # own .sconsign info (see SConfBuildTask.execute(), above), + # we override the store_info() method with a null place-holder + # so we really control how it gets written. + for n in nodes: + _set_conftest_node(n) + n.store_info = 0 + if not hasattr(n, 'attributes'): + n.attributes = SCons.Node.Node.Attrs() + n.attributes.keep_targetinfo = 1 + + if True: + # Some checkers have intermediate files (for example anything that compiles a c file into a program to run + # Those files need to be set to not release their target info, otherwise taskmaster will throw a + # Nonetype not callable + for c in n.children(scan=False): + # Keep debug code here. + # print("Checking [%s] for builders and then setting keep_targetinfo"%c) + _set_conftest_node(c) + if c.has_builder(): + n.store_info = 0 + if not hasattr(c, 'attributes'): + c.attributes = SCons.Node.Node.Attrs() + c.attributes.keep_targetinfo = 1 + # pass + + ret = 1 + + try: + # ToDo: use user options for calc + save_max_drift = SConfFS.get_max_drift() + SConfFS.set_max_drift(0) + tm = SCons.Taskmaster.Taskmaster(nodes, SConfBuildTask) + # we don't want to build tests in parallel + jobs = SCons.Taskmaster.Job.Jobs(1, tm) + jobs.run() + for n in nodes: + state = n.get_state() + if (state != SCons.Node.executed and + state != SCons.Node.up_to_date): + # the node could not be built. we return 0 in this case + ret = 0 + finally: + SConfFS.set_max_drift(save_max_drift) + os.chdir(old_os_dir) + SConfFS.chdir(old_fs_dir, change_os_dir=False) + if self.logstream is not None: + # restore stdout / stderr + sys.stdout = oldStdout + sys.stderr = oldStderr + return ret + + def pspawn_wrapper(self, sh, escape, cmd, args, env): + """Wrapper function for handling piped spawns. + + This looks to the calling interface (in Action.py) like a "normal" + spawn, but associates the call with the PSPAWN variable from + the construction environment and with the streams to which we + want the output logged. This gets slid into the construction + environment as the SPAWN variable so Action.py doesn't have to + know or care whether it's spawning a piped command or not. + """ + return self.pspawn(sh, escape, cmd, args, env, self.logstream, self.logstream) + + def TryBuild(self, builder, text=None, extension=""): + """Low level TryBuild implementation. Normally you don't need to + call that - you can use TryCompile / TryLink / TryRun instead + """ + global _ac_build_counter + + # Make sure we have a PSPAWN value, and save the current + # SPAWN value. + try: + self.pspawn = self.env['PSPAWN'] + except KeyError: + raise SCons.Errors.UserError('Missing PSPAWN construction variable.') + try: + save_spawn = self.env['SPAWN'] + except KeyError: + raise SCons.Errors.UserError('Missing SPAWN construction variable.') + + nodesToBeBuilt = [] + sourcetext = self.env.Value(text) + _set_conftest_node(sourcetext) + f = "conftest" + + if text is not None: + textSig = SCons.Util.hash_signature(sourcetext) + textSigCounter = str(_ac_build_counter[textSig]) + _ac_build_counter[textSig] += 1 + + f = "_".join([f, textSig, textSigCounter]) + textFile = self.confdir.File(f + extension) + _set_conftest_node(textFile) + textFileNode = self.env.SConfSourceBuilder(target=textFile, + source=sourcetext) + nodesToBeBuilt.extend(textFileNode) + + source = textFile + target = textFile.File(f + "SConfActionsContentDummyTarget") + _set_conftest_node(target) + else: + source = None + target = None + + action = builder.builder.action.get_contents(target=target, source=[source], env=self.env) + actionsig = SCons.Util.hash_signature(action) + f = "_".join([f, actionsig]) + + pref = self.env.subst( builder.builder.prefix ) + suff = self.env.subst( builder.builder.suffix ) + target = self.confdir.File(pref + f + suff) + _set_conftest_node(target) + + try: + # Slide our wrapper into the construction environment as + # the SPAWN function. + self.env['SPAWN'] = self.pspawn_wrapper + + nodes = builder(target = target, source = source, SCONF_NODE=True) + if not SCons.Util.is_List(nodes): + nodes = [nodes] + nodesToBeBuilt.extend(nodes) + result = self.BuildNodes(nodesToBeBuilt) + + finally: + self.env['SPAWN'] = save_spawn + + if result: + self.lastTarget = nodes[0] + else: + self.lastTarget = None + + return result + + def TryAction(self, action, text = None, extension = ""): + """Tries to execute the given action with optional source file + contents and optional source file extension , + Returns the status (0 : failed, 1 : ok) and the contents of the + output file. + """ + builder = SCons.Builder.Builder(action=action) + self.env.Append( BUILDERS = {'SConfActionBuilder' : builder} ) + ok = self.TryBuild(self.env.SConfActionBuilder, text, extension) + del self.env['BUILDERS']['SConfActionBuilder'] + if ok: + outputStr = self.lastTarget.get_text_contents() + return (1, outputStr) + return (0, "") + + def TryCompile( self, text, extension): + """Compiles the program given in text to an env.Object, using extension + as file extension (e.g. '.c'). Returns 1, if compilation was + successful, 0 otherwise. The target is saved in self.lastTarget (for + further processing). + """ + return self.TryBuild(self.env.Object, text, extension) + + def TryLink( self, text, extension ): + """Compiles the program given in text to an executable env.Program, + using extension as file extension (e.g. '.c'). Returns 1, if + compilation was successful, 0 otherwise. The target is saved in + self.lastTarget (for further processing). + """ + return self.TryBuild(self.env.Program, text, extension ) + + def TryRun(self, text, extension ): + """Compiles and runs the program given in text, using extension + as file extension (e.g. '.c'). Returns (1, outputStr) on success, + (0, '') otherwise. The target (a file containing the program's stdout) + is saved in self.lastTarget (for further processing). + """ + ok = self.TryLink(text, extension) + if ok: + prog = self.lastTarget + pname = prog.get_internal_path() + output = self.confdir.File(os.path.basename(pname)+'.out') + node = self.env.Command(output, prog, [ [ pname, ">", "${TARGET}"] ]) + ok = self.BuildNodes(node) + if ok: + outputStr = SCons.Util.to_str(output.get_contents()) + return( 1, outputStr) + return (0, "") + + class TestWrapper: + """A wrapper around Tests (to ensure sanity)""" + def __init__(self, test, sconf): + self.test = test + self.sconf = sconf + def __call__(self, *args, **kw): + if not self.sconf.active: + raise SCons.Errors.UserError + context = CheckContext(self.sconf) + ret = self.test(context, *args, **kw) + if self.sconf.config_h is not None: + self.sconf.config_h_text = self.sconf.config_h_text + context.config_h + context.Result("error: no result") + return ret + + def AddTest(self, test_name, test_instance): + """Adds test_class to this SConf instance. It can be called with + self.test_name(...)""" + setattr(self, test_name, SConfBase.TestWrapper(test_instance, self)) + + def AddTests(self, tests): + """Adds all the tests given in the tests dictionary to this SConf + instance + """ + for name in tests.keys(): + self.AddTest(name, tests[name]) + + def _createDir( self, node ): + dirName = str(node) + if dryrun: + if not os.path.isdir( dirName ): + raise ConfigureDryRunError(dirName) + else: + if not os.path.isdir( dirName ): + os.makedirs( dirName ) + + def _startup(self): + """Private method. Set up logstream, and set the environment + variables necessary for a piped build + """ + global _ac_config_logs + global sconf_global + global SConfFS + + self.lastEnvFs = self.env.fs + self.env.fs = SConfFS + self._createDir(self.confdir) + self.confdir.up().add_ignore( [self.confdir] ) + + if self.logfile is not None and not dryrun: + # truncate logfile, if SConf.Configure is called for the first time + # in a build + if self.logfile in _ac_config_logs: + log_mode = "a" + else: + _ac_config_logs[self.logfile] = None + log_mode = "w" + fp = open(str(self.logfile), log_mode) + + def conflog_cleanup(logf): + logf.close() + + atexit.register(conflog_cleanup, fp) + self.logstream = SCons.Util.Unbuffered(fp) + # logfile may stay in a build directory, so we tell + # the build system not to override it with an eventually + # existing file with the same name in the source directory + self.logfile.dir.add_ignore([self.logfile]) + + tb = traceback.extract_stack()[-3-self.depth] + old_fs_dir = SConfFS.getcwd() + SConfFS.chdir(SConfFS.Top, change_os_dir=False) + self.logstream.write('file %s,line %d:\n\tConfigure(confdir = %s)\n' % + (tb[0], tb[1], str(self.confdir)) ) + SConfFS.chdir(old_fs_dir) + else: + self.logstream = None + # we use a special builder to create source files from TEXT + action = SCons.Action.Action(_createSource, + _stringSource) + sconfSrcBld = SCons.Builder.Builder(action=action) + self.env.Append( BUILDERS={'SConfSourceBuilder':sconfSrcBld} ) + self.config_h_text = _ac_config_hs.get(self.config_h, "") + self.active = 1 + # only one SConf instance should be active at a time ... + sconf_global = self + + def _shutdown(self): + """Private method. Reset to non-piped spawn""" + global sconf_global, _ac_config_hs + + if not self.active: + raise SCons.Errors.UserError("Finish may be called only once!") + if self.logstream is not None and not dryrun: + self.logstream.write("\n") + self.logstream.close() + self.logstream = None + + # Now reset the decider if we changed it due to --config=force + # We saved original Environment passed in and cloned it to isolate + # it from being changed. + if cache_mode == FORCE: + self.env.Decider(self.original_env.decide_source) + + # remove the SConfSourceBuilder from the environment + blds = self.env['BUILDERS'] + del blds['SConfSourceBuilder'] + self.env.Replace( BUILDERS=blds ) + + self.active = 0 + sconf_global = None + if self.config_h is not None: + _ac_config_hs[self.config_h] = self.config_h_text + self.env.fs = self.lastEnvFs + +class CheckContext: + """Provides a context for configure tests. Defines how a test writes to the + screen and log file. + + A typical test is just a callable with an instance of CheckContext as + first argument: + + def CheckCustom(context, ...): + context.Message('Checking my weird test ... ') + ret = myWeirdTestFunction(...) + context.Result(ret) + + Often, myWeirdTestFunction will be one of + context.TryCompile/context.TryLink/context.TryRun. The results of + those are cached, for they are only rebuild, if the dependencies have + changed. + """ + + def __init__(self, sconf): + """Constructor. Pass the corresponding SConf instance.""" + self.sconf = sconf + self.did_show_result = 0 + + # for Conftest.py: + self.vardict = {} + self.havedict = {} + self.headerfilename = None + self.config_h = "" # config_h text will be stored here + # we don't regenerate the config.h file after each test. That means, + # that tests won't be able to include the config.h file, and so + # they can't do an #ifdef HAVE_XXX_H. This shouldn't be a major + # issue, though. If it turns out, that we need to include config.h + # in tests, we must ensure, that the dependencies are worked out + # correctly. Note that we can't use Conftest.py's support for config.h, + # cause we will need to specify a builder for the config.h file ... + + def Message(self, text): + """Inform about what we are doing right now, e.g. + 'Checking for SOMETHING ... ' + """ + self.Display(text) + self.sconf.cached = 1 + self.did_show_result = 0 + + def Result(self, res): + """Inform about the result of the test. If res is not a string, displays + 'yes' or 'no' depending on whether res is evaluated as true or false. + The result is only displayed when self.did_show_result is not set. + """ + if isinstance(res, str): + text = res + elif res: + text = "yes" + else: + text = "no" + + if self.did_show_result == 0: + # Didn't show result yet, do it now. + self.Display(text + "\n") + self.did_show_result = 1 + + def TryBuild(self, *args, **kw): + return self.sconf.TryBuild(*args, **kw) + + def TryAction(self, *args, **kw): + return self.sconf.TryAction(*args, **kw) + + def TryCompile(self, *args, **kw): + return self.sconf.TryCompile(*args, **kw) + + def TryLink(self, *args, **kw): + return self.sconf.TryLink(*args, **kw) + + def TryRun(self, *args, **kw): + return self.sconf.TryRun(*args, **kw) + + def __getattr__( self, attr ): + if attr == 'env': + return self.sconf.env + elif attr == 'lastTarget': + return self.sconf.lastTarget + else: + raise AttributeError("CheckContext instance has no attribute '%s'" % attr) + + #### Stuff used by Conftest.py (look there for explanations). + + def BuildProg(self, text, ext): + self.sconf.cached = 1 + # TODO: should use self.vardict for $CC, $CPPFLAGS, etc. + return not self.TryBuild(self.env.Program, text, ext) + + def CompileProg(self, text, ext): + self.sconf.cached = 1 + # TODO: should use self.vardict for $CC, $CPPFLAGS, etc. + return not self.TryBuild(self.env.Object, text, ext) + + def CompileSharedObject(self, text, ext): + self.sconf.cached = 1 + # TODO: should use self.vardict for $SHCC, $CPPFLAGS, etc. + return not self.TryBuild(self.env.SharedObject, text, ext) + + def RunProg(self, text, ext): + self.sconf.cached = 1 + # TODO: should use self.vardict for $CC, $CPPFLAGS, etc. + st, out = self.TryRun(text, ext) + return not st, out + + def AppendLIBS(self, lib_name_list, unique=False): + oldLIBS = self.env.get( 'LIBS', [] ) + if unique: + self.env.AppendUnique(LIBS = lib_name_list) + else: + self.env.Append(LIBS = lib_name_list) + return oldLIBS + + def PrependLIBS(self, lib_name_list, unique=False): + oldLIBS = self.env.get( 'LIBS', [] ) + if unique: + self.env.PrependUnique(LIBS = lib_name_list) + else: + self.env.Prepend(LIBS = lib_name_list) + return oldLIBS + + def SetLIBS(self, val): + oldLIBS = self.env.get( 'LIBS', [] ) + self.env.Replace(LIBS = val) + return oldLIBS + + def Display(self, msg): + if self.sconf.cached: + # We assume that Display is called twice for each test here + # once for the Checking for ... message and once for the result. + # The self.sconf.cached flag can only be set between those calls + msg = "(cached) " + msg + self.sconf.cached = 0 + progress_display(msg, append_newline=0) + self.Log("scons: Configure: " + msg + "\n") + + def Log(self, msg): + if self.sconf.logstream is not None: + self.sconf.logstream.write(msg) + + #### End of stuff used by Conftest.py. + + +def SConf(*args, **kw): + if kw.get(build_type, True): + kw['_depth'] = kw.get('_depth', 0) + 1 + for bt in build_types: + try: + del kw[bt] + except KeyError: + pass + return SConfBase(*args, **kw) + else: + return SCons.Util.Null() + + +def CheckFunc(context, function_name, header = None, language = None): + res = SCons.Conftest.CheckFunc(context, function_name, header = header, language = language) + context.did_show_result = 1 + return not res + +def CheckType(context, type_name, includes = "", language = None): + res = SCons.Conftest.CheckType(context, type_name, + header = includes, language = language) + context.did_show_result = 1 + return not res + +def CheckTypeSize(context, type_name, includes = "", language = None, expect = None): + res = SCons.Conftest.CheckTypeSize(context, type_name, + header = includes, language = language, + expect = expect) + context.did_show_result = 1 + return res + +def CheckDeclaration(context, declaration, includes = "", language = None): + res = SCons.Conftest.CheckDeclaration(context, declaration, + includes = includes, + language = language) + context.did_show_result = 1 + return not res + +def CheckMember(context, aggregate_member, header = None, language = None): + '''Returns the status (False : failed, True : ok).''' + res = SCons.Conftest.CheckMember(context, aggregate_member, header=header, language=language) + context.did_show_result = 1 + return not res + + +def createIncludesFromHeaders(headers, leaveLast, include_quotes = '""'): + # used by CheckHeader and CheckLibWithHeader to produce C - #include + # statements from the specified header (list) + if not SCons.Util.is_List(headers): + headers = [headers] + l = [] + if leaveLast: + lastHeader = headers[-1] + headers = headers[:-1] + else: + lastHeader = None + for s in headers: + l.append("#include %s%s%s\n" + % (include_quotes[0], s, include_quotes[1])) + return ''.join(l), lastHeader + +def CheckHeader(context, header, include_quotes = '<>', language = None): + """ + A test for a C or C++ header file. + """ + prog_prefix, hdr_to_check = \ + createIncludesFromHeaders(header, 1, include_quotes) + res = SCons.Conftest.CheckHeader(context, hdr_to_check, prog_prefix, + language = language, + include_quotes = include_quotes) + context.did_show_result = 1 + return not res + +def CheckCC(context): + res = SCons.Conftest.CheckCC(context) + context.did_show_result = 1 + return not res + +def CheckCXX(context): + res = SCons.Conftest.CheckCXX(context) + context.did_show_result = 1 + return not res + +def CheckSHCC(context): + res = SCons.Conftest.CheckSHCC(context) + context.did_show_result = 1 + return not res + +def CheckSHCXX(context): + res = SCons.Conftest.CheckSHCXX(context) + context.did_show_result = 1 + return not res + +# Bram: Make this function obsolete? CheckHeader() is more generic. + +def CheckCHeader(context, header, include_quotes = '""'): + """ + A test for a C header file. + """ + return CheckHeader(context, header, include_quotes, language = "C") + + +# Bram: Make this function obsolete? CheckHeader() is more generic. + +def CheckCXXHeader(context, header, include_quotes = '""'): + """ + A test for a C++ header file. + """ + return CheckHeader(context, header, include_quotes, language = "C++") + + +def CheckLib(context, library = None, symbol = "main", + header = None, language = None, autoadd=True, + append=True, unique=False) -> bool: + """ + A test for a library. See also CheckLibWithHeader. + Note that library may also be None to test whether the given symbol + compiles without flags. + """ + + if not library: + library = [None] + + if not SCons.Util.is_List(library): + library = [library] + + # ToDo: accept path for the library + res = SCons.Conftest.CheckLib(context, library, symbol, header = header, + language = language, autoadd = autoadd, + append=append, unique=unique) + context.did_show_result = True + return not res + +# XXX +# Bram: Can only include one header and can't use #ifdef HAVE_HEADER_H. + +def CheckLibWithHeader(context, libs, header, language, + call = None, autoadd=True, append=True, unique=False) -> bool: + # ToDo: accept path for library. Support system header files. + """ + Another (more sophisticated) test for a library. + Checks, if library and header is available for language (may be 'C' + or 'CXX'). Call maybe be a valid expression _with_ a trailing ';'. + As in CheckLib, we support library=None, to test if the call compiles + without extra link flags. + """ + prog_prefix, dummy = createIncludesFromHeaders(header, 0) + if not libs: + libs = [None] + + if not SCons.Util.is_List(libs): + libs = [libs] + + res = SCons.Conftest.CheckLib(context, libs, None, prog_prefix, + call = call, language = language, autoadd=autoadd, + append=append, unique=unique) + context.did_show_result = 1 + return not res + +def CheckProg(context, prog_name): + """Simple check if a program exists in the path. Returns the path + for the application, or None if not found. + """ + res = SCons.Conftest.CheckProg(context, prog_name) + context.did_show_result = 1 + return res + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/SConsign.py b/scons/scons-local-4.5.1/SCons/SConsign.py new file mode 100644 index 000000000..ecca39127 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/SConsign.py @@ -0,0 +1,453 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Operations on signature database files (.sconsign). """ + +import SCons.compat + +import os +import pickle +import time + +import SCons.dblite +import SCons.Warnings +from SCons.compat import PICKLE_PROTOCOL +from SCons.Util import print_time + + +def corrupt_dblite_warning(filename): + SCons.Warnings.warn( + SCons.Warnings.CorruptSConsignWarning, + "Ignoring corrupt .sconsign file: %s" % filename, + ) + +SCons.dblite.IGNORE_CORRUPT_DBFILES = True +SCons.dblite.corruption_warning = corrupt_dblite_warning + +# XXX Get rid of the global array so this becomes re-entrant. +sig_files = [] + +# Info for the database SConsign implementation (now the default): +# "DataBase" is a dictionary that maps top-level SConstruct directories +# to open database handles. +# "DB_Module" is the Python database module to create the handles. +# "DB_Name" is the base name of the database file (minus any +# extension the underlying DB module will add). +DataBase = {} +DB_Module = SCons.dblite +DB_Name = None +DB_sync_list = [] + +def current_sconsign_filename(): + hash_format = SCons.Util.get_hash_format() + current_hash_algorithm = SCons.Util.get_current_hash_algorithm_used() + # if the user left the options defaulted AND the default algorithm set by + # SCons is md5, then set the database name to be the special default name + # + # otherwise, if it defaults to something like 'sha1' or the user explicitly + # set 'md5' as the hash format, set the database name to .sconsign_ + # eg .sconsign_sha1, etc. + if hash_format is None and current_hash_algorithm == 'md5': + return ".sconsign" + else: + return ".sconsign_" + current_hash_algorithm + +def Get_DataBase(dir): + global DataBase, DB_Module, DB_Name + + if DB_Name is None: + DB_Name = current_sconsign_filename() + + top = dir.fs.Top + if not os.path.isabs(DB_Name) and top.repositories: + mode = "c" + for d in [top] + top.repositories: + if dir.is_under(d): + try: + return DataBase[d], mode + except KeyError: + path = d.entry_abspath(DB_Name) + try: db = DataBase[d] = DB_Module.open(path, mode) + except (IOError, OSError): + pass + else: + if mode != "r": + DB_sync_list.append(db) + return db, mode + mode = "r" + try: + return DataBase[top], "c" + except KeyError: + db = DataBase[top] = DB_Module.open(DB_Name, "c") + DB_sync_list.append(db) + return db, "c" + except TypeError: + print("DataBase =", DataBase) + raise + + +def Reset(): + """Reset global state. Used by unit tests that end up using + SConsign multiple times to get a clean slate for each test.""" + global sig_files, DB_sync_list + sig_files = [] + DB_sync_list = [] + +normcase = os.path.normcase + + +def write(): + global sig_files + + if print_time(): + start_time = time.perf_counter() + + for sig_file in sig_files: + sig_file.write(sync=0) + for db in DB_sync_list: + try: + syncmethod = db.sync + except AttributeError: + pass # Not all dbm modules have sync() methods. + else: + syncmethod() + try: + closemethod = db.close + except AttributeError: + pass # Not all dbm modules have close() methods. + else: + closemethod() + + if print_time(): + elapsed = time.perf_counter() - start_time + print('Total SConsign sync time: %f seconds' % elapsed) + + +class SConsignEntry: + """ + Wrapper class for the generic entry in a .sconsign file. + The Node subclass populates it with attributes as it pleases. + + XXX As coded below, we do expect a '.binfo' attribute to be added, + but we'll probably generalize this in the next refactorings. + """ + __slots__ = ("binfo", "ninfo", "__weakref__") + current_version_id = 2 + + def __init__(self): + # Create an object attribute from the class attribute so it ends up + # in the pickled data in the .sconsign file. + #_version_id = self.current_version_id + pass + + def convert_to_sconsign(self): + self.binfo.convert_to_sconsign() + + def convert_from_sconsign(self, dir, name): + self.binfo.convert_from_sconsign(dir, name) + + def __getstate__(self): + state = getattr(self, '__dict__', {}).copy() + for obj in type(self).mro(): + for name in getattr(obj, '__slots__', ()): + if hasattr(self, name): + state[name] = getattr(self, name) + + state['_version_id'] = self.current_version_id + try: + del state['__weakref__'] + except KeyError: + pass + return state + + def __setstate__(self, state): + for key, value in state.items(): + if key not in ('_version_id', '__weakref__'): + setattr(self, key, value) + + +class Base: + """ + This is the controlling class for the signatures for the collection of + entries associated with a specific directory. The actual directory + association will be maintained by a subclass that is specific to + the underlying storage method. This class provides a common set of + methods for fetching and storing the individual bits of information + that make up signature entry. + """ + def __init__(self): + self.entries = {} + self.dirty = False + self.to_be_merged = {} + + def get_entry(self, filename): + """ + Fetch the specified entry attribute. + """ + return self.entries[filename] + + def set_entry(self, filename, obj): + """ + Set the entry. + """ + self.entries[filename] = obj + self.dirty = True + + def do_not_set_entry(self, filename, obj): + pass + + def store_info(self, filename, node): + entry = node.get_stored_info() + entry.binfo.merge(node.get_binfo()) + self.to_be_merged[filename] = node + self.dirty = True + + def do_not_store_info(self, filename, node): + pass + + def merge(self): + for key, node in self.to_be_merged.items(): + entry = node.get_stored_info() + try: + ninfo = entry.ninfo + except AttributeError: + # This happens with SConf Nodes, because the configuration + # subsystem takes direct control over how the build decision + # is made and its information stored. + pass + else: + ninfo.merge(node.get_ninfo()) + self.entries[key] = entry + self.to_be_merged = {} + + +class DB(Base): + """ + A Base subclass that reads and writes signature information + from a global .sconsign.db* file--the actual file suffix is + determined by the database module. + """ + def __init__(self, dir): + super().__init__() + + self.dir = dir + + db, mode = Get_DataBase(dir) + + # Read using the path relative to the top of the Repository + # (self.dir.tpath) from which we're fetching the signature + # information. + path = normcase(dir.get_tpath()) + try: + rawentries = db[path] + except KeyError: + pass + else: + try: + self.entries = pickle.loads(rawentries) + if not isinstance(self.entries, dict): + self.entries = {} + raise TypeError + except KeyboardInterrupt: + raise + except Exception as e: + SCons.Warnings.warn(SCons.Warnings.CorruptSConsignWarning, + "Ignoring corrupt sconsign entry : %s (%s)\n"%(self.dir.get_tpath(), e)) + for key, entry in self.entries.items(): + entry.convert_from_sconsign(dir, key) + + if mode == "r": + # This directory is actually under a repository, which means + # likely they're reaching in directly for a dependency on + # a file there. Don't actually set any entry info, so we + # won't try to write to that .sconsign.dblite file. + self.set_entry = self.do_not_set_entry + self.store_info = self.do_not_store_info + + global sig_files + sig_files.append(self) + + def write(self, sync=1): + if not self.dirty: + return + + self.merge() + + db, mode = Get_DataBase(self.dir) + + # Write using the path relative to the top of the SConstruct + # directory (self.dir.path), not relative to the top of + # the Repository; we only write to our own .sconsign file, + # not to .sconsign files in Repositories. + path = normcase(self.dir.get_internal_path()) + for key, entry in self.entries.items(): + entry.convert_to_sconsign() + db[path] = pickle.dumps(self.entries, PICKLE_PROTOCOL) + + if sync: + try: + syncmethod = db.sync + except AttributeError: + # Not all anydbm modules have sync() methods. + pass + else: + syncmethod() + + +class Dir(Base): + def __init__(self, fp=None, dir=None): + """ + fp - file pointer to read entries from + """ + super().__init__() + + if not fp: + return + + self.entries = pickle.load(fp) + if not isinstance(self.entries, dict): + self.entries = {} + raise TypeError + + if dir: + for key, entry in self.entries.items(): + entry.convert_from_sconsign(dir, key) + + +class DirFile(Dir): + """ + Encapsulates reading and writing a per-directory .sconsign file. + """ + def __init__(self, dir): + """ + dir - the directory for the file + """ + + self.dir = dir + self.sconsign = os.path.join(dir.get_internal_path(), current_sconsign_filename()) + + try: + fp = open(self.sconsign, 'rb') + except IOError: + fp = None + + try: + super().__init__(fp, dir) + except KeyboardInterrupt: + raise + except Exception: + SCons.Warnings.warn(SCons.Warnings.CorruptSConsignWarning, + "Ignoring corrupt .sconsign file: %s"%self.sconsign) + + try: + fp.close() + except AttributeError: + pass + + global sig_files + sig_files.append(self) + + def write(self, sync=1): + """ + Write the .sconsign file to disk. + + Try to write to a temporary file first, and rename it if we + succeed. If we can't write to the temporary file, it's + probably because the directory isn't writable (and if so, + how did we build anything in this directory, anyway?), so + try to write directly to the .sconsign file as a backup. + If we can't rename, try to copy the temporary contents back + to the .sconsign file. Either way, always try to remove + the temporary file at the end. + """ + if not self.dirty: + return + + self.merge() + + temp = os.path.join(self.dir.get_internal_path(), '.scons%d' % os.getpid()) + try: + file = open(temp, 'wb') + fname = temp + except IOError: + try: + file = open(self.sconsign, 'wb') + fname = self.sconsign + except IOError: + return + for key, entry in self.entries.items(): + entry.convert_to_sconsign() + pickle.dump(self.entries, file, PICKLE_PROTOCOL) + file.close() + if fname != self.sconsign: + try: + mode = os.stat(self.sconsign)[0] + os.chmod(self.sconsign, 0o666) + os.unlink(self.sconsign) + except (IOError, OSError): + # Try to carry on in the face of either OSError + # (things like permission issues) or IOError (disk + # or network issues). If there's a really dangerous + # issue, it should get re-raised by the calls below. + pass + try: + os.rename(fname, self.sconsign) + except OSError: + # An OSError failure to rename may indicate something + # like the directory has no write permission, but + # the .sconsign file itself might still be writable, + # so try writing on top of it directly. An IOError + # here, or in any of the following calls, would get + # raised, indicating something like a potentially + # serious disk or network issue. + with open(self.sconsign, 'wb') as f, open(fname, 'rb') as f2: + f.write(f2.read()) + os.chmod(self.sconsign, mode) + try: + os.unlink(temp) + except (IOError, OSError): + pass + +ForDirectory = DB + + +def File(name, dbm_module=None): + """ + Arrange for all signatures to be stored in a global .sconsign.db* + file. + """ + global ForDirectory, DB_Name, DB_Module + if name is None: + ForDirectory = DirFile + DB_Module = None + else: + ForDirectory = DB + DB_Name = name + if dbm_module is not None: + DB_Module = dbm_module + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Scanner/C.py b/scons/scons-local-4.5.1/SCons/Scanner/C.py new file mode 100644 index 000000000..a066104e5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Scanner/C.py @@ -0,0 +1,231 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Dependency scanner for C/C++ code.""" + +import SCons.Node.FS +import SCons.cpp +import SCons.Util +from . import ClassicCPP, FindPathDirs + + +class SConsCPPScanner(SCons.cpp.PreProcessor): + """SCons-specific subclass of the cpp.py module's processing. + + We subclass this so that: 1) we can deal with files represented + by Nodes, not strings; 2) we can keep track of the files that are + missing. + """ + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.missing = [] + + def initialize_result(self, fname): + self.result = SCons.Util.UniqueList([fname]) + + def finalize_result(self, fname): + return self.result[1:] + + def find_include_file(self, t): + keyword, quote, fname = t + result = SCons.Node.FS.find_file(fname, self.searchpath[quote]) + if not result: + self.missing.append((fname, self.current_file)) + return result + + def read_file(self, file): + try: + with open(str(file.rfile())) as fp: + return fp.read() + except EnvironmentError as e: + self.missing.append((file, self.current_file)) + return '' + +def dictify_CPPDEFINES(env) -> dict: + """Returns CPPDEFINES converted to a dict.""" + cppdefines = env.get('CPPDEFINES', {}) + if cppdefines is None: + return {} + if SCons.Util.is_Sequence(cppdefines): + result = {} + for c in cppdefines: + if SCons.Util.is_Sequence(c): + try: + result[c[0]] = c[1] + except IndexError: + # it could be a one-item sequence + result[c[0]] = None + else: + result[c] = None + return result + if not SCons.Util.is_Dict(cppdefines): + return {cppdefines : None} + return cppdefines + +class SConsCPPScannerWrapper: + """The SCons wrapper around a cpp.py scanner. + + This is the actual glue between the calling conventions of generic + SCons scanners, and the (subclass of) cpp.py class that knows how + to look for #include lines with reasonably real C-preprocessor-like + evaluation of #if/#ifdef/#else/#elif lines. + """ + + def __init__(self, name, variable): + self.name = name + self.path = FindPathDirs(variable) + + def __call__(self, node, env, path=()): + cpp = SConsCPPScanner( + current=node.get_dir(), cpppath=path, dict=dictify_CPPDEFINES(env) + ) + result = cpp(node) + for included, includer in cpp.missing: + SCons.Warnings.warn( + SCons.Warnings.DependencyWarning, + "No dependency generated for file: %s (included from: %s) " + "-- file not found" % (included, includer), + ) + return result + + def recurse_nodes(self, nodes): + return nodes + def select(self, node): + return self + +def CScanner(): + """Return a prototype Scanner instance for scanning source files + that use the C pre-processor""" + + # Here's how we would (or might) use the CPP scanner code above that + # knows how to evaluate #if/#ifdef/#else/#elif lines when searching + # for #includes. This is commented out for now until we add the + # right configurability to let users pick between the scanners. + # return SConsCPPScannerWrapper("CScanner", "CPPPATH") + + cs = ClassicCPP( + "CScanner", + "$CPPSUFFIXES", + "CPPPATH", + r'^[ \t]*#[ \t]*(?:include|import)[ \t]*(<|")([^>"]+)(>|")', + ) + return cs + + +# +# ConditionalScanner +# + + +class SConsCPPConditionalScanner(SCons.cpp.PreProcessor): + """SCons-specific subclass of the cpp.py module's processing. + + We subclass this so that: 1) we can deal with files represented + by Nodes, not strings; 2) we can keep track of the files that are + missing. + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.missing = [] + self._known_paths = [] + + def initialize_result(self, fname): + self.result = SCons.Util.UniqueList([fname]) + + def find_include_file(self, t): + keyword, quote, fname = t + paths = tuple(self._known_paths) + self.searchpath[quote] + if quote == '"': + paths = (self.current_file.dir,) + paths + result = SCons.Node.FS.find_file(fname, paths) + if result: + result_path = result.get_abspath() + for p in self.searchpath[quote]: + if result_path.startswith(p.get_abspath()): + self._known_paths.append(p) + break + else: + self.missing.append((fname, self.current_file)) + return result + + def read_file(self, file): + try: + with open(str(file.rfile())) as fp: + return fp.read() + except EnvironmentError: + self.missing.append((file, self.current_file)) + return "" + + +class SConsCPPConditionalScannerWrapper: + """ + The SCons wrapper around a cpp.py scanner. + + This is the actual glue between the calling conventions of generic + SCons scanners, and the (subclass of) cpp.py class that knows how + to look for #include lines with reasonably real C-preprocessor-like + evaluation of #if/#ifdef/#else/#elif lines. + """ + + def __init__(self, name, variable): + self.name = name + self.path = FindPathDirs(variable) + + def __call__(self, node, env, path=(), depth=-1): + cpp = SConsCPPConditionalScanner( + current=node.get_dir(), + cpppath=path, + dict=dictify_CPPDEFINES(env), + depth=depth, + ) + result = cpp(node) + for included, includer in cpp.missing: + fmt = "No dependency generated for file: %s (included from: %s) -- file not found" + SCons.Warnings.warn( + SCons.Warnings.DependencyWarning, fmt % (included, includer) + ) + return result + + def recurse_nodes(self, nodes): + return nodes + + def select(self, node): + return self + + +def CConditionalScanner(): + """ + Return an advanced conditional Scanner instance for scanning source files + + Interprets C/C++ Preprocessor conditional syntax + (#ifdef, #if, defined, #else, #elif, etc.). + """ + return SConsCPPConditionalScannerWrapper("CConditionalScanner", "CPPPATH") + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Scanner/D.py b/scons/scons-local-4.5.1/SCons/Scanner/D.py new file mode 100644 index 000000000..c9b1e36d9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Scanner/D.py @@ -0,0 +1,67 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Scanner for the Digital Mars "D" programming language. + +Coded by Andy Friesen, 17 Nov 2003 +""" + +import SCons.Node.FS +from . import Classic + +def DScanner(): + """Return a prototype Scanner instance for scanning D source files""" + ds = D() + return ds + +class D(Classic): + def __init__(self): + super().__init__( + name="DScanner", + suffixes='$DSUFFIXES', + path_variable='DPATH', + regex=r'(?:import\s+)([\w\s=,.]+)(?:\s*:[\s\w,=]+)?(?:;)', + ) + + def find_include(self, include, source_dir, path): + # translate dots (package separators) to slashes + inc = include.replace('.', '/') + + i = SCons.Node.FS.find_file(inc + '.d', (source_dir,) + path) + if i is None: + i = SCons.Node.FS.find_file(inc + '.di', (source_dir,) + path) + return i, include + + def find_include_names(self, node): + includes = [] + for iii in self.cre.findall(node.get_text_contents()): + for jjj in iii.split(','): + kkk = jjj.split('=')[-1] + includes.append(kkk.strip()) + return includes + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Scanner/Dir.py b/scons/scons-local-4.5.1/SCons/Scanner/Dir.py new file mode 100644 index 000000000..239b1ec3e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Scanner/Dir.py @@ -0,0 +1,131 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +import SCons.Node.FS +from . import ScannerBase + +def only_dirs(nodes): + is_Dir = lambda n: isinstance(n.disambiguate(), SCons.Node.FS.Dir) + return [node for node in nodes if is_Dir(node)] + +def DirScanner(**kwargs): + """Return a prototype Scanner instance for scanning + directories for on-disk files""" + kwargs['node_factory'] = SCons.Node.FS.Entry + kwargs['recursive'] = only_dirs + return ScannerBase(scan_on_disk, "DirScanner", **kwargs) + +def DirEntryScanner(**kwargs): + """Return a prototype Scanner instance for "scanning" + directory Nodes for their in-memory entries""" + kwargs['node_factory'] = SCons.Node.FS.Entry + kwargs['recursive'] = None + return ScannerBase(scan_in_memory, "DirEntryScanner", **kwargs) + +skip_entry = {} + +skip_entry_list = [ + '.', + '..', + '.sconsign', + # Used by the native dblite.py module. + '.sconsign.dblite', + # Used by dbm and dumbdbm. + '.sconsign.dir', + # Used by dbm. + '.sconsign.pag', + # Used by dumbdbm. + '.sconsign.dat', + '.sconsign.bak', + # Used by some dbm emulations using Berkeley DB. + '.sconsign.db', + # new filenames since multiple hash formats allowed: + '.sconsign_md5.dblite', + '.sconsign_sha1.dblite', + '.sconsign_sha256.dblite', + # and all the duplicate files for each sub-sconsfile type + '.sconsign_md5', + '.sconsign_md5.dir', + '.sconsign_md5.pag', + '.sconsign_md5.dat', + '.sconsign_md5.bak', + '.sconsign_md5.db', + '.sconsign_sha1', + '.sconsign_sha1.dir', + '.sconsign_sha1.pag', + '.sconsign_sha1.dat', + '.sconsign_sha1.bak', + '.sconsign_sha1.db', + '.sconsign_sha256', + '.sconsign_sha256.dir', + '.sconsign_sha256.pag', + '.sconsign_sha256.dat', + '.sconsign_sha256.bak', + '.sconsign_sha256.db', +] + +for skip in skip_entry_list: + skip_entry[skip] = 1 + skip_entry[SCons.Node.FS._my_normcase(skip)] = 1 + +do_not_scan = lambda k: k not in skip_entry + +def scan_on_disk(node, env, path=()): + """ + Scans a directory for on-disk files and directories therein. + + Looking up the entries will add these to the in-memory Node tree + representation of the file system, so all we have to do is just + that and then call the in-memory scanning function. + """ + try: + flist = node.fs.listdir(node.get_abspath()) + except (IOError, OSError): + return [] + e = node.Entry + for f in filter(do_not_scan, flist): + # Add ./ to the beginning of the file name so if it begins with a + # '#' we don't look it up relative to the top-level directory. + e('./' + f) + return scan_in_memory(node, env, path) + +def scan_in_memory(node, env, path=()): + """ + "Scans" a Node.FS.Dir for its in-memory entries. + """ + try: + entries = node.entries + except AttributeError: + # It's not a Node.FS.Dir (or doesn't look enough like one for + # our purposes), which can happen if a target list containing + # mixed Node types (Dirs and Files, for example) has a Dir as + # the first entry. + return [] + entry_list = sorted(filter(do_not_scan, list(entries.keys()))) + return [entries[n] for n in entry_list] + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Scanner/Fortran.py b/scons/scons-local-4.5.1/SCons/Scanner/Fortran.py new file mode 100644 index 000000000..9cf5b220d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Scanner/Fortran.py @@ -0,0 +1,320 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Dependency scanner for Fortran code.""" + +import re + +import SCons.Node +import SCons.Node.FS +import SCons.Util +import SCons.Warnings +from . import Classic, Current, FindPathDirs + +class F90Scanner(Classic): + """ + A Classic Scanner subclass for Fortran source files which takes + into account both USE and INCLUDE statements. This scanner will + work for both F77 and F90 (and beyond) compilers. + + Currently, this scanner assumes that the include files do not contain + USE statements. To enable the ability to deal with USE statements + in include files, add logic right after the module names are found + to loop over each include file, search for and locate each USE + statement, and append each module name to the list of dependencies. + Caching the search results in a common dictionary somewhere so that + the same include file is not searched multiple times would be a + smart thing to do. + """ + + def __init__(self, name, suffixes, path_variable, + use_regex, incl_regex, def_regex, *args, **kwargs): + + self.cre_use = re.compile(use_regex, re.M) + self.cre_incl = re.compile(incl_regex, re.M) + self.cre_def = re.compile(def_regex, re.M) + + def _scan(node, env, path, self=self): + node = node.rfile() + + if not node.exists(): + return [] + + return self.scan(node, env, path) + + kwargs['function'] = _scan + kwargs['path_function'] = FindPathDirs(path_variable) + kwargs['recursive'] = 1 + kwargs['skeys'] = suffixes + kwargs['name'] = name + + # bypasses the parent Classic initializer + Current.__init__(self, *args, **kwargs) + + def scan(self, node, env, path=()): + + # cache the includes list in node so we only scan it once: + if node.includes is not None: + mods_and_includes = node.includes + else: + # retrieve all included filenames + includes = self.cre_incl.findall(node.get_text_contents()) + # retrieve all USE'd module names + modules = self.cre_use.findall(node.get_text_contents()) + # retrieve all defined module names + defmodules = self.cre_def.findall(node.get_text_contents()) + + # Remove all USE'd module names that are defined in the same file + # (case-insensitively) + d = {} + for m in defmodules: + d[m.lower()] = 1 + modules = [m for m in modules if m.lower() not in d] + + # Convert module name to a .mod filename + suffix = env.subst('$FORTRANMODSUFFIX') + modules = [x.lower() + suffix for x in modules] + # Remove unique items from the list + mods_and_includes = SCons.Util.unique(includes+modules) + node.includes = mods_and_includes + + # This is a hand-coded DSU (decorate-sort-undecorate, or + # Schwartzian transform) pattern. The sort key is the raw name + # of the file as specifed on the USE or INCLUDE line, which lets + # us keep the sort order constant regardless of whether the file + # is actually found in a Repository or locally. + nodes = [] + source_dir = node.get_dir() + if callable(path): + path = path() + for dep in mods_and_includes: + n, i = self.find_include(dep, source_dir, path) + + if n is None: + SCons.Warnings.warn(SCons.Warnings.DependencyWarning, + "No dependency generated for file: %s (referenced by: %s) -- file not found" % (i, node)) + else: + sortkey = self.sort_key(dep) + nodes.append((sortkey, n)) + + return [pair[1] for pair in sorted(nodes)] + +def FortranScan(path_variable="FORTRANPATH"): + """Return a prototype Scanner instance for scanning source files + for Fortran USE & INCLUDE statements""" + +# The USE statement regex matches the following: +# +# USE module_name +# USE :: module_name +# USE, INTRINSIC :: module_name +# USE, NON_INTRINSIC :: module_name +# +# Limitations +# +# -- While the regex can handle multiple USE statements on one line, +# it cannot properly handle them if they are commented out. +# In either of the following cases: +# +# ! USE mod_a ; USE mod_b [entire line is commented out] +# USE mod_a ! ; USE mod_b [in-line comment of second USE statement] +# +# the second module name (mod_b) will be picked up as a dependency +# even though it should be ignored. The only way I can see +# to rectify this would be to modify the scanner to eliminate +# the call to re.findall, read in the contents of the file, +# treating the comment character as an end-of-line character +# in addition to the normal linefeed, loop over each line, +# weeding out the comments, and looking for the USE statements. +# One advantage to this is that the regex passed to the scanner +# would no longer need to match a semicolon. +# +# -- I question whether or not we need to detect dependencies to +# INTRINSIC modules because these are built-in to the compiler. +# If we consider them a dependency, will SCons look for them, not +# find them, and kill the build? Or will we there be standard +# compiler-specific directories we will need to point to so the +# compiler and SCons can locate the proper object and mod files? + +# Here is a breakdown of the regex: +# +# (?i) : regex is case insensitive +# ^ : start of line +# (?: : group a collection of regex symbols without saving the match as a "group" +# ^|; : matches either the start of the line or a semicolon - semicolon +# ) : end the unsaved grouping +# \s* : any amount of white space +# USE : match the string USE, case insensitive +# (?: : group a collection of regex symbols without saving the match as a "group" +# \s+| : match one or more whitespace OR .... (the next entire grouped set of regex symbols) +# (?: : group a collection of regex symbols without saving the match as a "group" +# (?: : establish another unsaved grouping of regex symbols +# \s* : any amount of white space +# , : match a comma +# \s* : any amount of white space +# (?:NON_)? : optionally match the prefix NON_, case insensitive +# INTRINSIC : match the string INTRINSIC, case insensitive +# )? : optionally match the ", INTRINSIC/NON_INTRINSIC" grouped expression +# \s* : any amount of white space +# :: : match a double colon that must appear after the INTRINSIC/NON_INTRINSIC attribute +# ) : end the unsaved grouping +# ) : end the unsaved grouping +# \s* : match any amount of white space +# (\w+) : match the module name that is being USE'd +# +# + use_regex = r"(?i)(?:^|;)\s*USE(?:\s+|(?:(?:\s*,\s*(?:NON_)?INTRINSIC)?\s*::))\s*(\w+)" + + +# The INCLUDE statement regex matches the following: +# +# INCLUDE 'some_Text' +# INCLUDE "some_Text" +# INCLUDE "some_Text" ; INCLUDE "some_Text" +# INCLUDE kind_"some_Text" +# INCLUDE kind_'some_Text" +# +# where some_Text can include any alphanumeric and/or special character +# as defined by the Fortran 2003 standard. +# +# Limitations: +# +# -- The Fortran standard dictates that a " or ' in the INCLUDE'd +# string must be represented as a "" or '', if the quotes that wrap +# the entire string are either a ' or ", respectively. While the +# regular expression below can detect the ' or " characters just fine, +# the scanning logic, presently is unable to detect them and reduce +# them to a single instance. This probably isn't an issue since, +# in practice, ' or " are not generally used in filenames. +# +# -- This regex will not properly deal with multiple INCLUDE statements +# when the entire line has been commented out, ala +# +# ! INCLUDE 'some_file' ; INCLUDE 'some_file' +# +# In such cases, it will properly ignore the first INCLUDE file, +# but will actually still pick up the second. Interestingly enough, +# the regex will properly deal with these cases: +# +# INCLUDE 'some_file' +# INCLUDE 'some_file' !; INCLUDE 'some_file' +# +# To get around the above limitation, the FORTRAN programmer could +# simply comment each INCLUDE statement separately, like this +# +# ! INCLUDE 'some_file' !; INCLUDE 'some_file' +# +# The way I see it, the only way to get around this limitation would +# be to modify the scanning logic to replace the calls to re.findall +# with a custom loop that processes each line separately, throwing +# away fully commented out lines before attempting to match against +# the INCLUDE syntax. +# +# Here is a breakdown of the regex: +# +# (?i) : regex is case insensitive +# (?: : begin a non-saving group that matches the following: +# ^ : either the start of the line +# | : or +# ['">]\s*; : a semicolon that follows a single quote, +# double quote or greater than symbol (with any +# amount of whitespace in between). This will +# allow the regex to match multiple INCLUDE +# statements per line (although it also requires +# the positive lookahead assertion that is +# used below). It will even properly deal with +# (i.e. ignore) cases in which the additional +# INCLUDES are part of an in-line comment, ala +# " INCLUDE 'someFile' ! ; INCLUDE 'someFile2' " +# ) : end of non-saving group +# \s* : any amount of white space +# INCLUDE : match the string INCLUDE, case insensitive +# \s+ : match one or more white space characters +# (?\w+_)? : match the optional "kind-param _" prefix allowed by the standard +# [<"'] : match the include delimiter - an apostrophe, double quote, or less than symbol +# (.+?) : match one or more characters that make up +# the included path and file name and save it +# in a group. The Fortran standard allows for +# any non-control character to be used. The dot +# operator will pick up any character, including +# control codes, but I can't conceive of anyone +# putting control codes in their file names. +# The question mark indicates it is non-greedy so +# that regex will match only up to the next quote, +# double quote, or greater than symbol +# (?=["'>]) : positive lookahead assertion to match the include +# delimiter - an apostrophe, double quote, or +# greater than symbol. This level of complexity +# is required so that the include delimiter is +# not consumed by the match, thus allowing the +# sub-regex discussed above to uniquely match a +# set of semicolon-separated INCLUDE statements +# (as allowed by the F2003 standard) + + include_regex = r"""(?i)(?:^|['">]\s*;)\s*INCLUDE\s+(?:\w+_)?[<"'](.+?)(?=["'>])""" + +# The MODULE statement regex finds module definitions by matching +# the following: +# +# MODULE module_name +# +# but *not* the following: +# +# MODULE PROCEDURE procedure_name +# MODULE SUBROUTINE subroutine_name +# MODULE FUNCTION function_name +# MODULE PURE SUBROUTINE|FUNCTION subroutine_name|function_name +# MODULE ELEMENTAL SUBROUTINE|FUNCTION subroutine_name|function_name +# +# Here is a breakdown of the regex: +# +# (?i) : regex is case insensitive +# ^\s* : any amount of white space +# MODULE : match the string MODULE, case +# insensitive +# \s+ : match one or more white space +# characters +# (?!PROCEDURE|SUBROUTINE|FUNCTION|PURE|ELEMENTAL) +# : but *don't* match if the next word +# matches PROCEDURE, SUBROUTINE, +# FUNCTION, PURE or ELEMENTAL (negative +# lookahead assertion), case insensitive +# (\w+) : match one or more alphanumeric +# characters that make up the defined +# module name and save it in a group + + def_regex = r"""(?i)^\s*MODULE\s+(?!PROCEDURE|SUBROUTINE|FUNCTION|PURE|ELEMENTAL)(\w+)""" + + scanner = F90Scanner("FortranScan", + "$FORTRANSUFFIXES", + path_variable, + use_regex, + include_regex, + def_regex) + return scanner + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Scanner/IDL.py b/scons/scons-local-4.5.1/SCons/Scanner/IDL.py new file mode 100644 index 000000000..419ebf6bf --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Scanner/IDL.py @@ -0,0 +1,42 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Dependency scanner for IDL (Interface Definition Language) files.""" + +from . import ClassicCPP + +def IDLScan(): + """Return a prototype Scanner instance for scanning IDL source files""" + cs = ClassicCPP( + "IDLScan", + "$IDLSUFFIXES", + "CPPPATH", + r'^[ \t]*(?:#[ \t]*include|[ \t]*import)[ \t]+(<|")([^>"]+)(>|")', + ) + return cs + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Scanner/Java.py b/scons/scons-local-4.5.1/SCons/Scanner/Java.py new file mode 100644 index 000000000..e6c2db978 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Scanner/Java.py @@ -0,0 +1,111 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +import os + +import SCons.Node +import SCons.Node.FS +import SCons.Scanner +from SCons.Util import flatten, is_String + + +def _subst_paths(env, paths) -> list: + """Return a list of substituted path elements. + + If *paths* is a string, it is split on the search-path separator. + Otherwise, substitution is done on string-valued list elements but + they are not split. + + Note helps support behavior like pulling in the external ``CLASSPATH`` + and setting it directly into ``JAVACLASSPATH``, however splitting on + ``os.pathsep`` makes the interpretation system-specific (this is + warned about in the manpage entry for ``JAVACLASSPATH``). + """ + if is_String(paths): + paths = env.subst(paths) + if SCons.Util.is_String(paths): + paths = paths.split(os.pathsep) + else: + # TODO: may want to revisit splitting list-element strings if requested + paths = flatten(paths) + paths = [env.subst(path) if is_String(path) else path for path in paths] + return paths + + +def _collect_classes(classlist, dirname, files): + for fname in files: + if fname.endswith(".class"): + classlist.append(os.path.join(str(dirname), fname)) + + +def scan(node, env, libpath=()) -> list: + """Scan for files both on JAVACLASSPATH and JAVAPROCESSORPATH. + + JAVACLASSPATH/JAVAPROCESSORPATH path can contain: + - Explicit paths to JAR/Zip files + - Wildcards (*) + - Directories which contain classes in an unnamed package + - Parent directories of the root package for classes in a named package + + Class path entries that are neither directories nor archives (.zip + or JAR files) nor the asterisk (*) wildcard character are ignored. + """ + classpath = [] + for var in ['JAVACLASSPATH', 'JAVAPROCESSORPATH']: + classpath += _subst_paths(env, env.get(var, [])) + + result = [] + for path in classpath: + if is_String(path) and "*" in path: + # This matches more than the Java docs describe: a '*' only + # matches jar files. The filter later should trim this down. + # TODO: should we filter here? use .endswith('*') rather than "in"? + libs = env.Glob(path) + else: + libs = [path] + + for lib in libs: + if os.path.isdir(str(lib)): + # grab the in-memory nodes + env.Dir(lib).walk(_collect_classes, result) + # now the on-disk ones + for root, dirs, files in os.walk(str(lib)): + _collect_classes(result, root, files) + else: + result.append(lib) + + return list(filter(lambda x: os.path.splitext(str(x))[1] in [".class", ".zip", ".jar"], result)) + + +def JavaScanner(): + """Scanner for .java files. + + .. versionadded:: 4.4 + """ + return SCons.Scanner.Base(scan, 'JavaScanner', skeys=['.java']) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Scanner/LaTeX.py b/scons/scons-local-4.5.1/SCons/Scanner/LaTeX.py new file mode 100644 index 000000000..700b7cbe7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Scanner/LaTeX.py @@ -0,0 +1,431 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Dependency scanner for LaTeX code.""" + +import os.path +import re + +import SCons.Node.FS +import SCons.Util +import SCons.Warnings +from . import ScannerBase, FindPathDirs + +# list of graphics file extensions for TeX and LaTeX +TexGraphics = ['.eps', '.ps'] +#LatexGraphics = ['.pdf', '.png', '.jpg', '.gif', '.tif'] +LatexGraphics = [ '.png', '.jpg', '.gif', '.tif'] + + +# Used as a return value of modify_env_var if the variable is not set. +class _Null: + pass +_null = _Null + +# The user specifies the paths in env[variable], similar to other builders. +# They may be relative and must be converted to absolute, as expected +# by LaTeX and Co. The environment may already have some paths in +# env['ENV'][var]. These paths are honored, but the env[var] paths have +# higher precedence. All changes are un-done on exit. +def modify_env_var(env, var, abspath): + try: + save = env['ENV'][var] + except KeyError: + save = _null + env.PrependENVPath(var, abspath) + try: + if SCons.Util.is_List(env[var]): + env.PrependENVPath(var, [os.path.abspath(str(p)) for p in env[var]]) + else: + # Split at os.pathsep to convert into absolute path + env.PrependENVPath(var, [os.path.abspath(p) for p in str(env[var]).split(os.pathsep)]) + except KeyError: + pass + + # Convert into a string explicitly to append ":" (without which it won't search system + # paths as well). The problem is that env.AppendENVPath(var, ":") + # does not work, refuses to append ":" (os.pathsep). + + if SCons.Util.is_List(env['ENV'][var]): + env['ENV'][var] = os.pathsep.join(env['ENV'][var]) + # Append the trailing os.pathsep character here to catch the case with no env[var] + env['ENV'][var] = env['ENV'][var] + os.pathsep + + return save + +class FindENVPathDirs: + """ + A class to bind a specific E{*}PATH variable name to a function that + will return all of the E{*}path directories. + """ + def __init__(self, variable): + self.variable = variable + + def __call__(self, env, dir=None, target=None, source=None, argument=None): + import SCons.PathList + try: + path = env['ENV'][self.variable] + except KeyError: + return () + + dir = dir or env.fs._cwd + path = SCons.PathList.PathList(path).subst_path(env, target, source) + return tuple(dir.Rfindalldirs(path)) + + +def LaTeXScanner(): + """ + Return a prototype Scanner instance for scanning LaTeX source files + when built with latex. + """ + ds = LaTeX(name = "LaTeXScanner", + suffixes = '$LATEXSUFFIXES', + # in the search order, see below in LaTeX class docstring + graphics_extensions = TexGraphics, + recursive = 0) + return ds + + +def PDFLaTeXScanner(): + """ + Return a prototype Scanner instance for scanning LaTeX source files + when built with pdflatex. + """ + ds = LaTeX(name = "PDFLaTeXScanner", + suffixes = '$LATEXSUFFIXES', + # in the search order, see below in LaTeX class docstring + graphics_extensions = LatexGraphics, + recursive = 0) + return ds + + +class LaTeX(ScannerBase): + """Class for scanning LaTeX files for included files. + + Unlike most scanners, which use regular expressions that just + return the included file name, this returns a tuple consisting + of the keyword for the inclusion ("include", "includegraphics", + "input", or "bibliography"), and then the file name itself. + Based on a quick look at LaTeX documentation, it seems that we + should append .tex suffix for the "include" keywords, append .tex if + there is no extension for the "input" keyword, and need to add .bib + for the "bibliography" keyword that does not accept extensions by itself. + + Finally, if there is no extension for an "includegraphics" keyword + latex will append .ps or .eps to find the file, while pdftex may use .pdf, + .jpg, .tif, .mps, or .png. + + The actual subset and search order may be altered by + DeclareGraphicsExtensions command. This complication is ignored. + The default order corresponds to experimentation with teTeX:: + + $ latex --version + pdfeTeX 3.141592-1.21a-2.2 (Web2C 7.5.4) + kpathsea version 3.5.4 + + The order is: + ['.eps', '.ps'] for latex + ['.png', '.pdf', '.jpg', '.tif']. + + Another difference is that the search path is determined by the type + of the file being searched: + env['TEXINPUTS'] for "input" and "include" keywords + env['TEXINPUTS'] for "includegraphics" keyword + env['TEXINPUTS'] for "lstinputlisting" keyword + env['BIBINPUTS'] for "bibliography" keyword + env['BSTINPUTS'] for "bibliographystyle" keyword + env['INDEXSTYLE'] for "makeindex" keyword, no scanning support needed just allows user to set it if needed. + + FIXME: also look for the class or style in document[class|style]{} + FIXME: also look for the argument of bibliographystyle{} + """ + keyword_paths = {'include': 'TEXINPUTS', + 'input': 'TEXINPUTS', + 'includegraphics': 'TEXINPUTS', + 'bibliography': 'BIBINPUTS', + 'bibliographystyle': 'BSTINPUTS', + 'addbibresource': 'BIBINPUTS', + 'addglobalbib': 'BIBINPUTS', + 'addsectionbib': 'BIBINPUTS', + 'makeindex': 'INDEXSTYLE', + 'usepackage': 'TEXINPUTS', + 'lstinputlisting': 'TEXINPUTS'} + env_variables = SCons.Util.unique(list(keyword_paths.values())) + two_arg_commands = ['import', 'subimport', + 'includefrom', 'subincludefrom', + 'inputfrom', 'subinputfrom'] + + def __init__(self, name, suffixes, graphics_extensions, *args, **kwargs): + regex = r''' + \\( + include + | includegraphics(?:\s*\[[^\]]+\])? + | lstinputlisting(?:\[[^\]]+\])? + | input + | import + | subimport + | includefrom + | subincludefrom + | inputfrom + | subinputfrom + | bibliography + | addbibresource + | addglobalbib + | addsectionbib + | usepackage + ) + \s*{([^}]*)} # first arg + (?: \s*{([^}]*)} )? # maybe another arg + ''' + self.cre = re.compile(regex, re.M | re.X) + self.comment_re = re.compile(r'^((?:(?:\\%)|[^%\n])*)(.*)$', re.M) + + self.graphics_extensions = graphics_extensions + + def _scan(node, env, path=(), self=self): + node = node.rfile() + if not node.exists(): + return [] + return self.scan_recurse(node, path) + + class FindMultiPathDirs: + """The stock FindPathDirs function has the wrong granularity: + it is called once per target, while we need the path that depends + on what kind of included files is being searched. This wrapper + hides multiple instances of FindPathDirs, one per the LaTeX path + variable in the environment. When invoked, the function calculates + and returns all the required paths as a dictionary (converted into + a tuple to become hashable). Then the scan function converts it + back and uses a dictionary of tuples rather than a single tuple + of paths. + """ + def __init__(self, dictionary): + self.dictionary = {} + for k,n in dictionary.items(): + self.dictionary[k] = (FindPathDirs(n), FindENVPathDirs(n)) + + def __call__(self, env, dir=None, target=None, source=None, + argument=None): + di = {} + for k,(c,cENV) in self.dictionary.items(): + di[k] = ( c(env, dir=None, target=None, source=None, + argument=None) , + cENV(env, dir=None, target=None, source=None, + argument=None) ) + # To prevent "dict is not hashable error" + return tuple(di.items()) + + class LaTeXScanCheck: + """Skip all but LaTeX source files. + + Do not scan *.eps, *.pdf, *.jpg, etc. + """ + + def __init__(self, suffixes): + self.suffixes = suffixes + + def __call__(self, node, env): + current = not node.has_builder() or node.is_up_to_date() + scannable = node.get_suffix() in env.subst_list(self.suffixes)[0] + # Returning false means that the file is not scanned. + return scannable and current + + kwargs['function'] = _scan + kwargs['path_function'] = FindMultiPathDirs(LaTeX.keyword_paths) + kwargs['recursive'] = 0 + kwargs['skeys'] = suffixes + kwargs['scan_check'] = LaTeXScanCheck(suffixes) + kwargs['name'] = name + + super().__init__(*args, **kwargs) + + def _latex_names(self, include_type, filename): + if include_type == 'input': + base, ext = os.path.splitext( filename ) + if ext == "": + return [filename + '.tex'] + if include_type in ('include', 'import', 'subimport', + 'includefrom', 'subincludefrom', + 'inputfrom', 'subinputfrom'): + base, ext = os.path.splitext( filename ) + if ext == "": + return [filename + '.tex'] + if include_type == 'bibliography': + base, ext = os.path.splitext( filename ) + if ext == "": + return [filename + '.bib'] + if include_type == 'usepackage': + base, ext = os.path.splitext( filename ) + if ext == "": + return [filename + '.sty'] + if include_type == 'includegraphics': + base, ext = os.path.splitext( filename ) + if ext == "": + #return [filename+e for e in self.graphics_extensions + TexGraphics] + # use the line above to find dependencies for the PDF builder + # when only an .eps figure is present. Since it will be found + # if the user tells scons how to make the pdf figure, leave + # it out for now. + return [filename+e for e in self.graphics_extensions] + return [filename] + + def sort_key(self, include): + return SCons.Node.FS._my_normcase(str(include)) + + def find_include(self, include, source_dir, path): + inc_type, inc_subdir, inc_filename = include + try: + sub_paths = path[inc_type] + except (IndexError, KeyError): + sub_paths = ((), ()) + try_names = self._latex_names(inc_type, inc_filename) + + # There are three search paths to try: + # 1. current directory "source_dir" + # 2. env[var] + # 3. env['ENV'][var] + search_paths = [(source_dir,)] + list(sub_paths) + + for n in try_names: + for search_path in search_paths: + paths = tuple([d.Dir(inc_subdir) for d in search_path]) + i = SCons.Node.FS.find_file(n, paths) + if i: + return i, include + return None, include + + def canonical_text(self, text): + """Standardize an input TeX-file contents. + + Currently: + * removes comments, unwrapping comment-wrapped lines. + """ + out = [] + line_continues_a_comment = False + for line in text.splitlines(): + line,comment = self.comment_re.findall(line)[0] + if line_continues_a_comment: + out[-1] = out[-1] + line.lstrip() + else: + out.append(line) + line_continues_a_comment = len(comment) > 0 + return '\n'.join(out).rstrip()+'\n' + + def scan(self, node, subdir='.'): + # Modify the default scan function to allow for the regular + # expression to return a comma separated list of file names + # as can be the case with the bibliography keyword. + + # Cache the includes list in node so we only scan it once: + # path_dict = dict(list(path)) + # add option for whitespace (\s) before the '[' + noopt_cre = re.compile(r'\s*\[.*$') + if node.includes is not None: + includes = node.includes + else: + text = self.canonical_text(node.get_text_contents()) + includes = self.cre.findall(text) + # 1. Split comma-separated lines, e.g. + # ('bibliography', 'phys,comp') + # should become two entries + # ('bibliography', 'phys') + # ('bibliography', 'comp') + # 2. Remove the options, e.g., such as + # ('includegraphics[clip,width=0.7\\linewidth]', 'picture.eps') + # should become + # ('includegraphics', 'picture.eps') + split_includes = [] + for include in includes: + inc_type = noopt_cre.sub('', include[0]) + inc_subdir = subdir + if inc_type in self.two_arg_commands: + inc_subdir = os.path.join(subdir, include[1]) + inc_list = include[2].split(',') + else: + inc_list = include[1].split(',') + for inc in inc_list: + split_includes.append((inc_type, inc_subdir, inc)) + + includes = split_includes + node.includes = includes + + return includes + + def scan_recurse(self, node, path=()): + """ do a recursive scan of the top level target file + This lets us search for included files based on the + directory of the main file just as latex does""" + + path_dict = dict(list(path)) + + queue = [] + queue.extend( self.scan(node) ) + seen = {} + + # This is a hand-coded DSU (decorate-sort-undecorate, or + # Schwartzian transform) pattern. The sort key is the raw name + # of the file as specifed on the \include, \input, etc. line. + # TODO: what about the comment in the original Classic scanner: + # """which lets + # us keep the sort order constant regardless of whether the file + # is actually found in a Repository or locally.""" + nodes = [] + source_dir = node.get_dir() + #for include in includes: + while queue: + + include = queue.pop() + inc_type, inc_subdir, inc_filename = include + + try: + if seen[inc_filename]: + continue + except KeyError: + seen[inc_filename] = True + + # + # Handle multiple filenames in include[1] + # + n, i = self.find_include(include, source_dir, path_dict) + if n is None: + # Do not bother with 'usepackage' warnings, as they most + # likely refer to system-level files + if inc_type != 'usepackage': + SCons.Warnings.warn( + SCons.Warnings.DependencyWarning, + "No dependency generated for file: %s " + "(included from: %s) -- file not found" % (i, node), + ) + else: + sortkey = self.sort_key(n) + nodes.append((sortkey, n)) + # recurse down + queue.extend(self.scan(n, inc_subdir)) + + return [pair[1] for pair in sorted(nodes)] + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Scanner/Prog.py b/scons/scons-local-4.5.1/SCons/Scanner/Prog.py new file mode 100644 index 000000000..888e121ac --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Scanner/Prog.py @@ -0,0 +1,114 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Dependency scanner for program files.""" + +import SCons.Node +import SCons.Node.FS +import SCons.Util +from . import ScannerBase, FindPathDirs + +# global, set by --debug=findlibs +print_find_libs = None + +def ProgramScanner(**kwargs): + """Return a prototype Scanner instance for scanning executable + files for static-lib dependencies""" + kwargs['path_function'] = FindPathDirs('LIBPATH') + ps = ScannerBase(scan, "ProgramScanner", **kwargs) + return ps + +def _subst_libs(env, libs): + """Substitute environment variables and split into list.""" + if SCons.Util.is_String(libs): + libs = env.subst(libs) + if SCons.Util.is_String(libs): + libs = libs.split() + elif SCons.Util.is_Sequence(libs): + _libs = [] + for l in libs: + _libs += _subst_libs(env, l) + libs = _libs + else: + # libs is an object (Node, for example) + libs = [libs] + return libs + +def scan(node, env, libpath = ()): + """Scans program files for static-library dependencies. + + It will search the LIBPATH environment variable + for libraries specified in the LIBS variable, returning any + files it finds as dependencies. + """ + try: + libs = env['LIBS'] + except KeyError: + # There are no LIBS in this environment, so just return a null list: + return [] + + libs = _subst_libs(env, libs) + + try: + prefix = env['LIBPREFIXES'] + if not SCons.Util.is_List(prefix): + prefix = [ prefix ] + except KeyError: + prefix = [ '' ] + + try: + suffix = env['LIBSUFFIXES'] + if not SCons.Util.is_List(suffix): + suffix = [ suffix ] + except KeyError: + suffix = [ '' ] + + pairs = [] + for suf in map(env.subst, suffix): + for pref in map(env.subst, prefix): + pairs.append((pref, suf)) + + result = [] + + if callable(libpath): + libpath = libpath() + + find_file = SCons.Node.FS.find_file + adjustixes = SCons.Util.adjustixes + for lib in libs: + if SCons.Util.is_String(lib): + for pref, suf in pairs: + l = adjustixes(lib, pref, suf) + l = find_file(l, libpath, verbose=print_find_libs) + if l: + result.append(l) + else: + result.append(lib) + + return result + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Scanner/Python.py b/scons/scons-local-4.5.1/SCons/Scanner/Python.py new file mode 100644 index 000000000..e20d78234 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Scanner/Python.py @@ -0,0 +1,216 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Dependency scanner for Python code. + +One important note about the design is that this does not take any dependencies +upon packages or binaries in the Python installation unless they are listed in +PYTHONPATH. To do otherwise would have required code to determine where the +Python installation is, which is outside of the scope of a scanner like this. +If consumers want to pick up dependencies upon these packages, they must put +those directories in PYTHONPATH. + +""" + +import itertools +import os +import re + +import SCons.Node.FS +import SCons.Util +from . import ScannerBase + +# Capture python "from a import b" and "import a" statements. +from_cre = re.compile(r'^\s*from\s+([^\s]+)\s+import\s+(.*)', re.M) +import_cre = re.compile(r'^\s*import\s+([^\s]+)', re.M) + + +def path_function(env, dir=None, target=None, source=None, argument=None): + """Retrieves a tuple with all search paths.""" + paths = env['ENV'].get('PYTHONPATH', '').split(os.pathsep) + if source: + paths.append(source[0].dir.abspath) + return tuple(paths) + + +def find_include_names(node): + """Scans the node for all imports. + + Returns a list of tuples. Each tuple has two elements: + 1. The main import (e.g. module, module.file, module.module2) + 2. Additional optional imports that could be functions or files + in the case of a "from X import Y" statement. In the case of a + normal "import" statement, this is None. + """ + text = node.get_text_contents() + all_matches = [] + matches = from_cre.findall(text) + if matches: + for match in matches: + imports = [i.strip() for i in match[1].split(',')] + + # Add some custom logic to strip out "as" because the regex + # includes it. + last_import_split = imports[-1].split() + if len(last_import_split) > 1: + imports[-1] = last_import_split[0] + + all_matches.append((match[0], imports)) + + matches = import_cre.findall(text) + if matches: + for match in matches: + all_matches.append((match, None)) + + return all_matches + + +def find_import(import_path, search_paths): + """ + Finds the specified import in the various search paths. + For an import of "p", it could either result in a file named p.py or + p/__init__.py. We can't do two consecutive searches for p then p.py + because the first search could return a result that is lower in the + search_paths precedence order. As a result, it is safest to iterate over + search_paths and check whether p or p.py exists in each path. This allows + us to cleanly respect the precedence order. + + If the import is found, returns a tuple containing: + 1. Discovered dependency node (e.g. p/__init__.py or p.py) + 2. True if the import was a package, False if the import was a module. + 3. The Dir node in search_paths that the import is relative to. + If the import is not found, returns a tuple containing (None, False, None). + Callers should check for failure by checking whether the first entry in the + tuple is not None. + """ + for search_path in search_paths: + paths = [search_path] + # Note: if the same import is present as a package and a module, Python + # prefers the package. As a result, we always look for x/__init__.py + # before looking for x.py. + node = SCons.Node.FS.find_file(import_path + '/__init__.py', paths) + if node: + return node, True, search_path + else: + node = SCons.Node.FS.find_file(import_path + '.py', paths) + if node: + return node, False, search_path + + return None, False, None + + +def scan(node, env, path=()): + # cache the includes list in node so we only scan it once: + if node.includes is not None: + includes = node.includes + else: + includes = find_include_names(node) + # Intern the names of the include files. Saves some memory + # if the same header is included many times. + node.includes = list(map(SCons.Util.silent_intern, includes)) + + nodes = [] + if callable(path): + path = path() + + for module, imports in includes: + is_relative = module.startswith('.') + if is_relative: + # This is a relative include, so we must ignore PYTHONPATH. + module_lstripped = module.lstrip('.') + # One dot is current directory, two is parent, three is + # grandparent, etc. + num_parents = len(module) - len(module_lstripped) - 1 + current_dir = node.get_dir() + for i in itertools.repeat(None, num_parents): + current_dir = current_dir.up() + + search_paths = [current_dir] + search_string = module_lstripped + else: + search_paths = [env.Dir(p) for p in path] + search_string = module + + # If there are no paths, there is no point in parsing includes for this + # iteration of the loop. + if not search_paths: + continue + + module_components = [x for x in search_string.split('.') if x] + package_dir = None + hit_dir = None + if not module_components: + # This is just a "from . import x". + package_dir = search_paths[0] + else: + # Translate something like "import x.y" to a call to find_import + # with 'x/y' as the path. find_import will then determine whether + # we can find 'x/y/__init__.py' or 'x/y.py'. + import_node, is_dir, hit_dir = find_import( + '/'.join(module_components), search_paths) + if import_node: + nodes.append(import_node) + if is_dir: + package_dir = import_node.dir + + # If the statement was something like "from x import y, z", whether we + # iterate over imports depends on whether x was a package or module. + # If it was a module, y and z are just functions so we don't need to + # search for them. If it was a package, y and z are either packages or + # modules and we do need to search for them. + if package_dir and imports: + for i in imports: + import_node, _, _ = find_import(i, [package_dir]) + if import_node: + nodes.append(import_node) + + # Take a dependency on all __init__.py files from all imported + # packages unless it's a relative import. If it's a relative + # import, we don't need to take the dependency because Python + # requires that all referenced packages have already been imported, + # which means that the dependency has already been established. + if hit_dir and not is_relative: + import_dirs = module_components + for i in range(len(import_dirs)): + init_path = '/'.join(import_dirs[:i+1] + ['__init__.py']) + init_node = SCons.Node.FS.find_file(init_path, [hit_dir]) + if init_node and init_node not in nodes: + nodes.append(init_node) + + return sorted(nodes) + + +PythonSuffixes = ['.py'] +PythonScanner = ScannerBase( + scan, + name='PythonScanner', + skeys=PythonSuffixes, + path_function=path_function, + recursive=True, +) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Scanner/RC.py b/scons/scons-local-4.5.1/SCons/Scanner/RC.py new file mode 100644 index 000000000..23afe9dbf --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Scanner/RC.py @@ -0,0 +1,57 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Dependency scanner for RC (Interface Definition Language) files.""" + + +import SCons.Node.FS +from . import ClassicCPP + + +def no_tlb(nodes): + """Filter out .tlb files as they are binary and shouldn't be scanned.""" + + # print("Nodes:%s"%[str(n) for n in nodes]) + return [n for n in nodes if str(n)[-4:] != '.tlb'] + + +def RCScan(): + """Return a prototype Scanner instance for scanning RC source files""" + + res_re = ( + r'^(?:\s*#\s*(?:include)|' + r'.*?\s+(?:ICON|BITMAP|CURSOR|HTML|FONT|MESSAGETABLE|TYPELIB|REGISTRY|D3DFX)' + r'\s*.*?)' + r'\s*(<|"| )([^>"\s]+)(?:[>"\s])*$' + ) + resScanner = ClassicCPP( + "ResourceScanner", "$RCSUFFIXES", "CPPPATH", res_re, recursive=no_tlb + ) + + return resScanner + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Scanner/SWIG.py b/scons/scons-local-4.5.1/SCons/Scanner/SWIG.py new file mode 100644 index 000000000..70a174c5f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Scanner/SWIG.py @@ -0,0 +1,39 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Dependency scanner for SWIG code.""" + +from . import ClassicCPP + +SWIGSuffixes = ['.i'] + +def SWIGScanner(): + expr = r'^[ \t]*%[ \t]*(?:include|import|extern)[ \t]*(<|"?)([^>\s"]+)(?:>|"?)' + scanner = ClassicCPP("SWIGScanner", ".i", "SWIGPATH", expr) + return scanner + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Scanner/__init__.py b/scons/scons-local-4.5.1/SCons/Scanner/__init__.py new file mode 100644 index 000000000..fe44ee0fc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Scanner/__init__.py @@ -0,0 +1,436 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""The Scanner package for the SCons software construction utility.""" + +import re + +import SCons.Node.FS +import SCons.PathList +import SCons.Util + + +class _Null: + pass + +# This is used instead of None as a default argument value so None can be +# used as an actual argument value. +_null = _Null + +def Scanner(function, *args, **kwargs): + """Factory function to create a Scanner Object. + + Creates the appropriate Scanner based on the type of "function". + + TODO: Deprecate this some day. We've moved the functionality + inside the ScannerBase class and really don't need this factory function + any more. It was, however, used by some of our Tool modules, so + the call probably ended up in various people's custom modules + patterned on SCons code. + + """ + if SCons.Util.is_Dict(function): + return Selector(function, *args, **kwargs) + + return ScannerBase(function, *args, **kwargs) + + +class FindPathDirs: + """Class to bind a specific E{*}PATH variable name to a function that + will return all of the E{*}path directories. + """ + def __init__(self, variable): + self.variable = variable + + def __call__(self, env, dir=None, target=None, source=None, argument=None): + try: + path = env[self.variable] + except KeyError: + return () + + dir = dir or env.fs._cwd + path = SCons.PathList.PathList(path).subst_path(env, target, source) + return tuple(dir.Rfindalldirs(path)) + + +class ScannerBase: + """Base class for dependency scanners. + + Implements straightforward, single-pass scanning of a single file. + + A Scanner is usually set up with a scanner function (and optionally + a path function), but can also be a kind of dispatcher which + passes control to other Scanners. + + A scanner function takes three arguments: a Node to scan for + dependecies, the construction environment to use, and an optional + tuple of paths (as generated by the optional path function). + It must return a list containing the Nodes for all the direct + dependencies of the file. + + The optional path function is called to return paths that can be + searched for implicit dependency files. It takes five arguments: + a construction environment, a Node for the directory containing + the SConscript file that defined the primary target, a list of + target nodes, a list of source nodes, and the optional argument + for this instance. + + Examples:: + + s = Scanner(my_scanner_function) + s = Scanner(function=my_scanner_function) + s = Scanner(function=my_scanner_function, argument='foo') + + Args: + function: either a scanner function taking two or three arguments + and returning a list of File Nodes; or a mapping of keys to + other Scanner objects. + + name: an optional name for identifying this scanner object + (defaults to "NONE"). + + argument: an optional argument that will be passed to both + *function* and *path_function*. + + skeys: an optional list argument that can be used + to determine if this scanner can be used for a given Node. + In the case of File nodes, for example, the *skeys* + would be file suffixes. + + path_function: an optional function which returns a tuple + of the directories that can be searched for implicit + dependency files. May also return a callable which + is called with no args and returns the tuple (supporting + Bindable class). + + node_class: optional class of Nodes which this scan will return. + If not specified, defaults to :class:`SCons.Node.FS.Base`. + If *node_class* is ``None``, then this scanner will not enforce + any Node conversion and will return the raw results from *function*. + + node_factory: optional factory function to be called to + translate the raw results returned by *function* + into the expected *node_class* objects. + + scan_check: optional function to be called to first check whether + this node really needs to be scanned. + + recursive: optional specifier of whether this scanner should be + invoked recursively on all of the implicit dependencies it returns + (for example `#include` lines in C source files, which may refer + to header files which should themselves be scanned). + May be a callable, which will be called to filter + the list of nodes found to select a subset for recursive + scanning (the canonical example being only recursively + scanning subdirectories within a directory). The default + is to not do recursive scanning. + """ + + def __init__( + self, + function, + name="NONE", + argument=_null, + skeys=_null, + path_function=None, + # Node.FS.Base so that, by default, it's okay for a + # scanner to return a Dir, File or Entry. + node_class=SCons.Node.FS.Base, + node_factory=None, + scan_check=None, + recursive=None, + ): + """Construct a new scanner object given a scanner function.""" + # Note: this class could easily work with scanner functions that take + # something other than a filename as an argument (e.g. a database + # node) and a dependencies list that aren't file names. All that + # would need to be changed is the documentation. + + self.function = function + self.path_function = path_function + self.name = name + self.argument = argument + + if skeys is _null: + if SCons.Util.is_Dict(function): + skeys = list(function.keys()) + else: + skeys = [] + self.skeys = skeys + + self.node_class = node_class + self.node_factory = node_factory + self.scan_check = scan_check + if callable(recursive): + self.recurse_nodes = recursive + elif recursive: + self.recurse_nodes = self._recurse_all_nodes + else: + self.recurse_nodes = self._recurse_no_nodes + + def path(self, env, dir=None, target=None, source=None): + if not self.path_function: + return () + + if self.argument is not _null: + return self.path_function(env, dir, target, source, self.argument) + + return self.path_function(env, dir, target, source) + + def __call__(self, node, env, path=()) -> list: + """Scans a single object. + + Args: + node: the node that will be passed to the scanner function + env: the environment that will be passed to the scanner function. + path: tuple of paths from the `path_function` + + Returns: + A list of direct dependency nodes for the specified node. + + """ + if self.scan_check and not self.scan_check(node, env): + return [] + + # here we may morph into a different Scanner instance: + self = self.select(node) # pylint: disable=self-cls-assignment + + if self.argument is not _null: + node_list = self.function(node, env, path, self.argument) + else: + node_list = self.function(node, env, path) + + kw = {} + if hasattr(node, 'dir'): + kw['directory'] = node.dir + conv = env.get_factory(self.node_factory) + cls = self.node_class + nl = [conv(n, **kw) if cls and not isinstance(n, cls) else n for n in node_list] + return nl + + def __eq__(self, other): + try: + return self.__dict__ == other.__dict__ + except AttributeError: + # other probably doesn't have a __dict__ + return self.__dict__ == other + + def __hash__(self): + return id(self) + + def __str__(self): + return self.name + + def add_skey(self, skey): + """Add a skey to the list of skeys""" + self.skeys.append(skey) + + def get_skeys(self, env=None): + if env and SCons.Util.is_String(self.skeys): + return env.subst_list(self.skeys)[0] + return self.skeys + + def select(self, node): + if SCons.Util.is_Dict(self.function): + key = node.scanner_key() + try: + return self.function[key] + except KeyError: + return None + else: + return self + + @staticmethod + def _recurse_all_nodes(nodes): + return nodes + + @staticmethod + def _recurse_no_nodes(nodes): + return [] + + # recurse_nodes = _recurse_no_nodes + + def add_scanner(self, skey, scanner): + self.function[skey] = scanner + self.add_skey(skey) + + +# keep the old name for a while in case external users are using. +# there are no more internal uses of this class by the name "Base" +Base = ScannerBase + + +class Selector(ScannerBase): + """ + A class for selecting a more specific scanner based on the + :func:`scanner_key` (suffix) for a specific Node. + + TODO: This functionality has been moved into the inner workings of + the ScannerBase class, and this class will be deprecated at some point. + (It was never exposed directly as part of the public interface, + although it is used by the :func:`Scanner` factory function that was + used by various Tool modules and therefore was likely a template + for custom modules that may be out there.) + """ + def __init__(self, mapping, *args, **kwargs): + super().__init__(None, *args, **kwargs) + self.mapping = mapping + self.skeys = list(mapping.keys()) + + def __call__(self, node, env, path=()): + return self.select(node)(node, env, path) + + def select(self, node): + try: + return self.mapping[node.scanner_key()] + except KeyError: + return None + + def add_scanner(self, skey, scanner): + self.mapping[skey] = scanner + self.add_skey(skey) + + +class Current(ScannerBase): + """ + A class for scanning files that are source files (have no builder) + or are derived files and are current (which implies that they exist, + either locally or in a repository). + """ + + def __init__(self, *args, **kwargs): + def current_check(node, env): + return not node.has_builder() or node.is_up_to_date() + + kwargs['scan_check'] = current_check + super().__init__(*args, **kwargs) + +class Classic(Current): + """ + A Scanner subclass to contain the common logic for classic CPP-style + include scanning, but which can be customized to use different + regular expressions to find the includes. + + Note that in order for this to work "out of the box" (without + overriding the :meth:`find_include` and :meth:`sort_key1` methods), + the regular expression passed to the constructor must return the + name of the include file in group 0. + """ + + def __init__(self, name, suffixes, path_variable, regex, *args, **kwargs): + self.cre = re.compile(regex, re.M) + + def _scan(node, _, path=(), self=self): + node = node.rfile() + if not node.exists(): + return [] + return self.scan(node, path) + + kwargs['function'] = _scan + kwargs['path_function'] = FindPathDirs(path_variable) + + # Allow recursive to propagate if child class specifies. + # In this case resource scanner needs to specify a filter on which files + # get recursively processed. Previously was hardcoded to 1 instead of + # defaulted to 1. + kwargs['recursive'] = kwargs.get('recursive', True) + kwargs['skeys'] = suffixes + kwargs['name'] = name + + super().__init__(*args, **kwargs) + + @staticmethod + def find_include(include, source_dir, path): + n = SCons.Node.FS.find_file(include, (source_dir,) + tuple(path)) + return n, include + + @staticmethod + def sort_key(include): + return SCons.Node.FS._my_normcase(include) + + def find_include_names(self, node): + return self.cre.findall(node.get_text_contents()) + + def scan(self, node, path=()): + # cache the includes list in node so we only scan it once: + if node.includes is not None: + includes = node.includes + else: + includes = self.find_include_names(node) + # Intern the names of the include files. Saves some memory + # if the same header is included many times. + node.includes = list(map(SCons.Util.silent_intern, includes)) + + # This is a hand-coded DSU (decorate-sort-undecorate, or + # Schwartzian transform) pattern. The sort key is the raw name + # of the file as specifed on the #include line (including the + # " or <, since that may affect what file is found), which lets + # us keep the sort order constant regardless of whether the file + # is actually found in a Repository or locally. + nodes = [] + source_dir = node.get_dir() + if callable(path): + path = path() + for include in includes: + n, i = self.find_include(include, source_dir, path) + + if n is None: + SCons.Warnings.warn( + SCons.Warnings.DependencyWarning, + "No dependency generated for file: %s " + "(included from: %s) -- file not found" % (i, node), + ) + else: + nodes.append((self.sort_key(include), n)) + + return [pair[1] for pair in sorted(nodes)] + +class ClassicCPP(Classic): + """ + A Classic Scanner subclass which takes into account the type of + bracketing used to include the file, and uses classic CPP rules + for searching for the files based on the bracketing. + + Note that in order for this to work, the regular expression passed + to the constructor must return the leading bracket in group 0, and + the contained filename in group 1. + """ + def find_include(self, include, source_dir, path): + include = list(map(SCons.Util.to_str, include)) + if include[0] == '"': + paths = (source_dir,) + tuple(path) + else: + paths = tuple(path) + (source_dir,) + + n = SCons.Node.FS.find_file(include[1], paths) + i = SCons.Util.silent_intern(include[1]) + return n, i + + def sort_key(self, include): + return SCons.Node.FS._my_normcase(' '.join(include)) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Script/Interactive.py b/scons/scons-local-4.5.1/SCons/Script/Interactive.py new file mode 100644 index 000000000..d6947402e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Script/Interactive.py @@ -0,0 +1,377 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons interactive mode. """ + +# TODO: +# +# This has the potential to grow into something with a really big life +# of its own, which might or might not be a good thing. Nevertheless, +# here are some enhancements that will probably be requested some day +# and are worth keeping in mind (assuming this takes off): +# +# - A command to re-read / re-load the SConscript files. This may +# involve allowing people to specify command-line options (e.g. -f, +# -I, --no-site-dir) that affect how the SConscript files are read. +# +# - Additional command-line options on the "build" command. +# +# Of the supported options that seemed to make sense (after a quick +# pass through the list), the ones that seemed likely enough to be +# used are listed in the man page and have explicit test scripts. +# +# These had code changed in Script/Main.py to support them, but didn't +# seem likely to be used regularly, so had no test scripts added: +# +# build --diskcheck=* +# build --implicit-cache=* +# build --implicit-deps-changed=* +# build --implicit-deps-unchanged=* +# +# These look like they should "just work" with no changes to the +# existing code, but like those above, look unlikely to be used and +# therefore had no test scripts added: +# +# build --random +# +# These I'm not sure about. They might be useful for individual +# "build" commands, and may even work, but they seem unlikely enough +# that we'll wait until they're requested before spending any time on +# writing test scripts for them, or investigating whether they work. +# +# build -q [??? is there a useful analog to the exit status?] +# build --duplicate= +# build --profile= +# build --max-drift= +# build --warn=* +# build --Y +# +# - Most of the SCons command-line options that the "build" command +# supports should be settable as default options that apply to all +# subsequent "build" commands. Maybe a "set {option}" command that +# maps to "SetOption('{option}')". +# +# - Need something in the 'help' command that prints the -h output. +# +# - A command to run the configure subsystem separately (must see how +# this interacts with the new automake model). +# +# - Command-line completion of target names; maybe even of SCons options? +# Completion is something that's supported by the Python cmd module, +# so this should be doable without too much trouble. +# + +import cmd +import copy +import os +import re +import shlex +import sys + +try: + import readline +except ImportError: + pass + +class SConsInteractiveCmd(cmd.Cmd): + """\ + +build [TARGETS] Build the specified TARGETS and their dependencies. 'b' is a synonym. +clean [TARGETS] Clean (remove) the specified TARGETS and their dependencies. 'c' is a synonym. +exit Exit SCons interactive mode. +help [COMMAND] Prints help for the specified COMMAND. 'h' and '?' are synonyms. +shell [COMMANDLINE] Execute COMMANDLINE in a subshell. 'sh' and '!' are synonyms. +version Prints SCons version information. +""" + + synonyms = { + 'b' : 'build', + 'c' : 'clean', + 'h' : 'help', + 'scons' : 'build', + 'sh' : 'shell', + } + + def __init__(self, **kw): + cmd.Cmd.__init__(self) + for key, val in kw.items(): + setattr(self, key, val) + + if sys.platform == 'win32': + self.shell_variable = 'COMSPEC' + else: + self.shell_variable = 'SHELL' + + def default(self, argv): + print("*** Unknown command: %s" % argv[0]) + + def onecmd(self, line): + line = line.strip() + if not line: + print(self.lastcmd) + return self.emptyline() + self.lastcmd = line + if line[0] == '!': + line = 'shell ' + line[1:] + elif line[0] == '?': + line = 'help ' + line[1:] + if os.sep == '\\': + line = line.replace('\\', '\\\\') + argv = shlex.split(line) + argv[0] = self.synonyms.get(argv[0], argv[0]) + if not argv[0]: + return self.default(line) + else: + try: + func = getattr(self, 'do_' + argv[0]) + except AttributeError: + return self.default(argv) + return func(argv) + + def do_build(self, argv): + """\ + build [TARGETS] Build the specified TARGETS and their + dependencies. 'b' is a synonym. + """ + import SCons.Node + import SCons.SConsign + import SCons.Script.Main + + options = copy.deepcopy(self.options) + + options, targets = self.parser.parse_args(argv[1:], values=options) + + SCons.Script.COMMAND_LINE_TARGETS = targets + + if targets: + SCons.Script.BUILD_TARGETS = targets + else: + # If the user didn't specify any targets on the command line, + # use the list of default targets. + SCons.Script.BUILD_TARGETS = SCons.Script._build_plus_default + + nodes = SCons.Script.Main._build_targets(self.fs, + options, + targets, + self.target_top) + + if not nodes: + return + + # Call each of the Node's alter_targets() methods, which may + # provide additional targets that ended up as part of the build + # (the canonical example being a VariantDir() when we're building + # from a source directory) and which we therefore need their + # state cleared, too. + x = [] + for n in nodes: + x.extend(n.alter_targets()[0]) + nodes.extend(x) + + # Clean up so that we can perform the next build correctly. + # + # We do this by walking over all the children of the targets, + # and clearing their state. + # + # We currently have to re-scan each node to find their + # children, because built nodes have already been partially + # cleared and don't remember their children. (In scons + # 0.96.1 and earlier, this wasn't the case, and we didn't + # have to re-scan the nodes.) + # + # Because we have to re-scan each node, we can't clear the + # nodes as we walk over them, because we may end up rescanning + # a cleared node as we scan a later node. Therefore, only + # store the list of nodes that need to be cleared as we walk + # the tree, and clear them in a separate pass. + # + # XXX: Someone more familiar with the inner workings of scons + # may be able to point out a more efficient way to do this. + + SCons.Script.Main.progress_display("scons: Clearing cached node information ...") + + seen_nodes = {} + + def get_unseen_children(node, parent, seen_nodes=seen_nodes): + def is_unseen(node, seen_nodes=seen_nodes): + return node not in seen_nodes + return [child for child in node.children(scan=1) if is_unseen(child)] + + def add_to_seen_nodes(node, parent, seen_nodes=seen_nodes): + seen_nodes[node] = 1 + + # If this file is in a VariantDir and has a + # corresponding source file in the source tree, remember the + # node in the source tree, too. This is needed in + # particular to clear cached implicit dependencies on the + # source file, since the scanner will scan it if the + # VariantDir was created with duplicate=0. + try: + rfile_method = node.rfile + except AttributeError: + return + else: + rfile = rfile_method() + if rfile != node: + seen_nodes[rfile] = 1 + + for node in nodes: + walker = SCons.Node.Walker(node, + kids_func=get_unseen_children, + eval_func=add_to_seen_nodes) + n = walker.get_next() + while n: + n = walker.get_next() + + for node in seen_nodes.keys(): + # Call node.clear() to clear most of the state + node.clear() + # node.clear() doesn't reset node.state, so call + # node.set_state() to reset it manually + node.set_state(SCons.Node.no_state) + node.implicit = None + + # Debug: Uncomment to verify that all Taskmaster reference + # counts have been reset to zero. + #if node.ref_count != 0: + # from SCons.Debug import Trace + # Trace('node %s, ref_count %s !!!\n' % (node, node.ref_count)) + + # TODO: REMOVE WPD DEBUG 02/14/2022 + # This call was clearing the list of sconsign files to be written, so it would + # only write the results of the first build command. All others wouldn't be written + # to .SConsign. + # Pretty sure commenting this out is the correct fix. + # SCons.SConsign.Reset() + SCons.Script.Main.progress_display("scons: done clearing node information.") + + def do_clean(self, argv): + """\ + clean [TARGETS] Clean (remove) the specified TARGETS + and their dependencies. 'c' is a synonym. + """ + return self.do_build(['build', '--clean'] + argv[1:]) + + def do_EOF(self, argv): + print() + self.do_exit(argv) + + def _do_one_help(self, arg): + try: + # If help_() exists, then call it. + func = getattr(self, 'help_' + arg) + except AttributeError: + try: + func = getattr(self, 'do_' + arg) + except AttributeError: + doc = None + else: + doc = self._doc_to_help(func) + if doc: + sys.stdout.write(doc + '\n') + sys.stdout.flush() + else: + doc = self.strip_initial_spaces(func()) + if doc: + sys.stdout.write(doc + '\n') + sys.stdout.flush() + + def _doc_to_help(self, obj): + doc = obj.__doc__ + if doc is None: + return '' + return self._strip_initial_spaces(doc) + + def _strip_initial_spaces(self, s): + lines = s.split('\n') + spaces = re.match(' *', lines[0]).group(0) + def strip_spaces(l, spaces=spaces): + if l[:len(spaces)] == spaces: + l = l[len(spaces):] + return l + lines = list(map(strip_spaces, lines)) + return '\n'.join(lines) + + def do_exit(self, argv): + """\ + exit Exit SCons interactive mode. + """ + sys.exit(0) + + def do_help(self, argv): + """\ + help [COMMAND] Prints help for the specified COMMAND. 'h' + and '?' are synonyms. + """ + if argv[1:]: + for arg in argv[1:]: + if self._do_one_help(arg): + break + else: + # If bare 'help' is called, print this class's doc + # string (if it has one). + doc = self._doc_to_help(self.__class__) + if doc: + sys.stdout.write(doc + '\n') + sys.stdout.flush() + + def do_shell(self, argv): + """\ + shell [COMMANDLINE] Execute COMMANDLINE in a subshell. 'sh' and + '!' are synonyms. + """ + import subprocess + argv = argv[1:] + if not argv: + argv = os.environ[self.shell_variable] + try: + # Per "[Python-Dev] subprocess insufficiently platform-independent?" + # http://mail.python.org/pipermail/python-dev/2008-August/081979.html "+ + # Doing the right thing with an argument list currently + # requires different shell= values on Windows and Linux. + p = subprocess.Popen(argv, shell=(sys.platform=='win32')) + except EnvironmentError as e: + sys.stderr.write('scons: %s: %s\n' % (argv[0], e.strerror)) + else: + p.wait() + + def do_version(self, argv): + """\ + version Prints SCons version information. + """ + sys.stdout.write(self.parser.version + '\n') + +def interact(fs, parser, options, targets, target_top): + c = SConsInteractiveCmd(prompt = 'scons>>> ', + fs = fs, + parser = parser, + options = options, + targets = targets, + target_top = target_top) + c.cmdloop() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Script/Main.py b/scons/scons-local-4.5.1/SCons/Script/Main.py new file mode 100644 index 000000000..d4228facb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Script/Main.py @@ -0,0 +1,1478 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""The main() function used by the scons script. + +Architecturally, this *is* the scons script, and will likely only be +called from the external "scons" wrapper. Consequently, anything here +should not be, or be considered, part of the build engine. If it's +something that we expect other software to want to use, it should go in +some other module. If it's specific to the "scons" script invocation, +it goes here. +""" + +# these define the range of versions SCons supports +minimum_python_version = (3, 6, 0) +deprecated_python_version = (3, 6, 0) + +import SCons.compat + +import atexit +import importlib.util +import os +import re +import sys +import time +import traceback +import platform +import threading + +import SCons.CacheDir +import SCons.Debug +import SCons.Defaults +import SCons.Environment +import SCons.Errors +import SCons.Taskmaster.Job +import SCons.Node +import SCons.Node.FS +import SCons.Platform +import SCons.Platform.virtualenv +import SCons.SConf +import SCons.Script +import SCons.Taskmaster +import SCons.Util +import SCons.Warnings +import SCons.Script.Interactive + +from SCons import __version__ as SConsVersion + +# Global variables +first_command_start = None +last_command_end = None +print_objects = False +print_memoizer = False +print_stacktrace = False +print_time = False +print_action_timestamps = False +sconscript_time = 0 +cumulative_command_time = 0 +exit_status = 0 # final exit status, assume success by default +this_build_status = 0 # "exit status" of an individual build +num_jobs = None +delayed_warnings = [] + + +def revert_io(): + # This call is added to revert stderr and stdout to the original + # ones just in case some build rule or something else in the system + # has redirected them elsewhere. + sys.stderr = sys.__stderr__ + sys.stdout = sys.__stdout__ + + +class SConsPrintHelpException(Exception): + pass + + +display = SCons.Util.display +progress_display = SCons.Util.DisplayEngine() + + +class Progressor: + prev = '' + count = 0 + target_string = '$TARGET' + + def __init__(self, obj, interval=1, file=None, overwrite=False): + if file is None: + file = sys.stdout + + self.obj = obj + self.file = file + self.interval = interval + self.overwrite = overwrite + + if callable(obj): + self.func = obj + elif SCons.Util.is_List(obj): + self.func = self.spinner + elif obj.find(self.target_string) != -1: + self.func = self.replace_string + else: + self.func = self.string + + def write(self, s): + self.file.write(s) + self.file.flush() + self.prev = s + + def erase_previous(self): + if self.prev: + length = len(self.prev) + if self.prev[-1] in ('\n', '\r'): + length = length - 1 + self.write(' ' * length + '\r') + self.prev = '' + + def spinner(self, node): + self.write(self.obj[self.count % len(self.obj)]) + + def string(self, node): + self.write(self.obj) + + def replace_string(self, node): + self.write(self.obj.replace(self.target_string, str(node))) + + def __call__(self, node): + self.count = self.count + 1 + if (self.count % self.interval) == 0: + if self.overwrite: + self.erase_previous() + self.func(node) + +ProgressObject = SCons.Util.Null() + +def Progress(*args, **kw): + global ProgressObject + ProgressObject = Progressor(*args, **kw) + +# Task control. +# + +_BuildFailures = [] + + +def GetBuildFailures(): + return _BuildFailures + + +class BuildTask(SCons.Taskmaster.OutOfDateTask): + """An SCons build task.""" + progress = ProgressObject + + def display(self, message): + display('scons: ' + message) + + def prepare(self): + if not isinstance(self.progress, SCons.Util.Null): + for target in self.targets: + self.progress(target) + return SCons.Taskmaster.OutOfDateTask.prepare(self) + + def needs_execute(self): + if SCons.Taskmaster.OutOfDateTask.needs_execute(self): + return True + if self.top and self.targets[0].has_builder(): + display("scons: `%s' is up to date." % str(self.node)) + return False + + def execute(self): + if print_time: + start_time = time.time() + global first_command_start + if first_command_start is None: + first_command_start = start_time + SCons.Taskmaster.OutOfDateTask.execute(self) + if print_time: + global cumulative_command_time + global last_command_end + finish_time = time.time() + last_command_end = finish_time + cumulative_command_time += finish_time - start_time + if print_action_timestamps: + sys.stdout.write( + "Command execution start timestamp: %s: %f\n" + % (str(self.node), start_time) + ) + sys.stdout.write( + "Command execution end timestamp: %s: %f\n" + % (str(self.node), finish_time) + ) + sys.stdout.write( + "Command execution time: %s: %f seconds\n" + % (str(self.node), (finish_time - start_time)) + ) + + def do_failed(self, status=2): + _BuildFailures.append(self.exception[1]) + global exit_status + global this_build_status + if self.options.ignore_errors: + SCons.Taskmaster.OutOfDateTask.executed(self) + elif self.options.keep_going: + SCons.Taskmaster.OutOfDateTask.fail_continue(self) + exit_status = status + this_build_status = status + else: + SCons.Taskmaster.OutOfDateTask.fail_stop(self) + exit_status = status + this_build_status = status + + def executed(self): + t = self.targets[0] + if self.top and not t.has_builder() and not t.side_effect: + if not t.exists(): + if t.__class__.__name__ in ('File', 'Dir', 'Entry'): + errstr="Do not know how to make %s target `%s' (%s)." % (t.__class__.__name__, t, t.get_abspath()) + else: # Alias or Python or ... + errstr="Do not know how to make %s target `%s'." % (t.__class__.__name__, t) + sys.stderr.write("scons: *** " + errstr) + if not self.options.keep_going: + sys.stderr.write(" Stop.") + sys.stderr.write("\n") + try: + raise SCons.Errors.BuildError(t, errstr) + except KeyboardInterrupt: + raise + except: + self.exception_set() + self.do_failed() + else: + print("scons: Nothing to be done for `%s'." % t) + SCons.Taskmaster.OutOfDateTask.executed(self) + else: + SCons.Taskmaster.OutOfDateTask.executed(self) + + def failed(self): + # Handle the failure of a build task. The primary purpose here + # is to display the various types of Errors and Exceptions + # appropriately. + exc_info = self.exc_info() + try: + t, e, tb = exc_info + except ValueError: + t, e = exc_info + tb = None + + if t is None: + # The Taskmaster didn't record an exception for this Task; + # see if the sys module has one. + try: + t, e, tb = sys.exc_info()[:] + except ValueError: + t, e = exc_info + tb = None + + # Deprecated string exceptions will have their string stored + # in the first entry of the tuple. + if e is None: + e = t + + buildError = SCons.Errors.convert_to_BuildError(e) + if not buildError.node: + buildError.node = self.node + + node = buildError.node + if not SCons.Util.is_List(node): + node = [ node ] + nodename = ', '.join(map(str, node)) + + errfmt = "scons: *** [%s] %s\n" + sys.stderr.write(errfmt % (nodename, buildError)) + + if (buildError.exc_info[2] and buildError.exc_info[1] and + not isinstance( + buildError.exc_info[1], + (EnvironmentError, SCons.Errors.StopError, + SCons.Errors.UserError))): + type, value, trace = buildError.exc_info + if tb and print_stacktrace: + sys.stderr.write("scons: internal stack trace:\n") + traceback.print_tb(tb, file=sys.stderr) + traceback.print_exception(type, value, trace) + elif tb and print_stacktrace: + sys.stderr.write("scons: internal stack trace:\n") + traceback.print_tb(tb, file=sys.stderr) + + self.exception = (e, buildError, tb) # type, value, traceback + self.do_failed(buildError.exitstatus) + + self.exc_clear() + + def postprocess(self): + if self.top: + t = self.targets[0] + for tp in self.options.tree_printers: + tp.display(t) + if self.options.debug_includes: + tree = t.render_include_tree() + if tree: + print() + print(tree) + SCons.Taskmaster.OutOfDateTask.postprocess(self) + + def make_ready(self): + """Make a task ready for execution""" + SCons.Taskmaster.OutOfDateTask.make_ready(self) + if self.out_of_date and self.options.debug_explain: + explanation = self.out_of_date[0].explain() + if explanation: + sys.stdout.write("scons: " + explanation) + + +class CleanTask(SCons.Taskmaster.AlwaysTask): + """An SCons clean task.""" + def fs_delete(self, path, pathstr, remove=True): + try: + if os.path.lexists(path): + if os.path.isfile(path) or os.path.islink(path): + if remove: os.unlink(path) + display("Removed " + pathstr) + elif os.path.isdir(path) and not os.path.islink(path): + # delete everything in the dir + for e in sorted(os.listdir(path)): + p = os.path.join(path, e) + s = os.path.join(pathstr, e) + if os.path.isfile(p): + if remove: os.unlink(p) + display("Removed " + s) + else: + self.fs_delete(p, s, remove) + # then delete dir itself + if remove: os.rmdir(path) + display("Removed directory " + pathstr) + else: + errstr = "Path '%s' exists but isn't a file or directory." + raise SCons.Errors.UserError(errstr % pathstr) + except SCons.Errors.UserError as e: + print(e) + except (IOError, OSError) as e: + print("scons: Could not remove '%s':" % pathstr, e.strerror) + + def _get_files_to_clean(self): + result = [] + target = self.targets[0] + if target.has_builder() or target.side_effect: + result = [t for t in self.targets if not t.noclean] + return result + + def _clean_targets(self, remove=True): + target = self.targets[0] + if target in SCons.Environment.CleanTargets: + files = SCons.Environment.CleanTargets[target] + for f in files: + self.fs_delete(f.get_abspath(), str(f), remove) + + def show(self): + for t in self._get_files_to_clean(): + if not t.isdir(): + display("Removed " + str(t)) + self._clean_targets(remove=False) + + def remove(self): + for t in self._get_files_to_clean(): + try: + removed = t.remove() + except OSError as e: + # An OSError may indicate something like a permissions + # issue, an IOError would indicate something like + # the file not existing. In either case, print a + # message and keep going to try to remove as many + # targets as possible. + print("scons: Could not remove '{0}'".format(str(t)), e.strerror) + else: + if removed: + display("Removed " + str(t)) + self._clean_targets(remove=True) + + execute = remove + + # We want the Taskmaster to update the Node states (and therefore + # handle reference counts, etc.), but we don't want to call + # back to the Node's post-build methods, which would do things + # we don't want, like store .sconsign information. + executed = SCons.Taskmaster.Task.executed_without_callbacks + + # Have the Taskmaster arrange to "execute" all of the targets, because + # we'll figure out ourselves (in remove() or show() above) whether + # anything really needs to be done. + make_ready = SCons.Taskmaster.Task.make_ready_all + + def prepare(self): + pass + +class QuestionTask(SCons.Taskmaster.AlwaysTask): + """An SCons task for the -q (question) option.""" + def prepare(self): + pass + + def execute(self): + if self.targets[0].get_state() != SCons.Node.up_to_date or \ + (self.top and not self.targets[0].exists()): + global exit_status + global this_build_status + exit_status = 1 + this_build_status = 1 + self.tm.stop() + + def executed(self): + pass + + +class TreePrinter: + def __init__(self, derived=False, prune=False, status=False, sLineDraw=False): + self.derived = derived + self.prune = prune + self.status = status + self.sLineDraw = sLineDraw + def get_all_children(self, node): + return node.all_children() + def get_derived_children(self, node): + children = node.all_children(None) + return [x for x in children if x.has_builder()] + def display(self, t): + if self.derived: + func = self.get_derived_children + else: + func = self.get_all_children + s = self.status and 2 or 0 + SCons.Util.print_tree(t, func, prune=self.prune, showtags=s, lastChild=True, singleLineDraw=self.sLineDraw) + + +def python_version_string(): + return sys.version.split()[0] + +def python_version_unsupported(version=sys.version_info): + return version < minimum_python_version + +def python_version_deprecated(version=sys.version_info): + return version < deprecated_python_version + + +class FakeOptionParser: + """ + A do-nothing option parser, used for the initial OptionsParser variable. + + During normal SCons operation, the OptionsParser is created right + away by the main() function. Certain tests scripts however, can + introspect on different Tool modules, the initialization of which + can try to add a new, local option to an otherwise uninitialized + OptionsParser object. This allows that introspection to happen + without blowing up. + + """ + class FakeOptionValues: + def __getattr__(self, attr): + return None + values = FakeOptionValues() + def add_local_option(self, *args, **kw): + pass + +OptionsParser = FakeOptionParser() + +def AddOption(*args, **kw): + if 'default' not in kw: + kw['default'] = None + result = OptionsParser.add_local_option(*args, **kw) + return result + +def GetOption(name): + return getattr(OptionsParser.values, name) + +def SetOption(name, value): + return OptionsParser.values.set_option(name, value) + + +def ValidateOptions(throw_exception=False) -> None: + """Validate options passed to SCons on the command line. + + If you call this after you set all your command line options with AddOption(), + it will verify that all command line options are valid. + So if you added an option --xyz and you call SCons with --xyy you can cause + SCons to issue an error message and exit by calling this function. + + :param bool throw_exception: (Optional) Should this function raise an error if there's an invalid option on the command line, or issue a message and exit with error status. + + :raises SConsBadOptionError: If throw_exception is True and there are invalid options on command line. + + .. versionadded:: 4.5.0 + """ + + OptionsParser.raise_exception_on_error = throw_exception + OptionsParser.preserve_unknown_options = False + OptionsParser.parse_args(OptionsParser.largs, OptionsParser.values) + +def PrintHelp(file=None): + OptionsParser.print_help(file=file) + +class Stats: + def __init__(self): + self.stats = [] + self.labels = [] + self.append = self.do_nothing + self.print_stats = self.do_nothing + def enable(self, outfp): + self.outfp = outfp + self.append = self.do_append + self.print_stats = self.do_print + def do_nothing(self, *args, **kw): + pass + +class CountStats(Stats): + def do_append(self, label): + self.labels.append(label) + self.stats.append(SCons.Debug.fetchLoggedInstances()) + def do_print(self): + stats_table = {} + for s in self.stats: + for n in [t[0] for t in s]: + stats_table[n] = [0, 0, 0, 0] + i = 0 + for s in self.stats: + for n, c in s: + stats_table[n][i] = c + i = i + 1 + self.outfp.write("Object counts:\n") + pre = [" "] + post = [" %s\n"] + l = len(self.stats) + fmt1 = ''.join(pre + [' %7s']*l + post) + fmt2 = ''.join(pre + [' %7d']*l + post) + labels = self.labels[:l] + labels.append(("", "Class")) + self.outfp.write(fmt1 % tuple([x[0] for x in labels])) + self.outfp.write(fmt1 % tuple([x[1] for x in labels])) + for k in sorted(stats_table.keys()): + r = stats_table[k][:l] + [k] + self.outfp.write(fmt2 % tuple(r)) + +count_stats = CountStats() + +class MemStats(Stats): + def do_append(self, label): + self.labels.append(label) + self.stats.append(SCons.Debug.memory()) + def do_print(self): + fmt = 'Memory %-32s %12d\n' + for label, stats in zip(self.labels, self.stats): + self.outfp.write(fmt % (label, stats)) + +memory_stats = MemStats() + +# utility functions + +def _scons_syntax_error(e): + """Handle syntax errors. Print out a message and show where the error + occurred. + """ + etype, value, tb = sys.exc_info() + lines = traceback.format_exception_only(etype, value) + for line in lines: + sys.stderr.write(line+'\n') + sys.exit(2) + +def find_deepest_user_frame(tb): + """ + Find the deepest stack frame that is not part of SCons. + + Input is a "pre-processed" stack trace in the form + returned by traceback.extract_tb() or traceback.extract_stack() + """ + + tb.reverse() + + # find the deepest traceback frame that is not part + # of SCons: + for frame in tb: + filename = frame[0] + if filename.find(os.sep+'SCons'+os.sep) == -1: + return frame + return tb[0] + +def _scons_user_error(e): + """Handle user errors. Print out a message and a description of the + error, along with the line number and routine where it occured. + The file and line number will be the deepest stack frame that is + not part of SCons itself. + """ + global print_stacktrace + etype, value, tb = sys.exc_info() + if print_stacktrace: + traceback.print_exception(etype, value, tb) + filename, lineno, routine, dummy = find_deepest_user_frame(traceback.extract_tb(tb)) + sys.stderr.write("\nscons: *** %s\n" % value) + sys.stderr.write('File "%s", line %d, in %s\n' % (filename, lineno, routine)) + sys.exit(2) + +def _scons_user_warning(e): + """Handle user warnings. Print out a message and a description of + the warning, along with the line number and routine where it occured. + The file and line number will be the deepest stack frame that is + not part of SCons itself. + """ + etype, value, tb = sys.exc_info() + filename, lineno, routine, dummy = find_deepest_user_frame(traceback.extract_tb(tb)) + sys.stderr.write("\nscons: warning: %s\n" % e) + sys.stderr.write('File "%s", line %d, in %s\n' % (filename, lineno, routine)) + +def _scons_internal_warning(e): + """Slightly different from _scons_user_warning in that we use the + *current call stack* rather than sys.exc_info() to get our stack trace. + This is used by the warnings framework to print warnings.""" + filename, lineno, routine, dummy = find_deepest_user_frame(traceback.extract_stack()) + sys.stderr.write("\nscons: warning: %s\n" % e.args[0]) + sys.stderr.write('File "%s", line %d, in %s\n' % (filename, lineno, routine)) + +def _scons_internal_error(): + """Handle all errors but user errors. Print out a message telling + the user what to do in this case and print a normal trace. + """ + print('internal error') + traceback.print_exc() + sys.exit(2) + +def _SConstruct_exists(dirname='', repositories=[], filelist=None): + """This function checks that an SConstruct file exists in a directory. + If so, it returns the path of the file. By default, it checks the + current directory. + """ + if not filelist: + filelist = ['SConstruct', 'Sconstruct', 'sconstruct', 'SConstruct.py', 'Sconstruct.py', 'sconstruct.py'] + for file in filelist: + sfile = os.path.join(dirname, file) + if os.path.isfile(sfile): + return sfile + if not os.path.isabs(sfile): + for rep in repositories: + if os.path.isfile(os.path.join(rep, sfile)): + return sfile + return None + +def _set_debug_values(options): + global print_memoizer, print_objects, print_stacktrace, print_time, print_action_timestamps + + debug_values = options.debug + + if "count" in debug_values: + # All of the object counts are within "if track_instances:" blocks, + # which get stripped when running optimized (with python -O or + # from compiled *.pyo files). Provide a warning if __debug__ is + # stripped, so it doesn't just look like --debug=count is broken. + enable_count = False + if __debug__: enable_count = True + if enable_count: + count_stats.enable(sys.stdout) + SCons.Debug.track_instances = True + else: + msg = "--debug=count is not supported when running SCons\n" + \ + "\twith the python -O option or optimized (.pyo) modules." + SCons.Warnings.warn(SCons.Warnings.NoObjectCountWarning, msg) + if "dtree" in debug_values: + options.tree_printers.append(TreePrinter(derived=True)) + options.debug_explain = ("explain" in debug_values) + if "findlibs" in debug_values: + SCons.Scanner.Prog.print_find_libs = "findlibs" + options.debug_includes = ("includes" in debug_values) + print_memoizer = ("memoizer" in debug_values) + if "memory" in debug_values: + memory_stats.enable(sys.stdout) + print_objects = ("objects" in debug_values) + if print_objects: + SCons.Debug.track_instances = True + if "presub" in debug_values: + SCons.Action.print_actions_presub = True + if "stacktrace" in debug_values: + print_stacktrace = True + if "stree" in debug_values: + options.tree_printers.append(TreePrinter(status=True)) + if "time" in debug_values: + print_time = True + if "action-timestamps" in debug_values: + print_time = True + print_action_timestamps = True + if "tree" in debug_values: + options.tree_printers.append(TreePrinter()) + if "prepare" in debug_values: + SCons.Taskmaster.print_prepare = True + if "duplicate" in debug_values: + SCons.Node.print_duplicate = True + +def _create_path(plist): + path = '.' + for d in plist: + if os.path.isabs(d): + path = d + else: + path = path + '/' + d + return path + +def _load_site_scons_dir(topdir, site_dir_name=None): + """Load the site directory under topdir. + + If a site dir name is supplied use it, else use default "site_scons" + Prepend site dir to sys.path. + If a "site_tools" subdir exists, prepend to toolpath. + Import "site_init.py" from site dir if it exists. + """ + if site_dir_name: + err_if_not_found = True # user specified: err if missing + else: + site_dir_name = "site_scons" + err_if_not_found = False # scons default: okay to be missing + site_dir = os.path.join(topdir, site_dir_name) + + if not os.path.exists(site_dir): + if err_if_not_found: + raise SCons.Errors.UserError("site dir %s not found." % site_dir) + return + sys.path.insert(0, os.path.abspath(site_dir)) + + site_init_filename = "site_init.py" + site_init_modname = "site_init" + site_tools_dirname = "site_tools" + site_init_file = os.path.join(site_dir, site_init_filename) + site_tools_dir = os.path.join(site_dir, site_tools_dirname) + + if os.path.exists(site_tools_dir): + SCons.Tool.DefaultToolpath.insert(0, os.path.abspath(site_tools_dir)) + + if not os.path.exists(site_init_file): + return + + # "import" the site_init.py file into the SCons.Script namespace. + # This is a variant on the basic Python import flow in that the globals + # dict for the compile step is prepopulated from the SCons.Script + # module object; on success the SCons.Script globals are refilled + # from the site_init globals so it all appears in SCons.Script + # instead of as a separate module. + try: + try: + m = sys.modules['SCons.Script'] + except KeyError: + fmt = 'cannot import {}: missing SCons.Script module' + raise SCons.Errors.InternalError(fmt.format(site_init_file)) + + spec = importlib.util.spec_from_file_location(site_init_modname, site_init_file) + site_m = { + "__file__": spec.origin, + "__name__": spec.name, + "__doc__": None, + } + re_dunder = re.compile(r"__[^_]+__") + # update site dict with all but magic (dunder) methods + for k, v in m.__dict__.items(): + if not re_dunder.match(k): + site_m[k] = v + + with open(spec.origin, 'r') as f: + code = f.read() + try: + codeobj = compile(code, spec.name, "exec") + exec(codeobj, site_m) + except KeyboardInterrupt: + raise + except Exception: + fmt = "*** Error loading site_init file {}:\n" + sys.stderr.write(fmt.format(site_init_file)) + raise + else: + # now refill globals with site_init's symbols + for k, v in site_m.items(): + if not re_dunder.match(k): + m.__dict__[k] = v + except KeyboardInterrupt: + raise + except Exception: + fmt = "*** cannot import site init file {}:\n" + sys.stderr.write(fmt.format(site_init_file)) + raise + + +def _load_all_site_scons_dirs(topdir, verbose=False): + """Load all of the predefined site_scons dir. + Order is significant; we load them in order from most generic + (machine-wide) to most specific (topdir). + The verbose argument is only for testing. + """ + platform = SCons.Platform.platform_default() + + def homedir(d): + return os.path.expanduser('~/'+d) + + if platform == 'win32' or platform == 'cygwin': + sysdirs=[ + os.path.expandvars('%AllUsersProfile%\\scons'), + # TODO older path, kept for compat + os.path.expandvars('%AllUsersProfile%\\Application Data\\scons'), + os.path.expandvars('%LocalAppData%\\scons')] + appdatadir = os.path.expandvars('%AppData%\\scons') + if appdatadir not in sysdirs: + sysdirs.append(appdatadir) + sysdirs.append(homedir('.scons')) + + elif platform == 'darwin': # MacOS X + sysdirs=['/Library/Application Support/SCons', + '/opt/local/share/scons', # (for MacPorts) + '/sw/share/scons', # (for Fink) + homedir('Library/Application Support/SCons'), + homedir('.scons')] + elif platform == 'sunos': # Solaris + sysdirs=['/opt/sfw/scons', + '/usr/share/scons', + homedir('.scons')] + else: # Linux, HPUX, etc. + # assume posix-like, i.e. platform == 'posix' + sysdirs=['/usr/share/scons', + homedir('.scons')] + + dirs = sysdirs + [topdir] + for d in dirs: + if verbose: # this is used by unit tests. + print("Loading site dir ", d) + _load_site_scons_dir(d) + +def test_load_all_site_scons_dirs(d): + _load_all_site_scons_dirs(d, True) + +def version_string(label, module): + version = module.__version__ + build = module.__build__ + if build: + if build[0] != '.': + build = '.' + build + version = version + build + fmt = "\t%s: v%s, %s, by %s on %s\n" + return fmt % (label, + version, + module.__date__, + module.__developer__, + module.__buildsys__) + +def path_string(label, module): + path = module.__path__ + return "\t%s path: %s\n"%(label,path) + +def _main(parser): + global exit_status + global this_build_status + + options = parser.values + + # Here's where everything really happens. + + # First order of business: set up default warnings and then + # handle the user's warning options, so that we can issue (or + # suppress) appropriate warnings about anything that might happen, + # as configured by the user. + + default_warnings = [ SCons.Warnings.WarningOnByDefault, + SCons.Warnings.DeprecatedWarning, + ] + + for warning in default_warnings: + SCons.Warnings.enableWarningClass(warning) + SCons.Warnings._warningOut = _scons_internal_warning + SCons.Warnings.process_warn_strings(options.warn) + + # Now that we have the warnings configuration set up, we can actually + # issue (or suppress) any warnings about warning-worthy things that + # occurred while the command-line options were getting parsed. + try: + dw = options.delayed_warnings + except AttributeError: + pass + else: + delayed_warnings.extend(dw) + for warning_type, message in delayed_warnings: + SCons.Warnings.warn(warning_type, message) + + if not SCons.Platform.virtualenv.virtualenv_enabled_by_default: + if options.enable_virtualenv: + SCons.Platform.virtualenv.enable_virtualenv = True + + if options.ignore_virtualenv: + SCons.Platform.virtualenv.ignore_virtualenv = True + + if options.diskcheck: + SCons.Node.FS.set_diskcheck(options.diskcheck) + + # Next, we want to create the FS object that represents the outside + # world's file system, as that's central to a lot of initialization. + # To do this, however, we need to be in the directory from which we + # want to start everything, which means first handling any relevant + # options that might cause us to chdir somewhere (-C, -D, -U, -u). + if options.directory: + script_dir = os.path.abspath(_create_path(options.directory)) + else: + script_dir = os.getcwd() + + target_top = None + if options.climb_up: + target_top = '.' # directory to prepend to targets + while script_dir and not _SConstruct_exists(script_dir, + options.repository, + options.file): + script_dir, last_part = os.path.split(script_dir) + if last_part: + target_top = os.path.join(last_part, target_top) + else: + script_dir = '' + + if script_dir and script_dir != os.getcwd(): + if not options.silent: + display("scons: Entering directory `%s'" % script_dir) + try: + os.chdir(script_dir) + except OSError: + sys.stderr.write("Could not change directory to %s\n" % script_dir) + + # Now that we're in the top-level SConstruct directory, go ahead + # and initialize the FS object that represents the file system, + # and make it the build engine default. + fs = SCons.Node.FS.get_default_fs() + + for rep in options.repository: + fs.Repository(rep) + + # Now that we have the FS object, the next order of business is to + # check for an SConstruct file (or other specified config file). + # If there isn't one, we can bail before doing any more work. + scripts = [] + if options.file: + scripts.extend(options.file) + if not scripts: + sfile = _SConstruct_exists(repositories=options.repository, + filelist=options.file) + if sfile: + scripts.append(sfile) + + if not scripts: + if options.help: + # There's no SConstruct, but they specified -h. + # Give them the options usage now, before we fail + # trying to read a non-existent SConstruct file. + raise SConsPrintHelpException + raise SCons.Errors.UserError("No SConstruct file found.") + + if scripts[0] == "-": + d = fs.getcwd() + else: + d = fs.File(scripts[0]).dir + fs.set_SConstruct_dir(d) + + _set_debug_values(options) + SCons.Node.implicit_cache = options.implicit_cache + SCons.Node.implicit_deps_changed = options.implicit_deps_changed + SCons.Node.implicit_deps_unchanged = options.implicit_deps_unchanged + + if options.no_exec: + SCons.SConf.dryrun = 1 + SCons.Action.execute_actions = None + if options.question: + SCons.SConf.dryrun = 1 + if options.clean: + SCons.SConf.SetBuildType('clean') + if options.help: + SCons.SConf.SetBuildType('help') + SCons.SConf.SetCacheMode(options.config) + SCons.SConf.SetProgressDisplay(progress_display) + + if options.no_progress or options.silent: + progress_display.set_mode(0) + + # if site_dir unchanged from default None, neither --site-dir + # nor --no-site-dir was seen, use SCons default + if options.site_dir is None: + _load_all_site_scons_dirs(d.get_internal_path()) + elif options.site_dir: # if a dir was set, use it + _load_site_scons_dir(d.get_internal_path(), options.site_dir) + + if options.include_dir: + sys.path = options.include_dir + sys.path + + # If we're about to start SCons in the interactive mode, + # inform the FS about this right here. Else, the release_target_info + # method could get called on some nodes, like the used "gcc" compiler, + # when using the Configure methods within the SConscripts. + # This would then cause subtle bugs, as already happened in #2971. + if options.interactive: + SCons.Node.interactive = True + # That should cover (most of) the options. + # Next, set up the variables that hold command-line arguments, + # so the SConscript files that we read and execute have access to them. + # TODO: for options defined via AddOption which take space-separated + # option-args, the option-args will collect into targets here, + # because we don't yet know to do any different. + targets = [] + xmit_args = [] + for a in parser.largs: + # Skip so-far unrecognized options, and empty string args + if a.startswith('-') or a in ('', '""', "''"): + continue + if '=' in a: + xmit_args.append(a) + else: + targets.append(a) + SCons.Script._Add_Targets(targets + parser.rargs) + SCons.Script._Add_Arguments(xmit_args) + + # If stdout is not a tty, replace it with a wrapper object to call flush + # after every write. + # + # Tty devices automatically flush after every newline, so the replacement + # isn't necessary. Furthermore, if we replace sys.stdout, the readline + # module will no longer work. This affects the behavior during + # --interactive mode. --interactive should only be used when stdin and + # stdout refer to a tty. + if not hasattr(sys.stdout, 'isatty') or not sys.stdout.isatty(): + sys.stdout = SCons.Util.Unbuffered(sys.stdout) + if not hasattr(sys.stderr, 'isatty') or not sys.stderr.isatty(): + sys.stderr = SCons.Util.Unbuffered(sys.stderr) + + memory_stats.append('before reading SConscript files:') + count_stats.append(('pre-', 'read')) + + # And here's where we (finally) read the SConscript files. + + progress_display("scons: Reading SConscript files ...") + + if print_time: + start_time = time.time() + try: + for script in scripts: + SCons.Script._SConscript._SConscript(fs, script) + except SCons.Errors.StopError as e: + # We had problems reading an SConscript file, such as it + # couldn't be copied in to the VariantDir. Since we're just + # reading SConscript files and haven't started building + # things yet, stop regardless of whether they used -i or -k + # or anything else. + revert_io() + sys.stderr.write("scons: *** %s Stop.\n" % e) + sys.exit(2) + if print_time: + global sconscript_time + sconscript_time = time.time() - start_time + + progress_display("scons: done reading SConscript files.") + + memory_stats.append('after reading SConscript files:') + count_stats.append(('post-', 'read')) + + # Re-{enable,disable} warnings in case they disabled some in + # the SConscript file. + # + # We delay enabling the PythonVersionWarning class until here so that, + # if they explicitly disabled it in either in the command line or in + # $SCONSFLAGS, or in the SConscript file, then the search through + # the list of deprecated warning classes will find that disabling + # first and not issue the warning. + #SCons.Warnings.enableWarningClass(SCons.Warnings.PythonVersionWarning) + SCons.Warnings.process_warn_strings(options.warn) + + # Now that we've read the SConscript files, we can check for the + # warning about deprecated Python versions--delayed until here + # in case they disabled the warning in the SConscript files. + if python_version_deprecated(): + msg = "Support for pre-%s Python version (%s) is deprecated.\n" + \ + " If this will cause hardship, contact scons-dev@scons.org" + deprecated_version_string = ".".join(map(str, deprecated_python_version)) + SCons.Warnings.warn(SCons.Warnings.PythonVersionWarning, + msg % (deprecated_version_string, python_version_string())) + + if not options.help: + # [ ] Clarify why we need to create Builder here at all, and + # why it is created in DefaultEnvironment + # https://bitbucket.org/scons/scons/commits/d27a548aeee8ad5e67ea75c2d19a7d305f784e30 + if SCons.SConf.NeedConfigHBuilder(): + SCons.SConf.CreateConfigHBuilder(SCons.Defaults.DefaultEnvironment()) + + # Now re-parse the command-line options (any to the left of a '--' + # argument, that is) with any user-defined command-line options that + # the SConscript files may have added to the parser object. This will + # emit the appropriate error message and exit if any unknown option + # was specified on the command line. + + parser.preserve_unknown_options = False + parser.parse_args(parser.largs, options) + + if options.help: + help_text = SCons.Script.help_text + if help_text is None: + # They specified -h, but there was no Help() inside the + # SConscript files. Give them the options usage. + raise SConsPrintHelpException + else: + print(help_text) + print("Use scons -H for help about command-line options.") + exit_status = 0 + return + + # Change directory to the top-level SConstruct directory, then tell + # the Node.FS subsystem that we're all done reading the SConscript + # files and calling Repository() and VariantDir() and changing + # directories and the like, so it can go ahead and start memoizing + # the string values of file system nodes. + + fs.chdir(fs.Top) + + SCons.Node.FS.save_strings(1) + + # Now that we've read the SConscripts we can set the options + # that are SConscript settable: + SCons.Node.implicit_cache = options.implicit_cache + SCons.Node.FS.set_duplicate(options.duplicate) + fs.set_max_drift(options.max_drift) + + SCons.Taskmaster.Job.explicit_stack_size = options.stack_size + + # Hash format and chunksize are set late to support SetOption being called + # in a SConscript or SConstruct file. + SCons.Util.set_hash_format(options.hash_format) + if options.md5_chunksize: + SCons.Node.FS.File.hash_chunksize = options.md5_chunksize * 1024 + + platform = SCons.Platform.platform_module() + + if options.interactive: + SCons.Script.Interactive.interact(fs, OptionsParser, options, + targets, target_top) + + else: + + # Build the targets + nodes = _build_targets(fs, options, targets, target_top) + if not nodes: + revert_io() + print('Found nothing to build') + exit_status = 2 + +def _build_targets(fs, options, targets, target_top): + + global this_build_status + this_build_status = 0 + + progress_display.set_mode(not (options.no_progress or options.silent)) + display.set_mode(not options.silent) + SCons.Action.print_actions = not options.silent + SCons.Action.execute_actions = not options.no_exec + SCons.Node.do_store_info = not options.no_exec + SCons.SConf.dryrun = options.no_exec + + if options.diskcheck: + SCons.Node.FS.set_diskcheck(options.diskcheck) + + SCons.CacheDir.cache_enabled = not options.cache_disable + SCons.CacheDir.cache_readonly = options.cache_readonly + SCons.CacheDir.cache_debug = options.cache_debug + SCons.CacheDir.cache_force = options.cache_force + SCons.CacheDir.cache_show = options.cache_show + + if options.no_exec: + CleanTask.execute = CleanTask.show + else: + CleanTask.execute = CleanTask.remove + + lookup_top = None + if targets or SCons.Script.BUILD_TARGETS != SCons.Script._build_plus_default: + # They specified targets on the command line or modified + # BUILD_TARGETS in the SConscript file(s), so if they used -u, + # -U or -D, we have to look up targets relative to the top, + # but we build whatever they specified. + if target_top: + lookup_top = fs.Dir(target_top) + target_top = None + + targets = SCons.Script.BUILD_TARGETS + else: + # There are no targets specified on the command line, + # so if they used -u, -U or -D, we may have to restrict + # what actually gets built. + d = None + if target_top: + if options.climb_up == 1: + # -u, local directory and below + target_top = fs.Dir(target_top) + lookup_top = target_top + elif options.climb_up == 2: + # -D, all Default() targets + target_top = None + lookup_top = None + elif options.climb_up == 3: + # -U, local SConscript Default() targets + target_top = fs.Dir(target_top) + def check_dir(x, target_top=target_top): + if hasattr(x, 'cwd') and x.cwd is not None: + cwd = x.cwd.srcnode() + return cwd == target_top + else: + # x doesn't have a cwd, so it's either not a target, + # or not a file, so go ahead and keep it as a default + # target and let the engine sort it out: + return 1 + d = [tgt for tgt in SCons.Script.DEFAULT_TARGETS if check_dir(tgt)] + SCons.Script.DEFAULT_TARGETS[:] = d + target_top = None + lookup_top = None + + targets = SCons.Script._Get_Default_Targets(d, fs) + + if not targets: + sys.stderr.write("scons: *** No targets specified and no Default() targets found. Stop.\n") + return None + + def Entry(x, ltop=lookup_top, ttop=target_top, fs=fs): + if isinstance(x, SCons.Node.Node): + node = x + else: + node = None + # Why would ltop be None? Unfortunately this happens. + if ltop is None: ltop = '' + # Curdir becomes important when SCons is called with -u, -C, + # or similar option that changes directory, and so the paths + # of targets given on the command line need to be adjusted. + curdir = os.path.join(os.getcwd(), str(ltop)) + for lookup in SCons.Node.arg2nodes_lookups: + node = lookup(x, curdir=curdir) + if node is not None: + break + if node is None: + node = fs.Entry(x, directory=ltop, create=1) + if ttop and not node.is_under(ttop): + if isinstance(node, SCons.Node.FS.Dir) and ttop.is_under(node): + node = ttop + else: + node = None + return node + + nodes = [_f for _f in map(Entry, targets) if _f] + + task_class = BuildTask # default action is to build targets + opening_message = "Building targets ..." + closing_message = "done building targets." + if options.keep_going: + failure_message = "done building targets (errors occurred during build)." + else: + failure_message = "building terminated because of errors." + if options.question: + task_class = QuestionTask + try: + if options.clean: + task_class = CleanTask + opening_message = "Cleaning targets ..." + closing_message = "done cleaning targets." + if options.keep_going: + failure_message = "done cleaning targets (errors occurred during clean)." + else: + failure_message = "cleaning terminated because of errors." + except AttributeError: + pass + + task_class.progress = ProgressObject + + if options.random: + def order(dependencies): + """Randomize the dependencies.""" + import random + random.shuffle(dependencies) + return dependencies + else: + def order(dependencies): + """Leave the order of dependencies alone.""" + return dependencies + + taskmaster = SCons.Taskmaster.Taskmaster(nodes, task_class, order, options.taskmastertrace_file) + + # Let the BuildTask objects get at the options to respond to the + # various print_* settings, tree_printer list, etc. + BuildTask.options = options + + is_pypy = platform.python_implementation() == 'PyPy' + # As of 3.7, python removed support for threadless platforms. + # See https://www.python.org/dev/peps/pep-0011/ + is_37_or_later = sys.version_info >= (3, 7) + # python_has_threads = sysconfig.get_config_var('WITH_THREAD') or is_pypy or is_37_or_later + + # As of python 3.4 threading has a dummy_threading module for use when there is no threading + # it's get_ident() will allways return -1, while real threading modules get_ident() will + # always return a positive integer + python_has_threads = threading.get_ident() != -1 + # to check if python configured with threads. + global num_jobs + num_jobs = options.num_jobs + jobs = SCons.Taskmaster.Job.Jobs(num_jobs, taskmaster) + if num_jobs > 1: + msg = None + if jobs.num_jobs == 1 or not python_has_threads: + msg = "parallel builds are unsupported by this version of Python;\n" + \ + "\tignoring -j or num_jobs option.\n" + if msg: + SCons.Warnings.warn(SCons.Warnings.NoParallelSupportWarning, msg) + + memory_stats.append('before building targets:') + count_stats.append(('pre-', 'build')) + + def jobs_postfunc( + jobs=jobs, + options=options, + closing_message=closing_message, + failure_message=failure_message + ): + if jobs.were_interrupted(): + if not options.no_progress and not options.silent: + sys.stderr.write("scons: Build interrupted.\n") + global exit_status + global this_build_status + exit_status = 2 + this_build_status = 2 + + if this_build_status: + progress_display("scons: " + failure_message) + else: + progress_display("scons: " + closing_message) + if not options.no_exec: + if jobs.were_interrupted(): + progress_display("scons: writing .sconsign file.") + SCons.SConsign.write() + + progress_display("scons: " + opening_message) + jobs.run(postfunc = jobs_postfunc) + + memory_stats.append('after building targets:') + count_stats.append(('post-', 'build')) + + return nodes + +def _exec_main(parser, values): + sconsflags = os.environ.get('SCONSFLAGS', '') + all_args = sconsflags.split() + sys.argv[1:] + + options, args = parser.parse_args(all_args, values) + + if isinstance(options.debug, list) and "pdb" in options.debug: + import pdb + pdb.Pdb().runcall(_main, parser) + elif options.profile_file: + from cProfile import Profile + + prof = Profile() + try: + prof.runcall(_main, parser) + finally: + prof.dump_stats(options.profile_file) + else: + _main(parser) + + +def main(): + global OptionsParser + global exit_status + global first_command_start + + # Check up front for a Python version we do not support. We + # delay the check for deprecated Python versions until later, + # after the SConscript files have been read, in case they + # disable that warning. + if python_version_unsupported(): + msg = "scons: *** SCons version %s does not run under Python version %s.\n" + sys.stderr.write(msg % (SConsVersion, python_version_string())) + sys.stderr.write("scons: *** Minimum Python version is %d.%d.%d\n" %minimum_python_version) + sys.exit(1) + + parts = ["SCons by Steven Knight et al.:\n"] + try: + import SCons + parts.append(version_string("SCons", SCons)) + except (ImportError, AttributeError): + # On Windows there is no scons.py, so there is no + # __main__.__version__, hence there is no script version. + pass + parts.append(path_string("SCons", SCons)) + parts.append(SCons.__copyright__) + version = ''.join(parts) + + from . import SConsOptions + parser = SConsOptions.Parser(version) + values = SConsOptions.SConsValues(parser.get_default_values()) + + OptionsParser = parser + + try: + try: + _exec_main(parser, values) + finally: + revert_io() + except SystemExit as s: + if s: + exit_status = s.code + except KeyboardInterrupt: + print("scons: Build interrupted.") + sys.exit(2) + except SyntaxError as e: + _scons_syntax_error(e) + except SCons.Errors.InternalError: + _scons_internal_error() + except SCons.Errors.UserError as e: + _scons_user_error(e) + except SConsPrintHelpException: + parser.print_help() + exit_status = 0 + except SCons.Errors.BuildError as e: + print(e) + exit_status = e.exitstatus + except: + # An exception here is likely a builtin Python exception Python + # code in an SConscript file. Show them precisely what the + # problem was and where it happened. + SCons.Script._SConscript.SConscript_exception() + sys.exit(2) + + memory_stats.print_stats() + count_stats.print_stats() + + if print_objects: + SCons.Debug.listLoggedInstances('*') + #SCons.Debug.dumpLoggedInstances('*') + + if print_memoizer: + SCons.Memoize.Dump("Memoizer (memory cache) hits and misses:") + + # Dump any development debug info that may have been enabled. + # These are purely for internal debugging during development, so + # there's no need to control them with --debug= options; they're + # controlled by changing the source code. + SCons.Debug.dump_caller_counts() + SCons.Taskmaster.dump_stats() + + if print_time: + total_time = time.time() - SCons.Script.start_time + if num_jobs == 1: + ct = cumulative_command_time + else: + if last_command_end is None or first_command_start is None: + ct = 0.0 + else: + ct = last_command_end - first_command_start + scons_time = total_time - sconscript_time - ct + print("Total build time: %f seconds"%total_time) + print("Total SConscript file execution time: %f seconds"%sconscript_time) + print("Total SCons execution time: %f seconds"%scons_time) + print("Total command execution time: %f seconds"%ct) + + sys.exit(exit_status) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Script/SConsOptions.py b/scons/scons-local-4.5.1/SCons/Script/SConsOptions.py new file mode 100644 index 000000000..8391d6208 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Script/SConsOptions.py @@ -0,0 +1,1109 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +import gettext +import optparse +import re +import shutil +import sys +import textwrap + +import SCons.Node.FS +import SCons.Platform.virtualenv +import SCons.Warnings +from . import Main + +no_hyphen_re = re.compile(r'(\s+|(?<=[\w!\"\'&.,?])-{2,}(?=\w))') +_ = gettext.gettext +OptionValueError = optparse.OptionValueError +SUPPRESS_HELP = optparse.SUPPRESS_HELP + +diskcheck_all = SCons.Node.FS.diskcheck_types() + +experimental_features = {'warp_speed', 'transporter', 'ninja', 'tm_v2'} + + +def diskcheck_convert(value): + if value is None: + return [] + if not SCons.Util.is_List(value): + value = value.split(',') + result = [] + for v in value: + v = v.lower() + if v == 'all': + result = diskcheck_all + elif v == 'none': + # Don't use an empty list here as that fails the normal check + # to see if an optparse parser of if parser.argname: + # Changed to ['none'] as diskcheck expects a list value + result = ['none'] + elif v in diskcheck_all: + result.append(v) + else: + raise ValueError(v) + return result + + +class SConsValues(optparse.Values): + """ + Holder class for uniform access to SCons options, regardless + of whether they can be set on the command line or in the + SConscript files (using the SetOption() function). + + A SCons option value can originate three different ways: + + 1) set on the command line; + 2) set in an SConscript file; + 3) the default setting (from the the op.add_option() + calls in the Parser() function, below). + + The command line always overrides a value set in a SConscript file, + which in turn always overrides default settings. Because we want + to support user-specified options in the SConscript file itself, + though, we may not know about all of the options when the command + line is first parsed, so we can't make all the necessary precedence + decisions at the time the option is configured. + + The solution implemented in this class is to keep these different sets + of settings separate (command line, SConscript file, and default) + and to override the __getattr__() method to check them in turn. + This should allow the rest of the code to just fetch values as + attributes of an instance of this class, without having to worry + about where they came from. + + Note that not all command line options are settable from SConscript + files, and the ones that are must be explicitly added to the + "settable" list in this class, and optionally validated and coerced + in the set_option() method. + """ + + def __init__(self, defaults): + self.__defaults__ = defaults + self.__SConscript_settings__ = {} + + def __getattr__(self, attr): + """ + Fetches an options value, checking first for explicit settings + from the command line (which are direct attributes), then the + SConscript file settings, then the default values. + """ + try: + return self.__dict__[attr] + except KeyError: + try: + return self.__dict__['__SConscript_settings__'][attr] + except KeyError: + try: + return getattr(self.__dict__['__defaults__'], attr) + except KeyError: + # Added because with py3 this is a new class, + # not a classic class, and due to the way + # In that case it will create an object without + # __defaults__, and then query for __setstate__ + # which will throw an exception of KeyError + # deepcopy() is expecting AttributeError if __setstate__ + # is not available. + raise AttributeError(attr) + + # keep this list in sync with the SetOption doc in SCons/Script/Main.xml + # search for UPDATE_SETOPTION_DOCS there. + settable = [ + 'clean', + 'diskcheck', + 'duplicate', + 'experimental', + 'hash_chunksize', + 'hash_format', + 'help', + 'implicit_cache', + 'implicit_deps_changed', + 'implicit_deps_unchanged', + 'max_drift', + 'md5_chunksize', + 'no_exec', + 'no_progress', + 'num_jobs', + 'random', + 'silent', + 'stack_size', + 'warn', + + # TODO: Remove these once we update the AddOption() API to allow setting + # added flag as settable. + # Requested settable flag in : https://github.com/SCons/scons/issues/3983 + # From experimental ninja + 'disable_execute_ninja', + 'disable_ninja', + 'skip_ninja_regen' + ] + + def set_option(self, name, value): + """Sets an option from an SConscript file. + + Raises: + UserError: invalid or malformed option ("error in your script") + """ + + if name not in self.settable: + raise SCons.Errors.UserError( + "This option is not settable from a SConscript file: %s" % name + ) + + # the following are for options that need some extra processing + if name == 'num_jobs': + try: + value = int(value) + if value < 1: + raise ValueError + except ValueError: + raise SCons.Errors.UserError("A positive integer is required: %s" % repr(value)) + elif name == 'max_drift': + try: + value = int(value) + except ValueError: + raise SCons.Errors.UserError( + "An integer is required: %s" % repr(value)) + elif name == 'duplicate': + try: + value = str(value) + except ValueError: + raise SCons.Errors.UserError( + "A string is required: %s" % repr(value)) + if value not in SCons.Node.FS.Valid_Duplicates: + raise SCons.Errors.UserError( + "Not a valid duplication style: %s" % value + ) + # Set the duplicate style right away so it can affect linking + # of SConscript files. + SCons.Node.FS.set_duplicate(value) + elif name == 'diskcheck': + try: + value = diskcheck_convert(value) + except ValueError as v: + raise SCons.Errors.UserError( + "Not a valid diskcheck value: %s" % v) + if 'diskcheck' not in self.__dict__: + # No --diskcheck= option was specified on the command line. + # Set this right away so it can affect the rest of the + # file/Node lookups while processing the SConscript files. + SCons.Node.FS.set_diskcheck(value) + elif name == 'stack_size': + try: + value = int(value) + except ValueError: + raise SCons.Errors.UserError( + "An integer is required: %s" % repr(value)) + elif name in ('md5_chunksize', 'hash_chunksize'): + try: + value = int(value) + except ValueError: + raise SCons.Errors.UserError( + "An integer is required: %s" % repr(value)) + name = 'md5_chunksize' # for now, the old name is used + elif name == 'warn': + if SCons.Util.is_String(value): + value = [value] + value = self.__SConscript_settings__.get(name, []) + value + SCons.Warnings.process_warn_strings(value) + elif name == 'no_progress': + SCons.Script.Main.progress_display.set_mode(False) + elif name == 'experimental': + if SCons.Util.is_String(value): + value = [value] + value = self.__SConscript_settings__.get(name, []) + value + elif name in ('implicit_deps_changed', 'implicit_deps_unchanged'): + if value: + self.__SConscript_settings__['implicit_cache'] = True + + self.__SConscript_settings__[name] = value + + +class SConsOption(optparse.Option): + def convert_value(self, opt, value): + if value is not None: + if self.nargs in (1, '?'): + return self.check_value(opt, value) + return tuple([self.check_value(opt, v) for v in value]) + + def process(self, opt, value, values, parser): + + # First, convert the value(s) to the right type. Howl if any + # value(s) are bogus. + value = self.convert_value(opt, value) + + # And then take whatever action is expected of us. + # This is a separate method to make life easier for + # subclasses to add new actions. + return self.take_action( + self.action, self.dest, opt, value, values, parser) + + def _check_nargs_optional(self): + if self.nargs == '?' and self._short_opts: + fmt = "option %s: nargs='?' is incompatible with short options" + raise SCons.Errors.UserError(fmt % self._short_opts[0]) + + CHECK_METHODS = optparse.Option.CHECK_METHODS + if CHECK_METHODS is None: + CHECK_METHODS = [] + CHECK_METHODS = CHECK_METHODS + [_check_nargs_optional] + CONST_ACTIONS = optparse.Option.CONST_ACTIONS + optparse.Option.TYPED_ACTIONS + + +class SConsOptionGroup(optparse.OptionGroup): + """ + A subclass for SCons-specific option groups. + + The only difference between this and the base class is that we print + the group's help text flush left, underneath their own title but + lined up with the normal "SCons Options". + """ + + def format_help(self, formatter): + """ Format an option group's help text. + + The title is dedented so it's flush with the "SCons Options" + title we print at the top. + """ + formatter.dedent() + result = formatter.format_heading(self.title) + formatter.indent() + result = result + optparse.OptionContainer.format_help(self, formatter) + return result + + +class SConsBadOptionError(optparse.BadOptionError): + """Exception used to indicate that invalid command line options were specified + + :ivar str opt_str: The offending option specified on command line which is not recognized + :ivar OptionParser parser: The active argument parser + + """ + + def __init__(self, opt_str, parser=None): + self.opt_str = opt_str + self.parser = parser + + def __str__(self): + return _("no such option: %s") % self.opt_str + + +class SConsOptionParser(optparse.OptionParser): + preserve_unknown_options = False + raise_exception_on_error = False + + def error(self, msg): + """ + overridden OptionValueError exception handler + """ + if self.raise_exception_on_error: + raise SConsBadOptionError(msg, self) + else: + self.print_usage(sys.stderr) + sys.stderr.write("SCons Error: %s\n" % msg) + sys.exit(2) + + def _process_long_opt(self, rargs, values): + """ SCons-specific processing of long options. + + This is copied directly from the normal + ``optparse._process_long_opt()`` method, except that, if configured + to do so, we catch the exception thrown when an unknown option + is encountered and just stick it back on the "leftover" arguments + for later (re-)processing. This is because we may see the option + definition later, while processing SConscript files. + """ + arg = rargs.pop(0) + + # Value explicitly attached to arg? Pretend it's the next argument. + if "=" in arg: + (opt, next_arg) = arg.split("=", 1) + rargs.insert(0, next_arg) + had_explicit_value = True + else: + opt = arg + had_explicit_value = False + + try: + if opt != self._match_long_opt(opt): + raise optparse.BadOptionError( + "'%s'. Did you mean '%s'?" + % (opt, self._match_long_opt(opt)) + ) + except optparse.BadOptionError: + if self.preserve_unknown_options: + # SCons-specific: if requested, add unknown options to + # the "leftover arguments" list for later processing. + self.largs.append(arg) + if had_explicit_value: + # The unknown option will be re-processed later, + # so undo the insertion of the explicit value. + rargs.pop(0) + return + raise + + option = self._long_opt[opt] + if option.takes_value(): + nargs = option.nargs + if nargs == '?': + if had_explicit_value: + value = rargs.pop(0) + else: + value = option.const + elif len(rargs) < nargs: + if nargs == 1: + if not option.choices: + self.error(_("%s option requires an argument") % opt) + else: + msg = _("%s option requires an argument " % opt) + msg += _("(choose from %s)" + % ', '.join(option.choices)) + self.error(msg) + else: + self.error(_("%s option requires %d arguments") + % (opt, nargs)) + elif nargs == 1: + value = rargs.pop(0) + else: + value = tuple(rargs[0:nargs]) + del rargs[0:nargs] + + elif had_explicit_value: + self.error(_("%s option does not take a value") % opt) + + else: + value = None + + option.process(opt, value, values, self) + + def reparse_local_options(self): + """ Re-parse the leftover command-line options. + + Parse options stored in `self.largs`, so that any value + overridden on the command line is immediately available + if the user turns around and does a :func:`GetOption` right away. + + We mimic the processing of the single args + in the original OptionParser :func:`_process_args`, but here we + allow exact matches for long-opts only (no partial argument names!). + Otherwise there could be problems in :func:`add_local_option` + below. When called from there, we try to reparse the + command-line arguments that + + 1. haven't been processed so far (`self.largs`), but + 2. are possibly not added to the list of options yet. + + So, when we only have a value for "--myargument" so far, + a command-line argument of "--myarg=test" would set it, + per the behaviour of :func:`_match_long_opt`, + which allows for partial matches of the option name, + as long as the common prefix appears to be unique. + This would lead to further confusion, because we might want + to add another option "--myarg" later on (see issue #2929). + + """ + rargs = [] + largs_restore = [] + # Loop over all remaining arguments + skip = False + for l in self.largs: + if skip: + # Accept all remaining arguments as they are + largs_restore.append(l) + else: + if len(l) > 2 and l[0:2] == "--": + # Check long option + lopt = (l,) + if "=" in l: + # Split into option and value + lopt = l.split("=", 1) + + if lopt[0] in self._long_opt: + # Argument is already known + rargs.append('='.join(lopt)) + else: + # Not known yet, so reject for now + largs_restore.append('='.join(lopt)) + else: + if l == "--" or l == "-": + # Stop normal processing and don't + # process the rest of the command-line opts + largs_restore.append(l) + skip = True + else: + rargs.append(l) + + # Parse the filtered list + self.parse_args(rargs, self.values) + # Restore the list of remaining arguments for the + # next call of AddOption/add_local_option... + self.largs = self.largs + largs_restore + + def add_local_option(self, *args, **kw): + """ Adds a local option to the parser. + + This is initiated by an :func:`AddOption` call to add a user-defined + command-line option. We add the option to a separate option + group for the local options, creating the group if necessary. + """ + try: + group = self.local_option_group + except AttributeError: + group = SConsOptionGroup(self, 'Local Options') + group = self.add_option_group(group) + self.local_option_group = group + + result = group.add_option(*args, **kw) + + if result: + # The option was added successfully. We now have to add the + # default value to our object that holds the default values + # (so that an attempt to fetch the option's attribute will + # yield the default value when not overridden) and then + # we re-parse the leftover command-line options, so that + # any value overridden on the command line is immediately + # available if the user turns around and does a GetOption() + # right away. + setattr(self.values.__defaults__, result.dest, result.default) + self.reparse_local_options() + + return result + + +class SConsIndentedHelpFormatter(optparse.IndentedHelpFormatter): + def format_usage(self, usage): + """ Formats the usage message. """ + return "usage: %s\n" % usage + + def format_heading(self, heading): + """ Translates heading to "SCons Options" + + Heading of "Options" changed to "SCons Options." + Unfortunately, we have to do this here, because those titles + are hard-coded in the optparse calls. + """ + if heading == 'Options': + heading = "SCons Options" + return optparse.IndentedHelpFormatter.format_heading(self, heading) + + def format_option(self, option): + """ Customized option formatter. + + A copy of the normal ``optparse.IndentedHelpFormatter.format_option()`` + method. This has been snarfed so we can modify text wrapping to + our liking: + + * add our own regular expression that doesn't break on hyphens + (so things like ``--no-print-directory`` don't get broken). + * wrap the list of options themselves when it's too long + (the ``wrapper.fill(opts)`` call below). + * set the :attr:`subsequent_indent` when wrapping the :attr:`help_text`. + + The help for each option consists of two parts: + + * the opt strings and metavars e.g. ("-x", or + "-fFILENAME, --file=FILENAME") + * the user-supplied help string e.g. + ("turn on expert mode", "read data from FILENAME") + + If possible, we write both of these on the same line:: + + -x turn on expert mode + + But if the opt string list is too long, we put the help + string on a second line, indented to the same column it would + start in if it fit on the first line:: + + -fFILENAME, --file=FILENAME + read data from FILENAME + """ + result = [] + opts = self.option_strings[option] + opt_width = self.help_position - self.current_indent - 2 + # SCons: pre-compute if we could combine opts and text on one line, + # even if opts spills over opt_width. Saves some lines. + # Note: check is currently disabled and this removed from docstring: + # * if it would all fit on one line even if opts are long, don't break. + combine_anyway = False + if option.help: + help_text = self.expand_default(option) + # if len(opts) > opt_width and len(opts) + len(help_text) + 2 <= self.width: + # combine_anyway = True + if len(opts) > opt_width and not combine_anyway: + # SCons: wrap options if needed + wrapper = textwrap.TextWrapper( + width=self.width, initial_indent=' ', subsequent_indent=' ' + ) + wrapper.wordsep_re = no_hyphen_re + opts = wrapper.fill(opts) + '\n' + indent_first = self.help_position + else: # start help on same line as opts + opts = "%*s%-*s " % (self.current_indent, "", opt_width, opts) + indent_first = 0 + result.append(opts) + if option.help: + # this is now done above in the pre-check. + # help_text = self.expand_default(option) + # SCons: indent every line of the help text but the first. + wrapper = textwrap.TextWrapper( + width=self.help_width, subsequent_indent=' ' + ) + wrapper.wordsep_re = no_hyphen_re + help_lines = wrapper.wrap(help_text) + result.append("%*s%s\n" % (indent_first, "", help_lines[0])) + for line in help_lines[1:]: + result.append("%*s%s\n" % (self.help_position, "", line)) + elif opts[-1] != "\n": + result.append("\n") + return "".join(result) + + +def Parser(version): + """Returns a parser object initialized with the standard SCons options. + + Add options in the order we want them to show up in the ``-H`` help + text, basically alphabetical. Each ``op.add_option()`` call + should have a consistent format:: + + op.add_option("-L", "--long-option-name", + nargs=1, type="string", + dest="long_option_name", default='foo', + action="callback", callback=opt_long_option, + help="help text goes here", + metavar="VAR") + + Even though the :mod:`optparse` module constructs reasonable default + destination names from the long option names, we're going to be + explicit about each one for easier readability and so this code + will at least show up when grepping the source for option attribute + names, or otherwise browsing the source code. + """ + columns, lines = shutil.get_terminal_size() + formatter = SConsIndentedHelpFormatter(max_help_position=30, width=columns) + op = SConsOptionParser( + option_class=SConsOption, + add_help_option=False, + formatter=formatter, + usage="usage: scons [OPTIONS] [VARIABLES] [TARGETS]", + ) + op.preserve_unknown_options = True + op.version = version + + # options ignored for compatibility + def opt_ignore(option, opt, value, parser): + sys.stderr.write("Warning: ignoring %s option\n" % opt) + + op.add_option("-b", "-d", "-e", "-m", "-S", "-t", "-w", + "--environment-overrides", + "--no-keep-going", + "--no-print-directory", + "--print-directory", + "--stop", + "--touch", + action="callback", callback=opt_ignore, + help=SUPPRESS_HELP) + + op.add_option('-c', '--clean', '--remove', + dest="clean", default=False, + action="store_true", + help="Remove specified targets and dependencies") + + op.add_option('-C', '--directory', + nargs=1, type="string", + dest="directory", default=[], + action="append", + help="Change to DIR before doing anything", + metavar="DIR") + + op.add_option('--cache-debug', + nargs=1, + dest="cache_debug", default=None, + action="store", + help="Print CacheDir debug info to FILE", + metavar="FILE") + + op.add_option('--cache-disable', '--no-cache', + dest='cache_disable', default=False, + action="store_true", + help="Do not retrieve built targets from CacheDir") + + op.add_option('--cache-force', '--cache-populate', + dest='cache_force', default=False, + action="store_true", + help="Copy already-built targets into the CacheDir") + + op.add_option('--cache-readonly', + dest='cache_readonly', default=False, + action="store_true", + help="Do not update CacheDir with built targets") + + op.add_option('--cache-show', + dest='cache_show', default=False, + action="store_true", + help="Print build actions for files from CacheDir") + + def opt_invalid(group, value, options): + """report an invalid option from a group""" + errmsg = "`%s' is not a valid %s option type, try:\n" % (value, group) + return errmsg + " %s" % ", ".join(options) + + def opt_invalid_rm(group, value, msg): + """report an invalid option from a group: recognized but removed""" + errmsg = "`%s' is not a valid %s option type " % (value, group) + return errmsg + msg + + config_options = ["auto", "force", "cache"] + + opt_config_help = "Controls Configure subsystem [%s]" \ + % ", ".join(config_options) + + op.add_option('--config', + nargs=1, choices=config_options, + dest="config", default="auto", + help=opt_config_help, + metavar="MODE") + + op.add_option('-D', + dest="climb_up", default=None, + action="store_const", const=2, + help="Search up directory tree for SConstruct, " + "build all Default() targets") + + deprecated_debug_options = {} + + removed_debug_options = { + "dtree": '; please use --tree=derived instead', + "nomemoizer": '; there is no replacement', + "stree": '; please use --tree=all,status instead', + "tree": '; please use --tree=all instead', + } + + debug_options = ["count", "duplicate", "explain", "findlibs", + "includes", "memoizer", "memory", "objects", + "pdb", "prepare", "presub", "stacktrace", + "time", "action-timestamps"] + + def opt_debug(option, opt, value__, parser, + debug_options=debug_options, + deprecated_debug_options=deprecated_debug_options, + removed_debug_options=removed_debug_options): + for value in value__.split(','): + if value in debug_options: + parser.values.debug.append(value) + elif value in deprecated_debug_options: + parser.values.debug.append(value) + try: + parser.values.delayed_warnings + except AttributeError: + parser.values.delayed_warnings = [] + msg = deprecated_debug_options[value] + w = "The --debug=%s option is deprecated%s." % (value, msg) + t = (SCons.Warnings.DeprecatedDebugOptionsWarning, w) + parser.values.delayed_warnings.append(t) + elif value in removed_debug_options: + msg = removed_debug_options[value] + raise OptionValueError(opt_invalid_rm('debug', value, msg)) + else: + raise OptionValueError(opt_invalid( + 'debug', value, debug_options)) + + opt_debug_help = "Print various types of debugging information [%s]" \ + % ", ".join(debug_options) + op.add_option('--debug', + nargs=1, type="string", + dest="debug", default=[], + action="callback", callback=opt_debug, + help=opt_debug_help, + metavar="TYPE") + + def opt_diskcheck(option, opt, value, parser): + try: + diskcheck_value = diskcheck_convert(value) + except ValueError as e: + raise OptionValueError("`%s' is not a valid diskcheck type" % e) + setattr(parser.values, option.dest, diskcheck_value) + + op.add_option('--diskcheck', + nargs=1, type="string", + dest='diskcheck', default=None, + action="callback", callback=opt_diskcheck, + help="Enable specific on-disk checks", + metavar="TYPE") + + def opt_duplicate(option, opt, value, parser): + if value not in SCons.Node.FS.Valid_Duplicates: + raise OptionValueError(opt_invalid('duplication', value, + SCons.Node.FS.Valid_Duplicates)) + setattr(parser.values, option.dest, value) + # Set the duplicate style right away so it can affect linking + # of SConscript files. + SCons.Node.FS.set_duplicate(value) + + opt_duplicate_help = "Set the preferred duplication methods [%s]" \ + % ", ".join(SCons.Node.FS.Valid_Duplicates) + + op.add_option('--duplicate', + nargs=1, type="string", + dest="duplicate", default='hard-soft-copy', + action="callback", callback=opt_duplicate, + help=opt_duplicate_help) + + if not SCons.Platform.virtualenv.virtualenv_enabled_by_default: + op.add_option('--enable-virtualenv', + dest="enable_virtualenv", + action="store_true", + help="Import certain virtualenv variables to SCons") + + def experimental_callback(option, opt, value, parser): + experimental = getattr(parser.values, option.dest) + + if ',' in value: + value = value.split(',') + else: + value = [value] + + for v in value: + if v == 'none': + experimental = set() + elif v == 'all': + experimental = experimental_features + elif v not in experimental_features: + raise OptionValueError( + "option --experimental: invalid choice: '%s' " + "(choose from 'all','none',%s)" + % (v, ','.join(["'%s'" % e for e in sorted(experimental_features)])) + ) + else: + experimental |= {v} + + setattr(parser.values, option.dest, experimental) + + op.add_option('--experimental', + dest='experimental', + action='callback', + default=set(), # empty set + type='str', + # choices=experimental_options+experimental_features, + callback=experimental_callback, + help='Enable experimental features') + + op.add_option('-f', '--file', '--makefile', '--sconstruct', + nargs=1, type="string", + dest="file", default=[], + action="append", + help="Read FILE as the top-level SConstruct file") + + op.add_option('-h', '--help', + dest="help", default=False, + action="store_true", + help="Print defined help message, or this one") + + op.add_option("-H", "--help-options", + action="help", + help="Print this message and exit") + + def warn_md5_chunksize_deprecated(option, opt, value, parser): + if opt == '--md5-chunksize': + SCons.Warnings.warn(SCons.Warnings.DeprecatedWarning, + "Parameter %s is deprecated. Use " + "--hash-chunksize instead." % opt) + + setattr(parser.values, option.dest, value) + + op.add_option('--hash-chunksize', '--md5-chunksize', + nargs=1, type="int", + dest='md5_chunksize', default=SCons.Node.FS.File.hash_chunksize, + action="callback", + help="Set chunk-size for hash signature computation to N kilobytes", + callback=warn_md5_chunksize_deprecated, + metavar="N") + + op.add_option('--hash-format', + dest='hash_format', + action='store', + help='Hash format [md5, sha1, sha256, etc].') + + op.add_option('-i', '--ignore-errors', + dest='ignore_errors', default=False, + action="store_true", + help="Ignore errors from build actions") + + op.add_option('-I', '--include-dir', + nargs=1, + dest='include_dir', default=[], + action="append", + help="Search DIR for imported Python modules", + metavar="DIR") + + op.add_option('--ignore-virtualenv', + dest="ignore_virtualenv", + action="store_true", + help="Do not import virtualenv variables to SCons") + + op.add_option('--implicit-cache', + dest='implicit_cache', default=False, + action="store_true", + help="Cache implicit dependencies") + + def opt_implicit_deps(option, opt, value, parser): + setattr(parser.values, 'implicit_cache', True) + setattr(parser.values, option.dest, True) + + op.add_option('--implicit-deps-changed', + dest="implicit_deps_changed", default=False, + action="callback", callback=opt_implicit_deps, + help="Ignore cached implicit dependencies") + + op.add_option('--implicit-deps-unchanged', + dest="implicit_deps_unchanged", default=False, + action="callback", callback=opt_implicit_deps, + help="Ignore changes in implicit dependencies") + + op.add_option('--interact', '--interactive', + dest='interactive', default=False, + action="store_true", + help="Run in interactive mode") + + op.add_option('-j', '--jobs', + nargs=1, type="int", + dest="num_jobs", default=1, + action="store", + help="Allow N jobs at once", + metavar="N") + + op.add_option('-k', '--keep-going', + dest='keep_going', default=False, + action="store_true", + help="Keep going when a target can't be made") + + op.add_option('--max-drift', + nargs=1, type="int", + dest='max_drift', default=SCons.Node.FS.default_max_drift, + action="store", + help="Set maximum system clock drift to N seconds", + metavar="N") + + op.add_option('-n', '--no-exec', '--just-print', '--dry-run', '--recon', + dest='no_exec', default=False, + action="store_true", + help="Don't build; just print commands") + + op.add_option('--no-site-dir', + dest='site_dir', + action="store_false", + help="Don't search or use the usual site_scons dir") + + op.add_option('--profile', + nargs=1, + dest="profile_file", default=None, + action="store", + help="Profile SCons and put results in FILE", + metavar="FILE") + + op.add_option('-q', '--question', + dest="question", default=False, + action="store_true", + help="Don't build; exit status says if up to date") + + op.add_option('-Q', + dest='no_progress', default=False, + action="store_true", + help="Suppress \"Reading/Building\" progress messages") + + op.add_option('--random', + dest="random", default=False, + action="store_true", + help="Build dependencies in random order") + + op.add_option('-s', '--silent', '--quiet', + dest="silent", default=False, + action="store_true", + help="Don't print commands") + + op.add_option('--site-dir', + nargs=1, + dest='site_dir', default=None, + action="store", + help="Use DIR instead of the usual site_scons dir", + metavar="DIR") + + op.add_option('--stack-size', + nargs=1, type="int", + dest='stack_size', + action="store", + help="Set the stack size of the threads used to run jobs to N kilobytes", + metavar="N") + + op.add_option('--taskmastertrace', + nargs=1, + dest="taskmastertrace_file", default=None, + action="store", + help="Trace Node evaluation to FILE", + metavar="FILE") + + tree_options = ["all", "derived", "prune", "status", "linedraw"] + + def opt_tree(option, opt, value, parser, tree_options=tree_options): + tp = Main.TreePrinter() + for o in value.split(','): + if o == 'all': + tp.derived = False + elif o == 'derived': + tp.derived = True + elif o == 'prune': + tp.prune = True + elif o == 'status': + tp.status = True + elif o == 'linedraw': + tp.sLineDraw = True + else: + raise OptionValueError(opt_invalid('--tree', o, tree_options)) + parser.values.tree_printers.append(tp) + + opt_tree_help = "Print a dependency tree in various formats [%s]" \ + % ", ".join(tree_options) + + op.add_option('--tree', + nargs=1, type="string", + dest="tree_printers", default=[], + action="callback", callback=opt_tree, + help=opt_tree_help, + metavar="OPTIONS") + + op.add_option('-u', '--up', '--search-up', + dest="climb_up", default=0, + action="store_const", const=1, + help="Search up directory tree for SConstruct, " + "build targets at or below current directory") + + op.add_option('-U', + dest="climb_up", default=0, + action="store_const", const=3, + help="Search up directory tree for SConstruct, " + "build Default() targets from local SConscript") + + def opt_version(option, opt, value, parser): + sys.stdout.write(parser.version + '\n') + sys.exit(0) + + op.add_option("-v", "--version", + action="callback", callback=opt_version, + help="Print the SCons version number and exit") + + def opt_warn(option, opt, value, parser, tree_options=tree_options): + if SCons.Util.is_String(value): + value = value.split(',') + parser.values.warn.extend(value) + + op.add_option('--warn', '--warning', + nargs=1, type="string", + dest="warn", default=[], + action="callback", callback=opt_warn, + help="Enable or disable warnings", + metavar="WARNING-SPEC") + + op.add_option('-Y', '--repository', '--srcdir', + nargs=1, + dest="repository", default=[], + action="append", + help="Search REPOSITORY for source and target files") + + # Options from Make and Cons classic that we do not yet support, + # but which we may support someday and whose (potential) meanings + # we don't want to change. These all get a "the -X option is not + # yet implemented" message and don't show up in the help output. + + def opt_not_yet(option, opt, value, parser): + msg = "Warning: the %s option is not yet implemented\n" % opt + sys.stderr.write(msg) + + op.add_option('-l', '--load-average', '--max-load', + nargs=1, type="float", + dest="load_average", default=0, + action="callback", callback=opt_not_yet, + # action="store", + # help="Don't start multiple jobs unless load is below " + # "LOAD-AVERAGE" + help=SUPPRESS_HELP) + op.add_option('--list-actions', + dest="list_actions", + action="callback", callback=opt_not_yet, + # help="Don't build; list files and build actions" + help=SUPPRESS_HELP) + op.add_option('--list-derived', + dest="list_derived", + action="callback", callback=opt_not_yet, + # help="Don't build; list files that would be built" + help=SUPPRESS_HELP) + op.add_option('--list-where', + dest="list_where", + action="callback", callback=opt_not_yet, + # help="Don't build; list files and where defined" + help=SUPPRESS_HELP) + op.add_option('-o', '--old-file', '--assume-old', + nargs=1, type="string", + dest="old_file", default=[], + action="callback", callback=opt_not_yet, + # action="append", + # help = "Consider FILE to be old; don't rebuild it" + help=SUPPRESS_HELP) + op.add_option('--override', + nargs=1, type="string", + action="callback", callback=opt_not_yet, + dest="override", + # help="Override variables as specified in FILE" + help=SUPPRESS_HELP) + op.add_option('-p', + action="callback", callback=opt_not_yet, + dest="p", + # help="Print internal environments/objects" + help=SUPPRESS_HELP) + op.add_option('-r', '-R', '--no-builtin-rules', '--no-builtin-variables', + action="callback", callback=opt_not_yet, + dest="no_builtin_rules", + # help="Clear default environments and variables" + help=SUPPRESS_HELP) + op.add_option('--write-filenames', + nargs=1, type="string", + dest="write_filenames", + action="callback", callback=opt_not_yet, + # help="Write all filenames examined into FILE" + help=SUPPRESS_HELP) + op.add_option('-W', '--new-file', '--assume-new', '--what-if', + nargs=1, type="string", + dest="new_file", + action="callback", callback=opt_not_yet, + # help="Consider FILE to be changed" + help=SUPPRESS_HELP) + op.add_option('--warn-undefined-variables', + dest="warn_undefined_variables", + action="callback", callback=opt_not_yet, + # help="Warn when an undefined variable is referenced" + help=SUPPRESS_HELP) + return op + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Script/SConscript.py b/scons/scons-local-4.5.1/SCons/Script/SConscript.py new file mode 100644 index 000000000..b72f30eee --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Script/SConscript.py @@ -0,0 +1,688 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""This module defines the Python API provided to SConscript files.""" + +import SCons +import SCons.Action +import SCons.Builder +import SCons.Defaults +import SCons.Environment +import SCons.Errors +import SCons.Node +import SCons.Node.Alias +import SCons.Node.FS +import SCons.Platform +import SCons.SConf +import SCons.Tool +from SCons.Util import is_List, is_String, is_Dict, flatten +from SCons.Node import SConscriptNodes +from . import Main + +import os +import os.path +import re +import sys +import traceback +import time + +class SConscriptReturn(Exception): + pass + +launch_dir = os.path.abspath(os.curdir) + +GlobalDict = None + +# global exports set by Export(): +global_exports = {} + +# chdir flag +sconscript_chdir: bool = True + +def get_calling_namespaces(): + """Return the locals and globals for the function that called + into this module in the current call stack.""" + try: 1//0 + except ZeroDivisionError: + # Don't start iterating with the current stack-frame to + # prevent creating reference cycles (f_back is safe). + frame = sys.exc_info()[2].tb_frame.f_back + + # Find the first frame that *isn't* from this file. This means + # that we expect all of the SCons frames that implement an Export() + # or SConscript() call to be in this file, so that we can identify + # the first non-Script.SConscript frame as the user's local calling + # environment, and the locals and globals dictionaries from that + # frame as the calling namespaces. See the comment below preceding + # the DefaultEnvironmentCall block for even more explanation. + while frame.f_globals.get("__name__") == __name__: + frame = frame.f_back + + return frame.f_locals, frame.f_globals + + +def compute_exports(exports): + """Compute a dictionary of exports given one of the parameters + to the Export() function or the exports argument to SConscript().""" + + loc, glob = get_calling_namespaces() + + retval = {} + try: + for export in exports: + if is_Dict(export): + retval.update(export) + else: + try: + retval[export] = loc[export] + except KeyError: + retval[export] = glob[export] + except KeyError as x: + raise SCons.Errors.UserError("Export of non-existent variable '%s'"%x) + + return retval + +class Frame: + """A frame on the SConstruct/SConscript call stack""" + def __init__(self, fs, exports, sconscript): + self.globals = BuildDefaultGlobals() + self.retval = None + self.prev_dir = fs.getcwd() + self.exports = compute_exports(exports) # exports from the calling SConscript + # make sure the sconscript attr is a Node. + if isinstance(sconscript, SCons.Node.Node): + self.sconscript = sconscript + elif sconscript == '-': + self.sconscript = None + else: + self.sconscript = fs.File(str(sconscript)) + +# the SConstruct/SConscript call stack: +call_stack = [] + +# For documentation on the methods in this file, see the scons man-page + +def Return(*vars, **kw): + retval = [] + try: + fvars = flatten(vars) + for var in fvars: + for v in var.split(): + retval.append(call_stack[-1].globals[v]) + except KeyError as x: + raise SCons.Errors.UserError("Return of non-existent variable '%s'"%x) + + if len(retval) == 1: + call_stack[-1].retval = retval[0] + else: + call_stack[-1].retval = tuple(retval) + + stop = kw.get('stop', True) + + if stop: + raise SConscriptReturn + + +stack_bottom = '% Stack boTTom %' # hard to define a variable w/this name :) + +def handle_missing_SConscript(f, must_exist=None): + """Take appropriate action on missing file in SConscript() call. + + Print a warning or raise an exception on missing file, unless + missing is explicitly allowed by the *must_exist* value. + On first warning, print a deprecation message. + + Args: + f (str): path of missing configuration file + must_exist (bool): if true, fail. If false, but not ``None``, + allow the file to be missing. The default is ``None``, + which means issue the warning. The default is deprecated. + + Raises: + UserError: if *must_exist* is true or if global + :data:`SCons.Script._no_missing_sconscript` is true. + """ + + if must_exist or (SCons.Script._no_missing_sconscript and must_exist is not False): + msg = "Fatal: missing SConscript '%s'" % f.get_internal_path() + raise SCons.Errors.UserError(msg) + + if must_exist is None: + if SCons.Script._warn_missing_sconscript_deprecated: + msg = ( + "Calling missing SConscript without error is deprecated.\n" + "Transition by adding must_exist=False to SConscript calls.\n" + "Missing SConscript '%s'" % f.get_internal_path() + ) + SCons.Warnings.warn(SCons.Warnings.MissingSConscriptWarning, msg) + SCons.Script._warn_missing_sconscript_deprecated = False + else: + msg = "Ignoring missing SConscript '%s'" % f.get_internal_path() + SCons.Warnings.warn(SCons.Warnings.MissingSConscriptWarning, msg) + +def _SConscript(fs, *files, **kw): + top = fs.Top + sd = fs.SConstruct_dir.rdir() + exports = kw.get('exports', []) + + # evaluate each SConscript file + results = [] + for fn in files: + call_stack.append(Frame(fs, exports, fn)) + old_sys_path = sys.path + try: + SCons.Script.sconscript_reading = SCons.Script.sconscript_reading + 1 + if fn == "-": + exec(sys.stdin.read(), call_stack[-1].globals) + else: + if isinstance(fn, SCons.Node.Node): + f = fn + else: + f = fs.File(str(fn)) + _file_ = None + SConscriptNodes.add(f) + + # Change directory to the top of the source + # tree to make sure the os's cwd and the cwd of + # fs match so we can open the SConscript. + fs.chdir(top, change_os_dir=True) + if f.rexists(): + actual = f.rfile() + _file_ = open(actual.get_abspath(), "rb") + elif f.srcnode().rexists(): + actual = f.srcnode().rfile() + _file_ = open(actual.get_abspath(), "rb") + elif f.has_src_builder(): + # The SConscript file apparently exists in a source + # code management system. Build it, but then clear + # the builder so that it doesn't get built *again* + # during the actual build phase. + f.build() + f.built() + f.builder_set(None) + if f.exists(): + _file_ = open(f.get_abspath(), "rb") + if _file_: + # Chdir to the SConscript directory. Use a path + # name relative to the SConstruct file so that if + # we're using the -f option, we're essentially + # creating a parallel SConscript directory structure + # in our local directory tree. + # + # XXX This is broken for multiple-repository cases + # where the SConstruct and SConscript files might be + # in different Repositories. For now, cross that + # bridge when someone comes to it. + try: + src_dir = kw['src_dir'] + except KeyError: + ldir = fs.Dir(f.dir.get_path(sd)) + else: + ldir = fs.Dir(src_dir) + if not ldir.is_under(f.dir): + # They specified a source directory, but + # it's above the SConscript directory. + # Do the sensible thing and just use the + # SConcript directory. + ldir = fs.Dir(f.dir.get_path(sd)) + try: + fs.chdir(ldir, change_os_dir=sconscript_chdir) + except OSError: + # There was no local directory, so we should be + # able to chdir to the Repository directory. + # Note that we do this directly, not through + # fs.chdir(), because we still need to + # interpret the stuff within the SConscript file + # relative to where we are logically. + fs.chdir(ldir, change_os_dir=False) + os.chdir(actual.dir.get_abspath()) + + # Append the SConscript directory to the beginning + # of sys.path so Python modules in the SConscript + # directory can be easily imported. + sys.path = [ f.dir.get_abspath() ] + sys.path + + # This is the magic line that actually reads up + # and executes the stuff in the SConscript file. + # The locals for this frame contain the special + # bottom-of-the-stack marker so that any + # exceptions that occur when processing this + # SConscript can base the printed frames at this + # level and not show SCons internals as well. + call_stack[-1].globals.update({stack_bottom:1}) + old_file = call_stack[-1].globals.get('__file__') + try: + del call_stack[-1].globals['__file__'] + except KeyError: + pass + try: + try: + if Main.print_time: + start_time = time.perf_counter() + scriptdata = _file_.read() + scriptname = _file_.name + _file_.close() + exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals) + except SConscriptReturn: + pass + finally: + if Main.print_time: + elapsed = time.perf_counter() - start_time + print('SConscript:%s took %0.3f ms' % (f.get_abspath(), elapsed * 1000.0)) + + if old_file is not None: + call_stack[-1].globals.update({__file__:old_file}) + + else: + handle_missing_SConscript(f, kw.get('must_exist', None)) + + finally: + SCons.Script.sconscript_reading = SCons.Script.sconscript_reading - 1 + sys.path = old_sys_path + frame = call_stack.pop() + try: + fs.chdir(frame.prev_dir, change_os_dir=sconscript_chdir) + except OSError: + # There was no local directory, so chdir to the + # Repository directory. Like above, we do this + # directly. + fs.chdir(frame.prev_dir, change_os_dir=False) + rdir = frame.prev_dir.rdir() + rdir._create() # Make sure there's a directory there. + try: + os.chdir(rdir.get_abspath()) + except OSError as e: + # We still couldn't chdir there, so raise the error, + # but only if actions are being executed. + # + # If the -n option was used, the directory would *not* + # have been created and we should just carry on and + # let things muddle through. This isn't guaranteed + # to work if the SConscript files are reading things + # from disk (for example), but it should work well + # enough for most configurations. + if SCons.Action.execute_actions: + raise e + + results.append(frame.retval) + + # if we only have one script, don't return a tuple + if len(results) == 1: + return results[0] + else: + return tuple(results) + +def SConscript_exception(file=sys.stderr): + """Print an exception stack trace just for the SConscript file(s). + This will show users who have Python errors where the problem is, + without cluttering the output with all of the internal calls leading + up to where we exec the SConscript.""" + exc_type, exc_value, exc_tb = sys.exc_info() + tb = exc_tb + while tb and stack_bottom not in tb.tb_frame.f_locals: + tb = tb.tb_next + if not tb: + # We did not find our exec statement, so this was actually a bug + # in SCons itself. Show the whole stack. + tb = exc_tb + stack = traceback.extract_tb(tb) + try: + type = exc_type.__name__ + except AttributeError: + type = str(exc_type) + if type[:11] == "exceptions.": + type = type[11:] + file.write('%s: %s:\n' % (type, exc_value)) + for fname, line, func, text in stack: + file.write(' File "%s", line %d:\n' % (fname, line)) + file.write(' %s\n' % text) + +def annotate(node): + """Annotate a node with the stack frame describing the + SConscript file and line number that created it.""" + tb = sys.exc_info()[2] + while tb and stack_bottom not in tb.tb_frame.f_locals: + tb = tb.tb_next + if not tb: + # We did not find any exec of an SConscript file: what?! + raise SCons.Errors.InternalError("could not find SConscript stack frame") + node.creator = traceback.extract_stack(tb)[0] + +# The following line would cause each Node to be annotated using the +# above function. Unfortunately, this is a *huge* performance hit, so +# leave this disabled until we find a more efficient mechanism. +#SCons.Node.Annotate = annotate + +class SConsEnvironment(SCons.Environment.Base): + """An Environment subclass that contains all of the methods that + are particular to the wrapper SCons interface and which aren't + (or shouldn't be) part of the build engine itself. + + Note that not all of the methods of this class have corresponding + global functions, there are some private methods. + """ + + # + # Private methods of an SConsEnvironment. + # + @staticmethod + def _get_major_minor_revision(version_string): + """Split a version string into major, minor and (optionally) + revision parts. + + This is complicated by the fact that a version string can be + something like 3.2b1.""" + version = version_string.split(' ')[0].split('.') + v_major = int(version[0]) + v_minor = int(re.match(r'\d+', version[1]).group()) + if len(version) >= 3: + v_revision = int(re.match(r'\d+', version[2]).group()) + else: + v_revision = 0 + return v_major, v_minor, v_revision + + def _get_SConscript_filenames(self, ls, kw): + """ + Convert the parameters passed to SConscript() calls into a list + of files and export variables. If the parameters are invalid, + throws SCons.Errors.UserError. Returns a tuple (l, e) where l + is a list of SConscript filenames and e is a list of exports. + """ + exports = [] + + if len(ls) == 0: + try: + dirs = kw["dirs"] + except KeyError: + raise SCons.Errors.UserError("Invalid SConscript usage - no parameters") + + if not is_List(dirs): + dirs = [ dirs ] + dirs = list(map(str, dirs)) + + name = kw.get('name', 'SConscript') + + files = [os.path.join(n, name) for n in dirs] + + elif len(ls) == 1: + + files = ls[0] + + elif len(ls) == 2: + + files = ls[0] + exports = self.Split(ls[1]) + + else: + + raise SCons.Errors.UserError("Invalid SConscript() usage - too many arguments") + + if not is_List(files): + files = [ files ] + + if kw.get('exports'): + exports.extend(self.Split(kw['exports'])) + + variant_dir = kw.get('variant_dir') + if variant_dir: + if len(files) != 1: + raise SCons.Errors.UserError("Invalid SConscript() usage - can only specify one SConscript with a variant_dir") + duplicate = kw.get('duplicate', 1) + src_dir = kw.get('src_dir') + if not src_dir: + src_dir, fname = os.path.split(str(files[0])) + files = [os.path.join(str(variant_dir), fname)] + else: + if not isinstance(src_dir, SCons.Node.Node): + src_dir = self.fs.Dir(src_dir) + fn = files[0] + if not isinstance(fn, SCons.Node.Node): + fn = self.fs.File(fn) + if fn.is_under(src_dir): + # Get path relative to the source directory. + fname = fn.get_path(src_dir) + files = [os.path.join(str(variant_dir), fname)] + else: + files = [fn.get_abspath()] + kw['src_dir'] = variant_dir + self.fs.VariantDir(variant_dir, src_dir, duplicate) + + return (files, exports) + + # + # Public methods of an SConsEnvironment. These get + # entry points in the global namespace so they can be called + # as global functions. + # + + def Configure(self, *args, **kw): + if not SCons.Script.sconscript_reading: + raise SCons.Errors.UserError("Calling Configure from Builders is not supported.") + kw['_depth'] = kw.get('_depth', 0) + 1 + return SCons.Environment.Base.Configure(self, *args, **kw) + + def Default(self, *targets): + SCons.Script._Set_Default_Targets(self, targets) + + @staticmethod + def EnsureSConsVersion(major, minor, revision=0): + """Exit abnormally if the SCons version is not late enough.""" + # split string to avoid replacement during build process + if SCons.__version__ == '__' + 'VERSION__': + SCons.Warnings.warn(SCons.Warnings.DevelopmentVersionWarning, + "EnsureSConsVersion is ignored for development version") + return + scons_ver = SConsEnvironment._get_major_minor_revision(SCons.__version__) + if scons_ver < (major, minor, revision): + if revision: + scons_ver_string = '%d.%d.%d' % (major, minor, revision) + else: + scons_ver_string = '%d.%d' % (major, minor) + print("SCons %s or greater required, but you have SCons %s" % \ + (scons_ver_string, SCons.__version__)) + sys.exit(2) + + @staticmethod + def EnsurePythonVersion(major, minor): + """Exit abnormally if the Python version is not late enough.""" + if sys.version_info < (major, minor): + v = sys.version.split()[0] + print("Python %d.%d or greater required, but you have Python %s" %(major,minor,v)) + sys.exit(2) + + @staticmethod + def Exit(value=0): + sys.exit(value) + + def Export(self, *vars, **kw): + for var in vars: + global_exports.update(compute_exports(self.Split(var))) + global_exports.update(kw) + + @staticmethod + def GetLaunchDir(): + global launch_dir + return launch_dir + + def GetOption(self, name): + name = self.subst(name) + return SCons.Script.Main.GetOption(name) + + + def Help(self, text, append=False): + text = self.subst(text, raw=1) + SCons.Script.HelpFunction(text, append=append) + + def Import(self, *vars): + try: + frame = call_stack[-1] + globals = frame.globals + exports = frame.exports + for var in vars: + var = self.Split(var) + for v in var: + if v == '*': + globals.update(global_exports) + globals.update(exports) + else: + if v in exports: + globals[v] = exports[v] + else: + globals[v] = global_exports[v] + except KeyError as x: + raise SCons.Errors.UserError("Import of non-existent variable '%s'"%x) + + def SConscript(self, *ls, **kw): + """Execute SCons configuration files. + + Parameters: + *ls (str or list): configuration file(s) to execute. + + Keyword arguments: + dirs (list): execute SConscript in each listed directory. + name (str): execute script 'name' (used only with 'dirs'). + exports (list or dict): locally export variables the + called script(s) can import. + variant_dir (str): mirror sources needed for the build in + a variant directory to allow building in it. + duplicate (bool): physically duplicate sources instead of just + adjusting paths of derived files (used only with 'variant_dir') + (default is True). + must_exist (bool): fail if a requested script is missing + (default is False, default is deprecated). + + Returns: + list of variables returned by the called script + + Raises: + UserError: a script is not found and such exceptions are enabled. + """ + + def subst_element(x, subst=self.subst): + if SCons.Util.is_List(x): + x = list(map(subst, x)) + else: + x = subst(x) + return x + ls = list(map(subst_element, ls)) + subst_kw = {} + for key, val in kw.items(): + if is_String(val): + val = self.subst(val) + elif SCons.Util.is_List(val): + val = [self.subst(v) if is_String(v) else v for v in val] + subst_kw[key] = val + + files, exports = self._get_SConscript_filenames(ls, subst_kw) + subst_kw['exports'] = exports + return _SConscript(self.fs, *files, **subst_kw) + + @staticmethod + def SConscriptChdir(flag: bool) -> None: + global sconscript_chdir + sconscript_chdir = flag + + def SetOption(self, name, value): + name = self.subst(name) + SCons.Script.Main.SetOption(name, value) + +# +# +# +SCons.Environment.Environment = SConsEnvironment + +def Configure(*args, **kw): + if not SCons.Script.sconscript_reading: + raise SCons.Errors.UserError("Calling Configure from Builders is not supported.") + kw['_depth'] = 1 + return SCons.SConf.SConf(*args, **kw) + +# It's very important that the DefaultEnvironmentCall() class stay in this +# file, with the get_calling_namespaces() function, the compute_exports() +# function, the Frame class and the SConsEnvironment.Export() method. +# These things make up the calling stack leading up to the actual global +# Export() or SConscript() call that the user issued. We want to allow +# users to export local variables that they define, like so: +# +# def func(): +# x = 1 +# Export('x') +# +# To support this, the get_calling_namespaces() function assumes that +# the *first* stack frame that's not from this file is the local frame +# for the Export() or SConscript() call. + +_DefaultEnvironmentProxy = None + +def get_DefaultEnvironmentProxy(): + global _DefaultEnvironmentProxy + if not _DefaultEnvironmentProxy: + default_env = SCons.Defaults.DefaultEnvironment() + _DefaultEnvironmentProxy = SCons.Environment.NoSubstitutionProxy(default_env) + return _DefaultEnvironmentProxy + +class DefaultEnvironmentCall: + """A class that implements "global function" calls of + Environment methods by fetching the specified method from the + DefaultEnvironment's class. Note that this uses an intermediate + proxy class instead of calling the DefaultEnvironment method + directly so that the proxy can override the subst() method and + thereby prevent expansion of construction variables (since from + the user's point of view this was called as a global function, + with no associated construction environment).""" + def __init__(self, method_name, subst=0): + self.method_name = method_name + if subst: + self.factory = SCons.Defaults.DefaultEnvironment + else: + self.factory = get_DefaultEnvironmentProxy + def __call__(self, *args, **kw): + env = self.factory() + method = getattr(env, self.method_name) + return method(*args, **kw) + + +def BuildDefaultGlobals(): + """ + Create a dictionary containing all the default globals for + SConstruct and SConscript files. + """ + + global GlobalDict + if GlobalDict is None: + GlobalDict = {} + + import SCons.Script + d = SCons.Script.__dict__ + def not_a_module(m, d=d, mtype=type(SCons.Script)): + return not isinstance(d[m], mtype) + for m in filter(not_a_module, dir(SCons.Script)): + GlobalDict[m] = d[m] + + return GlobalDict.copy() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Script/__init__.py b/scons/scons-local-4.5.1/SCons/Script/__init__.py new file mode 100644 index 000000000..6cfea1b43 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Script/__init__.py @@ -0,0 +1,430 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""The main() function used by the scons script. + +Architecturally, this *is* the scons script, and will likely only be +called from the external "scons" wrapper. Consequently, anything here +should not be, or be considered, part of the build engine. If it's +something that we expect other software to want to use, it should go in +some other module. If it's specific to the "scons" script invocation, +it goes here. +""" + +import time +start_time = time.time() + +import collections +import os +from io import StringIO + +import sys + +# Special chicken-and-egg handling of the "--debug=memoizer" flag: +# +# SCons.Memoize contains a metaclass implementation that affects how +# the other classes are instantiated. The Memoizer may add shim methods +# to classes that have methods that cache computed values in order to +# count and report the hits and misses. +# +# If we wait to enable the Memoization until after we've parsed the +# command line options normally, it will be too late, because the Memoizer +# will have already analyzed the classes that it's Memoizing and decided +# to not add the shims. So we use a special-case, up-front check for +# the "--debug=memoizer" flag and enable Memoizer before we import any +# of the other modules that use it. + +_args = sys.argv + os.environ.get('SCONSFLAGS', '').split() +if "--debug=memoizer" in _args: + import SCons.Memoize + import SCons.Warnings + try: + SCons.Memoize.EnableMemoization() + except SCons.Warnings.SConsWarning: + # Some warning was thrown. Arrange for it to be displayed + # or not after warnings are configured. + from . import Main + exc_type, exc_value, tb = sys.exc_info() + Main.delayed_warnings.append((exc_type, exc_value)) +del _args + +import SCons.Action +import SCons.Builder +import SCons.Environment +import SCons.Node.FS +import SCons.Platform +import SCons.Platform.virtualenv +import SCons.Scanner +import SCons.SConf +import SCons.Subst +import SCons.Tool +import SCons.Util +import SCons.Variables +import SCons.Defaults + +from . import Main + +main = Main.main + +# The following are global class definitions and variables that used to +# live directly in this module back before 0.96.90, when it contained +# a lot of code. Some SConscript files in widely-distributed packages +# (Blender is the specific example) actually reached into SCons.Script +# directly to use some of these. Rather than break those SConscript +# files, we're going to propagate these names into the SCons.Script +# namespace here. +# +# Some of these are commented out because it's *really* unlikely anyone +# used them, but we're going to leave the comment here to try to make +# it obvious what to do if the situation arises. +BuildTask = Main.BuildTask +CleanTask = Main.CleanTask +QuestionTask = Main.QuestionTask +#PrintHelp = Main.PrintHelp +#SConscriptSettableOptions = Main.SConscriptSettableOptions + +AddOption = Main.AddOption +PrintHelp = Main.PrintHelp +GetOption = Main.GetOption +SetOption = Main.SetOption +ValidateOptions = Main.ValidateOptions +Progress = Main.Progress +GetBuildFailures = Main.GetBuildFailures + +#keep_going_on_error = Main.keep_going_on_error +#print_dtree = Main.print_dtree +#print_explanations = Main.print_explanations +#print_includes = Main.print_includes +#print_objects = Main.print_objects +#print_time = Main.print_time +#print_tree = Main.print_tree +#memory_stats = Main.memory_stats +#ignore_errors = Main.ignore_errors +#sconscript_time = Main.sconscript_time +#command_time = Main.command_time +#exit_status = Main.exit_status +#profiling = Main.profiling +#repositories = Main.repositories + +from . import SConscript as _SConscript + +call_stack = _SConscript.call_stack + +# +Action = SCons.Action.Action +AddMethod = SCons.Util.AddMethod +AllowSubstExceptions = SCons.Subst.SetAllowableExceptions +Builder = SCons.Builder.Builder +Configure = _SConscript.Configure +Environment = SCons.Environment.Environment +#OptParser = SCons.SConsOptions.OptParser +FindPathDirs = SCons.Scanner.FindPathDirs +Platform = SCons.Platform.Platform +Virtualenv = SCons.Platform.virtualenv.Virtualenv +Return = _SConscript.Return +Scanner = SCons.Scanner.ScannerBase +Tool = SCons.Tool.Tool +WhereIs = SCons.Util.WhereIs + +# +BoolVariable = SCons.Variables.BoolVariable +EnumVariable = SCons.Variables.EnumVariable +ListVariable = SCons.Variables.ListVariable +PackageVariable = SCons.Variables.PackageVariable +PathVariable = SCons.Variables.PathVariable + + +# Action factories. +Chmod = SCons.Defaults.Chmod +Copy = SCons.Defaults.Copy +Delete = SCons.Defaults.Delete +Mkdir = SCons.Defaults.Mkdir +Move = SCons.Defaults.Move +Touch = SCons.Defaults.Touch + +# Pre-made, public scanners. +CScanner = SCons.Tool.CScanner +DScanner = SCons.Tool.DScanner +DirScanner = SCons.Defaults.DirScanner +ProgramScanner = SCons.Tool.ProgramScanner +SourceFileScanner = SCons.Tool.SourceFileScanner + +# Functions we might still convert to Environment methods. +CScan = SCons.Defaults.CScan +DefaultEnvironment = SCons.Defaults.DefaultEnvironment + +# Other variables we provide. +class TargetList(collections.UserList): + def _do_nothing(self, *args, **kw): + pass + def _add_Default(self, list): + self.extend(list) + def _clear(self): + del self[:] + +ARGUMENTS = {} +ARGLIST = [] +BUILD_TARGETS = TargetList() +COMMAND_LINE_TARGETS = [] +DEFAULT_TARGETS = [] + +# BUILD_TARGETS can be modified in the SConscript files. If so, we +# want to treat the modified BUILD_TARGETS list as if they specified +# targets on the command line. To do that, though, we need to know if +# BUILD_TARGETS was modified through "official" APIs or by hand. We do +# this by updating two lists in parallel, the documented BUILD_TARGETS +# list, above, and this internal _build_plus_default targets list which +# should only have "official" API changes. Then Script/Main.py can +# compare these two afterwards to figure out if the user added their +# own targets to BUILD_TARGETS. +_build_plus_default = TargetList() + +def _Add_Arguments(alist): + for arg in alist: + a, b = arg.split('=', 1) + ARGUMENTS[a] = b + ARGLIST.append((a, b)) + +def _Add_Targets(tlist): + if tlist: + COMMAND_LINE_TARGETS.extend(tlist) + BUILD_TARGETS.extend(tlist) + BUILD_TARGETS._add_Default = BUILD_TARGETS._do_nothing + BUILD_TARGETS._clear = BUILD_TARGETS._do_nothing + _build_plus_default.extend(tlist) + _build_plus_default._add_Default = _build_plus_default._do_nothing + _build_plus_default._clear = _build_plus_default._do_nothing + +def _Set_Default_Targets_Has_Been_Called(d, fs): + return DEFAULT_TARGETS + +def _Set_Default_Targets_Has_Not_Been_Called(d, fs): + if d is None: + d = [fs.Dir('.')] + return d + +_Get_Default_Targets = _Set_Default_Targets_Has_Not_Been_Called + +def _Set_Default_Targets(env, tlist): + global DEFAULT_TARGETS + global _Get_Default_Targets + _Get_Default_Targets = _Set_Default_Targets_Has_Been_Called + for t in tlist: + if t is None: + # Delete the elements from the list in-place, don't + # reassign an empty list to DEFAULT_TARGETS, so that the + # variables will still point to the same object we point to. + del DEFAULT_TARGETS[:] + BUILD_TARGETS._clear() + _build_plus_default._clear() + elif isinstance(t, SCons.Node.Node): + DEFAULT_TARGETS.append(t) + BUILD_TARGETS._add_Default([t]) + _build_plus_default._add_Default([t]) + else: + nodes = env.arg2nodes(t, env.fs.Entry) + DEFAULT_TARGETS.extend(nodes) + BUILD_TARGETS._add_Default(nodes) + _build_plus_default._add_Default(nodes) + +# +help_text = None + +def HelpFunction(text, append=False): + global help_text + if help_text is None: + if append: + s = StringIO() + PrintHelp(s) + help_text = s.getvalue() + s.close() + else: + help_text = "" + + help_text= help_text + text + + +# +# Will be non-zero if we are reading an SConscript file. +sconscript_reading = 0 + +_no_missing_sconscript = False +_warn_missing_sconscript_deprecated = True + +def set_missing_sconscript_error(flag=1): + """Set behavior on missing file in SConscript() call. + + Returns: + previous value + """ + global _no_missing_sconscript + old = _no_missing_sconscript + _no_missing_sconscript = flag + return old + + +def Variables(files=None, args=ARGUMENTS): + return SCons.Variables.Variables(files, args) + + +# Adding global functions to the SConscript name space. +# +# Static functions that do not trigger initialization of +# DefaultEnvironment() and don't use its state. +EnsureSConsVersion = _SConscript.SConsEnvironment.EnsureSConsVersion +EnsurePythonVersion = _SConscript.SConsEnvironment.EnsurePythonVersion +Exit = _SConscript.SConsEnvironment.Exit +GetLaunchDir = _SConscript.SConsEnvironment.GetLaunchDir +SConscriptChdir = _SConscript.SConsEnvironment.SConscriptChdir + +# Functions that end up calling methods or Builders in the +# DefaultEnvironment(). +GlobalDefaultEnvironmentFunctions = [ + # Methods from the SConsEnvironment class, above. + 'Default', + 'Export', + 'Help', + 'Import', + #'SConscript', is handled separately, below. + + # Methods from the Environment.Base class. + 'AddPostAction', + 'AddPreAction', + 'Alias', + 'AlwaysBuild', + 'CacheDir', + 'Clean', + #The Command() method is handled separately, below. + 'Decider', + 'Depends', + 'Dir', + 'NoClean', + 'NoCache', + 'Entry', + 'Execute', + 'File', + 'FindFile', + 'FindInstalledFiles', + 'FindSourceFiles', + 'Flatten', + 'GetBuildPath', + 'Glob', + 'Ignore', + 'Install', + 'InstallAs', + 'InstallVersionedLib', + 'Literal', + 'Local', + 'ParseDepends', + 'Precious', + 'PyPackageDir', + 'Repository', + 'Requires', + 'SConsignFile', + 'SideEffect', + 'Split', + 'Tag', + 'Value', + 'VariantDir', +] + +GlobalDefaultBuilders = [ + # Supported builders. + 'CFile', + 'CXXFile', + 'DVI', + 'Jar', + 'Java', + 'JavaH', + 'Library', + 'LoadableModule', + 'M4', + 'MSVSProject', + 'Object', + 'PCH', + 'PDF', + 'PostScript', + 'Program', + 'RES', + 'RMIC', + 'SharedLibrary', + 'SharedObject', + 'StaticLibrary', + 'StaticObject', + 'Substfile', + 'Tar', + 'Textfile', + 'TypeLibrary', + 'Zip', + 'Package', +] + +# DefaultEnvironmentCall() initializes DefaultEnvironment() if it is not +# created yet. +for name in GlobalDefaultEnvironmentFunctions + GlobalDefaultBuilders: + exec ("%s = _SConscript.DefaultEnvironmentCall(%s)" % (name, repr(name))) +del name + +# There are a handful of variables that used to live in the +# Script/SConscript.py module that some SConscript files out there were +# accessing directly as SCons.Script.SConscript.*. The problem is that +# "SConscript" in this namespace is no longer a module, it's a global +# function call--or more precisely, an object that implements a global +# function call through the default Environment. Nevertheless, we can +# maintain backwards compatibility for SConscripts that were reaching in +# this way by hanging some attributes off the "SConscript" object here. +SConscript = _SConscript.DefaultEnvironmentCall('SConscript') + +# Make SConscript look enough like the module it used to be so +# that pychecker doesn't barf. +SConscript.__name__ = 'SConscript' + +SConscript.Arguments = ARGUMENTS +SConscript.ArgList = ARGLIST +SConscript.BuildTargets = BUILD_TARGETS +SConscript.CommandLineTargets = COMMAND_LINE_TARGETS +SConscript.DefaultTargets = DEFAULT_TARGETS + +# The global Command() function must be handled differently than the +# global functions for other construction environment methods because +# we want people to be able to use Actions that must expand $TARGET +# and $SOURCE later, when (and if) the Action is invoked to build +# the target(s). We do this with the subst=1 argument, which creates +# a DefaultEnvironmentCall instance that wraps up a normal default +# construction environment that performs variable substitution, not a +# proxy that doesn't. +# +# There's a flaw here, though, because any other $-variables on a command +# line will *also* be expanded, each to a null string, but that should +# only be a problem in the unusual case where someone was passing a '$' +# on a command line and *expected* the $ to get through to the shell +# because they were calling Command() and not env.Command()... This is +# unlikely enough that we're going to leave this as is and cross that +# bridge if someone actually comes to it. +Command = _SConscript.DefaultEnvironmentCall('Command', subst=1) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Subst.py b/scons/scons-local-4.5.1/SCons/Subst.py new file mode 100644 index 000000000..645639b49 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Subst.py @@ -0,0 +1,988 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons string substitution.""" + +import collections +import re +from inspect import signature, Parameter + +import SCons.Errors +from SCons.Util import is_String, is_Sequence + +# Indexed by the SUBST_* constants below. +_strconv = [ + SCons.Util.to_String_for_subst, + SCons.Util.to_String_for_subst, + SCons.Util.to_String_for_signature, +] + +AllowableExceptions = (IndexError, NameError) + + +def SetAllowableExceptions(*excepts): + global AllowableExceptions + AllowableExceptions = [_f for _f in excepts if _f] + + +def raise_exception(exception, target, s): + name = exception.__class__.__name__ + msg = "%s `%s' trying to evaluate `%s'" % (name, exception, s) + if target: + raise SCons.Errors.BuildError(target[0], msg) + else: + raise SCons.Errors.UserError(msg) + + +class Literal: + """A wrapper for a string. If you use this object wrapped + around a string, then it will be interpreted as literal. + When passed to the command interpreter, all special + characters will be escaped.""" + def __init__(self, lstr): + self.lstr = lstr + + def __str__(self): + return self.lstr + + def escape(self, escape_func): + return escape_func(self.lstr) + + def for_signature(self): + return self.lstr + + def is_literal(self): + return 1 + + def __eq__(self, other): + if not isinstance(other, Literal): + return False + return self.lstr == other.lstr + + def __neq__(self, other): + return not self.__eq__(other) + + def __hash__(self): + return hash(self.lstr) + +class SpecialAttrWrapper: + """This is a wrapper for what we call a 'Node special attribute.' + This is any of the attributes of a Node that we can reference from + Environment variable substitution, such as $TARGET.abspath or + $SOURCES[1].filebase. We implement the same methods as Literal + so we can handle special characters, plus a for_signature method, + such that we can return some canonical string during signature + calculation to avoid unnecessary rebuilds.""" + + def __init__(self, lstr, for_signature=None): + """The for_signature parameter, if supplied, will be the + canonical string we return from for_signature(). Else + we will simply return lstr.""" + self.lstr = lstr + if for_signature: + self.forsig = for_signature + else: + self.forsig = lstr + + def __str__(self): + return self.lstr + + def escape(self, escape_func): + return escape_func(self.lstr) + + def for_signature(self): + return self.forsig + + def is_literal(self): + return 1 + +def quote_spaces(arg): + """Generic function for putting double quotes around any string that + has white space in it.""" + if ' ' in arg or '\t' in arg: + return '"%s"' % arg + else: + return str(arg) + +class CmdStringHolder(collections.UserString): + """This is a special class used to hold strings generated by + scons_subst() and scons_subst_list(). It defines a special method + escape(). When passed a function with an escape algorithm for a + particular platform, it will return the contained string with the + proper escape sequences inserted. + """ + def __init__(self, cmd, literal=None): + super().__init__(cmd) + self.literal = literal + + def is_literal(self): + return self.literal + + def escape(self, escape_func, quote_func=quote_spaces): + """Escape the string with the supplied function. The + function is expected to take an arbitrary string, then + return it with all special characters escaped and ready + for passing to the command interpreter. + + After calling this function, the next call to str() will + return the escaped string. + """ + + if self.is_literal(): + return escape_func(self.data) + elif ' ' in self.data or '\t' in self.data: + return quote_func(self.data) + else: + return self.data + +def escape_list(mylist, escape_func): + """Escape a list of arguments by running the specified escape_func + on every object in the list that has an escape() method.""" + def escape(obj, escape_func=escape_func): + try: + e = obj.escape + except AttributeError: + return obj + else: + return e(escape_func) + return list(map(escape, mylist)) + +class NLWrapper: + """A wrapper class that delays turning a list of sources or targets + into a NodeList until it's needed. The specified function supplied + when the object is initialized is responsible for turning raw nodes + into proxies that implement the special attributes like .abspath, + .source, etc. This way, we avoid creating those proxies just + "in case" someone is going to use $TARGET or the like, and only + go through the trouble if we really have to. + + In practice, this might be a wash performance-wise, but it's a little + cleaner conceptually... + """ + + def __init__(self, list, func): + self.list = list + self.func = func + def _return_nodelist(self): + return self.nodelist + def _gen_nodelist(self): + mylist = self.list + if mylist is None: + mylist = [] + elif not is_Sequence(mylist): + mylist = [mylist] + # The map(self.func) call is what actually turns + # a list into appropriate proxies. + self.nodelist = SCons.Util.NodeList(list(map(self.func, mylist))) + self._create_nodelist = self._return_nodelist + return self.nodelist + _create_nodelist = _gen_nodelist + + +class Targets_or_Sources(collections.UserList): + """A class that implements $TARGETS or $SOURCES expansions by in turn + wrapping a NLWrapper. This class handles the different methods used + to access the list, calling the NLWrapper to create proxies on demand. + + Note that we subclass collections.UserList purely so that the + is_Sequence() function will identify an object of this class as + a list during variable expansion. We're not really using any + collections.UserList methods in practice. + """ + def __init__(self, nl): + self.nl = nl + def __getattr__(self, attr): + nl = self.nl._create_nodelist() + return getattr(nl, attr) + def __getitem__(self, i): + nl = self.nl._create_nodelist() + return nl[i] + def __str__(self): + nl = self.nl._create_nodelist() + return str(nl) + def __repr__(self): + nl = self.nl._create_nodelist() + return repr(nl) + +class Target_or_Source: + """A class that implements $TARGET or $SOURCE expansions by in turn + wrapping a NLWrapper. This class handles the different methods used + to access an individual proxy Node, calling the NLWrapper to create + a proxy on demand. + """ + def __init__(self, nl): + self.nl = nl + def __getattr__(self, attr): + nl = self.nl._create_nodelist() + try: + nl0 = nl[0] + except IndexError: + # If there is nothing in the list, then we have no attributes to + # pass through, so raise AttributeError for everything. + raise AttributeError("NodeList has no attribute: %s" % attr) + return getattr(nl0, attr) + def __str__(self): + nl = self.nl._create_nodelist() + if nl: + return str(nl[0]) + return '' + def __repr__(self): + nl = self.nl._create_nodelist() + if nl: + return repr(nl[0]) + return '' + +class NullNodeList(SCons.Util.NullSeq): + def __call__(self, *args, **kwargs): return '' + def __str__(self): return '' + +NullNodesList = NullNodeList() + +def subst_dict(target, source): + """Create a dictionary for substitution of special + construction variables. + + This translates the following special arguments: + + target - the target (object or array of objects), + used to generate the TARGET and TARGETS + construction variables + + source - the source (object or array of objects), + used to generate the SOURCES and SOURCE + construction variables + """ + dict = {} + + if target: + def get_tgt_subst_proxy(thing): + try: + subst_proxy = thing.get_subst_proxy() + except AttributeError: + subst_proxy = thing # probably a string, just return it + return subst_proxy + tnl = NLWrapper(target, get_tgt_subst_proxy) + dict['TARGETS'] = Targets_or_Sources(tnl) + dict['TARGET'] = Target_or_Source(tnl) + + # This is a total cheat, but hopefully this dictionary goes + # away soon anyway. We just let these expand to $TARGETS + # because that's "good enough" for the use of ToolSurrogates + # (see test/ToolSurrogate.py) to generate documentation. + dict['CHANGED_TARGETS'] = '$TARGETS' + dict['UNCHANGED_TARGETS'] = '$TARGETS' + else: + dict['TARGETS'] = NullNodesList + dict['TARGET'] = NullNodesList + + if source: + def get_src_subst_proxy(node): + try: + rfile = node.rfile + except AttributeError: + pass + else: + node = rfile() + try: + return node.get_subst_proxy() + except AttributeError: + return node # probably a String, just return it + snl = NLWrapper(source, get_src_subst_proxy) + dict['SOURCES'] = Targets_or_Sources(snl) + dict['SOURCE'] = Target_or_Source(snl) + + # This is a total cheat, but hopefully this dictionary goes + # away soon anyway. We just let these expand to $TARGETS + # because that's "good enough" for the use of ToolSurrogates + # (see test/ToolSurrogate.py) to generate documentation. + dict['CHANGED_SOURCES'] = '$SOURCES' + dict['UNCHANGED_SOURCES'] = '$SOURCES' + else: + dict['SOURCES'] = NullNodesList + dict['SOURCE'] = NullNodesList + + return dict + + +_callable_args_set = {'target', 'source', 'env', 'for_signature'} + +class StringSubber: + """A class to construct the results of a scons_subst() call. + + This binds a specific construction environment, mode, target and + source with two methods (substitute() and expand()) that handle + the expansion. + """ + + + def __init__(self, env, mode, conv, gvars): + self.env = env + self.mode = mode + self.conv = conv + self.gvars = gvars + + def expand(self, s, lvars): + """Expand a single "token" as necessary, returning an + appropriate string containing the expansion. + + This handles expanding different types of things (strings, + lists, callables) appropriately. It calls the wrapper + substitute() method to re-expand things as necessary, so that + the results of expansions of side-by-side strings still get + re-evaluated separately, not smushed together. + """ + if is_String(s): + try: + s0, s1 = s[:2] + except (IndexError, ValueError): + return s + if s0 != '$': + return s + if s1 == '$': + # In this case keep the double $'s which we'll later + # swap for a single dollar sign as we need to retain + # this information to properly avoid matching "$("" when + # the actual text was "$$("" (or "$)"" when "$$)"" ) + return '$$' + elif s1 in '()': + return s + else: + key = s[1:] + if key[0] == '{' or '.' in key: + if key[0] == '{': + key = key[1:-1] + + # Store for error messages if we fail to expand the + # value + old_s = s + s = None + if key in lvars: + s = lvars[key] + elif key in self.gvars: + s = self.gvars[key] + else: + try: + s = eval(key, self.gvars, lvars) + except KeyboardInterrupt: + raise + except Exception as e: + if e.__class__ in AllowableExceptions: + return '' + raise_exception(e, lvars['TARGETS'], old_s) + + if s is None and NameError not in AllowableExceptions: + raise_exception(NameError(key), lvars['TARGETS'], old_s) + elif s is None: + return '' + + # Before re-expanding the result, handle + # recursive expansion by copying the local + # variable dictionary and overwriting a null + # string for the value of the variable name + # we just expanded. + # + # This could potentially be optimized by only + # copying lvars when s contains more expansions, + # but lvars is usually supposed to be pretty + # small, and deeply nested variable expansions + # are probably more the exception than the norm, + # so it should be tolerable for now. + lv = lvars.copy() + var = key.split('.')[0] + lv[var] = '' + return self.substitute(s, lv) + elif is_Sequence(s): + def func(l, conv=self.conv, substitute=self.substitute, lvars=lvars): + return conv(substitute(l, lvars)) + return list(map(func, s)) + elif callable(s): + + # SCons has the unusual Null class where any __getattr__ call returns it's self, + # which does not work the signature module, and the Null class returns an empty + # string if called on, so we make an exception in this condition for Null class + # Also allow callables where the only non default valued args match the expected defaults + # this should also allow functools.partial's to work. + if isinstance(s, SCons.Util.Null) or {k for k, v in signature(s).parameters.items() if + k in _callable_args_set or v.default == Parameter.empty} == _callable_args_set: + + s = s(target=lvars['TARGETS'], + source=lvars['SOURCES'], + env=self.env, + for_signature=(self.mode == SUBST_SIG)) + else: + # This probably indicates that it's a callable + # object that doesn't match our calling arguments + # (like an Action). + if self.mode == SUBST_RAW: + return s + s = self.conv(s) + return self.substitute(s, lvars) + elif s is None: + return '' + else: + return s + + def substitute(self, args, lvars): + """Substitute expansions in an argument or list of arguments. + + This serves as a wrapper for splitting up a string into + separate tokens. + """ + if is_String(args) and not isinstance(args, CmdStringHolder): + args = str(args) # In case it's a UserString. + try: + def sub_match(match): + return self.conv(self.expand(match.group(1), lvars)) + result = _dollar_exps.sub(sub_match, args) + except TypeError: + # If the internal conversion routine doesn't return + # strings (it could be overridden to return Nodes, for + # example), then the 1.5.2 re module will throw this + # exception. Back off to a slower, general-purpose + # algorithm that works for all data types. + args = _separate_args.findall(args) + result = [] + for a in args: + result.append(self.conv(self.expand(a, lvars))) + if len(result) == 1: + result = result[0] + else: + result = ''.join(map(str, result)) + return result + else: + return self.expand(args, lvars) + + +class ListSubber(collections.UserList): + """A class to construct the results of a scons_subst_list() call. + + Like StringSubber, this class binds a specific construction + environment, mode, target and source with two methods + (substitute() and expand()) that handle the expansion. + + In addition, however, this class is used to track the state of + the result(s) we're gathering so we can do the appropriate thing + whenever we have to append another word to the result--start a new + line, start a new word, append to the current word, etc. We do + this by setting the "append" attribute to the right method so + that our wrapper methods only need ever call ListSubber.append(), + and the rest of the object takes care of doing the right thing + internally. + """ + def __init__(self, env, mode, conv, gvars): + super().__init__([]) + self.env = env + self.mode = mode + self.conv = conv + self.gvars = gvars + + if self.mode == SUBST_RAW: + self.add_strip = lambda x: self.append(x) + else: + self.add_strip = lambda x: None + self.in_strip = None + self.next_line() + + def expanded(self, s): + """Determines if the string s requires further expansion. + + Due to the implementation of ListSubber expand will call + itself 2 additional times for an already expanded string. This + method is used to determine if a string is already fully + expanded and if so exit the loop early to prevent these + recursive calls. + """ + if not is_String(s) or isinstance(s, CmdStringHolder): + return False + + s = str(s) # in case it's a UserString + return _separate_args.findall(s) is None + + def expand(self, s, lvars, within_list): + """Expand a single "token" as necessary, appending the + expansion to the current result. + + This handles expanding different types of things (strings, + lists, callables) appropriately. It calls the wrapper + substitute() method to re-expand things as necessary, so that + the results of expansions of side-by-side strings still get + re-evaluated separately, not smushed together. + """ + + if is_String(s): + try: + s0, s1 = s[:2] + except (IndexError, ValueError): + self.append(s) + return + if s0 != '$': + self.append(s) + return + if s1 == '$': + self.append('$') + elif s1 == '(': + self.open_strip('$(') + elif s1 == ')': + self.close_strip('$)') + else: + key = s[1:] + if key[0] == '{' or key.find('.') >= 0: + if key[0] == '{': + key = key[1:-1] + + # Store for error messages if we fail to expand the + # value + old_s = s + s = None + if key in lvars: + s = lvars[key] + elif key in self.gvars: + s = self.gvars[key] + else: + try: + s = eval(key, self.gvars, lvars) + except KeyboardInterrupt: + raise + except Exception as e: + if e.__class__ in AllowableExceptions: + return + raise_exception(e, lvars['TARGETS'], old_s) + + if s is None and NameError not in AllowableExceptions: + raise_exception(NameError(), lvars['TARGETS'], old_s) + elif s is None: + return + + # If the string is already full expanded there's no + # need to continue recursion. + if self.expanded(s): + self.append(s) + return + + # Before re-expanding the result, handle + # recursive expansion by copying the local + # variable dictionary and overwriting a null + # string for the value of the variable name + # we just expanded. + lv = lvars.copy() + var = key.split('.')[0] + lv[var] = '' + self.substitute(s, lv, 0) + self.this_word() + elif is_Sequence(s): + for a in s: + self.substitute(a, lvars, 1) + self.next_word() + elif callable(s): + # SCons has the unusual Null class where any __getattr__ call returns it's self, + # which does not work the signature module, and the Null class returns an empty + # string if called on, so we make an exception in this condition for Null class + # Also allow callables where the only non default valued args match the expected defaults + # this should also allow functools.partial's to work. + if isinstance(s, SCons.Util.Null) or {k for k, v in signature(s).parameters.items() if + k in _callable_args_set or v.default == Parameter.empty} == _callable_args_set: + + s = s(target=lvars['TARGETS'], + source=lvars['SOURCES'], + env=self.env, + for_signature=(self.mode != SUBST_CMD)) + else: + # This probably indicates that it's a callable + # object that doesn't match our calling arguments + # (like an Action). + if self.mode == SUBST_RAW: + self.append(s) + return + s = self.conv(s) + self.substitute(s, lvars, within_list) + elif s is None: + self.this_word() + else: + self.append(s) + + def substitute(self, args, lvars, within_list): + """Substitute expansions in an argument or list of arguments. + + This serves as a wrapper for splitting up a string into + separate tokens. + """ + + if is_String(args) and not isinstance(args, CmdStringHolder): + args = str(args) # In case it's a UserString. + args = _separate_args.findall(args) + for a in args: + if a[0] in ' \t\n\r\f\v': + if '\n' in a: + self.next_line() + elif within_list: + self.append(a) + else: + self.next_word() + else: + self.expand(a, lvars, within_list) + else: + self.expand(args, lvars, within_list) + + def next_line(self): + """Arrange for the next word to start a new line. This + is like starting a new word, except that we have to append + another line to the result.""" + collections.UserList.append(self, []) + self.next_word() + + def this_word(self): + """Arrange for the next word to append to the end of the + current last word in the result.""" + self.append = self.add_to_current_word + + def next_word(self): + """Arrange for the next word to start a new word.""" + self.append = self.add_new_word + + def add_to_current_word(self, x): + """Append the string x to the end of the current last word + in the result. If that is not possible, then just add + it as a new word. Make sure the entire concatenated string + inherits the object attributes of x (in particular, the + escape function) by wrapping it as CmdStringHolder.""" + + if not self.in_strip or self.mode != SUBST_SIG: + try: + current_word = self[-1][-1] + except IndexError: + self.add_new_word(x) + else: + # All right, this is a hack and it should probably + # be refactored out of existence in the future. + # The issue is that we want to smoosh words together + # and make one file name that gets escaped if + # we're expanding something like foo$EXTENSION, + # but we don't want to smoosh them together if + # it's something like >$TARGET, because then we'll + # treat the '>' like it's part of the file name. + # So for now, just hard-code looking for the special + # command-line redirection characters... + try: + last_char = str(current_word)[-1] + except IndexError: + last_char = '\0' + if last_char in '<>|': + self.add_new_word(x) + else: + y = current_word + x + + # We used to treat a word appended to a literal + # as a literal itself, but this caused problems + # with interpreting quotes around space-separated + # targets on command lines. Removing this makes + # none of the "substantive" end-to-end tests fail, + # so we'll take this out but leave it commented + # for now in case there's a problem not covered + # by the test cases and we need to resurrect this. + #literal1 = self.literal(self[-1][-1]) + #literal2 = self.literal(x) + y = self.conv(y) + if is_String(y): + #y = CmdStringHolder(y, literal1 or literal2) + y = CmdStringHolder(y, None) + self[-1][-1] = y + + def add_new_word(self, x): + if not self.in_strip or self.mode != SUBST_SIG: + literal = self.literal(x) + x = self.conv(x) + if is_String(x): + x = CmdStringHolder(x, literal) + self[-1].append(x) + self.append = self.add_to_current_word + + def literal(self, x): + try: + l = x.is_literal + except AttributeError: + return None + else: + return l() + + def open_strip(self, x): + """Handle the "open strip" $( token.""" + self.add_strip(x) + self.in_strip = 1 + + def close_strip(self, x): + """Handle the "close strip" $) token.""" + self.add_strip(x) + self.in_strip = None + + +# Constants for the "mode" parameter to scons_subst_list() and +# scons_subst(). SUBST_RAW gives the raw command line. SUBST_CMD +# gives a command line suitable for passing to a shell. SUBST_SIG +# gives a command line appropriate for calculating the signature +# of a command line...if this changes, we should rebuild. +SUBST_CMD = 0 +SUBST_RAW = 1 +SUBST_SIG = 2 + +_rm = re.compile(r'\$[()]') + +# Note the pattern below only matches $( or $) when there is no +# preceeding $. (Thus the (? 1: + stack_size = explicit_stack_size + if stack_size is None: + stack_size = default_stack_size + + try: + experimental_option = GetOption('experimental') + if 'tm_v2' in experimental_option: + self.job = NewParallel(taskmaster, num, stack_size) + else: + self.job = LegacyParallel(taskmaster, num, stack_size) + + self.num_jobs = num + except NameError: + pass + if self.job is None: + self.job = Serial(taskmaster) + self.num_jobs = 1 + + def run(self, postfunc=lambda: None): + """Run the jobs. + + postfunc() will be invoked after the jobs has run. It will be + invoked even if the jobs are interrupted by a keyboard + interrupt (well, in fact by a signal such as either SIGINT, + SIGTERM or SIGHUP). The execution of postfunc() is protected + against keyboard interrupts and is guaranteed to run to + completion.""" + self._setup_sig_handler() + try: + self.job.start() + finally: + postfunc() + self._reset_sig_handler() + + def were_interrupted(self): + """Returns whether the jobs were interrupted by a signal.""" + return self.job.interrupted() + + def _setup_sig_handler(self): + """Setup an interrupt handler so that SCons can shutdown cleanly in + various conditions: + + a) SIGINT: Keyboard interrupt + b) SIGTERM: kill or system shutdown + c) SIGHUP: Controlling shell exiting + + We handle all of these cases by stopping the taskmaster. It + turns out that it's very difficult to stop the build process + by throwing asynchronously an exception such as + KeyboardInterrupt. For example, the python Condition + variables (threading.Condition) and queues do not seem to be + asynchronous-exception-safe. It would require adding a whole + bunch of try/finally block and except KeyboardInterrupt all + over the place. + + Note also that we have to be careful to handle the case when + SCons forks before executing another process. In that case, we + want the child to exit immediately. + """ + def handler(signum, stack, self=self, parentpid=os.getpid()): + if os.getpid() == parentpid: + self.job.taskmaster.stop() + self.job.interrupted.set() + else: + os._exit(2) # pylint: disable=protected-access + + self.old_sigint = signal.signal(signal.SIGINT, handler) + self.old_sigterm = signal.signal(signal.SIGTERM, handler) + try: + self.old_sighup = signal.signal(signal.SIGHUP, handler) + except AttributeError: + pass + if (self.old_sigint is None) or (self.old_sigterm is None) or \ + (hasattr(self, "old_sighup") and self.old_sighup is None): + msg = "Overwritting previous signal handler which was not installed from Python. " + \ + "Will not be able to reinstate and so will return to default handler." + SCons.Warnings.warn(SCons.Warnings.SConsWarning, msg) + + def _reset_sig_handler(self): + """Restore the signal handlers to their previous state (before the + call to _setup_sig_handler().""" + sigint_to_use = self.old_sigint if self.old_sigint is not None else signal.SIG_DFL + sigterm_to_use = self.old_sigterm if self.old_sigterm is not None else signal.SIG_DFL + signal.signal(signal.SIGINT, sigint_to_use) + signal.signal(signal.SIGTERM, sigterm_to_use) + try: + sigterm_to_use = self.old_sighup if self.old_sighup is not None else signal.SIG_DFL + signal.signal(signal.SIGHUP, sigterm_to_use) + except AttributeError: + pass + + +class Serial: + """This class is used to execute tasks in series, and is more efficient + than Parallel, but is only appropriate for non-parallel builds. Only + one instance of this class should be in existence at a time. + + This class is not thread safe. + """ + + def __init__(self, taskmaster): + """Create a new serial job given a taskmaster. + + The taskmaster's next_task() method should return the next task + that needs to be executed, or None if there are no more tasks. The + taskmaster's executed() method will be called for each task when it + is successfully executed, or failed() will be called if it failed to + execute (e.g. execute() raised an exception).""" + + self.taskmaster = taskmaster + self.interrupted = InterruptState() + + def start(self): + """Start the job. This will begin pulling tasks from the taskmaster + and executing them, and return when there are no more tasks. If a task + fails to execute (i.e. execute() raises an exception), then the job will + stop.""" + + while True: + task = self.taskmaster.next_task() + + if task is None: + break + + try: + task.prepare() + if task.needs_execute(): + task.execute() + except Exception: + if self.interrupted(): + try: + raise SCons.Errors.BuildError( + task.targets[0], errstr=interrupt_msg) + except Exception: + task.exception_set() + else: + task.exception_set() + + # Let the failed() callback function arrange for the + # build to stop if that's appropriate. + task.failed() + else: + task.executed() + + task.postprocess() + self.taskmaster.cleanup() + + +# Trap import failure so that everything in the Job module but the +# Parallel class (and its dependent classes) will work if the interpreter +# doesn't support threads. +try: + import queue + import threading +except ImportError: + pass +else: + class Worker(threading.Thread): + """A worker thread waits on a task to be posted to its request queue, + dequeues the task, executes it, and posts a tuple including the task + and a boolean indicating whether the task executed successfully. """ + + def __init__(self, requestQueue, resultsQueue, interrupted): + super().__init__() + self.daemon = True + self.requestQueue = requestQueue + self.resultsQueue = resultsQueue + self.interrupted = interrupted + self.start() + + def run(self): + while True: + task = self.requestQueue.get() + + if task is None: + # The "None" value is used as a sentinel by + # ThreadPool.cleanup(). This indicates that there + # are no more tasks, so we should quit. + break + + try: + if self.interrupted(): + raise SCons.Errors.BuildError( + task.targets[0], errstr=interrupt_msg) + task.execute() + except Exception: + task.exception_set() + ok = False + else: + ok = True + + self.resultsQueue.put((task, ok)) + + class ThreadPool: + """This class is responsible for spawning and managing worker threads.""" + + def __init__(self, num, stack_size, interrupted): + """Create the request and reply queues, and 'num' worker threads. + + One must specify the stack size of the worker threads. The + stack size is specified in kilobytes. + """ + self.requestQueue = queue.Queue(0) + self.resultsQueue = queue.Queue(0) + + try: + prev_size = threading.stack_size(stack_size * 1024) + except AttributeError as e: + # Only print a warning if the stack size has been + # explicitly set. + if explicit_stack_size is not None: + msg = "Setting stack size is unsupported by this version of Python:\n " + \ + e.args[0] + SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, msg) + except ValueError as e: + msg = "Setting stack size failed:\n " + str(e) + SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, msg) + + # Create worker threads + self.workers = [] + for _ in range(num): + worker = Worker(self.requestQueue, self.resultsQueue, interrupted) + self.workers.append(worker) + + if 'prev_size' in locals(): + threading.stack_size(prev_size) + + def put(self, task): + """Put task into request queue.""" + self.requestQueue.put(task) + + def get(self): + """Remove and return a result tuple from the results queue.""" + return self.resultsQueue.get() + + def preparation_failed(self, task): + self.resultsQueue.put((task, False)) + + def cleanup(self): + """ + Shuts down the thread pool, giving each worker thread a + chance to shut down gracefully. + """ + # For each worker thread, put a sentinel "None" value + # on the requestQueue (indicating that there's no work + # to be done) so that each worker thread will get one and + # terminate gracefully. + for _ in self.workers: + self.requestQueue.put(None) + + # Wait for all of the workers to terminate. + # + # If we don't do this, later Python versions (2.4, 2.5) often + # seem to raise exceptions during shutdown. This happens + # in requestQueue.get(), as an assertion failure that + # requestQueue.not_full is notified while not acquired, + # seemingly because the main thread has shut down (or is + # in the process of doing so) while the workers are still + # trying to pull sentinels off the requestQueue. + # + # Normally these terminations should happen fairly quickly, + # but we'll stick a one-second timeout on here just in case + # someone gets hung. + for worker in self.workers: + worker.join(1.0) + self.workers = [] + + class LegacyParallel: + """This class is used to execute tasks in parallel, and is somewhat + less efficient than Serial, but is appropriate for parallel builds. + + This class is thread safe. + """ + + def __init__(self, taskmaster, num, stack_size): + """Create a new parallel job given a taskmaster. + + The taskmaster's next_task() method should return the next + task that needs to be executed, or None if there are no more + tasks. The taskmaster's executed() method will be called + for each task when it is successfully executed, or failed() + will be called if the task failed to execute (i.e. execute() + raised an exception). + + Note: calls to taskmaster are serialized, but calls to + execute() on distinct tasks are not serialized, because + that is the whole point of parallel jobs: they can execute + multiple tasks simultaneously. """ + + self.taskmaster = taskmaster + self.interrupted = InterruptState() + self.tp = ThreadPool(num, stack_size, self.interrupted) + + self.maxjobs = num + + def start(self): + """Start the job. This will begin pulling tasks from the + taskmaster and executing them, and return when there are no + more tasks. If a task fails to execute (i.e. execute() raises + an exception), then the job will stop.""" + + jobs = 0 + + while True: + # Start up as many available tasks as we're + # allowed to. + while jobs < self.maxjobs: + task = self.taskmaster.next_task() + if task is None: + break + + try: + # prepare task for execution + task.prepare() + except Exception: + task.exception_set() + task.failed() + task.postprocess() + else: + if task.needs_execute(): + # dispatch task + self.tp.put(task) + jobs += 1 + else: + task.executed() + task.postprocess() + + if not task and not jobs: + break + + # Let any/all completed tasks finish up before we go + # back and put the next batch of tasks on the queue. + while True: + task, ok = self.tp.get() + jobs -= 1 + + if ok: + task.executed() + else: + if self.interrupted(): + try: + raise SCons.Errors.BuildError( + task.targets[0], errstr=interrupt_msg) + except Exception: + task.exception_set() + + # Let the failed() callback function arrange + # for the build to stop if that's appropriate. + task.failed() + + task.postprocess() + + if self.tp.resultsQueue.empty(): + break + + self.tp.cleanup() + self.taskmaster.cleanup() + + # An experimental new parallel scheduler that uses a leaders/followers pattern. + class NewParallel: + + class State(Enum): + READY = 0 + SEARCHING = 1 + STALLED = 2 + COMPLETED = 3 + + class Worker(threading.Thread): + def __init__(self, owner): + super().__init__() + self.daemon = True + self.owner = owner + self.start() + + def run(self): + self.owner._work() + + def __init__(self, taskmaster, num, stack_size): + self.taskmaster = taskmaster + self.num_workers = num + self.stack_size = stack_size + self.interrupted = InterruptState() + self.workers = [] + + # The `tm_lock` is what ensures that we only have one + # thread interacting with the taskmaster at a time. It + # also protects access to our state that gets updated + # concurrently. The `can_search_cv` is associated with + # this mutex. + self.tm_lock = threading.Lock() + + # Guarded under `tm_lock`. + self.jobs = 0 + self.state = NewParallel.State.READY + + # The `can_search_cv` is used to manage a leader / + # follower pattern for access to the taskmaster, and to + # awaken from stalls. + self.can_search_cv = threading.Condition(self.tm_lock) + + # The queue of tasks that have completed execution. The + # next thread to obtain `tm_lock`` will retire them. + self.results_queue_lock = threading.Lock() + self.results_queue = [] + + if self.taskmaster.trace: + self.trace = self._setup_logging() + else: + self.trace = False + + def _setup_logging(self): + jl = logging.getLogger("Job") + jl.setLevel(level=logging.DEBUG) + jl.addHandler(self.taskmaster.trace.log_handler) + return jl + + def trace_message(self, message): + # This grabs the name of the function which calls trace_message() + method_name = sys._getframe(1).f_code.co_name + "():" + thread_id=threading.get_ident() + self.trace.debug('%s.%s [Thread:%s] %s' % (type(self).__name__, method_name, thread_id, message)) + # print('%-15s %s' % (method_name, message)) + + def start(self): + self._start_workers() + for worker in self.workers: + worker.join() + self.workers = [] + self.taskmaster.cleanup() + + def _start_workers(self): + prev_size = self._adjust_stack_size() + for _ in range(self.num_workers): + self.workers.append(NewParallel.Worker(self)) + self._restore_stack_size(prev_size) + + def _adjust_stack_size(self): + try: + prev_size = threading.stack_size(self.stack_size * 1024) + return prev_size + except AttributeError as e: + # Only print a warning if the stack size has been + # explicitly set. + if explicit_stack_size is not None: + msg = "Setting stack size is unsupported by this version of Python:\n " + \ + e.args[0] + SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, msg) + except ValueError as e: + msg = "Setting stack size failed:\n " + str(e) + SCons.Warnings.warn(SCons.Warnings.StackSizeWarning, msg) + + return None + + def _restore_stack_size(self, prev_size): + if prev_size is not None: + threading.stack_size(prev_size) + + def _work(self): + + task = None + + while True: + + # Obtain `tm_lock`, granting exclusive access to the taskmaster. + with self.can_search_cv: + + if self.trace: + self.trace_message("Gained exclusive access") + + # Capture whether we got here with `task` set, + # then drop our reference to the task as we are no + # longer interested in the actual object. + completed_task = (task is not None) + task = None + + # We will only have `completed_task` set here if + # we have looped back after executing a task. If + # we have completed a task and find that we are + # stalled, we should speculatively indicate that + # we are no longer stalled by transitioning to the + # 'ready' state which will bypass the condition + # wait so that we immediately process the results + # queue and hopefully light up new + # work. Otherwise, stay stalled, and we will wait + # in the condvar. Some other thread will come back + # here with a completed task. + if self.state == NewParallel.State.STALLED and completed_task: + if self.trace: + self.trace_message("Detected stall with completed task, bypassing wait") + self.state = NewParallel.State.READY + + # Wait until we are neither searching nor stalled. + while self.state == NewParallel.State.SEARCHING or self.state == NewParallel.State.STALLED: + if self.trace: + self.trace_message("Search already in progress, waiting") + self.can_search_cv.wait() + + # If someone set the completed flag, bail. + if self.state == NewParallel.State.COMPLETED: + if self.trace: + self.trace_message("Completion detected, breaking from main loop") + break + + # Set the searching flag to indicate that a thread + # is currently in the critical section for + # taskmaster work. + # + if self.trace: + self.trace_message("Starting search") + self.state = NewParallel.State.SEARCHING + + # Bulk acquire the tasks in the results queue + # under the result queue lock, then process them + # all outside that lock. We need to process the + # tasks in the results queue before looking for + # new work because we might be unable to find new + # work if we don't. + results_queue = [] + with self.results_queue_lock: + results_queue, self.results_queue = self.results_queue, results_queue + + if self.trace: + self.trace_message("Found {len(results_queue)} completed tasks to process") + for (rtask, rresult) in results_queue: + if rresult: + rtask.executed() + else: + if self.interrupted(): + try: + raise SCons.Errors.BuildError( + rtask.targets[0], errstr=interrupt_msg) + except Exception: + rtask.exception_set() + + # Let the failed() callback function arrange + # for the build to stop if that's appropriate. + rtask.failed() + + rtask.postprocess() + self.jobs -= 1 + + # We are done with any task objects that were in + # the results queue. + results_queue.clear() + + # Now, turn the crank on the taskmaster until we + # either run out of tasks, or find a task that + # needs execution. If we run out of tasks, go idle + # until results arrive if jobs are pending, or + # mark the walk as complete if not. + while self.state == NewParallel.State.SEARCHING: + if self.trace: + self.trace_message("Searching for new tasks") + task = self.taskmaster.next_task() + + if task: + # We found a task. Walk it through the + # task lifecycle. If it does not need + # execution, just complete the task and + # look for the next one. Otherwise, + # indicate that we are no longer searching + # so we can drop out of this loop, execute + # the task outside the lock, and allow + # another thread in to search. + try: + task.prepare() + except Exception: + task.exception_set() + task.failed() + task.postprocess() + else: + if not task.needs_execute(): + if self.trace: + self.trace_message("Found internal task") + task.executed() + task.postprocess() + else: + self.jobs += 1 + if self.trace: + self.trace_message("Found task requiring execution") + self.state = NewParallel.State.READY + self.can_search_cv.notify() + + else: + # We failed to find a task, so this thread + # cannot continue turning the taskmaster + # crank. We must exit the loop. + if self.jobs: + # No task was found, but there are + # outstanding jobs executing that + # might unblock new tasks when they + # complete. Transition to the stalled + # state. We do not need a notify, + # because we know there are threads + # outstanding that will re-enter the + # loop. + # + if self.trace: + self.trace_message("Found no task requiring execution, but have jobs: marking stalled") + self.state = NewParallel.State.STALLED + else: + # We didn't find a task and there are + # no jobs outstanding, so there is + # nothing that will ever return + # results which might unblock new + # tasks. We can conclude that the walk + # is complete. Update our state to + # note completion and awaken anyone + # sleeping on the condvar. + # + if self.trace: + self.trace_message("Found no task requiring execution, and have no jobs: marking complete") + self.state = NewParallel.State.COMPLETED + self.can_search_cv.notify_all() + + # We no longer hold `tm_lock` here. If we have a task, + # we can now execute it. If there are threads waiting + # to search, one of them can now begin turning the + # taskmaster crank in NewParallel. + if task: + if self.trace: + self.trace_message("Executing task") + ok = True + try: + if self.interrupted(): + raise SCons.Errors.BuildError( + task.targets[0], errstr=interrupt_msg) + task.execute() + except Exception: + ok = False + task.exception_set() + + # Grab the results queue lock and enqueue the + # executed task and state. The next thread into + # the searching loop will complete the + # postprocessing work under the taskmaster lock. + # + if self.trace: + self.trace_message("Enqueueing executed task results") + with self.results_queue_lock: + self.results_queue.append((task, ok)) + + # Tricky state "fallthrough" here. We are going back + # to the top of the loop, which behaves differently + # depending on whether `task` is set. Do not perturb + # the value of the `task` variable if you add new code + # after this comment. + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Taskmaster/__init__.py b/scons/scons-local-4.5.1/SCons/Taskmaster/__init__.py new file mode 100644 index 000000000..7ab864eee --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Taskmaster/__init__.py @@ -0,0 +1,1134 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Generic Taskmaster module for the SCons build engine. + +This module contains the primary interface(s) between a wrapping user +interface and the SCons build engine. There are two key classes here: + +Taskmaster + This is the main engine for walking the dependency graph and + calling things to decide what does or doesn't need to be built. + +Task + This is the base class for allowing a wrapping interface to + decide what does or doesn't actually need to be done. The + intention is for a wrapping interface to subclass this as + appropriate for different types of behavior it may need. + + The canonical example is the SCons native Python interface, + which has Task subclasses that handle its specific behavior, + like printing "'foo' is up to date" when a top-level target + doesn't need to be built, and handling the -c option by removing + targets as its "build" action. There is also a separate subclass + for suppressing this output when the -q option is used. + + The Taskmaster instantiates a Task object for each (set of) + target(s) that it decides need to be evaluated and/or built. +""" +import io +import sys +from abc import ABC, abstractmethod +from itertools import chain +import logging + +import SCons.Errors +import SCons.Node +import SCons.Warnings +from SCons.Util import DispatchingFormatter + +StateString = SCons.Node.StateString +NODE_NO_STATE = SCons.Node.no_state +NODE_PENDING = SCons.Node.pending +NODE_EXECUTING = SCons.Node.executing +NODE_UP_TO_DATE = SCons.Node.up_to_date +NODE_EXECUTED = SCons.Node.executed +NODE_FAILED = SCons.Node.failed +print_prepare = False # set by option --debug=prepare + +# A subsystem for recording stats about how different Nodes are handled by +# the main Taskmaster loop. There's no external control here (no need for +# a --debug= option); enable it by changing the value of CollectStats. + +CollectStats = None + + +class Stats: + """ + A simple class for holding statistics about the disposition of a + Node by the Taskmaster. If we're collecting statistics, each Node + processed by the Taskmaster gets one of these attached, in which case + the Taskmaster records its decision each time it processes the Node. + (Ideally, that's just once per Node.) + """ + def __init__(self): + """ + Instantiates a Taskmaster.Stats object, initializing all + appropriate counters to zero. + """ + self.considered = 0 + self.already_handled = 0 + self.problem = 0 + self.child_failed = 0 + self.not_built = 0 + self.side_effects = 0 + self.build = 0 + + +StatsNodes = [] + +fmt = "%(considered)3d "\ + "%(already_handled)3d " \ + "%(problem)3d " \ + "%(child_failed)3d " \ + "%(not_built)3d " \ + "%(side_effects)3d " \ + "%(build)3d " + + +def dump_stats(): + for n in sorted(StatsNodes, key=lambda a: str(a)): + print((fmt % n.attributes.stats.__dict__) + str(n)) + + +class Task(ABC): + """ SCons build engine abstract task class. + + This controls the interaction of the actual building of node + and the rest of the engine. + + This is expected to handle all of the normally-customizable + aspects of controlling a build, so any given application + *should* be able to do what it wants by sub-classing this + class and overriding methods as appropriate. If an application + needs to customize something by sub-classing Taskmaster (or + some other build engine class), we should first try to migrate + that functionality into this class. + + Note that it's generally a good idea for sub-classes to call + these methods explicitly to update state, etc., rather than + roll their own interaction with Taskmaster from scratch. + """ + + LOGGER = None + + def __init__(self, tm, targets, top, node): + self.tm = tm + self.targets = targets + self.top = top + self.node = node + self.exc_clear() + + def trace_message(self, node, description='node'): + # This grabs the name of the function which calls trace_message() + method_name=sys._getframe(1).f_code.co_name+"():" + Task.LOGGER.debug('%-15s %s %s' % (method_name, description, self.tm.tm_trace_node(node))) + + def display(self, message): + """ + Hook to allow the calling interface to display a message. + + This hook gets called as part of preparing a task for execution + (that is, a Node to be built). As part of figuring out what Node + should be built next, the actual target list may be altered, + along with a message describing the alteration. The calling + interface can subclass Task and provide a concrete implementation + of this method to see those messages. + """ + pass + + def prepare(self): + """ + Called just before the task is executed. + + This is mainly intended to give the target Nodes a chance to + unlink underlying files and make all necessary directories before + the Action is actually called to build the targets. + """ + global print_prepare + T = self.tm.trace + if T: + self.trace_message(self.node) + + # Now that it's the appropriate time, give the TaskMaster a + # chance to raise any exceptions it encountered while preparing + # this task. + self.exception_raise() + + if self.tm.message: + self.display(self.tm.message) + self.tm.message = None + + # Let the targets take care of any necessary preparations. + # This includes verifying that all of the necessary sources + # and dependencies exist, removing the target file(s), etc. + # + # As of April 2008, the get_executor().prepare() method makes + # sure that all of the aggregate sources necessary to build this + # Task's target(s) exist in one up-front check. The individual + # target t.prepare() methods check that each target's explicit + # or implicit dependencies exists, and also initialize the + # .sconsign info. + executor = self.targets[0].get_executor() + if executor is None: + return + executor.prepare() + for t in executor.get_action_targets(): + if print_prepare: + print("Preparing target %s..."%t) + for s in t.side_effects: + print("...with side-effect %s..."%s) + t.prepare() + for s in t.side_effects: + if print_prepare: + print("...Preparing side-effect %s..."%s) + s.prepare() + + def get_target(self): + """Fetch the target being built or updated by this task. + """ + return self.node + + @abstractmethod + def needs_execute(self): + return + + def execute(self): + """ + Called to execute the task. + + This method is called from multiple threads in a parallel build, + so only do thread safe stuff here. Do thread unsafe stuff in + prepare(), executed() or failed(). + """ + T = self.tm.trace + if T: + self.trace_message(self.node) + + try: + cached_targets = [] + for t in self.targets: + if not t.retrieve_from_cache(): + break + cached_targets.append(t) + if len(cached_targets) < len(self.targets): + # Remove targets before building. It's possible that we + # partially retrieved targets from the cache, leaving + # them in read-only mode. That might cause the command + # to fail. + # + for t in cached_targets: + try: + t.fs.unlink(t.get_internal_path()) + except (IOError, OSError) as e: + SCons.Warnings.warn(SCons.Warnings.CacheCleanupErrorWarning, + "Failed copying all target files from cache, Error while attempting to remove file %s retrieved from cache: %s" % (t.get_internal_path(), e)) + self.targets[0].build() + else: + for t in cached_targets: + t.cached = 1 + except SystemExit: + exc_value = sys.exc_info()[1] + raise SCons.Errors.ExplicitExit(self.targets[0], exc_value.code) + except SCons.Errors.UserError: + raise + except SCons.Errors.BuildError: + raise + except Exception as e: + buildError = SCons.Errors.convert_to_BuildError(e) + buildError.node = self.targets[0] + buildError.exc_info = sys.exc_info() + raise buildError + + def executed_without_callbacks(self): + """ + Called when the task has been successfully executed + and the Taskmaster instance doesn't want to call + the Node's callback methods. + """ + T = self.tm.trace + if T: + self.trace_message(self.node) + + for t in self.targets: + if t.get_state() == NODE_EXECUTING: + for side_effect in t.side_effects: + side_effect.set_state(NODE_NO_STATE) + t.set_state(NODE_EXECUTED) + + def executed_with_callbacks(self): + """ + Called when the task has been successfully executed and + the Taskmaster instance wants to call the Node's callback + methods. + + This may have been a do-nothing operation (to preserve build + order), so we must check the node's state before deciding whether + it was "built", in which case we call the appropriate Node method. + In any event, we always call "visited()", which will handle any + post-visit actions that must take place regardless of whether + or not the target was an actual built target or a source Node. + """ + global print_prepare + T = self.tm.trace + if T: + self.trace_message(self.node) + + for t in self.targets: + if t.get_state() == NODE_EXECUTING: + for side_effect in t.side_effects: + side_effect.set_state(NODE_NO_STATE) + t.set_state(NODE_EXECUTED) + if not t.cached: + t.push_to_cache() + t.built() + t.visited() + if (not print_prepare and + (not hasattr(self, 'options') or not self.options.debug_includes)): + t.release_target_info() + else: + t.visited() + + executed = executed_with_callbacks + + def failed(self): + """ + Default action when a task fails: stop the build. + + Note: Although this function is normally invoked on nodes in + the executing state, it might also be invoked on up-to-date + nodes when using Configure(). + """ + self.fail_stop() + + def fail_stop(self): + """ + Explicit stop-the-build failure. + + This sets failure status on the target nodes and all of + their dependent parent nodes. + + Note: Although this function is normally invoked on nodes in + the executing state, it might also be invoked on up-to-date + nodes when using Configure(). + """ + T = self.tm.trace + if T: + self.trace_message(self.node) + + # Invoke will_not_build() to clean-up the pending children + # list. + self.tm.will_not_build(self.targets, lambda n: n.set_state(NODE_FAILED)) + + # Tell the taskmaster to not start any new tasks + self.tm.stop() + + # We're stopping because of a build failure, but give the + # calling Task class a chance to postprocess() the top-level + # target under which the build failure occurred. + self.targets = [self.tm.current_top] + self.top = 1 + + def fail_continue(self): + """ + Explicit continue-the-build failure. + + This sets failure status on the target nodes and all of + their dependent parent nodes. + + Note: Although this function is normally invoked on nodes in + the executing state, it might also be invoked on up-to-date + nodes when using Configure(). + """ + T = self.tm.trace + if T: + self.trace_message(self.node) + + self.tm.will_not_build(self.targets, lambda n: n.set_state(NODE_FAILED)) + + def make_ready_all(self): + """ + Marks all targets in a task ready for execution. + + This is used when the interface needs every target Node to be + visited--the canonical example being the "scons -c" option. + """ + T = self.tm.trace + if T: + self.trace_message(self.node) + + self.out_of_date = self.targets[:] + for t in self.targets: + t.disambiguate().set_state(NODE_EXECUTING) + for s in t.side_effects: + # add disambiguate here to mirror the call on targets above + s.disambiguate().set_state(NODE_EXECUTING) + + def make_ready_current(self): + """ + Marks all targets in a task ready for execution if any target + is not current. + + This is the default behavior for building only what's necessary. + """ + global print_prepare + T = self.tm.trace + if T: + T.log_handler.stream.write('\n') # Prefix message with new line. This is a hack + self.trace_message(self.node) + + self.out_of_date = [] + needs_executing = False + for t in self.targets: + try: + t.disambiguate().make_ready() + is_up_to_date = not t.has_builder() or \ + (not t.always_build and t.is_up_to_date()) + except EnvironmentError as e: + raise SCons.Errors.BuildError(node=t, errstr=e.strerror, filename=e.filename) + + if not is_up_to_date: + self.out_of_date.append(t) + needs_executing = True + + if needs_executing: + for t in self.targets: + t.set_state(NODE_EXECUTING) + for s in t.side_effects: + # add disambiguate here to mirror the call on targets in first loop above + s.disambiguate().set_state(NODE_EXECUTING) + else: + for t in self.targets: + # We must invoke visited() to ensure that the node + # information has been computed before allowing the + # parent nodes to execute. (That could occur in a + # parallel build...) + t.visited() + t.set_state(NODE_UP_TO_DATE) + if (not print_prepare and + (not hasattr(self, 'options') or not self.options.debug_includes)): + t.release_target_info() + + make_ready = make_ready_current + + def postprocess(self): + """ + Post-processes a task after it's been executed. + + This examines all the targets just built (or not, we don't care + if the build was successful, or even if there was no build + because everything was up-to-date) to see if they have any + waiting parent Nodes, or Nodes waiting on a common side effect, + that can be put back on the candidates list. + """ + T = self.tm.trace + if T: + self.trace_message(self.node) + + # We may have built multiple targets, some of which may have + # common parents waiting for this build. Count up how many + # targets each parent was waiting for so we can subtract the + # values later, and so we *don't* put waiting side-effect Nodes + # back on the candidates list if the Node is also a waiting + # parent. + + targets = set(self.targets) + + pending_children = self.tm.pending_children + parents = {} + for t in targets: + # A node can only be in the pending_children set if it has + # some waiting_parents. + if t.waiting_parents: + if T: + self.trace_message(t, 'removing') + pending_children.discard(t) + for p in t.waiting_parents: + parents[p] = parents.get(p, 0) + 1 + t.waiting_parents = set() + + for t in targets: + if t.side_effects is not None: + for s in t.side_effects: + if s.get_state() == NODE_EXECUTING: + s.set_state(NODE_NO_STATE) + + # The side-effects may have been transferred to + # NODE_NO_STATE by executed_with{,out}_callbacks, but was + # not taken out of the waiting parents/pending children + # data structures. Check for that now. + if s.get_state() == NODE_NO_STATE and s.waiting_parents: + pending_children.discard(s) + for p in s.waiting_parents: + parents[p] = parents.get(p, 0) + 1 + s.waiting_parents = set() + for p in s.waiting_s_e: + if p.ref_count == 0: + self.tm.candidates.append(p) + + for p, subtract in parents.items(): + p.ref_count = p.ref_count - subtract + if T: + self.trace_message(p, 'adjusted parent ref count') + if p.ref_count == 0: + self.tm.candidates.append(p) + + for t in targets: + t.postprocess() + + # Exception handling subsystem. + # + # Exceptions that occur while walking the DAG or examining Nodes + # must be raised, but must be raised at an appropriate time and in + # a controlled manner so we can, if necessary, recover gracefully, + # possibly write out signature information for Nodes we've updated, + # etc. This is done by having the Taskmaster tell us about the + # exception, and letting + + def exc_info(self): + """ + Returns info about a recorded exception. + """ + return self.exception + + def exc_clear(self): + """ + Clears any recorded exception. + + This also changes the "exception_raise" attribute to point + to the appropriate do-nothing method. + """ + self.exception = (None, None, None) + self.exception_raise = self._no_exception_to_raise + + def exception_set(self, exception=None): + """ + Records an exception to be raised at the appropriate time. + + This also changes the "exception_raise" attribute to point + to the method that will, in fact + """ + if not exception: + exception = sys.exc_info() + self.exception = exception + self.exception_raise = self._exception_raise + + def _no_exception_to_raise(self): + pass + + def _exception_raise(self): + """ + Raises a pending exception that was recorded while getting a + Task ready for execution. + """ + exc = self.exc_info()[:] + try: + exc_type, exc_value, exc_traceback = exc + except ValueError: + exc_type, exc_value = exc # pylint: disable=unbalanced-tuple-unpacking + exc_traceback = None + + # raise exc_type(exc_value).with_traceback(exc_traceback) + if isinstance(exc_value, Exception): #hasattr(exc_value, 'with_traceback'): + # If exc_value is an exception, then just reraise + raise exc_value.with_traceback(exc_traceback) + else: + # else we'll create an exception using the value and raise that + raise exc_type(exc_value).with_traceback(exc_traceback) + + + # raise e.__class__, e.__class__(e), sys.exc_info()[2] + # exec("raise exc_type(exc_value).with_traceback(exc_traceback)") + + + +class AlwaysTask(Task): + def needs_execute(self): + """ + Always returns True (indicating this Task should always + be executed). + + Subclasses that need this behavior (as opposed to the default + of only executing Nodes that are out of date w.r.t. their + dependencies) can use this as follows: + + class MyTaskSubclass(SCons.Taskmaster.Task): + needs_execute = SCons.Taskmaster.AlwaysTask.needs_execute + """ + return True + +class OutOfDateTask(Task): + def needs_execute(self): + """ + Returns True (indicating this Task should be executed) if this + Task's target state indicates it needs executing, which has + already been determined by an earlier up-to-date check. + """ + return self.targets[0].get_state() == SCons.Node.executing + + +def find_cycle(stack, visited): + if stack[-1] in visited: + return None + visited.add(stack[-1]) + for n in stack[-1].waiting_parents: + stack.append(n) + if stack[0] == stack[-1]: + return stack + if find_cycle(stack, visited): + return stack + stack.pop() + return None + + +class Taskmaster: + """ + The Taskmaster for walking the dependency DAG. + """ + + def __init__(self, targets=[], tasker=None, order=None, trace=None): + self.original_top = targets + self.top_targets_left = targets[:] + self.top_targets_left.reverse() + self.candidates = [] + if tasker is None: + tasker = OutOfDateTask + self.tasker = tasker + if not order: + order = lambda l: l + self.order = order + self.message = None + self.next_candidate = self.find_next_candidate + self.pending_children = set() + self.trace = False + self.configure_trace(trace) + + def configure_trace(self, trace=None): + """ + This handles the command line option --taskmastertrace= + It can be: + - : output to stdout + : output to a file + False/None : Do not trace + """ + if not trace: + self.trace = False + return + + # TODO: May want to switch format to something like this. + # log_format = ( + # '%(relativeCreated)05dms' + # ':%(relfilename)s' + # ':%(funcName)s' + # '#%(lineno)s' + # ': %(message)s' + # ) + tm_formatter = logging.Formatter('Taskmaster: %(message)s') + if isinstance(trace, io.StringIO): + log_handler = logging.StreamHandler(trace) + elif trace == '-': + log_handler = logging.StreamHandler(sys.stdout) + elif trace: + log_handler = logging.FileHandler(filename=trace) + + logger = logging.getLogger('Taskmaster') + logger.setLevel(level=logging.DEBUG) + logger.addHandler(log_handler) + self.trace = logger + + logger.log_handler = log_handler + + # Now setup Task's logger. + tl = logging.getLogger("Task") + tl.setLevel(level=logging.DEBUG) + tl.addHandler(log_handler) + task_formatter = logging.Formatter('%(name)s.%(message)s') + Task.LOGGER = tl + + self.trace.log_handler = log_handler + + log_handler.setFormatter(DispatchingFormatter( + formatters={ + 'Taskmaster': tm_formatter, + 'Task': task_formatter, + 'Job': task_formatter, + }, + default_formatter=logging.Formatter('%(message)s') + )) + + def find_next_candidate(self): + """ + Returns the next candidate Node for (potential) evaluation. + + The candidate list (really a stack) initially consists of all of + the top-level (command line) targets provided when the Taskmaster + was initialized. While we walk the DAG, visiting Nodes, all the + children that haven't finished processing get pushed on to the + candidate list. Each child can then be popped and examined in + turn for whether *their* children are all up-to-date, in which + case a Task will be created for their actual evaluation and + potential building. + + Here is where we also allow candidate Nodes to alter the list of + Nodes that should be examined. This is used, for example, when + invoking SCons in a source directory. A source directory Node can + return its corresponding build directory Node, essentially saying, + "Hey, you really need to build this thing over here instead." + """ + try: + return self.candidates.pop() + except IndexError: + pass + try: + node = self.top_targets_left.pop() + except IndexError: + return None + self.current_top = node + alt, message = node.alter_targets() + if alt: + self.message = message + self.candidates.append(node) + self.candidates.extend(self.order(alt)) + node = self.candidates.pop() + return node + + def no_next_candidate(self): + """ + Stops Taskmaster processing by not returning a next candidate. + + Note that we have to clean-up the Taskmaster candidate list + because the cycle detection depends on the fact all nodes have + been processed somehow. + """ + while self.candidates: + candidates = self.candidates + self.candidates = [] + self.will_not_build(candidates) + return None + + def _validate_pending_children(self): + """ + Validate the content of the pending_children set. Assert if an + internal error is found. + + This function is used strictly for debugging the taskmaster by + checking that no invariants are violated. It is not used in + normal operation. + + The pending_children set is used to detect cycles in the + dependency graph. We call a "pending child" a child that is + found in the "pending" state when checking the dependencies of + its parent node. + + A pending child can occur when the Taskmaster completes a loop + through a cycle. For example, let's imagine a graph made of + three nodes (A, B and C) making a cycle. The evaluation starts + at node A. The Taskmaster first considers whether node A's + child B is up-to-date. Then, recursively, node B needs to + check whether node C is up-to-date. This leaves us with a + dependency graph looking like:: + + Next candidate \ + \ + Node A (Pending) --> Node B(Pending) --> Node C (NoState) + ^ | + | | + +-------------------------------------+ + + Now, when the Taskmaster examines the Node C's child Node A, + it finds that Node A is in the "pending" state. Therefore, + Node A is a pending child of node C. + + Pending children indicate that the Taskmaster has potentially + loop back through a cycle. We say potentially because it could + also occur when a DAG is evaluated in parallel. For example, + consider the following graph:: + + Node A (Pending) --> Node B(Pending) --> Node C (Pending) --> ... + | ^ + | | + +----------> Node D (NoState) --------+ + / + Next candidate / + + The Taskmaster first evaluates the nodes A, B, and C and + starts building some children of node C. Assuming, that the + maximum parallel level has not been reached, the Taskmaster + will examine Node D. It will find that Node C is a pending + child of Node D. + + In summary, evaluating a graph with a cycle will always + involve a pending child at one point. A pending child might + indicate either a cycle or a diamond-shaped DAG. Only a + fraction of the nodes ends-up being a "pending child" of + another node. This keeps the pending_children set small in + practice. + + We can differentiate between the two cases if we wait until + the end of the build. At this point, all the pending children + nodes due to a diamond-shaped DAG will have been properly + built (or will have failed to build). But, the pending + children involved in a cycle will still be in the pending + state. + + The taskmaster removes nodes from the pending_children set as + soon as a pending_children node moves out of the pending + state. This also helps to keep the pending_children set small. + """ + + for n in self.pending_children: + assert n.state in (NODE_PENDING, NODE_EXECUTING), \ + (str(n), StateString[n.state]) + assert len(n.waiting_parents) != 0, (str(n), len(n.waiting_parents)) + for p in n.waiting_parents: + assert p.ref_count > 0, (str(n), str(p), p.ref_count) + + def tm_trace_node(self, node): + return('<%-10s %-3s %s>' % (StateString[node.get_state()], + node.ref_count, + repr(str(node)))) + + def _find_next_ready_node(self): + """ + Finds the next node that is ready to be built. + + This is *the* main guts of the DAG walk. We loop through the + list of candidates, looking for something that has no un-built + children (i.e., that is a leaf Node or has dependencies that are + all leaf Nodes or up-to-date). Candidate Nodes are re-scanned + (both the target Node itself and its sources, which are always + scanned in the context of a given target) to discover implicit + dependencies. A Node that must wait for some children to be + built will be put back on the candidates list after the children + have finished building. A Node that has been put back on the + candidates list in this way may have itself (or its sources) + re-scanned, in order to handle generated header files (e.g.) and + the implicit dependencies therein. + + Note that this method does not do any signature calculation or + up-to-date check itself. All of that is handled by the Task + class. This is purely concerned with the dependency graph walk. + """ + + self.ready_exc = None + + T = self.trace + if T: + T.log_handler.stream.write('\n') # Prefix message with new line. This is a hack + self.trace.debug('Looking for a node to evaluate') + + while True: + node = self.next_candidate() + if node is None: + if T: + self.trace.debug('No candidate anymore.') + return None + + node = node.disambiguate() + state = node.get_state() + + # For debugging only: + # + # try: + # self._validate_pending_children() + # except: + # self.ready_exc = sys.exc_info() + # return node + + if CollectStats: + if not hasattr(node.attributes, 'stats'): + node.attributes.stats = Stats() + StatsNodes.append(node) + S = node.attributes.stats + S.considered = S.considered + 1 + else: + S = None + + if T: + self.trace.debug(' Considering node %s and its children:' % self.tm_trace_node(node)) + + if state == NODE_NO_STATE: + # Mark this node as being on the execution stack: + node.set_state(NODE_PENDING) + elif state > NODE_PENDING: + # Skip this node if it has already been evaluated: + if S: S.already_handled = S.already_handled + 1 + if T: + self.trace.debug(' already handled (executed)') + continue + + executor = node.get_executor() + + try: + children = executor.get_all_children() + except SystemExit: + exc_value = sys.exc_info()[1] + e = SCons.Errors.ExplicitExit(node, exc_value.code) + self.ready_exc = (SCons.Errors.ExplicitExit, e) + if T: + self.trace.debug(' SystemExit') + return node + except Exception as e: + # We had a problem just trying to figure out the + # children (like a child couldn't be linked in to a + # VariantDir, or a Scanner threw something). Arrange to + # raise the exception when the Task is "executed." + self.ready_exc = sys.exc_info() + if S: S.problem = S.problem + 1 + if T: + self.trace.debug(' exception %s while scanning children.' % e) + return node + + children_not_visited = [] + children_pending = set() + children_not_ready = [] + children_failed = False + + for child in chain(executor.get_all_prerequisites(), children): + childstate = child.get_state() + + if T: + self.trace.debug(' ' + self.tm_trace_node(child)) + + if childstate == NODE_NO_STATE: + children_not_visited.append(child) + elif childstate == NODE_PENDING: + children_pending.add(child) + elif childstate == NODE_FAILED: + children_failed = True + + if childstate <= NODE_EXECUTING: + children_not_ready.append(child) + + # These nodes have not even been visited yet. Add + # them to the list so that on some next pass we can + # take a stab at evaluating them (or their children). + if children_not_visited: + if len(children_not_visited) > 1: + children_not_visited.reverse() + self.candidates.extend(self.order(children_not_visited)) + + # if T and children_not_visited: + # self.trace.debug(' adding to candidates: %s' % map(str, children_not_visited)) + # self.trace.debug(' candidates now: %s\n' % map(str, self.candidates)) + + # Skip this node if any of its children have failed. + # + # This catches the case where we're descending a top-level + # target and one of our children failed while trying to be + # built by a *previous* descent of an earlier top-level + # target. + # + # It can also occur if a node is reused in multiple + # targets. One first descends though the one of the + # target, the next time occurs through the other target. + # + # Note that we can only have failed_children if the + # --keep-going flag was used, because without it the build + # will stop before diving in the other branch. + # + # Note that even if one of the children fails, we still + # added the other children to the list of candidate nodes + # to keep on building (--keep-going). + if children_failed: + for n in executor.get_action_targets(): + n.set_state(NODE_FAILED) + + if S: S.child_failed = S.child_failed + 1 + if T: + self.trace.debug('****** %s' % self.tm_trace_node(node)) + continue + + if children_not_ready: + for child in children_not_ready: + # We're waiting on one or more derived targets + # that have not yet finished building. + if S: S.not_built = S.not_built + 1 + + # Add this node to the waiting parents lists of + # anything we're waiting on, with a reference + # count so we can be put back on the list for + # re-evaluation when they've all finished. + node.ref_count = node.ref_count + child.add_to_waiting_parents(node) + if T: + self.trace.debug(' adjusted ref count: %s, child %s' % + (self.tm_trace_node(node), repr(str(child)))) + + if T: + for pc in children_pending: + self.trace.debug(' adding %s to the pending children set' % + self.tm_trace_node(pc)) + self.pending_children = self.pending_children | children_pending + + continue + + # Skip this node if it has side-effects that are + # currently being built: + wait_side_effects = False + for se in executor.get_action_side_effects(): + if se.get_state() == NODE_EXECUTING: + se.add_to_waiting_s_e(node) + wait_side_effects = True + + if wait_side_effects: + if S: S.side_effects = S.side_effects + 1 + continue + + # The default when we've gotten through all of the checks above: + # this node is ready to be built. + if S: S.build = S.build + 1 + if T: + self.trace.debug('Evaluating %s' % self.tm_trace_node(node)) + + # For debugging only: + # + # try: + # self._validate_pending_children() + # except: + # self.ready_exc = sys.exc_info() + # return node + + return node + + return None + + def next_task(self): + """ + Returns the next task to be executed. + + This simply asks for the next Node to be evaluated, and then wraps + it in the specific Task subclass with which we were initialized. + """ + node = self._find_next_ready_node() + + if node is None: + return None + + executor = node.get_executor() + if executor is None: + return None + + tlist = executor.get_all_targets() + + task = self.tasker(self, tlist, node in self.original_top, node) + try: + task.make_ready() + except Exception as e : + # We had a problem just trying to get this task ready (like + # a child couldn't be linked to a VariantDir when deciding + # whether this node is current). Arrange to raise the + # exception when the Task is "executed." + self.ready_exc = sys.exc_info() + + if self.ready_exc: + task.exception_set(self.ready_exc) + + self.ready_exc = None + + return task + + def will_not_build(self, nodes, node_func=lambda n: None): + """ + Perform clean-up about nodes that will never be built. Invokes + a user defined function on all of these nodes (including all + of their parents). + """ + + T = self.trace + + pending_children = self.pending_children + + to_visit = set(nodes) + pending_children = pending_children - to_visit + + if T: + for n in nodes: + self.trace.debug(' removing node %s from the pending children set\n' % + self.tm_trace_node(n)) + try: + while len(to_visit): + node = to_visit.pop() + node_func(node) + + # Prune recursion by flushing the waiting children + # list immediately. + parents = node.waiting_parents + node.waiting_parents = set() + + to_visit = to_visit | parents + pending_children = pending_children - parents + + for p in parents: + p.ref_count = p.ref_count - 1 + if T: + self.trace.debug(' removing parent %s from the pending children set\n' % + self.tm_trace_node(p)) + except KeyError: + # The container to_visit has been emptied. + pass + + # We have the stick back the pending_children list into the + # taskmaster because the python 1.5.2 compatibility does not + # allow us to use in-place updates + self.pending_children = pending_children + + def stop(self): + """ + Stops the current build completely. + """ + self.next_candidate = self.no_next_candidate + + def cleanup(self): + """ + Check for dependency cycles. + """ + if not self.pending_children: + return + + nclist = [(n, find_cycle([n], set())) for n in self.pending_children] + + genuine_cycles = [ + node for node,cycle in nclist + if cycle or node.get_state() != NODE_EXECUTED + ] + if not genuine_cycles: + # All of the "cycles" found were single nodes in EXECUTED state, + # which is to say, they really weren't cycles. Just return. + return + + desc = 'Found dependency cycle(s):\n' + for node, cycle in nclist: + if cycle: + desc = desc + " " + " -> ".join(map(str, cycle)) + "\n" + else: + desc = desc + \ + " Internal Error: no cycle found for node %s (%s) in state %s\n" % \ + (node, repr(node), StateString[node.get_state()]) + + raise SCons.Errors.UserError(desc) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/386asm.py b/scons/scons-local-4.5.1/SCons/Tool/386asm.py new file mode 100644 index 000000000..51738ebc1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/386asm.py @@ -0,0 +1,61 @@ +"""SCons.Tool.386asm + +Tool specification for the 386ASM assembler for the Phar Lap ETS embedded +operating system. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +from SCons.Tool.PharLapCommon import addPharLapPaths +import SCons.Util + +as_module = __import__('as', globals(), locals(), [], 1) + +def generate(env): + """Add Builders and construction variables for ar to an Environment.""" + as_module.generate(env) + + env['AS'] = '386asm' + env['ASFLAGS'] = SCons.Util.CLVar('') + env['ASPPFLAGS'] = '$ASFLAGS' + env['ASCOM'] = '$AS $ASFLAGS $SOURCES -o $TARGET' + env['ASPPCOM'] = '$CC $ASPPFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $SOURCES -o $TARGET' + + addPharLapPaths(env) + +def exists(env): + return env.Detect('386asm') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/DCommon.py b/scons/scons-local-4.5.1/SCons/Tool/DCommon.py new file mode 100644 index 000000000..128e56165 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/DCommon.py @@ -0,0 +1,64 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons.Tool.DCommon + +Common code for the various D tools. + +Coded by Russel Winder (russel@winder.org.uk) +2012-09-06 +""" + +import os.path + + +def isD(env, source): + if not source: + return 0 + for s in source: + if s.sources: + ext = os.path.splitext(str(s.sources[0]))[1] + if ext == '.d': + return 1 + return 0 + + +def addDPATHToEnv(env, executable): + dPath = env.WhereIs(executable) + if dPath: + phobosDir = dPath[:dPath.rindex(executable)] + '/../src/phobos' + if os.path.isdir(phobosDir): + env.Append(DPATH=[phobosDir]) + + +def allAtOnceEmitter(target, source, env): + if env['DC'] in ('ldc2', 'dmd'): + env.SideEffect(str(target[0]) + '.o', target[0]) + env.Clean(target[0], str(target[0]) + '.o') + return target, source + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/FortranCommon.py b/scons/scons-local-4.5.1/SCons/Tool/FortranCommon.py new file mode 100644 index 000000000..aff0f9238 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/FortranCommon.py @@ -0,0 +1,290 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Routines for setting up Fortran, common to all dialects.""" + +import re +import os.path +from typing import Tuple + +import SCons.Scanner.Fortran +import SCons.Tool +import SCons.Util +from SCons.Action import Action + + +def isfortran(env, source) -> bool: + """Returns True if source has any fortran files in it. + + Only checks based on filename suffixes, does not examine code. + """ + try: + fsuffixes = env['FORTRANSUFFIXES'] + except KeyError: + # If no FORTRANSUFFIXES, no fortran tool, so there is no need to look + # for fortran sources. + return False + + if not source: + # Source might be None for unusual cases like SConf. + return False + for s in source: + if s.sources: + ext = os.path.splitext(str(s.sources[0]))[1] + if ext in fsuffixes: + return True + return False + + +def _fortranEmitter(target, source, env) -> Tuple: + """Common code for Fortran emitter. + + Called by both the static and shared object emitters, + mainly to account for generated module files. + """ + + node = source[0].rfile() + if not node.exists() and not node.is_derived(): + print("Could not locate " + str(node.name)) + return ([], []) + # This has to match the def_regex in the Fortran scanner + mod_regex = r"""(?i)^\s*MODULE\s+(?!PROCEDURE|SUBROUTINE|FUNCTION|PURE|ELEMENTAL)(\w+)""" + cre = re.compile(mod_regex,re.M) + # Retrieve all USE'd module names + modules = cre.findall(node.get_text_contents()) + # Remove unique items from the list + modules = SCons.Util.unique(modules) + # Convert module name to a .mod filename + suffix = env.subst('$FORTRANMODSUFFIX', target=target, source=source) + moddir = env.subst('$FORTRANMODDIR', target=target, source=source) + modules = [x.lower() + suffix for x in modules] + for m in modules: + target.append(env.fs.File(m, moddir)) + return (target, source) + + +def FortranEmitter(target, source, env) -> Tuple: + import SCons.Defaults + target, source = _fortranEmitter(target, source, env) + return SCons.Defaults.StaticObjectEmitter(target, source, env) + + +def ShFortranEmitter(target, source, env) -> Tuple: + import SCons.Defaults + target, source = _fortranEmitter(target, source, env) + return SCons.Defaults.SharedObjectEmitter(target, source, env) + + +def ComputeFortranSuffixes(suffixes, ppsuffixes) -> None: + """Update the suffix lists to reflect the platform requirements. + + If upper-cased suffixes can be distinguished from lower, those are + added to *ppsuffixes*. If not, they are added to *suffixes*. + + Args: + suffixes (list): indicate regular Fortran source files + ppsuffixes (list): indicate Fortran source files that should be + be run through the pre-processor + """ + assert len(suffixes) > 0 + s = suffixes[0] + sup = s.upper() + upper_suffixes = [_.upper() for _ in suffixes] + if SCons.Util.case_sensitive_suffixes(s, sup): + ppsuffixes.extend(upper_suffixes) + else: + suffixes.extend(upper_suffixes) + +def CreateDialectActions(dialect) -> Tuple[Action, Action, Action, Action]: + """Create dialect specific actions.""" + CompAction = Action(f'${dialect}COM ', cmdstr=f'${dialect}COMSTR') + CompPPAction = Action(f'${dialect}PPCOM ', cmdstr=f'${dialect}PPCOMSTR') + ShCompAction = Action(f'$SH{dialect}COM ', cmdstr=f'$SH{dialect}COMSTR') + ShCompPPAction = Action(f'$SH{dialect}PPCOM ', cmdstr=f'$SH{dialect}PPCOMSTR') + return CompAction, CompPPAction, ShCompAction, ShCompPPAction + + +def DialectAddToEnv(env, dialect, suffixes, ppsuffixes, support_mods=False) -> None: + """Add dialect specific construction variables. + + Args: + dialect (str): dialect name + suffixes (list): suffixes associated with this dialect + ppsuffixes (list): suffixes using cpp associated with this dialect + support_mods (bool): whether this dialect supports modules + """ + ComputeFortranSuffixes(suffixes, ppsuffixes) + + fscan = SCons.Scanner.Fortran.FortranScan(f"{dialect}PATH") + for suffix in suffixes + ppsuffixes: + SCons.Tool.SourceFileScanner.add_scanner(suffix, fscan) + + env.AppendUnique(FORTRANSUFFIXES=suffixes + ppsuffixes) + + compaction, compppaction, shcompaction, shcompppaction = \ + CreateDialectActions(dialect) + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + for suffix in suffixes: + static_obj.add_action(suffix, compaction) + shared_obj.add_action(suffix, shcompaction) + static_obj.add_emitter(suffix, FortranEmitter) + shared_obj.add_emitter(suffix, ShFortranEmitter) + + for suffix in ppsuffixes: + static_obj.add_action(suffix, compppaction) + shared_obj.add_action(suffix, shcompppaction) + static_obj.add_emitter(suffix, FortranEmitter) + shared_obj.add_emitter(suffix, ShFortranEmitter) + + if f'{dialect}FLAGS' not in env: + env[f'{dialect}FLAGS'] = SCons.Util.CLVar('') + if f'SH{dialect}FLAGS' not in env: + env[f'SH{dialect}FLAGS'] = SCons.Util.CLVar(f'${dialect}FLAGS') + + # If a tool does not define fortran prefix/suffix for include path, use C ones + if f'INC{dialect}PREFIX' not in env: + env[f'INC{dialect}PREFIX'] = '$INCPREFIX' + if f'INC{dialect}SUFFIX' not in env: + env[f'INC{dialect}SUFFIX'] = '$INCSUFFIX' + + env[f'_{dialect}INCFLAGS'] = f'${{_concat(INC{dialect}PREFIX, {dialect}PATH, INC{dialect}SUFFIX, __env__, RDirs, TARGET, SOURCE, affect_signature=False)}}' + + if support_mods: + env[f'{dialect}COM'] = f'${dialect} -o $TARGET -c $FORTRANCOMMONFLAGS ${dialect}FLAGS $_{dialect}INCFLAGS $_FORTRANMODFLAG $SOURCES' + env[f'{dialect}PPCOM'] = f'${dialect} -o $TARGET -c $FORTRANCOMMONFLAGS ${dialect}FLAGS $CPPFLAGS $_CPPDEFFLAGS $_{dialect}INCFLAGS $_FORTRANMODFLAG $SOURCES' + env[f'SH{dialect}COM'] = f'$SH{dialect} -o $TARGET -c $FORTRANCOMMONFLAGS $SH{dialect}FLAGS $_{dialect}INCFLAGS $_FORTRANMODFLAG $SOURCES' + env[f'SH{dialect}PPCOM'] = f'$SH{dialect} -o $TARGET -c $FORTRANCOMMONFLAGS $SH{dialect}FLAGS $CPPFLAGS $_CPPDEFFLAGS $_{dialect}INCFLAGS $_FORTRANMODFLAG $SOURCES' + else: + env[f'{dialect}COM'] = f'${dialect} -o $TARGET -c $FORTRANCOMMONFLAGS ${dialect}FLAGS $_{dialect}INCFLAGS $SOURCES' + env[f'{dialect}PPCOM'] = f'${dialect} -o $TARGET -c $FORTRANCOMMONFLAGS ${dialect}FLAGS $CPPFLAGS $_CPPDEFFLAGS $_{dialect}INCFLAGS $SOURCES' + env[f'SH{dialect}COM'] = f'$SH{dialect} -o $TARGET -c $FORTRANCOMMONFLAGS $SH{dialect}FLAGS $_{dialect}INCFLAGS $SOURCES' + env[f'SH{dialect}PPCOM'] = f'$SH{dialect} -o $TARGET -c $FORTRANCOMMONFLAGS $SH{dialect}FLAGS $CPPFLAGS $_CPPDEFFLAGS $_{dialect}INCFLAGS $SOURCES' + + +def add_fortran_to_env(env) -> None: + """Add Builders and construction variables for Fortran/generic.""" + try: + FortranSuffixes = env['FORTRANFILESUFFIXES'] + except KeyError: + FortranSuffixes = ['.f', '.for', '.ftn'] + + try: + FortranPPSuffixes = env['FORTRANPPFILESUFFIXES'] + except KeyError: + FortranPPSuffixes = ['.fpp', '.FPP'] + + DialectAddToEnv(env, "FORTRAN", FortranSuffixes, FortranPPSuffixes, support_mods=True) + + # Module support + env['FORTRANMODPREFIX'] = '' # like $LIBPREFIX + env['FORTRANMODSUFFIX'] = '.mod' # like $LIBSUFFIX + env['FORTRANMODDIR'] = '' # where the compiler should place .mod files + env['FORTRANMODDIRPREFIX'] = '' # some prefix to $FORTRANMODDIR - similar to $INCPREFIX + env['FORTRANMODDIRSUFFIX'] = '' # some suffix to $FORTRANMODDIR - similar to $INCSUFFIX + env['_FORTRANMODFLAG'] = '$( ${_concat(FORTRANMODDIRPREFIX, FORTRANMODDIR, FORTRANMODDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)' + +def add_f77_to_env(env) -> None: + """Add Builders and construction variables for f77 dialect.""" + try: + F77Suffixes = env['F77FILESUFFIXES'] + except KeyError: + F77Suffixes = ['.f77'] + + try: + F77PPSuffixes = env['F77PPFILESUFFIXES'] + except KeyError: + F77PPSuffixes = [] + + DialectAddToEnv(env, "F77", F77Suffixes, F77PPSuffixes) + +def add_f90_to_env(env) -> None: + """Add Builders and construction variables for f90 dialect.""" + try: + F90Suffixes = env['F90FILESUFFIXES'] + except KeyError: + F90Suffixes = ['.f90'] + + try: + F90PPSuffixes = env['F90PPFILESUFFIXES'] + except KeyError: + F90PPSuffixes = [] + + DialectAddToEnv(env, "F90", F90Suffixes, F90PPSuffixes, support_mods=True) + +def add_f95_to_env(env) -> None: + """Add Builders and construction variables for f95 dialect.""" + try: + F95Suffixes = env['F95FILESUFFIXES'] + except KeyError: + F95Suffixes = ['.f95'] + + try: + F95PPSuffixes = env['F95PPFILESUFFIXES'] + except KeyError: + F95PPSuffixes = [] + + DialectAddToEnv(env, "F95", F95Suffixes, F95PPSuffixes, support_mods=True) + +def add_f03_to_env(env) -> None: + """Add Builders and construction variables for f03 dialect.""" + try: + F03Suffixes = env['F03FILESUFFIXES'] + except KeyError: + F03Suffixes = ['.f03'] + + try: + F03PPSuffixes = env['F03PPFILESUFFIXES'] + except KeyError: + F03PPSuffixes = [] + + DialectAddToEnv(env, "F03", F03Suffixes, F03PPSuffixes, support_mods=True) + +def add_f08_to_env(env) -> None: + """Add Builders and construction variables for f08 dialect.""" + try: + F08Suffixes = env['F08FILESUFFIXES'] + except KeyError: + F08Suffixes = ['.f08'] + + try: + F08PPSuffixes = env['F08PPFILESUFFIXES'] + except KeyError: + F08PPSuffixes = [] + + DialectAddToEnv(env, "F08", F08Suffixes, F08PPSuffixes, support_mods=True) + +def add_all_to_env(env) -> None: + """Add builders and construction variables for all supported dialects.""" + add_fortran_to_env(env) + add_f77_to_env(env) + add_f90_to_env(env) + add_f95_to_env(env) + add_f03_to_env(env) + add_f08_to_env(env) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/GettextCommon.py b/scons/scons-local-4.5.1/SCons/Tool/GettextCommon.py new file mode 100644 index 000000000..058b9971e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/GettextCommon.py @@ -0,0 +1,429 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Common routines for gettext tools + +Used by several tools of `gettext` toolset. +""" + +import os +import re + +import SCons.Util +import SCons.Warnings + +class XgettextToolWarning(SCons.Warnings.SConsWarning): + pass + + +class XgettextNotFound(XgettextToolWarning): + pass + + +class MsginitToolWarning(SCons.Warnings.SConsWarning): + pass + + +class MsginitNotFound(MsginitToolWarning): + pass + + +class MsgmergeToolWarning(SCons.Warnings.SConsWarning): + pass + + +class MsgmergeNotFound(MsgmergeToolWarning): + pass + + +class MsgfmtToolWarning(SCons.Warnings.SConsWarning): + pass + + +class MsgfmtNotFound(MsgfmtToolWarning): + pass + + +SCons.Warnings.enableWarningClass(XgettextToolWarning) +SCons.Warnings.enableWarningClass(XgettextNotFound) +SCons.Warnings.enableWarningClass(MsginitToolWarning) +SCons.Warnings.enableWarningClass(MsginitNotFound) +SCons.Warnings.enableWarningClass(MsgmergeToolWarning) +SCons.Warnings.enableWarningClass(MsgmergeNotFound) +SCons.Warnings.enableWarningClass(MsgfmtToolWarning) +SCons.Warnings.enableWarningClass(MsgfmtNotFound) + + +class _POTargetFactory: + """ A factory of `PO` target files. + + Factory defaults differ from these of `SCons.Node.FS.FS`. We set `precious` + (this is required by builders and actions gettext) and `noclean` flags by + default for all produced nodes. + """ + + def __init__(self, env, nodefault=True, alias=None, precious=True + , noclean=True): + """ Object constructor. + + **Arguments** + + - *env* (`SCons.Environment.Environment`) + - *nodefault* (`boolean`) - if `True`, produced nodes will be ignored + from default target `'.'` + - *alias* (`string`) - if provided, produced nodes will be automatically + added to this alias, and alias will be set as `AlwaysBuild` + - *precious* (`boolean`) - if `True`, the produced nodes will be set as + `Precious`. + - *noclen* (`boolean`) - if `True`, the produced nodes will be excluded + from `Clean`. + """ + self.env = env + self.alias = alias + self.precious = precious + self.noclean = noclean + self.nodefault = nodefault + + def _create_node(self, name, factory, directory=None, create=1): + """ Create node, and set it up to factory settings. """ + node = factory(name, directory, create) + node.set_noclean(self.noclean) + node.set_precious(self.precious) + if self.nodefault: + self.env.Ignore('.', node) + if self.alias: + self.env.AlwaysBuild(self.env.Alias(self.alias, node)) + return node + + def Entry(self, name, directory=None, create=1): + """ Create `SCons.Node.FS.Entry` """ + return self._create_node(name, self.env.fs.Entry, directory, create) + + def File(self, name, directory=None, create=1): + """ Create `SCons.Node.FS.File` """ + return self._create_node(name, self.env.fs.File, directory, create) + + +_re_comment = re.compile(r'(#[^\n\r]+)$', re.M) +_re_lang = re.compile(r'([a-zA-Z0-9_]+)', re.M) + + +def _read_linguas_from_files(env, linguas_files=None): + """ Parse `LINGUAS` file and return list of extracted languages """ + global _re_comment + global _re_lang + if not SCons.Util.is_List(linguas_files) \ + and not SCons.Util.is_String(linguas_files) \ + and not isinstance(linguas_files, SCons.Node.FS.Base) \ + and linguas_files: + # If, linguas_files==True or such, then read 'LINGUAS' file. + linguas_files = ['LINGUAS'] + if linguas_files is None: + return [] + fnodes = env.arg2nodes(linguas_files) + linguas = [] + for fnode in fnodes: + contents = _re_comment.sub("", fnode.get_text_contents()) + ls = [l for l in _re_lang.findall(contents) if l] + linguas.extend(ls) + return linguas + + +from SCons.Builder import BuilderBase + + +class _POFileBuilder(BuilderBase): + """ `PO` file builder. + + This is multi-target single-source builder. In typical situation the source + is single `POT` file, e.g. `messages.pot`, and there are multiple `PO` + targets to be updated from this `POT`. We must run + `SCons.Builder.BuilderBase._execute()` separatelly for each target to track + dependencies separatelly for each target file. + + **NOTE**: if we call `SCons.Builder.BuilderBase._execute(.., target, ...)` + with target being list of all targets, all targets would be rebuilt each time + one of the targets from this list is missing. This would happen, for example, + when new language `ll` enters `LINGUAS_FILE` (at this moment there is no + `ll.po` file yet). To avoid this, we override + `SCons.Builder.BuilerBase._execute()` and call it separatelly for each + target. Here we also append to the target list the languages read from + `LINGUAS_FILE`. + """ + + # + # * The argument for overriding _execute(): We must use environment with + # builder overrides applied (see BuilderBase.__init__(). Here it comes for + # free. + # * The argument against using 'emitter': The emitter is called too late + # by BuilderBase._execute(). If user calls, for example: + # + # env.POUpdate(LINGUAS_FILE = 'LINGUAS') + # + # the builder throws error, because it is called with target=None, + # source=None and is trying to "generate" sources or target list first. + # If user calls + # + # env.POUpdate(['foo', 'baz'], LINGUAS_FILE = 'LINGUAS') + # + # the env.BuilderWrapper() calls our builder with target=None, + # source=['foo', 'baz']. The BuilderBase._execute() then splits execution + # and execute iterativelly (recursion) self._execute(None, source[i]). + # After that it calls emitter (which is quite too late). The emitter is + # also called in each iteration, what makes things yet worse. + def __init__(self, env, **kw): + if 'suffix' not in kw: + kw['suffix'] = '$POSUFFIX' + if 'src_suffix' not in kw: + kw['src_suffix'] = '$POTSUFFIX' + if 'src_builder' not in kw: + kw['src_builder'] = '_POTUpdateBuilder' + if 'single_source' not in kw: + kw['single_source'] = True + alias = None + if 'target_alias' in kw: + alias = kw['target_alias'] + del kw['target_alias'] + if 'target_factory' not in kw: + kw['target_factory'] = _POTargetFactory(env, alias=alias).File + super().__init__(**kw) + + def _execute(self, env, target, source, *args, **kw): + """ Execute builder's actions. + + Here we append to `target` the languages read from `$LINGUAS_FILE` and + apply `SCons.Builder.BuilderBase._execute()` separatelly to each target. + The arguments and return value are same as for + `SCons.Builder.BuilderBase._execute()`. + """ + import SCons.Node + linguas_files = None + if 'LINGUAS_FILE' in env and env['LINGUAS_FILE']: + linguas_files = env['LINGUAS_FILE'] + # This prevents endless recursion loop (we'll be invoked once for + # each target appended here, we must not extend the list again). + env['LINGUAS_FILE'] = None + linguas = _read_linguas_from_files(env, linguas_files) + if SCons.Util.is_List(target): + target.extend(linguas) + elif target is not None: + target = [target] + linguas + else: + target = linguas + if not target: + # Let the SCons.BuilderBase to handle this patologic situation + return BuilderBase._execute(self, env, target, source, *args, **kw) + # The rest is ours + if not SCons.Util.is_List(target): + target = [target] + result = [] + for tgt in target: + r = BuilderBase._execute(self, env, [tgt], source, *args, **kw) + result.extend(r) + if linguas_files is not None: + env['LINGUAS_FILE'] = linguas_files + return SCons.Node.NodeList(result) + + +def _translate(env, target=None, source=SCons.Environment._null, *args, **kw): + """ Function for `Translate()` pseudo-builder """ + if target is None: target = [] + pot = env.POTUpdate(None, source, *args, **kw) + po = env.POUpdate(target, pot, *args, **kw) + return po + + +class RPaths: + """ Callable object, which returns pathnames relative to SCons current + working directory. + + It seems like `SCons.Node.FS.Base.get_path()` returns absolute paths + for nodes that are outside of current working directory (`env.fs.getcwd()`). + Here, we often have `SConscript`, `POT` and `PO` files within `po/` + directory and source files (e.g. `*.c`) outside of it. When generating `POT` + template file, references to source files are written to `POT` template, so + a translator may later quickly jump to appropriate source file and line from + its `PO` editor (e.g. `poedit`). Relative paths in `PO` file are usually + interpreted by `PO` editor as paths relative to the place, where `PO` file + lives. The absolute paths would make resultant `POT` file nonportable, as + the references would be correct only on the machine, where `POT` file was + recently re-created. For such reason, we need a function, which always + returns relative paths. This is the purpose of `RPaths` callable object. + + The `__call__` method returns paths relative to current working directory, but + we assume, that *xgettext(1)* is run from the directory, where target file is + going to be created. + + Note, that this may not work for files distributed over several hosts or + across different drives on windows. We assume here, that single local + filesystem holds both source files and target `POT` templates. + + Intended use of `RPaths` - in `xgettext.py`:: + + def generate(env): + from GettextCommon import RPaths + ... + sources = '$( ${_concat( "", SOURCES, "", __env__, XgettextRPaths, TARGET, SOURCES)} $)' + env.Append( + ... + XGETTEXTCOM = 'XGETTEXT ... ' + sources, + ... + XgettextRPaths = RPaths(env) + ) + """ + + # NOTE: This callable object returns pathnames of dirs/files relative to + # current working directory. The pathname remains relative also for entries + # that are outside of current working directory (node, that + # SCons.Node.FS.File and siblings return absolute path in such case). For + # simplicity we compute path relative to current working directory, this + # seems be enough for our purposes (don't need TARGET variable and + # SCons.Defaults.Variable_Caller stuff). + + def __init__(self, env): + """ Initialize `RPaths` callable object. + + **Arguments**: + + - *env* - a `SCons.Environment.Environment` object, defines *current + working dir*. + """ + self.env = env + + # FIXME: I'm not sure, how it should be implemented (what the *args are in + # general, what is **kw). + def __call__(self, nodes, *args, **kw): + """ Return nodes' paths (strings) relative to current working directory. + + **Arguments**: + + - *nodes* ([`SCons.Node.FS.Base`]) - list of nodes. + - *args* - currently unused. + - *kw* - currently unused. + + **Returns**: + + - Tuple of strings, which represent paths relative to current working + directory (for given environment). + """ + import SCons.Node.FS + rpaths = () + cwd = self.env.fs.getcwd().get_abspath() + for node in nodes: + rpath = None + if isinstance(node, SCons.Node.FS.Base): + rpath = os.path.relpath(node.get_abspath(), cwd) + # FIXME: Other types possible here? + if rpath is not None: + rpaths += (rpath,) + return rpaths + + +def _init_po_files(target, source, env): + """ Action function for `POInit` builder. """ + nop = lambda target, source, env: 0 + if 'POAUTOINIT' in env: + autoinit = env['POAUTOINIT'] + else: + autoinit = False + # Well, if everything outside works well, this loop should do single + # iteration. Otherwise we are rebuilding all the targets even, if just + # one has changed (but is this our fault?). + for tgt in target: + if not tgt.exists(): + if autoinit: + action = SCons.Action.Action('$MSGINITCOM', '$MSGINITCOMSTR') + else: + msg = 'File ' + repr(str(tgt)) + ' does not exist. ' \ + + 'If you are a translator, you can create it through: \n' \ + + '$MSGINITCOM' + action = SCons.Action.Action(nop, msg) + status = action([tgt], source, env) + if status: return status + return 0 + + +def _detect_xgettext(env): + """ Detects *xgettext(1)* binary """ + if 'XGETTEXT' in env: + return env['XGETTEXT'] + xgettext = env.Detect('xgettext') + if xgettext: + return xgettext + raise SCons.Errors.StopError(XgettextNotFound, "Could not detect xgettext") + return None + + +def _xgettext_exists(env): + return _detect_xgettext(env) + + +def _detect_msginit(env): + """ Detects *msginit(1)* program. """ + if 'MSGINIT' in env: + return env['MSGINIT'] + msginit = env.Detect('msginit') + if msginit: + return msginit + raise SCons.Errors.StopError(MsginitNotFound, "Could not detect msginit") + return None + + +def _msginit_exists(env): + return _detect_msginit(env) + + +def _detect_msgmerge(env): + """ Detects *msgmerge(1)* program. """ + if 'MSGMERGE' in env: + return env['MSGMERGE'] + msgmerge = env.Detect('msgmerge') + if msgmerge: + return msgmerge + raise SCons.Errors.StopError(MsgmergeNotFound, "Could not detect msgmerge") + return None + + +def _msgmerge_exists(env): + return _detect_msgmerge(env) + + +def _detect_msgfmt(env): + """ Detects *msgmfmt(1)* program. """ + if 'MSGFMT' in env: + return env['MSGFMT'] + msgfmt = env.Detect('msgfmt') + if msgfmt: + return msgfmt + raise SCons.Errors.StopError(MsgfmtNotFound, "Could not detect msgfmt") + return None + + +def _msgfmt_exists(env): + return _detect_msgfmt(env) + + +def tool_list(platform, env): + """ List tools that shall be generated by top-level `gettext` tool """ + return ['xgettext', 'msginit', 'msgmerge', 'msgfmt'] + diff --git a/scons/scons-local-4.5.1/SCons/Tool/JavaCommon.py b/scons/scons-local-4.5.1/SCons/Tool/JavaCommon.py new file mode 100644 index 000000000..adec1d3a7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/JavaCommon.py @@ -0,0 +1,584 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Common routines for processing Java. """ + +import os +import re +import glob +from pathlib import Path +from typing import List + +java_parsing = True + +default_java_version = '1.4' + +# a switch for which jdk versions to use the Scope state for smarter +# anonymous inner class parsing. +scopeStateVersions = ('1.8',) + +# Glob patterns for use in finding where the JDK is. +# +# These are pairs, (*dir_glob, *version_dir_glob) depending on whether +# a JDK version was requested or not. +# For now only used for Windows, which doesn't install JDK in a +# path that would be in env['ENV']['PATH']. The specific tool will +# add the discovered path to this. Since Oracle changed the rules, +# there are many possible vendors, we can't guess them all, but take a shot. +java_win32_dir_glob = 'C:/Program Files*/*/*jdk*/bin' + +# On windows, since Java 9, there is a dash between 'jdk' and the version +# string that wasn't there before. this glob should catch either way. +java_win32_version_dir_glob = 'C:/Program Files*/*/*jdk*%s*/bin' + +# Glob patterns for use in finding where the JDK headers are. +# These are pairs, *dir_glob used in the general case, +# *version_dir_glob if matching only a specific version. +java_macos_include_dir_glob = '/System/Library/Frameworks/JavaVM.framework/Headers/' +java_macos_version_include_dir_glob = '/System/Library/Frameworks/JavaVM.framework/Versions/%s*/Headers/' + +java_linux_include_dirs_glob = [ + '/usr/lib/jvm/default-java/include', + '/usr/lib/jvm/java-*/include', + '/opt/oracle-jdk-bin-*/include', + '/opt/openjdk-bin-*/include', + '/usr/lib/openjdk-*/include', +] +# Need to match path like below (from Centos 7) +# /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-0.el7_5.x86_64/include/ +java_linux_version_include_dirs_glob = [ + '/usr/lib/jvm/java-*-sun-%s*/include', + '/usr/lib/jvm/java-%s*-openjdk*/include', + '/usr/java/jdk%s*/include', +] + +if java_parsing: + # Parse Java files for class names. + # + # This is a really cool parser from Charles Crain + # that finds appropriate class names in Java source. + + # A regular expression that will find, in a java file: + # newlines; + # double-backslashes; + # a single-line comment "//"; + # single or double quotes preceeded by a backslash; + # single quotes, double quotes, open or close braces, semi-colons, + # periods, open or close parentheses; + # floating-point numbers; + # any alphanumeric token (keyword, class name, specifier); + # any alphanumeric token surrounded by angle brackets (generics); + # the multi-line comment begin and end tokens /* and */; + # array declarations "[]". + # Lambda function symbols: -> + _reToken = re.compile(r'(\n|\\\\|//|\\[\'"]|[\'"{\};.()]|' + + r'\d*\.\d*|[A-Za-z_][\w$.]*|<[A-Za-z_]\w+>|' + + r'/\*|\*/|\[\]|->)') + + + class OuterState: + """The initial state for parsing a Java file for classes, + interfaces, and anonymous inner classes.""" + + def __init__(self, version=default_java_version): + if version not in ( + '1.1', + '1.2', + '1.3', + '1.4', + '1.5', + '1.6', + '1.7', + '1.8', + '5', + '6', + '9.0', + '10.0', + '11.0', + '12.0', + '13.0', + '14.0', + '15.0', + '16.0', + '17.0', + ): + msg = "Java version %s not supported" % version + raise NotImplementedError(msg) + + self.version = version + self.listClasses = [] + self.listOutputs = [] + self.stackBrackets = [] + self.brackets = 0 + self.nextAnon = 1 + self.localClasses = [] + self.stackAnonClassBrackets = [] + self.anonStacksStack = [[0]] + self.package = None + + def trace(self): + pass + + def __getClassState(self): + try: + return self.classState + except AttributeError: + ret = ClassState(self) + self.classState = ret + return ret + + def __getPackageState(self): + try: + return self.packageState + except AttributeError: + ret = PackageState(self) + self.packageState = ret + return ret + + def __getAnonClassState(self): + try: + return self.anonState + except AttributeError: + self.outer_state = self + ret = SkipState(1, AnonClassState(self)) + self.anonState = ret + return ret + + def __getSkipState(self): + try: + return self.skipState + except AttributeError: + ret = SkipState(1, self) + self.skipState = ret + return ret + + def _getAnonStack(self): + return self.anonStacksStack[-1] + + def openBracket(self): + self.brackets = self.brackets + 1 + + def closeBracket(self): + self.brackets = self.brackets - 1 + if len(self.stackBrackets) and \ + self.brackets == self.stackBrackets[-1]: + self.listOutputs.append('$'.join(self.listClasses)) + self.localClasses.pop() + self.listClasses.pop() + self.anonStacksStack.pop() + self.stackBrackets.pop() + if len(self.stackAnonClassBrackets) and \ + self.brackets == self.stackAnonClassBrackets[-1] and \ + self.version not in scopeStateVersions: + self._getAnonStack().pop() + self.stackAnonClassBrackets.pop() + + def parseToken(self, token): + if token[:2] == '//': + return IgnoreState('\n', self) + elif token == '/*': + return IgnoreState('*/', self) + elif token == '{': + self.openBracket() + elif token == '}': + self.closeBracket() + elif token in ['"', "'"]: + return IgnoreState(token, self) + elif token == "new": + # anonymous inner class + if len(self.listClasses) > 0: + return self.__getAnonClassState() + return self.__getSkipState() # Skip the class name + elif token in ['class', 'interface', 'enum']: + if len(self.listClasses) == 0: + self.nextAnon = 1 + self.stackBrackets.append(self.brackets) + return self.__getClassState() + elif token == 'package': + return self.__getPackageState() + elif token == '.': + # Skip the attribute, it might be named "class", in which + # case we don't want to treat the following token as + # an inner class name... + return self.__getSkipState() + return self + + def addAnonClass(self): + """Add an anonymous inner class""" + if self.version in ('1.1', '1.2', '1.3', '1.4'): + clazz = self.listClasses[0] + self.listOutputs.append('%s$%d' % (clazz, self.nextAnon)) + # TODO: shouldn't need to repeat versions here and in OuterState + elif self.version in ( + '1.5', + '1.6', + '1.7', + '1.8', + '5', + '6', + '9.0', + '10.0', + '11.0', + '12.0', + '13.0', + '14.0', + '15.0', + '16.0', + '17.0', + ): + self.stackAnonClassBrackets.append(self.brackets) + className = [] + className.extend(self.listClasses) + self._getAnonStack()[-1] = self._getAnonStack()[-1] + 1 + for anon in self._getAnonStack(): + className.append(str(anon)) + self.listOutputs.append('$'.join(className)) + + self.nextAnon = self.nextAnon + 1 + self._getAnonStack().append(0) + + def setPackage(self, package): + self.package = package + + + class ScopeState: + """ + A state that parses code within a scope normally, + within the confines of a scope. + """ + + def __init__(self, old_state): + self.outer_state = old_state.outer_state + self.old_state = old_state + self.brackets = 0 + + def __getClassState(self): + try: + return self.classState + except AttributeError: + ret = ClassState(self) + self.classState = ret + return ret + + def __getAnonClassState(self): + try: + return self.anonState + except AttributeError: + ret = SkipState(1, AnonClassState(self)) + self.anonState = ret + return ret + + def __getSkipState(self): + try: + return self.skipState + except AttributeError: + ret = SkipState(1, self) + self.skipState = ret + return ret + + def openBracket(self): + self.brackets = self.brackets + 1 + + def closeBracket(self): + self.brackets = self.brackets - 1 + + def parseToken(self, token): + # if self.brackets == 0: + # return self.old_state.parseToken(token) + if token[:2] == '//': + return IgnoreState('\n', self) + elif token == '/*': + return IgnoreState('*/', self) + elif token == '{': + self.openBracket() + elif token == '}': + self.closeBracket() + if self.brackets == 0: + self.outer_state._getAnonStack().pop() + return self.old_state + elif token in ['"', "'"]: + return IgnoreState(token, self) + elif token == "new": + # anonymous inner class + return self.__getAnonClassState() + elif token == '.': + # Skip the attribute, it might be named "class", in which + # case we don't want to treat the following token as + # an inner class name... + return self.__getSkipState() + return self + + + class AnonClassState: + """A state that looks for anonymous inner classes.""" + + def __init__(self, old_state): + # outer_state is always an instance of OuterState + self.outer_state = old_state.outer_state + self.old_state = old_state + self.brace_level = 0 + + def parseToken(self, token): + # This is an anonymous class if and only if the next + # non-whitespace token is a bracket. Everything between + # braces should be parsed as normal java code. + if token[:2] == '//': + return IgnoreState('\n', self) + elif token == '/*': + return IgnoreState('*/', self) + elif token == '\n': + return self + elif token[0] == '<' and token[-1] == '>': + return self + elif token == '(': + self.brace_level = self.brace_level + 1 + return self + if self.brace_level > 0: + if token == 'new': + # look further for anonymous inner class + return SkipState(1, AnonClassState(self)) + elif token in ['"', "'"]: + return IgnoreState(token, self) + elif token == ')': + self.brace_level = self.brace_level - 1 + return self + if token == '{': + self.outer_state.addAnonClass() + if self.outer_state.version in scopeStateVersions: + return ScopeState(old_state=self.old_state).parseToken(token) + return self.old_state.parseToken(token) + + + class SkipState: + """A state that will skip a specified number of tokens before + reverting to the previous state.""" + + def __init__(self, tokens_to_skip, old_state): + self.tokens_to_skip = tokens_to_skip + self.old_state = old_state + + def parseToken(self, token): + self.tokens_to_skip = self.tokens_to_skip - 1 + if self.tokens_to_skip < 1: + return self.old_state + return self + + + class ClassState: + """A state we go into when we hit a class or interface keyword.""" + + def __init__(self, outer_state): + # outer_state is always an instance of OuterState + self.outer_state = outer_state + + def parseToken(self, token): + # the next non-whitespace token should be the name of the class + if token == '\n': + return self + # If that's an inner class which is declared in a method, it + # requires an index prepended to the class-name, e.g. + # 'Foo$1Inner' + # https://github.com/SCons/scons/issues/2087 + if self.outer_state.localClasses and \ + self.outer_state.stackBrackets[-1] > \ + self.outer_state.stackBrackets[-2] + 1: + locals = self.outer_state.localClasses[-1] + try: + idx = locals[token] + locals[token] = locals[token] + 1 + except KeyError: + locals[token] = 1 + token = str(locals[token]) + token + self.outer_state.localClasses.append({}) + self.outer_state.listClasses.append(token) + self.outer_state.anonStacksStack.append([0]) + return self.outer_state + + + class IgnoreState: + """A state that will ignore all tokens until it gets to a + specified token.""" + + def __init__(self, ignore_until, old_state): + self.ignore_until = ignore_until + self.old_state = old_state + + def parseToken(self, token): + if self.ignore_until == token: + return self.old_state + return self + + + class PackageState: + """The state we enter when we encounter the package keyword. + We assume the next token will be the package name.""" + + def __init__(self, outer_state): + # outer_state is always an instance of OuterState + self.outer_state = outer_state + + def parseToken(self, token): + self.outer_state.setPackage(token) + return self.outer_state + + + def parse_java_file(fn, version=default_java_version): + with open(fn, 'r', encoding='utf-8') as f: + data = f.read() + return parse_java(data, version) + + + def parse_java(contents, version=default_java_version, trace=None): + """Parse a .java file and return a double of package directory, + plus a list of .class files that compiling that .java file will + produce""" + package = None + initial = OuterState(version) + currstate = initial + for token in _reToken.findall(contents): + # The regex produces a bunch of groups, but only one will + # have anything in it. + currstate = currstate.parseToken(token) + if trace: trace(token, currstate) + if initial.package: + package = initial.package.replace('.', os.sep) + return (package, initial.listOutputs) + +else: + # Don't actually parse Java files for class names. + # + # We might make this a configurable option in the future if + # Java-file parsing takes too long (although it shouldn't relative + # to how long the Java compiler itself seems to take...). + + def parse_java_file(fn): + """ "Parse" a .java file. + + This actually just splits the file name, so the assumption here + is that the file name matches the public class name, and that + the path to the file is the same as the package name. + """ + return os.path.split(fn) + + +def get_java_install_dirs(platform, version=None) -> List[str]: + """ Find possible java jdk installation directories. + + Returns a list for use as `default_paths` when looking up actual + java binaries with :meth:`SCons.Tool.find_program_path`. + The paths are sorted by version, latest first. + + Args: + platform: selector for search algorithm. + version: if not None, restrict the search to this version. + + Returns: + list of default paths for jdk. + """ + + if platform == 'win32': + paths = [] + if version: + paths = glob.glob(java_win32_version_dir_glob % version) + else: + paths = glob.glob(java_win32_dir_glob) + + def win32getvnum(java): + """ Generates a sort key for win32 jdk versions. + + We'll have gotten a path like ...something/*jdk*/bin because + that is the pattern we glob for. To generate the sort key, + extracts the next-to-last component, then trims it further if + it had a complex name, like 'java-1.8.0-openjdk-1.8.0.312-1', + to try and put it on a common footing with the more common style, + which looks like 'jdk-11.0.2'. + + This is certainly fragile, and if someone has a 9.0 it won't + sort right since this will still be alphabetic, BUT 9.0 was + not an LTS release and is 30 mos out of support as this note + is written so just assume it will be okay. + """ + d = Path(java).parts[-2] + if not d.startswith('jdk'): + d = 'jdk' + d.rsplit('jdk', 1)[-1] + return d + + return sorted(paths, key=win32getvnum, reverse=True) + + # other platforms, do nothing for now: we expect the standard + # paths to be enough to find a jdk (e.g. use alternatives system) + return [] + + +def get_java_include_paths(env, javac, version) -> List[str]: + """Find java include paths for JNI building. + + Cannot be called in isolation - `javac` refers to an already detected + compiler. Normally would would call :func:`get_java_install_dirs` first + and then do lookups on the paths it returns before calling us. + + Args: + env: construction environment, used to extract platform. + javac: path to detected javac. + version: if not None, restrict the search to this version. + + Returns: + list of include directory paths. + """ + + if not javac: + return [] + + # on Windows, we have a path to the actual javac, so look locally + if env['PLATFORM'] == 'win32': + javac_bin_dir = os.path.dirname(javac) + java_inc_dir = os.path.normpath(os.path.join(javac_bin_dir, '..', 'include')) + paths = [java_inc_dir, os.path.join(java_inc_dir, 'win32')] + + # for the others, we probably found something which isn't in the JDK dir, + # so use the predefined patterns to glob for an include directory. + elif env['PLATFORM'] == 'darwin': + if not version: + paths = [java_macos_include_dir_glob] + else: + paths = sorted(glob.glob(java_macos_version_include_dir_glob % version)) + else: + base_paths = [] + if not version: + for p in java_linux_include_dirs_glob: + base_paths.extend(glob.glob(p)) + else: + for p in java_linux_version_include_dirs_glob: + base_paths.extend(glob.glob(p % version)) + + paths = [] + for p in base_paths: + paths.extend([p, os.path.join(p, 'linux')]) + + return paths + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Dispatcher.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Dispatcher.py new file mode 100644 index 000000000..42b5287b0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Dispatcher.py @@ -0,0 +1,84 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Internal method dispatcher for Microsoft Visual C/C++. + +MSVC modules can register their module (register_modulename) and individual +classes (register_class) with the method dispatcher during initialization. MSVC +modules tend to be registered immediately after the Dispatcher import near the +top of the file. Methods in the MSVC modules can be invoked indirectly without +having to hard-code the method calls effectively decoupling the upstream module +with the downstream modules: + +The reset method dispatches calls to all registered objects with a reset method +and/or a _reset method. The reset methods are used to restore data structures +to their initial state for testing purposes. Typically, this involves clearing +cached values. + +The verify method dispatches calls to all registered objects with a verify +method and/or a _verify method. The verify methods are used to check that +initialized data structures distributed across multiple modules are internally +consistent. An exception is raised when a verification constraint violation +is detected. Typically, this verifies that initialized dictionaries support +all of the requisite keys as new versions are added. +""" + +import sys + +from ..common import ( + debug, +) + +_refs = [] + + +def register_modulename(modname): + module = sys.modules[modname] + _refs.append(module) + + +def register_class(ref): + _refs.append(ref) + + +def reset(): + debug('') + for ref in _refs: + for method in ['reset', '_reset']: + if not hasattr(ref, method) or not callable(getattr(ref, method, None)): + continue + debug('call %s.%s()', ref.__name__, method) + func = getattr(ref, method) + func() + + +def verify(): + debug('') + for ref in _refs: + for method in ['verify', '_verify']: + if not hasattr(ref, method) or not callable(getattr(ref, method, None)): + continue + debug('call %s.%s()', ref.__name__, method) + func = getattr(ref, method) + func() diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Exceptions.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Exceptions.py new file mode 100644 index 000000000..7b24a2b4b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Exceptions.py @@ -0,0 +1,56 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Exceptions for Microsoft Visual C/C++. +""" + +# reminder: add exceptions to MSCommon if necessary + +class VisualCException(Exception): + pass + +class MSVCInternalError(VisualCException): + pass + +class MSVCUserError(VisualCException): + pass + +class MSVCScriptExecutionError(VisualCException): + pass + +class MSVCVersionNotFound(MSVCUserError): + pass + +class MSVCSDKVersionNotFound(MSVCUserError): + pass + +class MSVCToolsetVersionNotFound(MSVCUserError): + pass + +class MSVCSpectreLibsNotFound(MSVCUserError): + pass + +class MSVCArgumentError(MSVCUserError): + pass + diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Policy.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Policy.py new file mode 100644 index 000000000..fe8da3156 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Policy.py @@ -0,0 +1,301 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Microsoft Visual C/C++ policy handlers. + +Notes: + * The default msvc not found policy is that a warning is issued. This can be + changed globally via the function set_msvc_notfound_policy and/or through + the environment via the MSVC_NOTFOUND_POLICY construction variable. + * The default msvc script error policy is to suppress all msvc batch file + error messages. This can be changed globally via the function + set_msvc_scripterror_policy and/or through the environment via the + MSVC_SCRIPTERROR_POLICY construction variable. +""" + +from collections import ( + namedtuple, +) + +import SCons.Warnings + +from ..common import ( + debug, +) + +from .Exceptions import ( + MSVCArgumentError, + MSVCVersionNotFound, + MSVCScriptExecutionError, +) + +from .Warnings import ( + MSVCScriptExecutionWarning, +) + +from . import Dispatcher +Dispatcher.register_modulename(__name__) + + +# MSVC_NOTFOUND_POLICY definition: +# error: raise exception +# warning: issue warning and continue +# ignore: continue + +MSVC_NOTFOUND_POLICY_DEFINITION = namedtuple('MSVCNotFoundPolicyDefinition', [ + 'value', + 'symbol', +]) + +MSVC_NOTFOUND_DEFINITION_LIST = [] + +MSVC_NOTFOUND_POLICY_INTERNAL = {} +MSVC_NOTFOUND_POLICY_EXTERNAL = {} + +for policy_value, policy_symbol_list in [ + (True, ['Error', 'Exception']), + (False, ['Warning', 'Warn']), + (None, ['Ignore', 'Suppress']), +]: + + policy_symbol = policy_symbol_list[0].lower() + policy_def = MSVC_NOTFOUND_POLICY_DEFINITION(policy_value, policy_symbol) + + MSVC_NOTFOUND_DEFINITION_LIST.append(policy_def) + + MSVC_NOTFOUND_POLICY_INTERNAL[policy_symbol] = policy_def + + for policy_symbol in policy_symbol_list: + MSVC_NOTFOUND_POLICY_EXTERNAL[policy_symbol.lower()] = policy_def + MSVC_NOTFOUND_POLICY_EXTERNAL[policy_symbol] = policy_def + MSVC_NOTFOUND_POLICY_EXTERNAL[policy_symbol.upper()] = policy_def + +# default definition +_MSVC_NOTFOUND_POLICY_DEF = MSVC_NOTFOUND_POLICY_INTERNAL['warning'] + + +# MSVC_SCRIPTERROR_POLICY definition: +# error: raise exception +# warning: issue warning and continue +# ignore: continue + +MSVC_SCRIPTERROR_POLICY_DEFINITION = namedtuple('MSVCBatchErrorPolicyDefinition', [ + 'value', + 'symbol', +]) + +MSVC_SCRIPTERROR_DEFINITION_LIST = [] + +MSVC_SCRIPTERROR_POLICY_INTERNAL = {} +MSVC_SCRIPTERROR_POLICY_EXTERNAL = {} + +for policy_value, policy_symbol_list in [ + (True, ['Error', 'Exception']), + (False, ['Warning', 'Warn']), + (None, ['Ignore', 'Suppress']), +]: + + policy_symbol = policy_symbol_list[0].lower() + policy_def = MSVC_SCRIPTERROR_POLICY_DEFINITION(policy_value, policy_symbol) + + MSVC_SCRIPTERROR_DEFINITION_LIST.append(policy_def) + + MSVC_SCRIPTERROR_POLICY_INTERNAL[policy_symbol] = policy_def + + for policy_symbol in policy_symbol_list: + MSVC_SCRIPTERROR_POLICY_EXTERNAL[policy_symbol.lower()] = policy_def + MSVC_SCRIPTERROR_POLICY_EXTERNAL[policy_symbol] = policy_def + MSVC_SCRIPTERROR_POLICY_EXTERNAL[policy_symbol.upper()] = policy_def + +# default definition +_MSVC_SCRIPTERROR_POLICY_DEF = MSVC_SCRIPTERROR_POLICY_INTERNAL['ignore'] + + +def _msvc_notfound_policy_lookup(symbol): + + try: + notfound_policy_def = MSVC_NOTFOUND_POLICY_EXTERNAL[symbol] + except KeyError: + err_msg = "Value specified for MSVC_NOTFOUND_POLICY is not supported: {}.\n" \ + " Valid values are: {}".format( + repr(symbol), + ', '.join([repr(s) for s in MSVC_NOTFOUND_POLICY_EXTERNAL.keys()]) + ) + raise MSVCArgumentError(err_msg) + + return notfound_policy_def + +def msvc_set_notfound_policy(MSVC_NOTFOUND_POLICY=None): + """ Set the default policy when MSVC is not found. + + Args: + MSVC_NOTFOUND_POLICY: + string representing the policy behavior + when MSVC is not found or None + + Returns: + The previous policy is returned when the MSVC_NOTFOUND_POLICY argument + is not None. The active policy is returned when the MSVC_NOTFOUND_POLICY + argument is None. + + """ + global _MSVC_NOTFOUND_POLICY_DEF + + prev_policy = _MSVC_NOTFOUND_POLICY_DEF.symbol + + policy = MSVC_NOTFOUND_POLICY + if policy is not None: + _MSVC_NOTFOUND_POLICY_DEF = _msvc_notfound_policy_lookup(policy) + + debug( + 'prev_policy=%s, set_policy=%s, policy.symbol=%s, policy.value=%s', + repr(prev_policy), repr(policy), + repr(_MSVC_NOTFOUND_POLICY_DEF.symbol), repr(_MSVC_NOTFOUND_POLICY_DEF.value) + ) + + return prev_policy + +def msvc_get_notfound_policy(): + """Return the active policy when MSVC is not found.""" + debug( + 'policy.symbol=%s, policy.value=%s', + repr(_MSVC_NOTFOUND_POLICY_DEF.symbol), repr(_MSVC_NOTFOUND_POLICY_DEF.value) + ) + return _MSVC_NOTFOUND_POLICY_DEF.symbol + +def msvc_notfound_handler(env, msg): + + if env and 'MSVC_NOTFOUND_POLICY' in env: + # environment setting + notfound_policy_src = 'environment' + policy = env['MSVC_NOTFOUND_POLICY'] + if policy is not None: + # user policy request + notfound_policy_def = _msvc_notfound_policy_lookup(policy) + else: + # active global setting + notfound_policy_def = _MSVC_NOTFOUND_POLICY_DEF + else: + # active global setting + notfound_policy_src = 'default' + policy = None + notfound_policy_def = _MSVC_NOTFOUND_POLICY_DEF + + debug( + 'source=%s, set_policy=%s, policy.symbol=%s, policy.value=%s', + notfound_policy_src, repr(policy), repr(notfound_policy_def.symbol), repr(notfound_policy_def.value) + ) + + if notfound_policy_def.value is None: + # ignore + pass + elif notfound_policy_def.value: + raise MSVCVersionNotFound(msg) + else: + SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, msg) + + +def _msvc_scripterror_policy_lookup(symbol): + + try: + scripterror_policy_def = MSVC_SCRIPTERROR_POLICY_EXTERNAL[symbol] + except KeyError: + err_msg = "Value specified for MSVC_SCRIPTERROR_POLICY is not supported: {}.\n" \ + " Valid values are: {}".format( + repr(symbol), + ', '.join([repr(s) for s in MSVC_SCRIPTERROR_POLICY_EXTERNAL.keys()]) + ) + raise MSVCArgumentError(err_msg) + + return scripterror_policy_def + +def msvc_set_scripterror_policy(MSVC_SCRIPTERROR_POLICY=None): + """ Set the default policy when msvc batch file execution errors are detected. + + Args: + MSVC_SCRIPTERROR_POLICY: + string representing the policy behavior + when msvc batch file execution errors are detected or None + + Returns: + The previous policy is returned when the MSVC_SCRIPTERROR_POLICY argument + is not None. The active policy is returned when the MSVC_SCRIPTERROR_POLICY + argument is None. + + """ + global _MSVC_SCRIPTERROR_POLICY_DEF + + prev_policy = _MSVC_SCRIPTERROR_POLICY_DEF.symbol + + policy = MSVC_SCRIPTERROR_POLICY + if policy is not None: + _MSVC_SCRIPTERROR_POLICY_DEF = _msvc_scripterror_policy_lookup(policy) + + debug( + 'prev_policy=%s, set_policy=%s, policy.symbol=%s, policy.value=%s', + repr(prev_policy), repr(policy), + repr(_MSVC_SCRIPTERROR_POLICY_DEF.symbol), repr(_MSVC_SCRIPTERROR_POLICY_DEF.value) + ) + + return prev_policy + +def msvc_get_scripterror_policy(): + """Return the active policy when msvc batch file execution errors are detected.""" + debug( + 'policy.symbol=%s, policy.value=%s', + repr(_MSVC_SCRIPTERROR_POLICY_DEF.symbol), repr(_MSVC_SCRIPTERROR_POLICY_DEF.value) + ) + return _MSVC_SCRIPTERROR_POLICY_DEF.symbol + +def msvc_scripterror_handler(env, msg): + + if env and 'MSVC_SCRIPTERROR_POLICY' in env: + # environment setting + scripterror_policy_src = 'environment' + policy = env['MSVC_SCRIPTERROR_POLICY'] + if policy is not None: + # user policy request + scripterror_policy_def = _msvc_scripterror_policy_lookup(policy) + else: + # active global setting + scripterror_policy_def = _MSVC_SCRIPTERROR_POLICY_DEF + else: + # active global setting + scripterror_policy_src = 'default' + policy = None + scripterror_policy_def = _MSVC_SCRIPTERROR_POLICY_DEF + + debug( + 'source=%s, set_policy=%s, policy.symbol=%s, policy.value=%s', + scripterror_policy_src, repr(policy), repr(scripterror_policy_def.symbol), repr(scripterror_policy_def.value) + ) + + if scripterror_policy_def.value is None: + # ignore + pass + elif scripterror_policy_def.value: + raise MSVCScriptExecutionError(msg) + else: + SCons.Warnings.warn(MSVCScriptExecutionWarning, msg) + diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Registry.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Registry.py new file mode 100644 index 000000000..9519e1553 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Registry.py @@ -0,0 +1,118 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Windows registry functions for Microsoft Visual C/C++. +""" + +import os + +from SCons.Util import ( + HKEY_LOCAL_MACHINE, + HKEY_CURRENT_USER, + RegGetValue, +) + +from .. common import ( + debug, +) + +from . import Util + +from . import Dispatcher +Dispatcher.register_modulename(__name__) + + +# A null-terminated string that contains unexpanded references to environment variables. +REG_EXPAND_SZ = 2 + +def read_value(hkey, subkey_valname, expand=True): + try: + rval_t = RegGetValue(hkey, subkey_valname) + except OSError: + debug('OSError: hkey=%s, subkey=%s', repr(hkey), repr(subkey_valname)) + return None + rval, regtype = rval_t + if regtype == REG_EXPAND_SZ and expand: + rval = os.path.expandvars(rval) + debug('hkey=%s, subkey=%s, rval=%s', repr(hkey), repr(subkey_valname), repr(rval)) + return rval + +def registry_query_path(key, val, suffix, expand=True): + extval = val + '\\' + suffix if suffix else val + qpath = read_value(key, extval, expand=expand) + if qpath and os.path.exists(qpath): + qpath = Util.process_path(qpath) + else: + qpath = None + return (qpath, key, val, extval) + +REG_SOFTWARE_MICROSOFT = [ + (HKEY_LOCAL_MACHINE, r'Software\Wow6432Node\Microsoft'), + (HKEY_CURRENT_USER, r'Software\Wow6432Node\Microsoft'), # SDK queries + (HKEY_LOCAL_MACHINE, r'Software\Microsoft'), + (HKEY_CURRENT_USER, r'Software\Microsoft'), +] + +def microsoft_query_paths(suffix, usrval=None, expand=True): + paths = [] + records = [] + for key, val in REG_SOFTWARE_MICROSOFT: + extval = val + '\\' + suffix if suffix else val + qpath = read_value(key, extval, expand=expand) + if qpath and os.path.exists(qpath): + qpath = Util.process_path(qpath) + if qpath not in paths: + paths.append(qpath) + records.append((qpath, key, val, extval, usrval)) + return records + +def microsoft_query_keys(suffix, usrval=None, expand=True): + records = [] + for key, val in REG_SOFTWARE_MICROSOFT: + extval = val + '\\' + suffix if suffix else val + rval = read_value(key, extval, expand=expand) + if rval: + records.append((rval, key, val, extval, usrval)) + return records + +def microsoft_sdks(version): + return '\\'.join([r'Microsoft SDKs\Windows', 'v' + version, r'InstallationFolder']) + +def sdk_query_paths(version): + q = microsoft_sdks(version) + return microsoft_query_paths(q) + +def windows_kits(version): + return r'Windows Kits\Installed Roots\KitsRoot' + version + +def windows_kit_query_paths(version): + q = windows_kits(version) + return microsoft_query_paths(q) + +def vstudio_sxs_vc7(version): + return '\\'.join([r'VisualStudio\SxS\VC7', version]) + +def devdiv_vs_servicing_component(version, component): + return '\\'.join([r'DevDiv\VS\Servicing', version, component, 'Install']) + diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/ScriptArguments.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/ScriptArguments.py new file mode 100644 index 000000000..57dbf9d3f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/ScriptArguments.py @@ -0,0 +1,1031 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Batch file argument functions for Microsoft Visual C/C++. +""" + +import os +import re +import enum + +from collections import ( + namedtuple, +) + +from ..common import ( + CONFIG_CACHE_FORCE_DEFAULT_ARGUMENTS, + debug, +) + +from . import Util +from . import Config +from . import Registry +from . import WinSDK + +from .Exceptions import ( + MSVCInternalError, + MSVCSDKVersionNotFound, + MSVCToolsetVersionNotFound, + MSVCSpectreLibsNotFound, + MSVCArgumentError, +) + +from . import Dispatcher +Dispatcher.register_modulename(__name__) + + +# Script argument: boolean True +_ARGUMENT_BOOLEAN_TRUE_LEGACY = (True, '1') # MSVC_UWP_APP +_ARGUMENT_BOOLEAN_TRUE = (True,) + +# TODO: verify SDK 10 version folder names 10.0.XXXXX.0 {1,3} last? +re_sdk_version_100 = re.compile(r'^10[.][0-9][.][0-9]{5}[.][0-9]{1}$') +re_sdk_version_81 = re.compile(r'^8[.]1$') + +re_sdk_dispatch_map = { + '10.0': re_sdk_version_100, + '8.1': re_sdk_version_81, +} + +def _verify_re_sdk_dispatch_map(): + debug('') + for sdk_version in Config.MSVC_SDK_VERSIONS: + if sdk_version in re_sdk_dispatch_map: + continue + err_msg = 'sdk version {} not in re_sdk_dispatch_map'.format(sdk_version) + raise MSVCInternalError(err_msg) + return None + +# SxS version bugfix +_msvc_sxs_bugfix_map = {} +_msvc_sxs_bugfix_folder = {} +_msvc_sxs_bugfix_version = {} + +for msvc_version, sxs_version, sxs_bugfix in [ + # VS2019\Common7\Tools\vsdevcmd\ext\vcvars.bat AzDO Bug#1293526 + # special handling of the 16.8 SxS toolset, use VC\Auxiliary\Build\14.28 directory and SxS files + # if SxS version 14.28 not present/installed, fallback selection of toolset VC\Tools\MSVC\14.28.nnnnn. + ('14.2', '14.28.16.8', '14.28') +]: + _msvc_sxs_bugfix_map.setdefault(msvc_version, []).append((sxs_version, sxs_bugfix)) + _msvc_sxs_bugfix_folder[(msvc_version, sxs_bugfix)] = sxs_version + _msvc_sxs_bugfix_version[(msvc_version, sxs_version)] = sxs_bugfix + +# MSVC_SCRIPT_ARGS +re_vcvars_uwp = re.compile(r'(?:(?(?:uwp|store))(?:(?!\S)|$)',re.IGNORECASE) +re_vcvars_sdk = re.compile(r'(?:(?(?:[1-9][0-9]*[.]\S*))(?:(?!\S)|$)',re.IGNORECASE) +re_vcvars_toolset = re.compile(r'(?:(?(?:[-]{1,2}|[/])vcvars_ver[=](?P\S*))(?:(?!\S)|$)', re.IGNORECASE) +re_vcvars_spectre = re.compile(r'(?:(?(?:[-]{1,2}|[/])vcvars_spectre_libs[=](?P\S*))(?:(?!\S)|$)',re.IGNORECASE) + +# Force default sdk argument +_MSVC_FORCE_DEFAULT_SDK = False + +# Force default toolset argument +_MSVC_FORCE_DEFAULT_TOOLSET = False + +# Force default arguments +_MSVC_FORCE_DEFAULT_ARGUMENTS = False + +def _msvc_force_default_sdk(force=True): + global _MSVC_FORCE_DEFAULT_SDK + _MSVC_FORCE_DEFAULT_SDK = force + debug('_MSVC_FORCE_DEFAULT_SDK=%s', repr(force)) + +def _msvc_force_default_toolset(force=True): + global _MSVC_FORCE_DEFAULT_TOOLSET + _MSVC_FORCE_DEFAULT_TOOLSET = force + debug('_MSVC_FORCE_DEFAULT_TOOLSET=%s', repr(force)) + +def msvc_force_default_arguments(force=None): + global _MSVC_FORCE_DEFAULT_ARGUMENTS + prev_policy = _MSVC_FORCE_DEFAULT_ARGUMENTS + if force is not None: + _MSVC_FORCE_DEFAULT_ARGUMENTS = force + _msvc_force_default_sdk(force) + _msvc_force_default_toolset(force) + return prev_policy + +if CONFIG_CACHE_FORCE_DEFAULT_ARGUMENTS: + msvc_force_default_arguments(force=True) + +# UWP SDK 8.1 and SDK 10: +# +# https://stackoverflow.com/questions/46659238/build-windows-app-compatible-for-8-1-and-10 +# VS2019 - UWP (Except for Win10Mobile) +# VS2017 - UWP +# VS2015 - UWP, Win8.1 StoreApp, WP8/8.1 StoreApp +# VS2013 - Win8/8.1 StoreApp, WP8/8.1 StoreApp + +# SPECTRE LIBS (msvc documentation): +# "There are no versions of Spectre-mitigated libraries for Universal Windows (UWP) apps or +# components. App-local deployment of such libraries isn't possible." + +# MSVC batch file arguments: +# +# VS2022: UWP, SDK, TOOLSET, SPECTRE +# VS2019: UWP, SDK, TOOLSET, SPECTRE +# VS2017: UWP, SDK, TOOLSET, SPECTRE +# VS2015: UWP, SDK +# +# MSVC_SCRIPT_ARGS: VS2015+ +# +# MSVC_UWP_APP: VS2015+ +# MSVC_SDK_VERSION: VS2015+ +# MSVC_TOOLSET_VERSION: VS2017+ +# MSVC_SPECTRE_LIBS: VS2017+ + +@enum.unique +class SortOrder(enum.IntEnum): + UWP = 1 # MSVC_UWP_APP + SDK = 2 # MSVC_SDK_VERSION + TOOLSET = 3 # MSVC_TOOLSET_VERSION + SPECTRE = 4 # MSVC_SPECTRE_LIBS + USER = 5 # MSVC_SCRIPT_ARGS + +VS2019 = Config.MSVS_VERSION_INTERNAL['2019'] +VS2017 = Config.MSVS_VERSION_INTERNAL['2017'] +VS2015 = Config.MSVS_VERSION_INTERNAL['2015'] + +MSVC_VERSION_ARGS_DEFINITION = namedtuple('MSVCVersionArgsDefinition', [ + 'version', # full version (e.g., '14.1Exp', '14.32.31326') + 'vs_def', +]) + +def _msvc_version(version): + + verstr = Util.get_msvc_version_prefix(version) + vs_def = Config.MSVC_VERSION_INTERNAL[verstr] + + version_args = MSVC_VERSION_ARGS_DEFINITION( + version = version, + vs_def = vs_def, + ) + + return version_args + +def _toolset_version(version): + + verstr = Util.get_msvc_version_prefix(version) + vs_def = Config.MSVC_VERSION_INTERNAL[verstr] + + version_args = MSVC_VERSION_ARGS_DEFINITION( + version = version, + vs_def = vs_def, + ) + + return version_args + +def _msvc_script_argument_uwp(env, msvc, arglist): + + uwp_app = env['MSVC_UWP_APP'] + debug('MSVC_VERSION=%s, MSVC_UWP_APP=%s', repr(msvc.version), repr(uwp_app)) + + if not uwp_app: + return None + + if uwp_app not in _ARGUMENT_BOOLEAN_TRUE_LEGACY: + return None + + if msvc.vs_def.vc_buildtools_def.vc_version_numeric < VS2015.vc_buildtools_def.vc_version_numeric: + debug( + 'invalid: msvc version constraint: %s < %s VS2015', + repr(msvc.vs_def.vc_buildtools_def.vc_version_numeric), + repr(VS2015.vc_buildtools_def.vc_version_numeric) + ) + err_msg = "MSVC_UWP_APP ({}) constraint violation: MSVC_VERSION {} < {} VS2015".format( + repr(uwp_app), repr(msvc.version), repr(VS2015.vc_buildtools_def.vc_version) + ) + raise MSVCArgumentError(err_msg) + + # VS2017+ rewrites uwp => store for 14.0 toolset + uwp_arg = msvc.vs_def.vc_uwp + + # store/uwp may not be fully installed + argpair = (SortOrder.UWP, uwp_arg) + arglist.append(argpair) + + return uwp_arg + +def _user_script_argument_uwp(env, uwp, user_argstr): + + matches = [m for m in re_vcvars_uwp.finditer(user_argstr)] + if not matches: + return False + + if len(matches) > 1: + debug('multiple uwp declarations: MSVC_SCRIPT_ARGS=%s', repr(user_argstr)) + err_msg = "multiple uwp declarations: MSVC_SCRIPT_ARGS={}".format(repr(user_argstr)) + raise MSVCArgumentError(err_msg) + + if not uwp: + return True + + env_argstr = env.get('MSVC_UWP_APP','') + debug('multiple uwp declarations: MSVC_UWP_APP=%s, MSVC_SCRIPT_ARGS=%s', repr(env_argstr), repr(user_argstr)) + + err_msg = "multiple uwp declarations: MSVC_UWP_APP={} and MSVC_SCRIPT_ARGS={}".format( + repr(env_argstr), repr(user_argstr) + ) + + raise MSVCArgumentError(err_msg) + +def _msvc_script_argument_sdk_constraints(msvc, sdk_version): + + if msvc.vs_def.vc_buildtools_def.vc_version_numeric < VS2015.vc_buildtools_def.vc_version_numeric: + debug( + 'invalid: msvc_version constraint: %s < %s VS2015', + repr(msvc.vs_def.vc_buildtools_def.vc_version_numeric), + repr(VS2015.vc_buildtools_def.vc_version_numeric) + ) + err_msg = "MSVC_SDK_VERSION ({}) constraint violation: MSVC_VERSION {} < {} VS2015".format( + repr(sdk_version), repr(msvc.version), repr(VS2015.vc_buildtools_def.vc_version) + ) + return err_msg + + for msvc_sdk_version in msvc.vs_def.vc_sdk_versions: + re_sdk_version = re_sdk_dispatch_map[msvc_sdk_version] + if re_sdk_version.match(sdk_version): + debug('valid: sdk_version=%s', repr(sdk_version)) + return None + + debug('invalid: method exit: sdk_version=%s', repr(sdk_version)) + err_msg = "MSVC_SDK_VERSION ({}) is not supported".format(repr(sdk_version)) + return err_msg + +def _msvc_script_argument_sdk_platform_constraints(msvc, toolset, sdk_version, platform_def): + + if sdk_version == '8.1' and platform_def.is_uwp: + + vs_def = toolset.vs_def if toolset else msvc.vs_def + + if vs_def.vc_buildtools_def.vc_version_numeric > VS2015.vc_buildtools_def.vc_version_numeric: + debug( + 'invalid: uwp/store SDK 8.1 msvc_version constraint: %s > %s VS2015', + repr(vs_def.vc_buildtools_def.vc_version_numeric), + repr(VS2015.vc_buildtools_def.vc_version_numeric) + ) + if toolset and toolset.vs_def != msvc.vs_def: + err_msg = "MSVC_SDK_VERSION ({}) and platform type ({}) constraint violation: toolset version {} > {} VS2015".format( + repr(sdk_version), repr(platform_def.vc_platform), + repr(toolset.version), repr(VS2015.vc_buildtools_def.vc_version) + ) + else: + err_msg = "MSVC_SDK_VERSION ({}) and platform type ({}) constraint violation: MSVC_VERSION {} > {} VS2015".format( + repr(sdk_version), repr(platform_def.vc_platform), + repr(msvc.version), repr(VS2015.vc_buildtools_def.vc_version) + ) + return err_msg + + return None + +def _msvc_script_argument_sdk(env, msvc, toolset, platform_def, arglist): + + sdk_version = env['MSVC_SDK_VERSION'] + debug( + 'MSVC_VERSION=%s, MSVC_SDK_VERSION=%s, platform_type=%s', + repr(msvc.version), repr(sdk_version), repr(platform_def.vc_platform) + ) + + if not sdk_version: + return None + + err_msg = _msvc_script_argument_sdk_constraints(msvc, sdk_version) + if err_msg: + raise MSVCArgumentError(err_msg) + + sdk_list = WinSDK.get_sdk_version_list(msvc.vs_def, platform_def) + + if sdk_version not in sdk_list: + err_msg = "MSVC_SDK_VERSION {} not found for platform type {}".format( + repr(sdk_version), repr(platform_def.vc_platform) + ) + raise MSVCSDKVersionNotFound(err_msg) + + err_msg = _msvc_script_argument_sdk_platform_constraints(msvc, toolset, sdk_version, platform_def) + if err_msg: + raise MSVCArgumentError(err_msg) + + argpair = (SortOrder.SDK, sdk_version) + arglist.append(argpair) + + return sdk_version + +def _msvc_script_default_sdk(env, msvc, platform_def, arglist, force_sdk=False): + + if msvc.vs_def.vc_buildtools_def.vc_version_numeric < VS2015.vc_buildtools_def.vc_version_numeric: + return None + + sdk_list = WinSDK.get_sdk_version_list(msvc.vs_def, platform_def) + if not len(sdk_list): + return None + + sdk_default = sdk_list[0] + + debug( + 'MSVC_VERSION=%s, sdk_default=%s, platform_type=%s', + repr(msvc.version), repr(sdk_default), repr(platform_def.vc_platform) + ) + + if force_sdk: + argpair = (SortOrder.SDK, sdk_default) + arglist.append(argpair) + + return sdk_default + +def _user_script_argument_sdk(env, sdk_version, user_argstr): + + matches = [m for m in re_vcvars_sdk.finditer(user_argstr)] + if not matches: + return None + + if len(matches) > 1: + debug('multiple sdk version declarations: MSVC_SCRIPT_ARGS=%s', repr(user_argstr)) + err_msg = "multiple sdk version declarations: MSVC_SCRIPT_ARGS={}".format(repr(user_argstr)) + raise MSVCArgumentError(err_msg) + + if not sdk_version: + user_sdk = matches[0].group('sdk') + return user_sdk + + env_argstr = env.get('MSVC_SDK_VERSION','') + debug('multiple sdk version declarations: MSVC_SDK_VERSION=%s, MSVC_SCRIPT_ARGS=%s', repr(env_argstr), repr(user_argstr)) + + err_msg = "multiple sdk version declarations: MSVC_SDK_VERSION={} and MSVC_SCRIPT_ARGS={}".format( + repr(env_argstr), repr(user_argstr) + ) + + raise MSVCArgumentError(err_msg) + +_toolset_have140_cache = None + +def _msvc_have140_toolset(): + global _toolset_have140_cache + + if _toolset_have140_cache is None: + suffix = Registry.vstudio_sxs_vc7('14.0') + vcinstalldirs = [record[0] for record in Registry.microsoft_query_paths(suffix)] + debug('vc140 toolset: paths=%s', repr(vcinstalldirs)) + _toolset_have140_cache = True if vcinstalldirs else False + + return _toolset_have140_cache + +def _reset_have140_cache(): + global _toolset_have140_cache + debug('reset: cache') + _toolset_have140_cache = None + +def _msvc_read_toolset_file(msvc, filename): + toolset_version = None + try: + with open(filename) as f: + toolset_version = f.readlines()[0].strip() + debug( + 'msvc_version=%s, filename=%s, toolset_version=%s', + repr(msvc.version), repr(filename), repr(toolset_version) + ) + except OSError: + debug('OSError: msvc_version=%s, filename=%s', repr(msvc.version), repr(filename)) + except IndexError: + debug('IndexError: msvc_version=%s, filename=%s', repr(msvc.version), repr(filename)) + return toolset_version + +def _msvc_sxs_toolset_folder(msvc, sxs_folder): + + if Util.is_toolset_sxs(sxs_folder): + return sxs_folder, sxs_folder + + key = (msvc.vs_def.vc_buildtools_def.vc_version, sxs_folder) + if key in _msvc_sxs_bugfix_folder: + sxs_version = _msvc_sxs_bugfix_folder[key] + return sxs_folder, sxs_version + + debug('sxs folder: ignore version=%s', repr(sxs_folder)) + return None, None + +def _msvc_read_toolset_folders(msvc, vc_dir): + + toolsets_sxs = {} + toolsets_full = [] + + build_dir = os.path.join(vc_dir, "Auxiliary", "Build") + if os.path.exists(build_dir): + for sxs_folder, sxs_path in Util.listdir_dirs(build_dir): + sxs_folder, sxs_version = _msvc_sxs_toolset_folder(msvc, sxs_folder) + if not sxs_version: + continue + filename = 'Microsoft.VCToolsVersion.{}.txt'.format(sxs_folder) + filepath = os.path.join(sxs_path, filename) + debug('sxs toolset: check file=%s', repr(filepath)) + if os.path.exists(filepath): + toolset_version = _msvc_read_toolset_file(msvc, filepath) + if not toolset_version: + continue + toolsets_sxs[sxs_version] = toolset_version + debug( + 'sxs toolset: msvc_version=%s, sxs_version=%s, toolset_version=%s', + repr(msvc.version), repr(sxs_version), repr(toolset_version) + ) + + toolset_dir = os.path.join(vc_dir, "Tools", "MSVC") + if os.path.exists(toolset_dir): + for toolset_version, toolset_path in Util.listdir_dirs(toolset_dir): + binpath = os.path.join(toolset_path, "bin") + debug('toolset: check binpath=%s', repr(binpath)) + if os.path.exists(binpath): + toolsets_full.append(toolset_version) + debug( + 'toolset: msvc_version=%s, toolset_version=%s', + repr(msvc.version), repr(toolset_version) + ) + + vcvars140 = os.path.join(vc_dir, "..", "Common7", "Tools", "vsdevcmd", "ext", "vcvars", "vcvars140.bat") + if os.path.exists(vcvars140) and _msvc_have140_toolset(): + toolset_version = '14.0' + toolsets_full.append(toolset_version) + debug( + 'toolset: msvc_version=%s, toolset_version=%s', + repr(msvc.version), repr(toolset_version) + ) + + toolsets_full.sort(reverse=True) + + # SxS bugfix fixup (if necessary) + if msvc.version in _msvc_sxs_bugfix_map: + for sxs_version, sxs_bugfix in _msvc_sxs_bugfix_map[msvc.version]: + if sxs_version in toolsets_sxs: + # have SxS version (folder/file mapping exists) + continue + for toolset_version in toolsets_full: + if not toolset_version.startswith(sxs_bugfix): + continue + debug( + 'sxs toolset: msvc_version=%s, sxs_version=%s, toolset_version=%s', + repr(msvc.version), repr(sxs_version), repr(toolset_version) + ) + # SxS compatible bugfix version (equivalent to toolset search) + toolsets_sxs[sxs_version] = toolset_version + break + + debug('msvc_version=%s, toolsets=%s', repr(msvc.version), repr(toolsets_full)) + + return toolsets_sxs, toolsets_full + +def _msvc_read_toolset_default(msvc, vc_dir): + + build_dir = os.path.join(vc_dir, "Auxiliary", "Build") + + # VS2019+ + filename = "Microsoft.VCToolsVersion.{}.default.txt".format(msvc.vs_def.vc_buildtools_def.vc_buildtools) + filepath = os.path.join(build_dir, filename) + + debug('default toolset: check file=%s', repr(filepath)) + if os.path.exists(filepath): + toolset_buildtools = _msvc_read_toolset_file(msvc, filepath) + if toolset_buildtools: + return toolset_buildtools + + # VS2017+ + filename = "Microsoft.VCToolsVersion.default.txt" + filepath = os.path.join(build_dir, filename) + + debug('default toolset: check file=%s', repr(filepath)) + if os.path.exists(filepath): + toolset_default = _msvc_read_toolset_file(msvc, filepath) + if toolset_default: + return toolset_default + + return None + +_toolset_version_cache = {} +_toolset_default_cache = {} + +def _reset_toolset_cache(): + global _toolset_version_cache + global _toolset_default_cache + debug('reset: toolset cache') + _toolset_version_cache = {} + _toolset_default_cache = {} + +def _msvc_version_toolsets(msvc, vc_dir): + + if msvc.version in _toolset_version_cache: + toolsets_sxs, toolsets_full = _toolset_version_cache[msvc.version] + else: + toolsets_sxs, toolsets_full = _msvc_read_toolset_folders(msvc, vc_dir) + _toolset_version_cache[msvc.version] = toolsets_sxs, toolsets_full + + return toolsets_sxs, toolsets_full + +def _msvc_default_toolset(msvc, vc_dir): + + if msvc.version in _toolset_default_cache: + toolset_default = _toolset_default_cache[msvc.version] + else: + toolset_default = _msvc_read_toolset_default(msvc, vc_dir) + _toolset_default_cache[msvc.version] = toolset_default + + return toolset_default + +def _msvc_version_toolset_vcvars(msvc, vc_dir, toolset_version): + + toolsets_sxs, toolsets_full = _msvc_version_toolsets(msvc, vc_dir) + + if toolset_version in toolsets_full: + # full toolset version provided + toolset_vcvars = toolset_version + return toolset_vcvars + + if Util.is_toolset_sxs(toolset_version): + # SxS version provided + sxs_version = toolsets_sxs.get(toolset_version, None) + if sxs_version and sxs_version in toolsets_full: + # SxS full toolset version + toolset_vcvars = sxs_version + return toolset_vcvars + return None + + for toolset_full in toolsets_full: + if toolset_full.startswith(toolset_version): + toolset_vcvars = toolset_full + return toolset_vcvars + + return None + +def _msvc_script_argument_toolset_constraints(msvc, toolset_version): + + if msvc.vs_def.vc_buildtools_def.vc_version_numeric < VS2017.vc_buildtools_def.vc_version_numeric: + debug( + 'invalid: msvc version constraint: %s < %s VS2017', + repr(msvc.vs_def.vc_buildtools_def.vc_version_numeric), + repr(VS2017.vc_buildtools_def.vc_version_numeric) + ) + err_msg = "MSVC_TOOLSET_VERSION ({}) constraint violation: MSVC_VERSION {} < {} VS2017".format( + repr(toolset_version), repr(msvc.version), repr(VS2017.vc_buildtools_def.vc_version) + ) + return err_msg + + toolset_verstr = Util.get_msvc_version_prefix(toolset_version) + + if not toolset_verstr: + debug('invalid: msvc version: toolset_version=%s', repr(toolset_version)) + err_msg = 'MSVC_TOOLSET_VERSION {} format is not supported'.format( + repr(toolset_version) + ) + return err_msg + + toolset_vernum = float(toolset_verstr) + + if toolset_vernum < VS2015.vc_buildtools_def.vc_version_numeric: + debug( + 'invalid: toolset version constraint: %s < %s VS2015', + repr(toolset_vernum), repr(VS2015.vc_buildtools_def.vc_version_numeric) + ) + err_msg = "MSVC_TOOLSET_VERSION ({}) constraint violation: toolset version {} < {} VS2015".format( + repr(toolset_version), repr(toolset_verstr), repr(VS2015.vc_buildtools_def.vc_version) + ) + return err_msg + + if toolset_vernum > msvc.vs_def.vc_buildtools_def.vc_version_numeric: + debug( + 'invalid: toolset version constraint: toolset %s > %s msvc', + repr(toolset_vernum), repr(msvc.vs_def.vc_buildtools_def.vc_version_numeric) + ) + err_msg = "MSVC_TOOLSET_VERSION ({}) constraint violation: toolset version {} > {} MSVC_VERSION".format( + repr(toolset_version), repr(toolset_verstr), repr(msvc.version) + ) + return err_msg + + if toolset_vernum == VS2015.vc_buildtools_def.vc_version_numeric: + # tooset = 14.0 + if Util.is_toolset_full(toolset_version): + if not Util.is_toolset_140(toolset_version): + debug( + 'invalid: toolset version 14.0 constraint: %s != 14.0', + repr(toolset_version) + ) + err_msg = "MSVC_TOOLSET_VERSION ({}) constraint violation: toolset version {} != '14.0'".format( + repr(toolset_version), repr(toolset_version) + ) + return err_msg + return None + + if Util.is_toolset_full(toolset_version): + debug('valid: toolset full: toolset_version=%s', repr(toolset_version)) + return None + + if Util.is_toolset_sxs(toolset_version): + debug('valid: toolset sxs: toolset_version=%s', repr(toolset_version)) + return None + + debug('invalid: method exit: toolset_version=%s', repr(toolset_version)) + err_msg = "MSVC_TOOLSET_VERSION ({}) format is not supported".format(repr(toolset_version)) + return err_msg + +def _msvc_script_argument_toolset_vcvars(msvc, toolset_version, vc_dir): + + err_msg = _msvc_script_argument_toolset_constraints(msvc, toolset_version) + if err_msg: + raise MSVCArgumentError(err_msg) + + if toolset_version.startswith('14.0') and len(toolset_version) > len('14.0'): + new_toolset_version = '14.0' + debug( + 'rewrite toolset_version=%s => toolset_version=%s', + repr(toolset_version), repr(new_toolset_version) + ) + toolset_version = new_toolset_version + + toolset_vcvars = _msvc_version_toolset_vcvars(msvc, vc_dir, toolset_version) + debug( + 'toolset: toolset_version=%s, toolset_vcvars=%s', + repr(toolset_version), repr(toolset_vcvars) + ) + + if not toolset_vcvars: + err_msg = "MSVC_TOOLSET_VERSION {} not found for MSVC_VERSION {}".format( + repr(toolset_version), repr(msvc.version) + ) + raise MSVCToolsetVersionNotFound(err_msg) + + return toolset_vcvars + +def _msvc_script_argument_toolset(env, msvc, vc_dir, arglist): + + toolset_version = env['MSVC_TOOLSET_VERSION'] + debug('MSVC_VERSION=%s, MSVC_TOOLSET_VERSION=%s', repr(msvc.version), repr(toolset_version)) + + if not toolset_version: + return None + + toolset_vcvars = _msvc_script_argument_toolset_vcvars(msvc, toolset_version, vc_dir) + + # toolset may not be installed for host/target + argpair = (SortOrder.TOOLSET, '-vcvars_ver={}'.format(toolset_vcvars)) + arglist.append(argpair) + + return toolset_vcvars + +def _msvc_script_default_toolset(env, msvc, vc_dir, arglist, force_toolset=False): + + if msvc.vs_def.vc_buildtools_def.vc_version_numeric < VS2017.vc_buildtools_def.vc_version_numeric: + return None + + toolset_default = _msvc_default_toolset(msvc, vc_dir) + if not toolset_default: + return None + + debug('MSVC_VERSION=%s, toolset_default=%s', repr(msvc.version), repr(toolset_default)) + + if force_toolset: + argpair = (SortOrder.TOOLSET, '-vcvars_ver={}'.format(toolset_default)) + arglist.append(argpair) + + return toolset_default + +def _user_script_argument_toolset(env, toolset_version, user_argstr): + + matches = [m for m in re_vcvars_toolset.finditer(user_argstr)] + if not matches: + return None + + if len(matches) > 1: + debug('multiple toolset version declarations: MSVC_SCRIPT_ARGS=%s', repr(user_argstr)) + err_msg = "multiple toolset version declarations: MSVC_SCRIPT_ARGS={}".format(repr(user_argstr)) + raise MSVCArgumentError(err_msg) + + if not toolset_version: + user_toolset = matches[0].group('toolset') + return user_toolset + + env_argstr = env.get('MSVC_TOOLSET_VERSION','') + debug('multiple toolset version declarations: MSVC_TOOLSET_VERSION=%s, MSVC_SCRIPT_ARGS=%s', repr(env_argstr), repr(user_argstr)) + + err_msg = "multiple toolset version declarations: MSVC_TOOLSET_VERSION={} and MSVC_SCRIPT_ARGS={}".format( + repr(env_argstr), repr(user_argstr) + ) + + raise MSVCArgumentError(err_msg) + +def _msvc_script_argument_spectre_constraints(msvc, toolset, spectre_libs, platform_def): + + if msvc.vs_def.vc_buildtools_def.vc_version_numeric < VS2017.vc_buildtools_def.vc_version_numeric: + debug( + 'invalid: msvc version constraint: %s < %s VS2017', + repr(msvc.vs_def.vc_buildtools_def.vc_version_numeric), + repr(VS2017.vc_buildtools_def.vc_version_numeric) + ) + err_msg = "MSVC_SPECTRE_LIBS ({}) constraint violation: MSVC_VERSION {} < {} VS2017".format( + repr(spectre_libs), repr(msvc.version), repr(VS2017.vc_buildtools_def.vc_version) + ) + return err_msg + + if toolset: + if toolset.vs_def.vc_buildtools_def.vc_version_numeric < VS2017.vc_buildtools_def.vc_version_numeric: + debug( + 'invalid: toolset version constraint: %s < %s VS2017', + repr(toolset.vs_def.vc_buildtools_def.vc_version_numeric), + repr(VS2017.vc_buildtools_def.vc_version_numeric) + ) + err_msg = "MSVC_SPECTRE_LIBS ({}) constraint violation: toolset version {} < {} VS2017".format( + repr(spectre_libs), repr(toolset.version), repr(VS2017.vc_buildtools_def.vc_version) + ) + return err_msg + + + if platform_def.is_uwp: + debug( + 'invalid: spectre_libs=%s and platform_type=%s', + repr(spectre_libs), repr(platform_def.vc_platform) + ) + err_msg = "MSVC_SPECTRE_LIBS ({}) are not supported for platform type ({})".format( + repr(spectre_libs), repr(platform_def.vc_platform) + ) + return err_msg + + return None + +def _msvc_toolset_version_spectre_path(vc_dir, toolset_version): + spectre_dir = os.path.join(vc_dir, "Tools", "MSVC", toolset_version, "lib", "spectre") + return spectre_dir + +def _msvc_script_argument_spectre(env, msvc, vc_dir, toolset, platform_def, arglist): + + spectre_libs = env['MSVC_SPECTRE_LIBS'] + debug('MSVC_VERSION=%s, MSVC_SPECTRE_LIBS=%s', repr(msvc.version), repr(spectre_libs)) + + if not spectre_libs: + return None + + if spectre_libs not in _ARGUMENT_BOOLEAN_TRUE: + return None + + err_msg = _msvc_script_argument_spectre_constraints(msvc, toolset, spectre_libs, platform_def) + if err_msg: + raise MSVCArgumentError(err_msg) + + if toolset: + spectre_dir = _msvc_toolset_version_spectre_path(vc_dir, toolset.version) + if not os.path.exists(spectre_dir): + debug( + 'spectre libs: msvc_version=%s, toolset_version=%s, spectre_dir=%s', + repr(msvc.version), repr(toolset.version), repr(spectre_dir) + ) + err_msg = "Spectre libraries not found for MSVC_VERSION {} toolset version {}".format( + repr(msvc.version), repr(toolset.version) + ) + raise MSVCSpectreLibsNotFound(err_msg) + + spectre_arg = 'spectre' + + # spectre libs may not be installed for host/target + argpair = (SortOrder.SPECTRE, '-vcvars_spectre_libs={}'.format(spectre_arg)) + arglist.append(argpair) + + return spectre_arg + +def _user_script_argument_spectre(env, spectre, user_argstr): + + matches = [m for m in re_vcvars_spectre.finditer(user_argstr)] + if not matches: + return None + + if len(matches) > 1: + debug('multiple spectre declarations: MSVC_SCRIPT_ARGS=%s', repr(user_argstr)) + err_msg = "multiple spectre declarations: MSVC_SCRIPT_ARGS={}".format(repr(user_argstr)) + raise MSVCArgumentError(err_msg) + + if not spectre: + return None + + env_argstr = env.get('MSVC_SPECTRE_LIBS','') + debug('multiple spectre declarations: MSVC_SPECTRE_LIBS=%s, MSVC_SCRIPT_ARGS=%s', repr(env_argstr), repr(user_argstr)) + + err_msg = "multiple spectre declarations: MSVC_SPECTRE_LIBS={} and MSVC_SCRIPT_ARGS={}".format( + repr(env_argstr), repr(user_argstr) + ) + + raise MSVCArgumentError(err_msg) + +def _msvc_script_argument_user(env, msvc, arglist): + + # subst None -> empty string + script_args = env.subst('$MSVC_SCRIPT_ARGS') + debug('MSVC_VERSION=%s, MSVC_SCRIPT_ARGS=%s', repr(msvc.version), repr(script_args)) + + if not script_args: + return None + + if msvc.vs_def.vc_buildtools_def.vc_version_numeric < VS2015.vc_buildtools_def.vc_version_numeric: + debug( + 'invalid: msvc version constraint: %s < %s VS2015', + repr(msvc.vs_def.vc_buildtools_def.vc_version_numeric), + repr(VS2015.vc_buildtools_def.vc_version_numeric) + ) + err_msg = "MSVC_SCRIPT_ARGS ({}) constraint violation: MSVC_VERSION {} < {} VS2015".format( + repr(script_args), repr(msvc.version), repr(VS2015.vc_buildtools_def.vc_version) + ) + raise MSVCArgumentError(err_msg) + + # user arguments are not validated + argpair = (SortOrder.USER, script_args) + arglist.append(argpair) + + return script_args + +def _msvc_process_construction_variables(env): + + for cache_variable in [ + _MSVC_FORCE_DEFAULT_TOOLSET, + _MSVC_FORCE_DEFAULT_SDK, + ]: + if cache_variable: + return True + + for env_variable in [ + 'MSVC_UWP_APP', + 'MSVC_TOOLSET_VERSION', + 'MSVC_SDK_VERSION', + 'MSVC_SPECTRE_LIBS', + ]: + if env.get(env_variable, None) is not None: + return True + + return False + +def msvc_script_arguments(env, version, vc_dir, arg): + + arguments = [arg] if arg else [] + + arglist = [] + arglist_reverse = False + + msvc = _msvc_version(version) + + if 'MSVC_SCRIPT_ARGS' in env: + user_argstr = _msvc_script_argument_user(env, msvc, arglist) + else: + user_argstr = None + + if _msvc_process_construction_variables(env): + + # MSVC_UWP_APP + + if 'MSVC_UWP_APP' in env: + uwp = _msvc_script_argument_uwp(env, msvc, arglist) + else: + uwp = None + + if user_argstr: + user_uwp = _user_script_argument_uwp(env, uwp, user_argstr) + else: + user_uwp = None + + is_uwp = True if uwp else False + platform_def = WinSDK.get_msvc_platform(is_uwp) + + # MSVC_TOOLSET_VERSION + + if 'MSVC_TOOLSET_VERSION' in env: + toolset_version = _msvc_script_argument_toolset(env, msvc, vc_dir, arglist) + else: + toolset_version = None + + if user_argstr: + user_toolset = _user_script_argument_toolset(env, toolset_version, user_argstr) + else: + user_toolset = None + + if not toolset_version and not user_toolset: + default_toolset = _msvc_script_default_toolset(env, msvc, vc_dir, arglist, _MSVC_FORCE_DEFAULT_TOOLSET) + if _MSVC_FORCE_DEFAULT_TOOLSET: + toolset_version = default_toolset + else: + default_toolset = None + + if user_toolset: + toolset = None + elif toolset_version: + toolset = _toolset_version(toolset_version) + elif default_toolset: + toolset = _toolset_version(default_toolset) + else: + toolset = None + + # MSVC_SDK_VERSION + + if 'MSVC_SDK_VERSION' in env: + sdk_version = _msvc_script_argument_sdk(env, msvc, toolset, platform_def, arglist) + else: + sdk_version = None + + if user_argstr: + user_sdk = _user_script_argument_sdk(env, sdk_version, user_argstr) + else: + user_sdk = None + + if _MSVC_FORCE_DEFAULT_SDK: + if not sdk_version and not user_sdk: + sdk_version = _msvc_script_default_sdk(env, msvc, platform_def, arglist, _MSVC_FORCE_DEFAULT_SDK) + + # MSVC_SPECTRE_LIBS + + if 'MSVC_SPECTRE_LIBS' in env: + spectre = _msvc_script_argument_spectre(env, msvc, vc_dir, toolset, platform_def, arglist) + else: + spectre = None + + if user_argstr: + _user_script_argument_spectre(env, spectre, user_argstr) + + if msvc.vs_def.vc_buildtools_def.vc_version == '14.0': + if user_uwp and sdk_version and len(arglist) == 2: + # VS2015 toolset argument order issue: SDK store => store SDK + arglist_reverse = True + + if len(arglist) > 1: + arglist.sort() + if arglist_reverse: + arglist.reverse() + + arguments.extend([argpair[-1] for argpair in arglist]) + argstr = ' '.join(arguments).strip() + + debug('arguments: %s', repr(argstr)) + return argstr + +def _msvc_toolset_internal(msvc_version, toolset_version, vc_dir): + + msvc = _msvc_version(msvc_version) + + toolset_vcvars = _msvc_script_argument_toolset_vcvars(msvc, toolset_version, vc_dir) + + return toolset_vcvars + +def _msvc_toolset_versions_internal(msvc_version, vc_dir, full=True, sxs=False): + + msvc = _msvc_version(msvc_version) + + if len(msvc.vs_def.vc_buildtools_all) <= 1: + return None + + toolset_versions = [] + + toolsets_sxs, toolsets_full = _msvc_version_toolsets(msvc, vc_dir) + + if sxs: + sxs_versions = list(toolsets_sxs.keys()) + sxs_versions.sort(reverse=True) + toolset_versions.extend(sxs_versions) + + if full: + toolset_versions.extend(toolsets_full) + + return toolset_versions + +def _msvc_toolset_versions_spectre_internal(msvc_version, vc_dir): + + msvc = _msvc_version(msvc_version) + + if len(msvc.vs_def.vc_buildtools_all) <= 1: + return None + + _, toolsets_full = _msvc_version_toolsets(msvc, vc_dir) + + spectre_toolset_versions = [ + toolset_version + for toolset_version in toolsets_full + if os.path.exists(_msvc_toolset_version_spectre_path(vc_dir, toolset_version)) + ] + + return spectre_toolset_versions + +def reset(): + debug('') + _reset_have140_cache() + _reset_toolset_cache() + +def verify(): + debug('') + _verify_re_sdk_dispatch_map() + diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/SetupEnvDefault.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/SetupEnvDefault.py new file mode 100644 index 000000000..e1c05bc1b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/SetupEnvDefault.py @@ -0,0 +1,233 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Determine if and/or when an error/warning should be issued when there +are no versions of msvc installed. If there is at least one version of +msvc installed, these routines do (almost) nothing. + +Notes: + * When msvc is the default compiler because there are no compilers + installed, a build may fail due to the cl.exe command not being + recognized. Currently, there is no easy way to detect during + msvc initialization if the default environment will be used later + to build a program and/or library. There is no error/warning + as there are legitimate SCons uses that do not require a c compiler. + * An error is indicated by returning a non-empty tool list from the + function register_iserror. +""" + +import re + +from .. common import ( + debug, +) + +from . import Dispatcher +Dispatcher.register_modulename(__name__) + + +class _Data: + + separator = r';' + + need_init = True + + @classmethod + def reset(cls): + debug('msvc default:init') + cls.n_setup = 0 # number of calls to msvc_setup_env_once + cls.default_ismsvc = False # is msvc the default compiler + cls.default_tools_re_list = [] # list of default tools regular expressions + cls.msvc_tools_init = set() # tools registered via msvc_exists + cls.msvc_tools = None # tools registered via msvc_setup_env_once + cls.msvc_installed = False # is msvc installed (vcs_installed > 0) + cls.msvc_nodefault = False # is there a default version of msvc + cls.need_init = True # reset initialization indicator + +def _initialize(env, msvc_exists_func): + if _Data.need_init: + _Data.reset() + _Data.need_init = False + _Data.msvc_installed = msvc_exists_func(env) + debug('msvc default:msvc_installed=%s', _Data.msvc_installed) + +def register_tool(env, tool, msvc_exists_func): + if _Data.need_init: + _initialize(env, msvc_exists_func) + if _Data.msvc_installed: + return None + if not tool: + return None + if _Data.n_setup == 0: + if tool not in _Data.msvc_tools_init: + _Data.msvc_tools_init.add(tool) + debug('msvc default:tool=%s, msvc_tools_init=%s', tool, _Data.msvc_tools_init) + return None + if tool not in _Data.msvc_tools: + _Data.msvc_tools.add(tool) + debug('msvc default:tool=%s, msvc_tools=%s', tool, _Data.msvc_tools) + +def register_setup(env, msvc_exists_func): + if _Data.need_init: + _initialize(env, msvc_exists_func) + _Data.n_setup += 1 + if not _Data.msvc_installed: + _Data.msvc_tools = set(_Data.msvc_tools_init) + if _Data.n_setup == 1: + tool_list = env.get('TOOLS', None) + if tool_list and tool_list[0] == 'default': + if len(tool_list) > 1 and tool_list[1] in _Data.msvc_tools: + # msvc tools are the default compiler + _Data.default_ismsvc = True + _Data.msvc_nodefault = False + debug( + 'msvc default:n_setup=%d, msvc_installed=%s, default_ismsvc=%s', + _Data.n_setup, _Data.msvc_installed, _Data.default_ismsvc + ) + +def set_nodefault(): + # default msvc version, msvc not installed + _Data.msvc_nodefault = True + debug('msvc default:msvc_nodefault=%s', _Data.msvc_nodefault) + +def register_iserror(env, tool, msvc_exists_func): + + register_tool(env, tool, msvc_exists_func) + + if _Data.msvc_installed: + # msvc installed + return None + + if not _Data.msvc_nodefault: + # msvc version specified + return None + + tool_list = env.get('TOOLS', None) + if not tool_list: + # tool list is empty + return None + + debug( + 'msvc default:n_setup=%s, default_ismsvc=%s, msvc_tools=%s, tool_list=%s', + _Data.n_setup, _Data.default_ismsvc, _Data.msvc_tools, tool_list + ) + + if not _Data.default_ismsvc: + + # Summary: + # * msvc is not installed + # * msvc version not specified (default) + # * msvc is not the default compiler + + # construct tools set + tools_set = set(tool_list) + + else: + + if _Data.n_setup == 1: + # first setup and msvc is default compiler: + # build default tools regex for current tool state + tools = _Data.separator.join(tool_list) + tools_nchar = len(tools) + debug('msvc default:add regex:nchar=%d, tools=%s', tools_nchar, tools) + re_default_tools = re.compile(re.escape(tools)) + _Data.default_tools_re_list.insert(0, (tools_nchar, re_default_tools)) + # early exit: no error for default environment when msvc is not installed + return None + + # Summary: + # * msvc is not installed + # * msvc version not specified (default) + # * environment tools list is not empty + # * default tools regex list constructed + # * msvc tools set constructed + # + # Algorithm using tools string and sets: + # * convert environment tools list to a string + # * iteratively remove default tools sequences via regex + # substition list built from longest sequence (first) + # to shortest sequence (last) + # * build environment tools set with remaining tools + # * compute intersection of environment tools and msvc tools sets + # * if the intersection is: + # empty - no error: default tools and/or no additional msvc tools + # not empty - error: user specified one or more msvc tool(s) + # + # This will not produce an error or warning when there are no + # msvc installed instances nor any other recognized compilers + # and the default environment is needed for a build. The msvc + # compiler is forcibly added to the environment tools list when + # there are no compilers installed on win32. In this case, cl.exe + # will not be found on the path resulting in a failed build. + + # construct tools string + tools = _Data.separator.join(tool_list) + tools_nchar = len(tools) + + debug('msvc default:check tools:nchar=%d, tools=%s', tools_nchar, tools) + + # iteratively remove default tool sequences (longest to shortest) + re_nchar_min, re_tools_min = _Data.default_tools_re_list[-1] + if tools_nchar >= re_nchar_min and re_tools_min.search(tools): + # minimum characters satisfied and minimum pattern exists + for re_nchar, re_default_tool in _Data.default_tools_re_list: + if tools_nchar < re_nchar: + # not enough characters for pattern + continue + tools = re_default_tool.sub('', tools).strip(_Data.separator) + tools_nchar = len(tools) + debug('msvc default:check tools:nchar=%d, tools=%s', tools_nchar, tools) + if tools_nchar < re_nchar_min or not re_tools_min.search(tools): + # less than minimum characters or minimum pattern does not exist + break + + # construct non-default list(s) tools set + tools_set = {msvc_tool for msvc_tool in tools.split(_Data.separator) if msvc_tool} + + debug('msvc default:tools=%s', tools_set) + if not tools_set: + return None + + # compute intersection of remaining tools set and msvc tools set + tools_found = _Data.msvc_tools.intersection(tools_set) + debug('msvc default:tools_exist=%s', tools_found) + if not tools_found: + return None + + # construct in same order as tools list + tools_found_list = [] + seen_tool = set() + for tool in tool_list: + if tool not in seen_tool: + seen_tool.add(tool) + if tool in tools_found: + tools_found_list.append(tool) + + # return tool list in order presented + return tools_found_list + +def reset(): + debug('') + _Data.reset() + diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Util.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Util.py new file mode 100644 index 000000000..4b487da0e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Util.py @@ -0,0 +1,366 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Helper functions for Microsoft Visual C/C++. +""" + +import os +import re + +from collections import ( + namedtuple, +) + +from . import Config + +# path utilities + +def listdir_dirs(p): + """ + Return a list of tuples for each subdirectory of the given directory path. + Each tuple is comprised of the subdirectory name and the qualified subdirectory path. + + Args: + p: str + directory path + + Returns: + list[tuple[str,str]]: a list of tuples + + """ + dirs = [] + if p and os.path.exists(p) and os.path.isdir(p): + for dir_name in os.listdir(p): + dir_path = os.path.join(p, dir_name) + if os.path.isdir(dir_path): + dirs.append((dir_name, dir_path)) + return dirs + +def process_path(p): + """ + Normalize a system path + + Args: + p: str + system path + + Returns: + str: normalized system path + + """ + if p: + p = os.path.normpath(p) + p = os.path.realpath(p) + p = os.path.normcase(p) + return p + +# msvc version and msvc toolset version regexes + +re_version_prefix = re.compile('^(?P[0-9]+(?:[.][0-9]+)*)(?![.]).*$') + +re_msvc_version_prefix = re.compile(r'^(?P[1-9][0-9]?[.][0-9]).*$') + +re_msvc_version = re.compile(r'^(?P[1-9][0-9]?[.][0-9])(?P[A-Z]+)*$', re.IGNORECASE) + +re_extended_version = re.compile(r'''^ + (?P(?: + ([1-9][0-9]?[.][0-9]{1,2})| # XX.Y - XX.YY + ([1-9][0-9][.][0-9]{2}[.][0-9]{1,5})| # XX.YY.Z - XX.YY.ZZZZZ + ([1-9][0-9][.][0-9]{2}[.][0-9]{2}[.][0-9]{1,2}) # XX.YY.AA.B - XX.YY.AA.BB + )) + (?P[A-Z]+)* +$''', re.IGNORECASE | re.VERBOSE) + +re_toolset_full = re.compile(r'''^(?: + (?:[1-9][0-9][.][0-9]{1,2})| # XX.Y - XX.YY + (?:[1-9][0-9][.][0-9]{2}[.][0-9]{1,5}) # XX.YY.Z - XX.YY.ZZZZZ +)$''', re.VERBOSE) + +re_toolset_140 = re.compile(r'''^(?: + (?:14[.]0{1,2})| # 14.0 - 14.00 + (?:14[.]0{2}[.]0{1,5}) # 14.00.0 - 14.00.00000 +)$''', re.VERBOSE) + +re_toolset_sxs = re.compile( + r'^[1-9][0-9][.][0-9]{2}[.][0-9]{2}[.][0-9]{1,2}$' # MM.mm.VV.vv format +) + +# msvc sdk version regexes + +re_msvc_sdk_version = re.compile(r'''^ + (?P(?: + ([1-9][0-9]?[.][0-9])| # XX.Y + ([1-9][0-9][.][0-9]{1}[.][0-9]{5}[.][0-9]{1,2}) # XX.Y.ZZZZZ.A - XX.Y.ZZZZZ.AA + )) +$''', re.IGNORECASE | re.VERBOSE) + +# version prefix utilities + +def get_version_prefix(version): + """ + Get the version number prefix from a string. + + Args: + version: str + version specification + + Returns: + str: the version number prefix + + """ + rval = '' + if version: + m = re_version_prefix.match(version) + if m: + rval = m.group('version') + return rval + +def get_msvc_version_prefix(version): + """ + Get the msvc version number prefix from a string. + + Args: + version: str + version specification + + Returns: + str: the msvc version number prefix + + """ + rval = '' + if version: + m = re_msvc_version_prefix.match(version) + if m: + rval = m.group('version') + return rval + +# toolset version query utilities + +def is_toolset_full(toolset_version): + rval = False + if toolset_version: + if re_toolset_full.match(toolset_version): + rval = True + return rval + +def is_toolset_140(toolset_version): + rval = False + if toolset_version: + if re_toolset_140.match(toolset_version): + rval = True + return rval + +def is_toolset_sxs(toolset_version): + rval = False + if toolset_version: + if re_toolset_sxs.match(toolset_version): + rval = True + return rval + +# msvc version and msvc toolset version decomposition utilties + +_MSVC_VERSION_COMPONENTS_DEFINITION = namedtuple('MSVCVersionComponentsDefinition', [ + 'msvc_version', # msvc version (e.g., '14.1Exp') + 'msvc_verstr', # msvc version numeric string (e.g., '14.1') + 'msvc_suffix', # msvc version component type (e.g., 'Exp') + 'msvc_vernum', # msvc version floating point number (e.g, 14.1) + 'msvc_major', # msvc major version integer number (e.g., 14) + 'msvc_minor', # msvc minor version integer number (e.g., 1) + 'msvc_comps', # msvc version components tuple (e.g., ('14', '1')) +]) + +def msvc_version_components(vcver): + """ + Decompose an msvc version into components. + + Tuple fields: + msvc_version: msvc version (e.g., '14.1Exp') + msvc_verstr: msvc version numeric string (e.g., '14.1') + msvc_suffix: msvc version component type (e.g., 'Exp') + msvc_vernum: msvc version floating point number (e.g., 14.1) + msvc_major: msvc major version integer number (e.g., 14) + msvc_minor: msvc minor version integer number (e.g., 1) + msvc_comps: msvc version components tuple (e.g., ('14', '1')) + + Args: + vcver: str + msvc version specification + + Returns: + None or MSVCVersionComponents namedtuple: + """ + + if not vcver: + return None + + m = re_msvc_version.match(vcver) + if not m: + return None + + vs_def = Config.MSVC_VERSION_SUFFIX.get(vcver) + if not vs_def: + return None + + msvc_version = vcver + msvc_verstr = m.group('msvc_version') + msvc_suffix = m.group('suffix') if m.group('suffix') else '' + msvc_vernum = float(msvc_verstr) + + msvc_comps = tuple(msvc_verstr.split('.')) + msvc_major, msvc_minor = [int(x) for x in msvc_comps] + + msvc_version_components_def = _MSVC_VERSION_COMPONENTS_DEFINITION( + msvc_version = msvc_version, + msvc_verstr = msvc_verstr, + msvc_suffix = msvc_suffix, + msvc_vernum = msvc_vernum, + msvc_major = msvc_major, + msvc_minor = msvc_minor, + msvc_comps = msvc_comps, + ) + + return msvc_version_components_def + +_MSVC_EXTENDED_VERSION_COMPONENTS_DEFINITION = namedtuple('MSVCExtendedVersionComponentsDefinition', [ + 'msvc_version', # msvc version (e.g., '14.1Exp') + 'msvc_verstr', # msvc version numeric string (e.g., '14.1') + 'msvc_suffix', # msvc version component type (e.g., 'Exp') + 'msvc_vernum', # msvc version floating point number (e.g, 14.1) + 'msvc_major', # msvc major version integer number (e.g., 14) + 'msvc_minor', # msvc minor version integer number (e.g., 1) + 'msvc_comps', # msvc version components tuple (e.g., ('14', '1')) + 'msvc_toolset_version', # msvc toolset version + 'msvc_toolset_comps', # msvc toolset version components + 'version', # msvc version or msvc toolset version +]) + +def msvc_extended_version_components(version): + """ + Decompose an msvc version or msvc toolset version into components. + + Args: + version: str + version specification + + Returns: + None or MSVCExtendedVersionComponents namedtuple: + """ + + if not version: + return None + + m = re_extended_version.match(version) + if not m: + return None + + msvc_toolset_version = m.group('version') + msvc_toolset_comps = tuple(msvc_toolset_version.split('.')) + + msvc_verstr = get_msvc_version_prefix(msvc_toolset_version) + if not msvc_verstr: + return None + + msvc_suffix = m.group('suffix') if m.group('suffix') else '' + msvc_version = msvc_verstr + msvc_suffix + + vs_def = Config.MSVC_VERSION_SUFFIX.get(msvc_version) + if not vs_def: + return None + + msvc_vernum = float(msvc_verstr) + + msvc_comps = tuple(msvc_verstr.split('.')) + msvc_major, msvc_minor = [int(x) for x in msvc_comps] + + msvc_extended_version_components_def = _MSVC_EXTENDED_VERSION_COMPONENTS_DEFINITION( + msvc_version = msvc_version, + msvc_verstr = msvc_verstr, + msvc_suffix = msvc_suffix, + msvc_vernum = msvc_vernum, + msvc_major = msvc_major, + msvc_minor = msvc_minor, + msvc_comps = msvc_comps, + msvc_toolset_version = msvc_toolset_version, + msvc_toolset_comps = msvc_toolset_comps, + version = version, + ) + + return msvc_extended_version_components_def + +# msvc sdk version decomposition utilties + +_MSVC_SDK_VERSION_COMPONENTS_DEFINITION = namedtuple('MSVCSDKVersionComponentsDefinition', [ + 'sdk_version', # sdk version (e.g., '10.0.20348.0') + 'sdk_verstr', # sdk version numeric string (e.g., '10.0') + 'sdk_vernum', # sdk version floating point number (e.g, 10.0) + 'sdk_major', # sdk major version integer number (e.g., 10) + 'sdk_minor', # sdk minor version integer number (e.g., 0) + 'sdk_comps', # sdk version components tuple (e.g., ('10', '0', '20348', '0')) +]) + +def msvc_sdk_version_components(version): + """ + Decompose an msvc sdk version into components. + + Tuple fields: + sdk_version: sdk version (e.g., '10.0.20348.0') + sdk_verstr: sdk version numeric string (e.g., '10.0') + sdk_vernum: sdk version floating point number (e.g., 10.0) + sdk_major: sdk major version integer number (e.g., 10) + sdk_minor: sdk minor version integer number (e.g., 0) + sdk_comps: sdk version components tuple (e.g., ('10', '0', '20348', '0')) + + Args: + version: str + sdk version specification + + Returns: + None or MSVCSDKVersionComponents namedtuple: + """ + + if not version: + return None + + m = re_msvc_sdk_version.match(version) + if not m: + return None + + sdk_version = version + sdk_comps = tuple(sdk_version.split('.')) + sdk_verstr = '.'.join(sdk_comps[:2]) + sdk_vernum = float(sdk_verstr) + + sdk_major, sdk_minor = [int(x) for x in sdk_comps[:2]] + + msvc_sdk_version_components_def = _MSVC_SDK_VERSION_COMPONENTS_DEFINITION( + sdk_version = sdk_version, + sdk_verstr = sdk_verstr, + sdk_vernum = sdk_vernum, + sdk_major = sdk_major, + sdk_minor = sdk_minor, + sdk_comps = sdk_comps, + ) + + return msvc_sdk_version_components_def + diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Warnings.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Warnings.py new file mode 100644 index 000000000..cab5145a9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/Warnings.py @@ -0,0 +1,35 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Warnings for Microsoft Visual C/C++. +""" + +import SCons.Warnings + +class VisualCWarning(SCons.Warnings.WarningOnByDefault): + pass + +class MSVCScriptExecutionWarning(VisualCWarning): + pass + diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/WinSDK.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/WinSDK.py new file mode 100644 index 000000000..6d18d0730 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/WinSDK.py @@ -0,0 +1,264 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Windows SDK functions for Microsoft Visual C/C++. +""" + +import os + +from ..common import ( + debug, +) + +from . import Util +from . import Config +from . import Registry + +from .Exceptions import ( + MSVCInternalError, +) + +from . import Dispatcher +Dispatcher.register_modulename(__name__) + + +_DESKTOP = Config.MSVC_PLATFORM_INTERNAL['Desktop'] +_UWP = Config.MSVC_PLATFORM_INTERNAL['UWP'] + +def _new_sdk_map(): + sdk_map = { + _DESKTOP.vc_platform: [], + _UWP.vc_platform: [], + } + return sdk_map + +def _sdk_10_layout(version): + + folder_prefix = version + '.' + + sdk_map = _new_sdk_map() + + sdk_roots = Registry.sdk_query_paths(version) + + sdk_version_platform_seen = set() + sdk_roots_seen = set() + + for sdk_t in sdk_roots: + + sdk_root = sdk_t[0] + if sdk_root in sdk_roots_seen: + continue + sdk_roots_seen.add(sdk_root) + + if not os.path.exists(sdk_root): + continue + + sdk_include_path = os.path.join(sdk_root, 'include') + if not os.path.exists(sdk_include_path): + continue + + for version_nbr, version_nbr_path in Util.listdir_dirs(sdk_include_path): + + if not version_nbr.startswith(folder_prefix): + continue + + sdk_inc_path = Util.process_path(os.path.join(version_nbr_path, 'um')) + if not os.path.exists(sdk_inc_path): + continue + + for vc_platform, sdk_inc_file in [ + (_DESKTOP.vc_platform, 'winsdkver.h'), + (_UWP.vc_platform, 'windows.h'), + ]: + + if not os.path.exists(os.path.join(sdk_inc_path, sdk_inc_file)): + continue + + key = (version_nbr, vc_platform) + if key in sdk_version_platform_seen: + continue + sdk_version_platform_seen.add(key) + + sdk_map[vc_platform].append(version_nbr) + + for key, val in sdk_map.items(): + val.sort(reverse=True) + + return sdk_map + +def _sdk_81_layout(version): + + version_nbr = version + + sdk_map = _new_sdk_map() + + sdk_roots = Registry.sdk_query_paths(version) + + sdk_version_platform_seen = set() + sdk_roots_seen = set() + + for sdk_t in sdk_roots: + + sdk_root = sdk_t[0] + if sdk_root in sdk_roots_seen: + continue + sdk_roots_seen.add(sdk_root) + + # msvc does not check for existence of root or other files + + sdk_inc_path = Util.process_path(os.path.join(sdk_root, r'include\um')) + if not os.path.exists(sdk_inc_path): + continue + + for vc_platform, sdk_inc_file in [ + (_DESKTOP.vc_platform, 'winsdkver.h'), + (_UWP.vc_platform, 'windows.h'), + ]: + + if not os.path.exists(os.path.join(sdk_inc_path, sdk_inc_file)): + continue + + key = (version_nbr, vc_platform) + if key in sdk_version_platform_seen: + continue + sdk_version_platform_seen.add(key) + + sdk_map[vc_platform].append(version_nbr) + + for key, val in sdk_map.items(): + val.sort(reverse=True) + + return sdk_map + +_sdk_map_cache = {} +_sdk_cache = {} + +def _reset_sdk_cache(): + global _sdk_map_cache + global _sdk_cache + debug('') + _sdk_map_cache = {} + _sdk_cache = {} + +def _sdk_10(key, reg_version): + if key in _sdk_map_cache: + sdk_map = _sdk_map_cache[key] + else: + sdk_map = _sdk_10_layout(reg_version) + _sdk_map_cache[key] = sdk_map + return sdk_map + +def _sdk_81(key, reg_version): + if key in _sdk_map_cache: + sdk_map = _sdk_map_cache[key] + else: + sdk_map = _sdk_81_layout(reg_version) + _sdk_map_cache[key] = sdk_map + return sdk_map + +def _combine_sdk_map_list(sdk_map_list): + combined_sdk_map = _new_sdk_map() + for sdk_map in sdk_map_list: + for key, val in sdk_map.items(): + combined_sdk_map[key].extend(val) + return combined_sdk_map + +_sdk_dispatch_map = { + '10.0': (_sdk_10, '10.0'), + '8.1': (_sdk_81, '8.1'), +} + +def _verify_sdk_dispatch_map(): + debug('') + for sdk_version in Config.MSVC_SDK_VERSIONS: + if sdk_version in _sdk_dispatch_map: + continue + err_msg = 'sdk version {} not in sdk_dispatch_map'.format(sdk_version) + raise MSVCInternalError(err_msg) + return None + +def _version_list_sdk_map(version_list): + sdk_map_list = [] + for version in version_list: + func, reg_version = _sdk_dispatch_map[version] + sdk_map = func(version, reg_version) + sdk_map_list.append(sdk_map) + + combined_sdk_map = _combine_sdk_map_list(sdk_map_list) + return combined_sdk_map + +def _sdk_map(version_list): + key = tuple(version_list) + if key in _sdk_cache: + sdk_map = _sdk_cache[key] + else: + version_numlist = [float(v) for v in version_list] + version_numlist.sort(reverse=True) + key = tuple([str(v) for v in version_numlist]) + sdk_map = _version_list_sdk_map(key) + _sdk_cache[key] = sdk_map + return sdk_map + +def get_msvc_platform(is_uwp=False): + platform_def = _UWP if is_uwp else _DESKTOP + return platform_def + +def get_sdk_version_list(vs_def, platform_def): + version_list = vs_def.vc_sdk_versions if vs_def.vc_sdk_versions is not None else [] + sdk_map = _sdk_map(version_list) + sdk_list = sdk_map.get(platform_def.vc_platform, []) + return sdk_list + +def get_msvc_sdk_version_list(msvc_version, msvc_uwp_app=False): + debug('msvc_version=%s, msvc_uwp_app=%s', repr(msvc_version), repr(msvc_uwp_app)) + + sdk_versions = [] + + verstr = Util.get_msvc_version_prefix(msvc_version) + if not verstr: + debug('msvc_version is not defined') + return sdk_versions + + vs_def = Config.MSVC_VERSION_EXTERNAL.get(verstr, None) + if not vs_def: + debug('vs_def is not defined') + return sdk_versions + + is_uwp = True if msvc_uwp_app in Config.BOOLEAN_SYMBOLS[True] else False + platform_def = get_msvc_platform(is_uwp) + sdk_list = get_sdk_version_list(vs_def, platform_def) + + sdk_versions.extend(sdk_list) + debug('sdk_versions=%s', repr(sdk_versions)) + + return sdk_versions + +def reset(): + debug('') + _reset_sdk_cache() + +def verify(): + debug('') + _verify_sdk_dispatch_map() + diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/__init__.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/__init__.py new file mode 100644 index 000000000..849c82d14 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/MSVC/__init__.py @@ -0,0 +1,55 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Functions for Microsoft Visual C/C++. + +The _reset method is used to restore MSVC module data structures to their +initial state for testing purposes. + +The _verify method is used as a sanity check that MSVC module data structures +are internally consistent. + +Currently: +* _reset is invoked from reset_installed_vcs in the vc module. +* _verify is invoked from the last line in the vc module. +""" + +from . import Exceptions # noqa: F401 + +from . import Config # noqa: F401 +from . import Util # noqa: F401 +from . import Registry # noqa: F401 +from . import SetupEnvDefault # noqa: F401 +from . import Policy # noqa: F401 +from . import WinSDK # noqa: F401 +from . import ScriptArguments # noqa: F401 + +from . import Dispatcher as _Dispatcher + +def _reset(): + _Dispatcher.reset() + +def _verify(): + _Dispatcher.verify() + diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/README.rst b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/README.rst new file mode 100644 index 000000000..36e58aad4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/README.rst @@ -0,0 +1,501 @@ +.. sectnum:: + +README - SCons.Tool.MSCommon +############################ + +.. contents:: **Table of Contents** + :depth: 2 + :local: + + +Design Notes +============ + +* Public, user-callable functions and exception types are available via + the ``SCons.Tool.MSCommon`` namespace. + +* Some existing code has been moved from ``MSCommon/vc.py`` to the appropriate + ``MSCommon/MSVC/``. + +* No functions from the MSVC module or its child modules are intended to be invoked directly. + All functions of interest are made available via the ``SCons.Tool.MSCommon`` namespace. + It is anticipated that more code may be moved in the future as new features are added. + By exposing the public API through ``SCons.Tool.MSCommon`` there should not be a problem + with code movement. + +* Additional helper functions primarily used for the test suite were added to + ``MSCommon/vc.py`` and are available via the ``SCons.Tool.MSCommon`` namespace. + + +Known Issues +============ + +The following issues are known to exist: + +* Using ``MSVC_USE_SCRIPT`` and ``MSVC_USE_SCRIPT_ARGS`` to call older Microsoft SDK + ``SetEnv.cmd`` batch files may result in build failures. Some of these batch files + require delayed expansion to be enabled which is not usually the Windows default. + One solution would be to launch the MSVC batch file command in a new command interpreter + instance with delayed expansion enabled via command-line options. + +* The code to suppress the "No versions of the MSVC compiler were found" warning for + the default environment was moved from ``MSCommon/vc.py`` to ``MSCommon/MSVC/SetupEnvDefault.py``. + There very few, if any, existing unit tests. Now that the code is isolated in its own + module with a limited API, unit tests may be easier to implement. + + +Experimental Features +===================== + +msvc_query_version_toolset(version=None, prefer_newest=True) +------------------------------------------------------------ + +The experimental function ``msvc_query_version_toolset`` was added to ``MSCommon/vc.py`` +and is available via the ``SCons.Tool.MSCommon`` namespace. This function takes a version +specification or a toolset version specification and a product preference as arguments and +returns the msvc version and the msvc toolset version for the corresponding version specification. + +This is a proxy for using the toolset version for selection until that functionality can be added. + +Example usage: +:: + for version in [ + '14.3', + '14.2', + '14.1', + '14.0', + '14.32', + '14.31', + '14.29', + '14.16', + '14.00', + '14.28.29333', # only 14.2 + '14.20.29333', # fictitious for testing + ]: + + for prefer_newest in (True, False): + try: + msvc_version, msvc_toolset_version = msvc_query_version_toolset(version, prefer_newest=prefer_newest) + failed = False + except MSVCToolsetVersionNotFound: + failed = True + if failed: + msg = 'FAILED' + newline = '\n' + else: + env = Environment(MSVC_VERSION=msvc_version, MSVC_TOOLSET_VERSION=msvc_toolset_version) + msg = 'passed' + newline = '' + print('{}Query: {} version={}, prefer_newest={}'.format(newline, msg, version, prefer_newest)) + +Example output fragment +:: + Build: _build003 {'MSVC_VERSION': '14.3', 'MSVC_TOOLSET_VERSION': '14.29.30133'} + Where: C:\Software\MSVS-2022-143-Com\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\cl.exe + Where: C:\Software\MSVS-2022-143-Com\Common7\Tools\guidgen.exe + Query: passed version=14.2, prefer_newest=True + + Build: _build004 {'MSVC_VERSION': '14.2', 'MSVC_TOOLSET_VERSION': '14.29.30133'} + Where: C:\Software\MSVS-2019-142-Com\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\cl.exe + Where: C:\Software\MSVS-2019-142-Com\Common7\Tools\guidgen.exe + Query: passed version=14.2, prefer_newest=False + + +Undocumented Features +===================== + +set SCONS_CACHE_MSVC_FORCE_DEFAULTS=1 +------------------------------------- + +The Windows system environment variable ``SCONS_CACHE_MSVC_FORCE_DEFAULTS`` was added. This variable is only +evaluated when the msvc cache is enabled and accepts the values ``1``, ``true``, and ``True``. + +When enabled, the default msvc toolset version and the default sdk version, if not otherwise specified, are +added to the batch file argument list. This is intended to make the cache more resilient to Visual Studio +updates that may change the default toolset version and/or the default SDK version. + +Example usage: +:: + + @echo Enabling scons cache ... + @set "SCONS_CACHE_MSVC_CONFIG=mycachefile.json" + @set "SCONS_CACHE_MSVC_FORCE_DEFAULTS=True" + + +End-User Diagnostic Tools +========================= + +Due to the proliferation of user-defined msvc batch file arguments, the likelihood of end-user build +failures has increased. + +Some of the options that may be employed in diagnosing end-user msvc build failures are listed below. + +msvc_set_scripterror_policy('Warning') and MSVC_SCRIPTERROR_POLICY='Warning' +---------------------------------------------------------------------------- + +Enabling warnings to be produced for detected msvc batch file errors may provide additional context +for build failures. Refer to the documentation for details. + +Change the default policy: +:: + from SCons.Tool.MSCommon import msvc_set_scripterror_policy + + msvc_set_scripterror_policy('Warning') + +Specify the policy per-environment: +:: + + env = Environment(MSVC_VERSION='14.3', MSVC_SPECTRE_LIBS=True, MSVC_SCRIPTERROR_POLICY='Warning') + + +set SCONS_MSCOMMON_DEBUG=mydebugfile.txt +---------------------------------------- + +The traditional method of diagnosing end-user issues is to enable the internal msvc debug logging. + + +set SCONS_CACHE_MSVC_CONFIG=mycachefile.json +-------------------------------------------- + +On occasion, enabling the cache file can prove to be a useful diagnostic tool. If nothing else, +issues with the msvc environment may be readily apparent. + + +vswhere.exe +----------- + +On occasion, the raw vswhere output may prove useful especially if there are suspected issues with +detection of installed msvc instances. + +Windows command-line sample invocations: +:: + @rem 64-Bit Windows + "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -all -sort -prerelease -products * -legacy -format json >MYVSWHEREOUTPUT.json + + @rem 32-Bit Windows: + "%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe" -all -sort -prerelease -products * -legacy -format json >MYVSWHEREOUTPUT.json + + +Visual Studio Implementation Notes +================================== + +Batch File Arguments +-------------------- + +Supported MSVC batch file arguments by product: + +======= === === ======= ======= +Product UWP SDK Toolset Spectre +======= === === ======= ======= +VS2022 X X X X +------- --- --- ------- ------- +VS2019 X X X X +------- --- --- ------- ------- +VS2017 X X X X +------- --- --- ------- ------- +VS2015 X X +======= === === ======= ======= + +Supported MSVC batch file arguments in SCons: + +======== ====================================== =================================================== +Argument Construction Variable Script Argument Equivalent +======== ====================================== =================================================== +UWP ``MSVC_UWP_APP=True`` ``MSVC_SCRIPT_ARGS='store'`` +-------- -------------------------------------- --------------------------------------------------- +SDK ``MSVC_SDK_VERSION='10.0.20348.0'`` ``MSVC_SCRIPT_ARGS='10.0.20348.0'`` +-------- -------------------------------------- --------------------------------------------------- +Toolset ``MSVC_TOOLSET_VERSION='14.31.31103'`` ``MSVC_SCRIPT_ARGS='-vcvars_ver=14.31.31103'`` +-------- -------------------------------------- --------------------------------------------------- +Spectre ``MSVC_SPECTRE_LIBS=True`` ``MSVC_SCRIPT_ARGS='-vcvars_spectre_libs=spectre'`` +======== ====================================== =================================================== + +**MSVC_SCRIPT_ARGS contents are not validated. Utilizing script arguments that have construction +variable equivalents is discouraged and may lead to difficult to diagnose build errors.** + +Additional constraints: + +* ``MSVC_SDK_VERSION='8.1'`` and ``MSVC_UWP_APP=True`` is supported only for the v140 + build tools (i.e., ``MSVC_VERSION='14.0'`` or ``MSVC_TOOLSET_VERSION='14.0'``). + +* ``MSVC_SPECTRE_LIBS=True`` and ``MSVC_UWP_APP=True`` is not supported (i.e., there + are no spectre mitigations libraries for UWP builds). + +Default Toolset Version +----------------------- + +Side-by-side toolset versions were introduced in Visual Studio 2017. +The examples shown below are for Visual Studio 2022. + +The msvc default toolset version is dependent on the installation options +selected. This means that the default toolset version may be different for +each machine given the same Visual Studio product. + +The msvc default toolset is not necessarily the latest toolset installed. +This has implications when a toolset version is specified using only one minor +digit (e.g., ``MSVC_TOOLSET_VERSION='14.3'`` or ``MSVC_SCRIPT_ARGS='-vcvars_ver=14.3'``). + +Explicitly defining ``MSVC_TOOLSET_VERSION=None`` will return the same toolset +that the msvc batch files would return. When using ``MSVC_SCRIPT_ARGS``, the +toolset specification should be omitted entirely. + +Local installation and summary test results: +:: + VS2022\VC\Auxiliary\Build\Microsoft.VCToolsVersion.v143.default.txt + 14.31.31103 + + VS2022\VC\Auxiliary\Build\Microsoft.VCToolsVersion.default.txt + 14.32.31326 + +Toolset version summary: +:: + 14.31.31103 Environment() + 14.31.31103 Environment(MSVC_TOOLSET_VERSION=None) + + 14.32.31326* Environment(MSVC_TOOLSET_VERSION='14.3') + 14.32.31326* Environment(MSVC_SCRIPT_ARGS=['-vcvars_ver=14.3']) + + 14.31.31103 Environment(MSVC_TOOLSET_VERSION='14.31') + 14.31.31103 Environment(MSVC_SCRIPT_ARGS=['-vcvars_ver=14.31']) + + 14.32.31326 Environment(MSVC_TOOLSET_VERSION='14.32') + 14.32.31326 Environment(MSVC_SCRIPT_ARGS=['-vcvars_ver=14.32']) + +VS2022\\Common7\\Tools\\vsdevcmd\\ext\\vcvars.bat usage fragment: +:: + @echo -vcvars_ver=version : Version of VC++ Toolset to select + @echo ** [Default] : If -vcvars_ver=version is NOT specified, the toolset specified by + @echo [VSInstallDir]\VC\Auxiliary\Build\Microsoft.VCToolsVersion.v143.default.txt will be used. + @echo ** 14.0 : VS 2015 (v140) VC++ Toolset (installation of the v140 toolset is a prerequisite) + @echo ** 14.xx : VS 2017 or VS 2019 VC++ Toolset, if that version is installed on the system under + @echo [VSInstallDir]\VC\MSVC\Tools\[version]. Where '14.xx' specifies a partial + @echo [version]. The latest [version] directory that matches the specified value will + @echo be used. + @echo ** 14.xx.yyyyy : VS 2017 or VS 2019 VC++ Toolset, if that version is installed on the system under + @echo [VSInstallDir]\VC\MSVC\Tools\[version]. Where '14.xx.yyyyy' specifies an + @echo exact [version] directory to be used. + @echo ** 14.xx.VV.vv : VS 2019 C++ side-by-side toolset package identity alias, if the SxS toolset has been installed on the system. + @echo Where '14.xx.VV.vv' corresponds to a SxS toolset + @echo VV = VS Update Major Version (e.g. "16" for VS 2019 v16.9) + @echo vv = VS Update Minor version (e.g. "9" for VS 2019 v16.9) + @echo Please see [VSInstallDir]\VC\Auxiliary\Build\[version]\Microsoft.VCToolsVersion.[version].txt for mapping of + @echo SxS toolset to [VSInstallDir]\VC\MSVC\Tools\ directory. + +VS2022 batch file fragment to determine the default toolset version: +:: + @REM Add MSVC + set "__VCVARS_DEFAULT_CONFIG_FILE=%VCINSTALLDIR%Auxiliary\Build\Microsoft.VCToolsVersion.default.txt" + + @REM We will "fallback" to Microsoft.VCToolsVersion.default.txt (latest) if Microsoft.VCToolsVersion.v143.default.txt does not exist. + if EXIST "%VCINSTALLDIR%Auxiliary\Build\Microsoft.VCToolsVersion.v143.default.txt" ( + if "%VSCMD_DEBUG%" GEQ "2" @echo [DEBUG:ext\%~nx0] Microsoft.VCToolsVersion.v143.default.txt was found. + set "__VCVARS_DEFAULT_CONFIG_FILE=%VCINSTALLDIR%Auxiliary\Build\Microsoft.VCToolsVersion.v143.default.txt" + + ) else ( + if "%VSCMD_DEBUG%" GEQ "1" @echo [DEBUG:ext\%~nx0] Microsoft.VCToolsVersion.v143.default.txt was not found. Defaulting to 'Microsoft.VCToolsVersion.default.txt'. + ) + +Empirical evidence suggests that the default toolset version is different from the latest +toolset version when the toolset version immediately preceding the latest version is +installed. For example, the ``14.31`` toolset version is installed when the ``14.32`` +toolset version is the latest. + + +Visual Studio Version Notes +============================ + +SDK Versions +------------ + +==== ============ +SDK Format +==== ============ +10.0 10.0.XXXXX.Y +---- ------------ +8.1 8.1 +==== ============ + +BuildTools Versions +------------------- + +========== ===== ===== ======== +BuildTools VCVER CLVER MSVCRT +========== ===== ===== ======== +v143 14.3 19.3 140/ucrt +---------- ----- ----- -------- +v142 14.2 19.2 140/ucrt +---------- ----- ----- -------- +v141 14.1 19.1 140/ucrt +---------- ----- ----- -------- +v140 14.0 19.0 140/ucrt +---------- ----- ----- -------- +v120 12.0 18.0 120 +---------- ----- ----- -------- +v110 11.0 17.0 110 +---------- ----- ----- -------- +v100 10.0 16.0 100 +---------- ----- ----- -------- +v90 9.0 15.0 90 +---------- ----- ----- -------- +v80 8.0 14.0 80 +---------- ----- ----- -------- +v71 7.1 13.1 71 +---------- ----- ----- -------- +v70 7.0 13.0 70 +---------- ----- ----- -------- +v60 6.0 12.0 60 +========== ===== ===== ======== + +Product Versions +---------------- + +======== ===== ========= ============ +Product VSVER SDK BuildTools +======== ===== ========= ============ +2022 17.0 10.0, 8.1 v143 .. v140 +-------- ----- --------- ------------ +2019 16.0 10.0, 8.1 v142 .. v140 +-------- ----- --------- ------------ +2017 15.0 10.0, 8.1 v141 .. v140 +-------- ----- --------- ------------ +2015 14.0 10.0, 8.1 v140 +-------- ----- --------- ------------ +2013 12.0 v120 +-------- ----- --------- ------------ +2012 11.0 v110 +-------- ----- --------- ------------ +2010 10.0 v100 +-------- ----- --------- ------------ +2008 9.0 v90 +-------- ----- --------- ------------ +2005 8.0 v80 +-------- ----- --------- ------------ +2003.NET 7.1 v71 +-------- ----- --------- ------------ +2002.NET 7.0 v70 +-------- ----- --------- ------------ +6.0 6.0 v60 +======== ===== ========= ============ + + +SCons Implementation Notes +========================== + +Compiler Detection Logic +------------------------ + +**WARNING: the compiler detection logic documentation below is likely out-of-date.** + +In the future, the compiler detection logic documentation will be updated and integrated +into the current document format as appropriate. + +:: + + This is the flow of the compiler detection logic: + + External to MSCommon: + + The Tool init modules, in their exists() routines, call -> msvc_exists(env) + + At the moment, those modules are: + SCons/Tool/midl.py + SCons/Tool/mslib.py + SCons/Tool/mslink.py + SCons/Tool/msvc.py + SCons/Tool/msvs.py + + env may contain a version request in MSVC_VERSION, but this is not used + in the detection that follows from msvc_exists(), only in the later + batch that starts with a call to msvc_setup_env(). + + Internal to MSCommon/vc.py: + + + MSCommon/vc.py:msvc_exists: + | vcs = cached_get_installed_vcs(env) + | returns True if vcs > 0 + | + +-> MSCommon/vc.py:cached_get_installed_vcs: + | checks global if we've run previously, if so return it + | populate the global from -> get_installed_vcs(env) + | + +-> MSCommon/vc.py:get_installed_vcs: + | loop through "known" versions of msvc, granularity is maj.min + | check for product dir -> find_vc_pdir(env, ver) + | + +-> MSCommon/vc.py:find_vc_pdir: + | From the msvc-version to pdir mapping dict, get reg key base and value + | If value is none -> find_vc_pdir_vswhere(ver, env) + | + +-> MSCommon/vc.py:find_vc_pdir_vswhere: + | From the vc-version to VS-version mapping table get string + | Figure out where vswhere is -> msvc_find_vswhere() + | Use subprocess to call vswhere, return first line of match + / + | else get product directory from registry (<= 14.0) + / + | if we found one -> _check_cl_exists_in_vc_dir(env, pdir, ver) + | + +-> MSCommon/vc.py:_check_cl_exists_in_vc_dir: + | Figure out host/target pair + | if version > 14.0 get specific version by looking in + | pdir + Auxiliary/Build/Microsoft/VCToolsVersion/default.txt + | look for pdir + Tools/MSVC/{specver}/bin/host/target/cl.exe + | if 14.0 or less, "do older stuff" + + All of this just got us a yes-no answer on whether /some/ msvc version + exists, but does populate __INSTALLED_VCS_RUN with all of the top-level + versions as noted for get_installed_vcs + + Externally: + + Once a module's exists() has been called (or, in the case of + clang/clangxx, after the compiler has been detected by other means - + those still expect the rest of the msvc chain but not cl.exe) + the module's generate() function calls -> msvc_setup_env_once(env) + + Internally: + + + MSCommon/vc.py:msvc_setup_env_once: + | checks for environment flag MSVC_SETUP_RUN + | if not, -> msvc_setup_env(env) and set flag + | + +-+ MSCommon/vc.py:msvc_setup_env: + | set ver from -> get_default_version(env) + | + +-+ MSCommon/vc.py:get_default_version: + | if no version specified in env.MSVC_VERSION: + | return first entry from -> cached_get_installed_vcs(env) + | else return requested version + / + | get script from MSVC_USE_SCRIPT if set to a filename + | -> script_env(script) + | + +-+ MSCommon/vc.py:script_env: + | return (possibly cached) script variables matching script arg + / + | else -> msvc_find_valid_batch_script(env, version) + | + +-+ MSCommon/vc.py:msvc_find_valid_batch_script: + | Build a list of plausible target values, and loop through + | look for host + target -> find_batch_file(env, ver, host, target) + | + +-+ MSCommon/vc.py:find_batch_file: + | call -> find_vc_pdir (see above) + | use the return to construct a version-biased batfile path, check + / + | if not found, try sdk scripts (unknown if this is still useful) + + + Problems: + - For VS >= 2017, VS and VS are not 1:1, there can be many VC for one VS + - For vswhere-ready versions, detection does not proceed beyond the + product level ("2019") into individual "features" (individual msvc) + - As documented for MSVC_VERSION, compilers can only be requested if versions + are from the set in _VCVER, so 14.1 but not 14.16 or 14.16.27023 + - Information found in the first pass (msvs_exists) isn't really + available anywhere except the cached version list, since we just + return true/false. + - Since msvc_exists chain of calls does not look at version, we + can proceed to compiler setup if *any* msvc was found, even if the + one requested wasn't found. + diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/__init__.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/__init__.py new file mode 100644 index 000000000..c3078ac63 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/__init__.py @@ -0,0 +1,94 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Common functions for Microsoft Visual Studio and Visual C/C++. +""" + + +import SCons.Errors +import SCons.Platform.win32 +import SCons.Util # noqa: F401 + +from SCons.Tool.MSCommon.sdk import ( # noqa: F401 + mssdk_exists, + mssdk_setup_env, +) + +from SCons.Tool.MSCommon.vc import ( # noqa: F401 + msvc_exists, + msvc_setup_env_tool, + msvc_setup_env_once, + msvc_version_to_maj_min, + msvc_find_vswhere, + msvc_sdk_versions, + msvc_toolset_versions, + msvc_toolset_versions_spectre, + msvc_query_version_toolset, +) + +from SCons.Tool.MSCommon.vs import ( # noqa: F401 + get_default_version, + get_vs_by_version, + merge_default_version, + msvs_exists, + query_versions, +) + +from .MSVC.Policy import ( # noqa: F401 + msvc_set_notfound_policy, + msvc_get_notfound_policy, + msvc_set_scripterror_policy, + msvc_get_scripterror_policy, +) + +from .MSVC.Exceptions import ( # noqa: F401 + VisualCException, + MSVCInternalError, + MSVCUserError, + MSVCScriptExecutionError, + MSVCVersionNotFound, + MSVCSDKVersionNotFound, + MSVCToolsetVersionNotFound, + MSVCSpectreLibsNotFound, + MSVCArgumentError, +) + +from .vc import ( # noqa: F401 + MSVCUnsupportedHostArch, + MSVCUnsupportedTargetArch, + MSVCScriptNotFound, + MSVCUseSettingsError, +) + +from .MSVC.Util import ( # noqa: F401 + msvc_version_components, + msvc_extended_version_components, + msvc_sdk_version_components, +) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/arch.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/arch.py new file mode 100644 index 000000000..6648bb6b6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/arch.py @@ -0,0 +1,66 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +MS compilers: Supported Windows chip architectures. +""" + + +class ArchDefinition: + """ + A class for defining architecture-specific settings and logic. + """ + def __init__(self, arch, synonyms=[]): + self.arch = arch + self.synonyms = synonyms + +SupportedArchitectureList = [ + ArchDefinition( + 'x86', + ['i386', 'i486', 'i586', 'i686'], + ), + ArchDefinition( + 'x86_64', + ['AMD64', 'amd64', 'em64t', 'EM64T', 'x86_64'], + ), + ArchDefinition( + 'ia64', + ['IA64'], + ), + ArchDefinition( + 'arm', + ['ARM'], + ), +] + +SupportedArchitectureMap = {} +for a in SupportedArchitectureList: + SupportedArchitectureMap[a.arch] = a + for s in a.synonyms: + SupportedArchitectureMap[s] = a + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/common.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/common.py new file mode 100644 index 000000000..ad4c827d3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/common.py @@ -0,0 +1,410 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Common helper functions for working with the Microsoft tool chain. +""" + +import copy +import json +import os +import re +import subprocess +import sys +from contextlib import suppress +from pathlib import Path + +import SCons.Util +import SCons.Warnings + +class MSVCCacheInvalidWarning(SCons.Warnings.WarningOnByDefault): + pass + +# SCONS_MSCOMMON_DEBUG is internal-use so undocumented: +# set to '-' to print to console, else set to filename to log to +LOGFILE = os.environ.get('SCONS_MSCOMMON_DEBUG') +if LOGFILE: + import logging + + modulelist = ( + # root module and parent/root module + 'MSCommon', 'Tool', + # python library and below: correct iff scons does not have a lib folder + 'lib', + # scons modules + 'SCons', 'test', 'scons' + ) + + def get_relative_filename(filename, module_list): + if not filename: + return filename + for module in module_list: + try: + ind = filename.rindex(module) + return filename[ind:] + except ValueError: + pass + return filename + + class _Debug_Filter(logging.Filter): + # custom filter for module relative filename + def filter(self, record): + relfilename = get_relative_filename(record.pathname, modulelist) + relfilename = relfilename.replace('\\', '/') + record.relfilename = relfilename + return True + + # Log format looks like: + # 00109ms:MSCommon/vc.py:find_vc_pdir#447: VC found '14.3' [file] + # debug: 00109ms:MSCommon/vc.py:find_vc_pdir#447: VC found '14.3' [stdout] + log_format=( + '%(relativeCreated)05dms' + ':%(relfilename)s' + ':%(funcName)s' + '#%(lineno)s' + ': %(message)s' + ) + if LOGFILE == '-': + log_format = 'debug: ' + log_format + log_handler = logging.StreamHandler(sys.stdout) + else: + log_handler = logging.FileHandler(filename=LOGFILE) + log_formatter = logging.Formatter(log_format) + log_handler.setFormatter(log_formatter) + logger = logging.getLogger(name=__name__) + logger.setLevel(level=logging.DEBUG) + logger.addHandler(log_handler) + logger.addFilter(_Debug_Filter()) + debug = logger.debug +else: + def debug(x, *args): + return None + + +# SCONS_CACHE_MSVC_CONFIG is public, and is documented. +CONFIG_CACHE = os.environ.get('SCONS_CACHE_MSVC_CONFIG') +if CONFIG_CACHE in ('1', 'true', 'True'): + CONFIG_CACHE = os.path.join(os.path.expanduser('~'), 'scons_msvc_cache.json') + +# SCONS_CACHE_MSVC_FORCE_DEFAULTS is internal-use so undocumented. +CONFIG_CACHE_FORCE_DEFAULT_ARGUMENTS = False +if CONFIG_CACHE: + if os.environ.get('SCONS_CACHE_MSVC_FORCE_DEFAULTS') in ('1', 'true', 'True'): + CONFIG_CACHE_FORCE_DEFAULT_ARGUMENTS = True + +def read_script_env_cache(): + """ fetch cached msvc env vars if requested, else return empty dict """ + envcache = {} + if CONFIG_CACHE: + try: + p = Path(CONFIG_CACHE) + with p.open('r') as f: + # Convert the list of cache entry dictionaries read from + # json to the cache dictionary. Reconstruct the cache key + # tuple from the key list written to json. + envcache_list = json.load(f) + if isinstance(envcache_list, list): + envcache = {tuple(d['key']): d['data'] for d in envcache_list} + else: + # don't fail if incompatible format, just proceed without it + warn_msg = "Incompatible format for msvc cache file {}: file may be overwritten.".format( + repr(CONFIG_CACHE) + ) + SCons.Warnings.warn(MSVCCacheInvalidWarning, warn_msg) + debug(warn_msg) + except FileNotFoundError: + # don't fail if no cache file, just proceed without it + pass + return envcache + + +def write_script_env_cache(cache): + """ write out cache of msvc env vars if requested """ + if CONFIG_CACHE: + try: + p = Path(CONFIG_CACHE) + with p.open('w') as f: + # Convert the cache dictionary to a list of cache entry + # dictionaries. The cache key is converted from a tuple to + # a list for compatibility with json. + envcache_list = [{'key': list(key), 'data': data} for key, data in cache.items()] + json.dump(envcache_list, f, indent=2) + except TypeError: + # data can't serialize to json, don't leave partial file + with suppress(FileNotFoundError): + p.unlink() + except IOError: + # can't write the file, just skip + pass + + +_is_win64 = None + + +def is_win64(): + """Return true if running on windows 64 bits. + + Works whether python itself runs in 64 bits or 32 bits.""" + # Unfortunately, python does not provide a useful way to determine + # if the underlying Windows OS is 32-bit or 64-bit. Worse, whether + # the Python itself is 32-bit or 64-bit affects what it returns, + # so nothing in sys.* or os.* help. + + # Apparently the best solution is to use env vars that Windows + # sets. If PROCESSOR_ARCHITECTURE is not x86, then the python + # process is running in 64 bit mode (on a 64-bit OS, 64-bit + # hardware, obviously). + # If this python is 32-bit but the OS is 64, Windows will set + # ProgramW6432 and PROCESSOR_ARCHITEW6432 to non-null. + # (Checking for HKLM\Software\Wow6432Node in the registry doesn't + # work, because some 32-bit installers create it.) + global _is_win64 + if _is_win64 is None: + # I structured these tests to make it easy to add new ones or + # add exceptions in the future, because this is a bit fragile. + _is_win64 = False + if os.environ.get('PROCESSOR_ARCHITECTURE', 'x86') != 'x86': + _is_win64 = True + if os.environ.get('PROCESSOR_ARCHITEW6432'): + _is_win64 = True + if os.environ.get('ProgramW6432'): + _is_win64 = True + return _is_win64 + + +def read_reg(value, hkroot=SCons.Util.HKEY_LOCAL_MACHINE): + return SCons.Util.RegGetValue(hkroot, value)[0] + + +def has_reg(value): + """Return True if the given key exists in HKEY_LOCAL_MACHINE, False + otherwise.""" + try: + SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, value) + ret = True + except OSError: + ret = False + return ret + +# Functions for fetching environment variable settings from batch files. + + +def normalize_env(env, keys, force=False): + """Given a dictionary representing a shell environment, add the variables + from os.environ needed for the processing of .bat files; the keys are + controlled by the keys argument. + + It also makes sure the environment values are correctly encoded. + + If force=True, then all of the key values that exist are copied + into the returned dictionary. If force=false, values are only + copied if the key does not already exist in the copied dictionary. + + Note: the environment is copied.""" + normenv = {} + if env: + for k, v in env.items(): + normenv[k] = copy.deepcopy(v) + + for k in keys: + if k in os.environ and (force or k not in normenv): + normenv[k] = os.environ[k] + + # add some things to PATH to prevent problems: + # Shouldn't be necessary to add system32, since the default environment + # should include it, but keep this here to be safe (needed for reg.exe) + sys32_dir = os.path.join( + os.environ.get("SystemRoot", os.environ.get("windir", r"C:\Windows")), "System32" + ) + if sys32_dir not in normenv["PATH"]: + normenv["PATH"] = normenv["PATH"] + os.pathsep + sys32_dir + + # Without Wbem in PATH, vcvarsall.bat has a "'wmic' is not recognized" + # error starting with Visual Studio 2017, although the script still + # seems to work anyway. + sys32_wbem_dir = os.path.join(sys32_dir, 'Wbem') + if sys32_wbem_dir not in normenv['PATH']: + normenv['PATH'] = normenv['PATH'] + os.pathsep + sys32_wbem_dir + + # Without Powershell in PATH, an internal call to a telemetry + # function (starting with a VS2019 update) can fail + # Note can also set VSCMD_SKIP_SENDTELEMETRY to avoid this. + sys32_ps_dir = os.path.join(sys32_dir, r'WindowsPowerShell\v1.0') + if sys32_ps_dir not in normenv['PATH']: + normenv['PATH'] = normenv['PATH'] + os.pathsep + sys32_ps_dir + + debug("PATH: %s", normenv['PATH']) + return normenv + + +def get_output(vcbat, args=None, env=None): + """Parse the output of given bat file, with given args.""" + + if env is None: + # Create a blank environment, for use in launching the tools + env = SCons.Environment.Environment(tools=[]) + + # TODO: Hard-coded list of the variables that (may) need to be + # imported from os.environ[] for the chain of development batch + # files to execute correctly. One call to vcvars*.bat may + # end up running a dozen or more scripts, changes not only with + # each release but with what is installed at the time. We think + # in modern installations most are set along the way and don't + # need to be picked from the env, but include these for safety's sake. + # Any VSCMD variables definitely are picked from the env and + # control execution in interesting ways. + # Note these really should be unified - either controlled by vs.py, + # or synced with the the common_tools_var # settings in vs.py. + vs_vc_vars = [ + 'COMSPEC', # path to "shell" + 'OS', # name of OS family: Windows_NT or undefined (95/98/ME) + 'VS170COMNTOOLS', # path to common tools for given version + 'VS160COMNTOOLS', + 'VS150COMNTOOLS', + 'VS140COMNTOOLS', + 'VS120COMNTOOLS', + 'VS110COMNTOOLS', + 'VS100COMNTOOLS', + 'VS90COMNTOOLS', + 'VS80COMNTOOLS', + 'VS71COMNTOOLS', + 'VSCOMNTOOLS', + 'MSDevDir', + 'VSCMD_DEBUG', # enable logging and other debug aids + 'VSCMD_SKIP_SENDTELEMETRY', + 'windir', # windows directory (SystemRoot not available in 95/98/ME) + ] + env['ENV'] = normalize_env(env['ENV'], vs_vc_vars, force=False) + + if args: + debug("Calling '%s %s'", vcbat, args) + popen = SCons.Action._subproc(env, + '"%s" %s & set' % (vcbat, args), + stdin='devnull', + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + else: + debug("Calling '%s'", vcbat) + popen = SCons.Action._subproc(env, + '"%s" & set' % vcbat, + stdin='devnull', + stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + + # Use the .stdout and .stderr attributes directly because the + # .communicate() method uses the threading module on Windows + # and won't work under Pythons not built with threading. + with popen.stdout: + stdout = popen.stdout.read() + with popen.stderr: + stderr = popen.stderr.read() + + # Extra debug logic, uncomment if necessary + # debug('stdout:%s', stdout) + # debug('stderr:%s', stderr) + + # Ongoing problems getting non-corrupted text led to this + # changing to "oem" from "mbcs" - the scripts run presumably + # attached to a console, so some particular rules apply. + # Unfortunately, "oem" not defined in Python 3.5, so get another way + if sys.version_info.major == 3 and sys.version_info.minor < 6: + from ctypes import windll + + OEM = "cp{}".format(windll.kernel32.GetConsoleOutputCP()) + else: + OEM = "oem" + if stderr: + # TODO: find something better to do with stderr; + # this at least prevents errors from getting swallowed. + sys.stderr.write(stderr.decode(OEM)) + if popen.wait() != 0: + raise IOError(stderr.decode(OEM)) + + return stdout.decode(OEM) + + +KEEPLIST = ( + "INCLUDE", + "LIB", + "LIBPATH", + "PATH", + "VSCMD_ARG_app_plat", + "VCINSTALLDIR", # needed by clang -VS 2017 and newer + "VCToolsInstallDir", # needed by clang - VS 2015 and older +) + + +def parse_output(output, keep=KEEPLIST): + """ + Parse output from running visual c++/studios vcvarsall.bat and running set + To capture the values listed in keep + """ + + # dkeep is a dict associating key: path_list, where key is one item from + # keep, and path_list the associated list of paths + dkeep = {i: [] for i in keep} + + # rdk will keep the regex to match the .bat file output line starts + rdk = {} + for i in keep: + rdk[i] = re.compile('%s=(.*)' % i, re.I) + + def add_env(rmatch, key, dkeep=dkeep): + path_list = rmatch.group(1).split(os.pathsep) + for path in path_list: + # Do not add empty paths (when a var ends with ;) + if path: + # XXX: For some reason, VC98 .bat file adds "" around the PATH + # values, and it screws up the environment later, so we strip + # it. + path = path.strip('"') + dkeep[key].append(str(path)) + + for line in output.splitlines(): + for k, value in rdk.items(): + match = value.match(line) + if match: + add_env(match, k) + + return dkeep + +def get_pch_node(env, target, source): + """ + Get the actual PCH file node + """ + pch_subst = env.get('PCH', False) and env.subst('$PCH',target=target, source=source, conv=lambda x:x) + + if not pch_subst: + return "" + + if SCons.Util.is_String(pch_subst): + pch_subst = target[0].dir.File(pch_subst) + + return pch_subst + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/netframework.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/netframework.py new file mode 100644 index 000000000..98d923179 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/netframework.py @@ -0,0 +1,82 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +MS Compilers: .Net Framework support +""" + +import os +import re + +from .common import read_reg, debug + +# Original value recorded by dcournapeau +_FRAMEWORKDIR_HKEY_ROOT = r'Software\Microsoft\.NETFramework\InstallRoot' +# On SGK's system +_FRAMEWORKDIR_HKEY_ROOT = r'Software\Microsoft\Microsoft SDKs\.NETFramework\v2.0\InstallationFolder' + +def find_framework_root(): + # XXX: find it from environment (FrameworkDir) + try: + froot = read_reg(_FRAMEWORKDIR_HKEY_ROOT) + debug("Found framework install root in registry: %s", froot) + except OSError: + debug("Could not read reg key %s", _FRAMEWORKDIR_HKEY_ROOT) + return None + + if not os.path.exists(froot): + debug("%s not found on fs", froot) + return None + + return froot + +def query_versions(): + froot = find_framework_root() + if froot: + contents = os.listdir(froot) + + l = re.compile('v[0-9]+.*') + versions = [e for e in contents if l.match(e)] + + def versrt(a,b): + # since version numbers aren't really floats... + aa = a[1:] + bb = b[1:] + aal = aa.split('.') + bbl = bb.split('.') + # sequence comparison in python is lexicographical + # which is exactly what we want. + # Note we sort backwards so the highest version is first. + return (aal > bbl) - (aal < bbl) + + versions.sort(versrt) + else: + versions = [] + + return versions + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/sdk.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/sdk.py new file mode 100644 index 000000000..aa94f4d65 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/sdk.py @@ -0,0 +1,413 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +MS Compilers: detect the Platform/Windows SDK + +PSDK 2003 R1 is the earliest version detected. +""" + +import os + +import SCons.Errors +import SCons.Util + +from .common import debug, read_reg + +# SDK Checks. This is of course a mess as everything else on MS platforms. Here +# is what we do to detect the SDK: +# +# For Windows SDK >= 6.0: just look into the registry entries: +# HKLM\Software\Microsoft\Microsoft SDKs\Windows +# All the keys in there are the available versions. +# +# For Platform SDK before 6.0 (2003 server R1 and R2, etc...), there does not +# seem to be any sane registry key, so the precise location is hardcoded. +# +# For versions below 2003R1, it seems the PSDK is included with Visual Studio? +# +# Also, per the following: +# http://benjamin.smedbergs.us/blog/tag/atl/ +# VC++ Professional comes with the SDK, VC++ Express does not. + +# Location of the SDK (checked for 6.1 only) +_CURINSTALLED_SDK_HKEY_ROOT = \ + r"Software\Microsoft\Microsoft SDKs\Windows\CurrentInstallFolder" + + +class SDKDefinition: + """ + An abstract base class for trying to find installed SDK directories. + """ + def __init__(self, version, **kw): + self.version = version + self.__dict__.update(kw) + + def find_sdk_dir(self): + """Try to find the MS SDK from the registry. + + Return None if failed or the directory does not exist. + """ + if not SCons.Util.can_read_reg: + debug('find_sdk_dir(): can not read registry') + return None + + hkey = self.HKEY_FMT % self.hkey_data + debug('find_sdk_dir(): checking registry: %s', hkey) + + try: + sdk_dir = read_reg(hkey) + except OSError: + debug('find_sdk_dir(): no SDK registry key %s', hkey) + return None + + debug('find_sdk_dir(): Trying SDK Dir: %s', sdk_dir) + + if not os.path.exists(sdk_dir): + debug('find_sdk_dir(): %s not on file system', sdk_dir) + return None + + ftc = os.path.join(sdk_dir, self.sanity_check_file) + if not os.path.exists(ftc): + debug("find_sdk_dir(): sanity check %s not found", ftc) + return None + + return sdk_dir + + def get_sdk_dir(self): + """Return the MSSSDK given the version string.""" + try: + return self._sdk_dir + except AttributeError: + sdk_dir = self.find_sdk_dir() + self._sdk_dir = sdk_dir + return sdk_dir + + def get_sdk_vc_script(self,host_arch, target_arch): + """ Return the script to initialize the VC compiler installed by SDK + """ + + if host_arch == 'amd64' and target_arch == 'x86': + # No cross tools needed compiling 32 bits on 64 bit machine + host_arch=target_arch + + arch_string=target_arch + if host_arch != target_arch: + arch_string='%s_%s'%(host_arch,target_arch) + + debug( + "get_sdk_vc_script():arch_string:%s host_arch:%s target_arch:%s", + arch_string, + host_arch, + target_arch, + ) + file = self.vc_setup_scripts.get(arch_string, None) + debug("get_sdk_vc_script():file:%s", file) + return file + +class WindowsSDK(SDKDefinition): + """ + A subclass for trying to find installed Windows SDK directories. + """ + HKEY_FMT = r'Software\Microsoft\Microsoft SDKs\Windows\v%s\InstallationFolder' + def __init__(self, *args, **kw): + super().__init__(*args, **kw) + self.hkey_data = self.version + +class PlatformSDK(SDKDefinition): + """ + A subclass for trying to find installed Platform SDK directories. + """ + HKEY_FMT = r'Software\Microsoft\MicrosoftSDK\InstalledSDKS\%s\Install Dir' + def __init__(self, *args, **kw): + super().__init__(*args, **kw) + self.hkey_data = self.uuid + +# +# The list of VC initialization scripts installed by the SDK +# These should be tried if the vcvarsall.bat TARGET_ARCH fails +preSDK61VCSetupScripts = { 'x86' : r'bin\vcvars32.bat', + 'amd64' : r'bin\vcvarsamd64.bat', + 'x86_amd64': r'bin\vcvarsx86_amd64.bat', + 'x86_ia64' : r'bin\vcvarsx86_ia64.bat', + 'ia64' : r'bin\vcvarsia64.bat'} + +SDK61VCSetupScripts = {'x86' : r'bin\vcvars32.bat', + 'amd64' : r'bin\amd64\vcvarsamd64.bat', + 'x86_amd64': r'bin\x86_amd64\vcvarsx86_amd64.bat', + 'x86_ia64' : r'bin\x86_ia64\vcvarsx86_ia64.bat', + 'ia64' : r'bin\ia64\vcvarsia64.bat'} + +SDK70VCSetupScripts = { 'x86' : r'bin\vcvars32.bat', + 'amd64' : r'bin\vcvars64.bat', + 'x86_amd64': r'bin\vcvarsx86_amd64.bat', + 'x86_ia64' : r'bin\vcvarsx86_ia64.bat', + 'ia64' : r'bin\vcvarsia64.bat'} + +SDK100VCSetupScripts = {'x86' : r'bin\vcvars32.bat', + 'amd64' : r'bin\vcvars64.bat', + 'x86_amd64': r'bin\x86_amd64\vcvarsx86_amd64.bat', + 'x86_arm' : r'bin\x86_arm\vcvarsx86_arm.bat'} + + +# The list of support SDKs which we know how to detect. +# +# The first SDK found in the list is the one used by default if there +# are multiple SDKs installed. Barring good reasons to the contrary, +# this means we should list SDKs from most recent to oldest. +# +# If you update this list, update the documentation in Tool/mssdk.xml. +SupportedSDKList = [ + WindowsSDK('10.0A', + sanity_check_file=r'bin\SetEnv.Cmd', + include_subdir='include', + lib_subdir={ + 'x86' : ['lib'], + 'x86_64' : [r'lib\x64'], + 'ia64' : [r'lib\ia64'], + }, + vc_setup_scripts = SDK70VCSetupScripts, + ), + WindowsSDK('10.0', + sanity_check_file=r'bin\SetEnv.Cmd', + include_subdir='include', + lib_subdir={ + 'x86' : ['lib'], + 'x86_64' : [r'lib\x64'], + 'ia64' : [r'lib\ia64'], + }, + vc_setup_scripts = SDK70VCSetupScripts, + ), + WindowsSDK('7.1', + sanity_check_file=r'bin\SetEnv.Cmd', + include_subdir='include', + lib_subdir={ + 'x86' : ['lib'], + 'x86_64' : [r'lib\x64'], + 'ia64' : [r'lib\ia64'], + }, + vc_setup_scripts = SDK70VCSetupScripts, + ), + WindowsSDK('7.0A', + sanity_check_file=r'bin\SetEnv.Cmd', + include_subdir='include', + lib_subdir={ + 'x86' : ['lib'], + 'x86_64' : [r'lib\x64'], + 'ia64' : [r'lib\ia64'], + }, + vc_setup_scripts = SDK70VCSetupScripts, + ), + WindowsSDK('7.0', + sanity_check_file=r'bin\SetEnv.Cmd', + include_subdir='include', + lib_subdir={ + 'x86' : ['lib'], + 'x86_64' : [r'lib\x64'], + 'ia64' : [r'lib\ia64'], + }, + vc_setup_scripts = SDK70VCSetupScripts, + ), + WindowsSDK('6.1', + sanity_check_file=r'bin\SetEnv.Cmd', + include_subdir='include', + lib_subdir={ + 'x86' : ['lib'], + 'x86_64' : [r'lib\x64'], + 'ia64' : [r'lib\ia64'], + }, + vc_setup_scripts = SDK61VCSetupScripts, + ), + + WindowsSDK('6.0A', + sanity_check_file=r'include\windows.h', + include_subdir='include', + lib_subdir={ + 'x86' : ['lib'], + 'x86_64' : [r'lib\x64'], + 'ia64' : [r'lib\ia64'], + }, + vc_setup_scripts = preSDK61VCSetupScripts, + ), + + WindowsSDK('6.0', + sanity_check_file=r'bin\gacutil.exe', + include_subdir='include', + lib_subdir='lib', + vc_setup_scripts = preSDK61VCSetupScripts, + ), + + PlatformSDK('2003R2', + sanity_check_file=r'SetEnv.Cmd', + uuid="D2FF9F89-8AA2-4373-8A31-C838BF4DBBE1", + vc_setup_scripts = preSDK61VCSetupScripts, + ), + + PlatformSDK('2003R1', + sanity_check_file=r'SetEnv.Cmd', + uuid="8F9E5EF3-A9A5-491B-A889-C58EFFECE8B3", + vc_setup_scripts = preSDK61VCSetupScripts, + ), +] + +SupportedSDKMap = {} +for sdk in SupportedSDKList: + SupportedSDKMap[sdk.version] = sdk + + +# Finding installed SDKs isn't cheap, because it goes not only to the +# registry but also to the disk to sanity-check that there is, in fact, +# an SDK installed there and that the registry entry isn't just stale. +# Find this information once, when requested, and cache it. + +InstalledSDKList = None +InstalledSDKMap = None + +def get_installed_sdks(): + global InstalledSDKList + global InstalledSDKMap + debug('get_installed_sdks()') + if InstalledSDKList is None: + InstalledSDKList = [] + InstalledSDKMap = {} + for sdk in SupportedSDKList: + debug('trying to find SDK %s', sdk.version) + if sdk.get_sdk_dir(): + debug('found SDK %s', sdk.version) + InstalledSDKList.append(sdk) + InstalledSDKMap[sdk.version] = sdk + return InstalledSDKList + + +# We may be asked to update multiple construction environments with +# SDK information. When doing this, we check on-disk for whether +# the SDK has 'mfc' and 'atl' subdirectories. Since going to disk +# is expensive, cache results by directory. + +SDKEnvironmentUpdates = {} + +def set_sdk_by_directory(env, sdk_dir): + global SDKEnvironmentUpdates + debug('set_sdk_by_directory: Using dir:%s', sdk_dir) + try: + env_tuple_list = SDKEnvironmentUpdates[sdk_dir] + except KeyError: + env_tuple_list = [] + SDKEnvironmentUpdates[sdk_dir] = env_tuple_list + + include_path = os.path.join(sdk_dir, 'include') + mfc_path = os.path.join(include_path, 'mfc') + atl_path = os.path.join(include_path, 'atl') + + if os.path.exists(mfc_path): + env_tuple_list.append(('INCLUDE', mfc_path)) + if os.path.exists(atl_path): + env_tuple_list.append(('INCLUDE', atl_path)) + env_tuple_list.append(('INCLUDE', include_path)) + + env_tuple_list.append(('LIB', os.path.join(sdk_dir, 'lib'))) + env_tuple_list.append(('LIBPATH', os.path.join(sdk_dir, 'lib'))) + env_tuple_list.append(('PATH', os.path.join(sdk_dir, 'bin'))) + + for variable, directory in env_tuple_list: + env.PrependENVPath(variable, directory) + +def get_sdk_by_version(mssdk): + if mssdk not in SupportedSDKMap: + raise SCons.Errors.UserError("SDK version {} is not supported".format(repr(mssdk))) + get_installed_sdks() + return InstalledSDKMap.get(mssdk) + +def get_default_sdk(): + """Set up the default Platform/Windows SDK.""" + get_installed_sdks() + if not InstalledSDKList: + return None + return InstalledSDKList[0] + +def mssdk_setup_env(env): + debug('mssdk_setup_env()') + if 'MSSDK_DIR' in env: + sdk_dir = env['MSSDK_DIR'] + if sdk_dir is None: + return + sdk_dir = env.subst(sdk_dir) + debug('mssdk_setup_env: Using MSSDK_DIR:%s', sdk_dir) + elif 'MSSDK_VERSION' in env: + sdk_version = env['MSSDK_VERSION'] + if sdk_version is None: + msg = "SDK version is specified as None" + raise SCons.Errors.UserError(msg) + sdk_version = env.subst(sdk_version) + mssdk = get_sdk_by_version(sdk_version) + if mssdk is None: + msg = "SDK version %s is not installed" % sdk_version + raise SCons.Errors.UserError(msg) + sdk_dir = mssdk.get_sdk_dir() + debug('mssdk_setup_env: Using MSSDK_VERSION:%s', sdk_dir) + elif 'MSVS_VERSION' in env: + msvs_version = env['MSVS_VERSION'] + debug('mssdk_setup_env:Getting MSVS_VERSION from env:%s', msvs_version) + if msvs_version is None: + debug('mssdk_setup_env thinks msvs_version is None') + return + msvs_version = env.subst(msvs_version) + from . import vs + msvs = vs.get_vs_by_version(msvs_version) + debug('mssdk_setup_env:msvs is :%s', msvs) + if not msvs: + debug('mssdk_setup_env: no VS version detected, bailingout:%s', msvs) + return + sdk_version = msvs.sdk_version + debug('msvs.sdk_version is %s', sdk_version) + if not sdk_version: + return + mssdk = get_sdk_by_version(sdk_version) + if not mssdk: + mssdk = get_default_sdk() + if not mssdk: + return + sdk_dir = mssdk.get_sdk_dir() + debug('mssdk_setup_env: Using MSVS_VERSION:%s', sdk_dir) + else: + mssdk = get_default_sdk() + if not mssdk: + return + sdk_dir = mssdk.get_sdk_dir() + debug('mssdk_setup_env: not using any env values. sdk_dir:%s', sdk_dir) + + set_sdk_by_directory(env, sdk_dir) + + #print "No MSVS_VERSION: this is likely to be a bug" + +def mssdk_exists(version=None): + sdks = get_installed_sdks() + if version is None: + return len(sdks) > 0 + return version in sdks + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/vc.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/vc.py new file mode 100644 index 000000000..787194062 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/vc.py @@ -0,0 +1,1569 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +MS Compilers: Visual C/C++ detection and configuration. + +# TODO: +# * gather all the information from a single vswhere call instead +# of calling repeatedly (use json format?) +# * support passing/setting location for vswhere in env. +# * supported arch for versions: for old versions of batch file without +# argument, giving bogus argument cannot be detected, so we have to hardcode +# this here +# * print warning when msvc version specified but not found +# * find out why warning do not print +# * test on 64 bits XP + VS 2005 (and VS 6 if possible) +# * SDK +# * Assembly +""" + +import SCons.compat + +import subprocess +import os +import platform +from pathlib import Path +from string import digits as string_digits +from subprocess import PIPE +import re +from collections import ( + namedtuple, + OrderedDict, +) + +import SCons.Util +import SCons.Warnings +from SCons.Tool import find_program_path + +from . import common +from .common import CONFIG_CACHE, debug +from .sdk import get_installed_sdks + +from . import MSVC + +from .MSVC.Exceptions import ( + VisualCException, + MSVCUserError, + MSVCArgumentError, + MSVCToolsetVersionNotFound, +) + +class UnsupportedVersion(VisualCException): + pass + +class MSVCUnsupportedHostArch(VisualCException): + pass + +class MSVCUnsupportedTargetArch(VisualCException): + pass + +class MissingConfiguration(VisualCException): + pass + +class NoVersionFound(VisualCException): + pass + +class BatchFileExecutionError(VisualCException): + pass + +class MSVCScriptNotFound(MSVCUserError): + pass + +class MSVCUseSettingsError(MSVCUserError): + pass + + +# Dict to 'canonalize' the arch +_ARCH_TO_CANONICAL = { + "amd64" : "amd64", + "emt64" : "amd64", + "i386" : "x86", + "i486" : "x86", + "i586" : "x86", + "i686" : "x86", + "ia64" : "ia64", # deprecated + "itanium" : "ia64", # deprecated + "x86" : "x86", + "x86_64" : "amd64", + "arm" : "arm", + "arm64" : "arm64", + "aarch64" : "arm64", +} + +# The msvc batch files report errors via stdout. The following +# regular expression attempts to match known msvc error messages +# written to stdout. +re_script_output_error = re.compile( + r'^(' + r'|'.join([ + r'VSINSTALLDIR variable is not set', # 2002-2003 + r'The specified configuration type is missing', # 2005+ + r'Error in script usage', # 2005+ + r'ERROR\:', # 2005+ + r'\!ERROR\!', # 2015-2015 + r'\[ERROR\:', # 2017+ + r'\[ERROR\]', # 2017+ + r'Syntax\:', # 2017+ + ]) + r')' +) + +# Lists of compatible host/target combinations are derived from a set of defined +# constant data structures for each host architecture. The derived data structures +# implicitly handle the differences in full versions and express versions of visual +# studio. The host/target combination search lists are contructed in order of +# preference. The construction of the derived data structures is independent of actual +# visual studio installations. The host/target configurations are used in both the +# initial msvc detection and when finding a valid batch file for a given host/target +# combination. +# +# HostTargetConfig description: +# +# label: +# Name used for identification. +# +# host_all_hosts: +# Defined list of compatible architectures for each host architecture. +# +# host_all_targets: +# Defined list of target architectures for each host architecture. +# +# host_def_targets: +# Defined list of default target architectures for each host architecture. +# +# all_pairs: +# Derived list of all host/target combination tuples. +# +# host_target_map: +# Derived list of all compatible host/target combinations for each +# supported host/target combination. +# +# host_all_targets_map: +# Derived list of all compatible host/target combinations for each +# supported host. This is used in the initial check that cl.exe exists +# in the requisite visual studio vc host/target directory for a given host. +# +# host_def_targets_map: +# Derived list of default compatible host/target combinations for each +# supported host. This is used for a given host when the user does not +# request a target archicture. +# +# target_host_map: +# Derived list of compatible host/target combinations for each supported +# target/host combination. This is used for a given host and target when +# the user requests a target architecture. + +_HOST_TARGET_CONFIG_NT = namedtuple("HostTargetConfig", [ + # defined + "label", # name for debugging/output + "host_all_hosts", # host_all_hosts[host] -> host_list + "host_all_targets", # host_all_targets[host] -> target_list + "host_def_targets", # host_def_targets[host] -> target_list + # derived + "all_pairs", # host_target_list + "host_target_map", # host_target_map[host][target] -> host_target_list + "host_all_targets_map", # host_all_targets_map[host][target] -> host_target_list + "host_def_targets_map", # host_def_targets_map[host][target] -> host_target_list + "target_host_map", # target_host_map[target][host] -> host_target_list +]) + +def _host_target_config_factory(*, label, host_all_hosts, host_all_targets, host_def_targets): + + def _make_host_target_map(all_hosts, all_targets): + # host_target_map[host][target] -> host_target_list + host_target_map = {} + for host, host_list in all_hosts.items(): + host_target_map[host] = {} + for host_platform in host_list: + for target_platform in all_targets[host_platform]: + if target_platform not in host_target_map[host]: + host_target_map[host][target_platform] = [] + host_target_map[host][target_platform].append((host_platform, target_platform)) + return host_target_map + + def _make_host_all_targets_map(all_hosts, host_target_map, all_targets): + # host_all_target_map[host] -> host_target_list + # special host key '_all_' contains all (host,target) combinations + all = '_all_' + host_all_targets_map = {} + host_all_targets_map[all] = [] + for host, host_list in all_hosts.items(): + host_all_targets_map[host] = [] + for host_platform in host_list: + # all_targets[host_platform]: all targets for compatible host + for target in all_targets[host_platform]: + for host_target in host_target_map[host_platform][target]: + for host_key in (host, all): + if host_target not in host_all_targets_map[host_key]: + host_all_targets_map[host_key].append(host_target) + return host_all_targets_map + + def _make_host_def_targets_map(all_hosts, host_target_map, def_targets): + # host_def_targets_map[host] -> host_target_list + host_def_targets_map = {} + for host, host_list in all_hosts.items(): + host_def_targets_map[host] = [] + for host_platform in host_list: + # def_targets[host]: default targets for true host + for target in def_targets[host]: + for host_target in host_target_map[host_platform][target]: + if host_target not in host_def_targets_map[host]: + host_def_targets_map[host].append(host_target) + return host_def_targets_map + + def _make_target_host_map(all_hosts, host_all_targets_map): + # target_host_map[target][host] -> host_target_list + target_host_map = {} + for host_platform in all_hosts.keys(): + for host_target in host_all_targets_map[host_platform]: + _, target = host_target + if target not in target_host_map: + target_host_map[target] = {} + if host_platform not in target_host_map[target]: + target_host_map[target][host_platform] = [] + if host_target not in target_host_map[target][host_platform]: + target_host_map[target][host_platform].append(host_target) + return target_host_map + + host_target_map = _make_host_target_map(host_all_hosts, host_all_targets) + host_all_targets_map = _make_host_all_targets_map(host_all_hosts, host_target_map, host_all_targets) + host_def_targets_map = _make_host_def_targets_map(host_all_hosts, host_target_map, host_def_targets) + target_host_map = _make_target_host_map(host_all_hosts, host_all_targets_map) + + all_pairs = host_all_targets_map['_all_'] + del host_all_targets_map['_all_'] + + host_target_cfg = _HOST_TARGET_CONFIG_NT( + label = label, + host_all_hosts = dict(host_all_hosts), + host_all_targets = host_all_targets, + host_def_targets = host_def_targets, + all_pairs = all_pairs, + host_target_map = host_target_map, + host_all_targets_map = host_all_targets_map, + host_def_targets_map = host_def_targets_map, + target_host_map = target_host_map, + ) + + return host_target_cfg + +# 14.1 (VS2017) and later + +# Given a (host, target) tuple, return a tuple containing the batch file to +# look for and a tuple of path components to find cl.exe. We can't rely on returning +# an arg to use for vcvarsall.bat, because that script will run even if given +# a host/target pair that isn't installed. +# +# Starting with 14.1 (VS2017), the batch files are located in directory +# /VC/Auxiliary/Build. The batch file name is the first value of the +# stored tuple. +# +# The build tools are organized by host and target subdirectories under each toolset +# version directory. For example, /VC/Tools/MSVC/14.31.31103/bin/Hostx64/x64. +# The cl path fragment under the toolset version folder is the second value of +# the stored tuple. + +_GE2017_HOST_TARGET_BATCHFILE_CLPATHCOMPS = { + + ('amd64', 'amd64') : ('vcvars64.bat', ('bin', 'Hostx64', 'x64')), + ('amd64', 'x86') : ('vcvarsamd64_x86.bat', ('bin', 'Hostx64', 'x86')), + ('amd64', 'arm') : ('vcvarsamd64_arm.bat', ('bin', 'Hostx64', 'arm')), + ('amd64', 'arm64') : ('vcvarsamd64_arm64.bat', ('bin', 'Hostx64', 'arm64')), + + ('x86', 'amd64') : ('vcvarsx86_amd64.bat', ('bin', 'Hostx86', 'x64')), + ('x86', 'x86') : ('vcvars32.bat', ('bin', 'Hostx86', 'x86')), + ('x86', 'arm') : ('vcvarsx86_arm.bat', ('bin', 'Hostx86', 'arm')), + ('x86', 'arm64') : ('vcvarsx86_arm64.bat', ('bin', 'Hostx86', 'arm64')), + +} + +_GE2017_HOST_TARGET_CFG = _host_target_config_factory( + + label = 'GE2017', + + host_all_hosts = OrderedDict([ + ('amd64', ['amd64', 'x86']), + ('x86', ['x86']), + ('arm64', ['amd64', 'x86']), + ('arm', ['x86']), + ]), + + host_all_targets = { + 'amd64': ['amd64', 'x86', 'arm64', 'arm'], + 'x86': ['x86', 'amd64', 'arm', 'arm64'], + 'arm64': [], + 'arm': [], + }, + + host_def_targets = { + 'amd64': ['amd64', 'x86'], + 'x86': ['x86'], + 'arm64': ['arm64', 'arm'], + 'arm': ['arm'], + }, + +) + +# debug("_GE2017_HOST_TARGET_CFG: %s", _GE2017_HOST_TARGET_CFG) + +# 14.0 (VS2015) to 8.0 (VS2005) + +# Given a (host, target) tuple, return a tuple containing the argument for +# the batch file and a tuple of the path components to find cl.exe. +# +# In 14.0 (VS2015) and earlier, the original x86 tools are in the tools +# bin directory (i.e., /VC/bin). Any other tools are in subdirectory +# named for the the host/target pair or a single name if the host==target. + +_LE2015_HOST_TARGET_BATCHARG_CLPATHCOMPS = { + + ('amd64', 'amd64') : ('amd64', ('bin', 'amd64')), + ('amd64', 'x86') : ('amd64_x86', ('bin', 'amd64_x86')), + ('amd64', 'arm') : ('amd64_arm', ('bin', 'amd64_arm')), + + ('x86', 'amd64') : ('x86_amd64', ('bin', 'x86_amd64')), + ('x86', 'x86') : ('x86', ('bin', )), + ('x86', 'arm') : ('x86_arm', ('bin', 'x86_arm')), + ('x86', 'ia64') : ('x86_ia64', ('bin', 'x86_ia64')), + + ('arm', 'arm') : ('arm', ('bin', 'arm')), + ('ia64', 'ia64') : ('ia64', ('bin', 'ia64')), + +} + +_LE2015_HOST_TARGET_CFG = _host_target_config_factory( + + label = 'LE2015', + + host_all_hosts = OrderedDict([ + ('amd64', ['amd64', 'x86']), + ('x86', ['x86']), + ('arm', ['arm']), + ('ia64', ['ia64']), + ]), + + host_all_targets = { + 'amd64': ['amd64', 'x86', 'arm'], + 'x86': ['x86', 'amd64', 'arm', 'ia64'], + 'arm': ['arm'], + 'ia64': ['ia64'], + }, + + host_def_targets = { + 'amd64': ['amd64', 'x86'], + 'x86': ['x86'], + 'arm': ['arm'], + 'ia64': ['ia64'], + }, + +) + +# debug("_LE2015_HOST_TARGET_CFG: %s", _LE2015_HOST_TARGET_CFG) + +# 7.1 (VS2003) and earlier + +# For 7.1 (VS2003) and earlier, there are only x86 targets and the batch files +# take no arguments. + +_LE2003_HOST_TARGET_CFG = _host_target_config_factory( + + label = 'LE2003', + + host_all_hosts = OrderedDict([ + ('amd64', ['x86']), + ('x86', ['x86']), + ]), + + host_all_targets = { + 'amd64': ['x86'], + 'x86': ['x86'], + }, + + host_def_targets = { + 'amd64': ['x86'], + 'x86': ['x86'], + }, + +) + +# debug("_LE2003_HOST_TARGET_CFG: %s", _LE2003_HOST_TARGET_CFG) + +_CL_EXE_NAME = 'cl.exe' + +def get_msvc_version_numeric(msvc_version): + """Get the raw version numbers from a MSVC_VERSION string, so it + could be cast to float or other numeric values. For example, '14.0Exp' + would get converted to '14.0'. + + Args: + msvc_version: str + string representing the version number, could contain non + digit characters + + Returns: + str: the value converted to a numeric only string + + """ + return ''.join([x for x in msvc_version if x in string_digits + '.']) + +def get_host_platform(host_platform): + + host_platform = host_platform.lower() + + # Solaris returns i86pc for both 32 and 64 bit architectures + if host_platform == 'i86pc': + if platform.architecture()[0] == "64bit": + host_platform = "amd64" + else: + host_platform = "x86" + + try: + host =_ARCH_TO_CANONICAL[host_platform] + except KeyError: + msg = "Unrecognized host architecture %s" + raise MSVCUnsupportedHostArch(msg % repr(host_platform)) from None + + return host + +_native_host_platform = None + +def get_native_host_platform(): + global _native_host_platform + + if _native_host_platform is None: + + _native_host_platform = get_host_platform(platform.machine()) + + return _native_host_platform + +def get_host_target(env, msvc_version, all_host_targets=False): + + vernum = float(get_msvc_version_numeric(msvc_version)) + + if vernum > 14: + # 14.1 (VS2017) and later + host_target_cfg = _GE2017_HOST_TARGET_CFG + elif 14 >= vernum >= 8: + # 14.0 (VS2015) to 8.0 (VS2005) + host_target_cfg = _LE2015_HOST_TARGET_CFG + else: + # 7.1 (VS2003) and earlier + host_target_cfg = _LE2003_HOST_TARGET_CFG + + host_arch = env.get('HOST_ARCH') if env else None + debug("HOST_ARCH:%s", str(host_arch)) + + if host_arch: + host_platform = get_host_platform(host_arch) + else: + host_platform = get_native_host_platform() + + target_arch = env.get('TARGET_ARCH') if env else None + debug("TARGET_ARCH:%s", str(target_arch)) + + if target_arch: + + try: + target_platform = _ARCH_TO_CANONICAL[target_arch.lower()] + except KeyError: + all_archs = str(list(_ARCH_TO_CANONICAL.keys())) + raise MSVCUnsupportedTargetArch( + "Unrecognized target architecture %s\n\tValid architectures: %s" + % (repr(target_arch), all_archs) + ) from None + + target_host_map = host_target_cfg.target_host_map + + try: + host_target_list = target_host_map[target_platform][host_platform] + except KeyError: + host_target_list = [] + warn_msg = "unsupported host, target combination ({}, {}) for MSVC version {}".format( + repr(host_platform), repr(target_platform), msvc_version + ) + SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg) + debug(warn_msg) + + else: + + target_platform = None + + if all_host_targets: + host_targets_map = host_target_cfg.host_all_targets_map + else: + host_targets_map = host_target_cfg.host_def_targets_map + + try: + host_target_list = host_targets_map[host_platform] + except KeyError: + msg = "Unrecognized host architecture %s for version %s" + raise MSVCUnsupportedHostArch(msg % (repr(host_platform), msvc_version)) from None + + return host_platform, target_platform, host_target_list + +# If you update this, update SupportedVSList in Tool/MSCommon/vs.py, and the +# MSVC_VERSION documentation in Tool/msvc.xml. +_VCVER = [ + "14.3", + "14.2", + "14.1", "14.1Exp", + "14.0", "14.0Exp", + "12.0", "12.0Exp", + "11.0", "11.0Exp", + "10.0", "10.0Exp", + "9.0", "9.0Exp", + "8.0", "8.0Exp", + "7.1", + "7.0", + "6.0"] + +# if using vswhere, configure command line arguments to probe for installed VC editions +_VCVER_TO_VSWHERE_VER = { + '14.3': [ + ["-version", "[17.0, 18.0)"], # default: Enterprise, Professional, Community (order unpredictable?) + ["-version", "[17.0, 18.0)", "-products", "Microsoft.VisualStudio.Product.BuildTools"], # BuildTools + ], + '14.2': [ + ["-version", "[16.0, 17.0)"], # default: Enterprise, Professional, Community (order unpredictable?) + ["-version", "[16.0, 17.0)", "-products", "Microsoft.VisualStudio.Product.BuildTools"], # BuildTools + ], + '14.1': [ + ["-version", "[15.0, 16.0)"], # default: Enterprise, Professional, Community (order unpredictable?) + ["-version", "[15.0, 16.0)", "-products", "Microsoft.VisualStudio.Product.BuildTools"], # BuildTools + ], + '14.1Exp': [ + ["-version", "[15.0, 16.0)", "-products", "Microsoft.VisualStudio.Product.WDExpress"], # Express + ], +} + +_VCVER_TO_PRODUCT_DIR = { + '14.3': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'')], # not set by this version + '14.2': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'')], # not set by this version + '14.1': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'')], # not set by this version + '14.1Exp': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'')], # not set by this version + '14.0': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\14.0\Setup\VC\ProductDir')], + '14.0Exp': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VCExpress\14.0\Setup\VC\ProductDir')], + '12.0': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\12.0\Setup\VC\ProductDir'), + ], + '12.0Exp': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VCExpress\12.0\Setup\VC\ProductDir'), + ], + '11.0': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\11.0\Setup\VC\ProductDir'), + ], + '11.0Exp': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VCExpress\11.0\Setup\VC\ProductDir'), + ], + '10.0': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\10.0\Setup\VC\ProductDir'), + ], + '10.0Exp': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VCExpress\10.0\Setup\VC\ProductDir'), + ], + '9.0': [ + (SCons.Util.HKEY_CURRENT_USER, r'Microsoft\DevDiv\VCForPython\9.0\installdir',), + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\9.0\Setup\VC\ProductDir',), + ], + '9.0Exp': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VCExpress\9.0\Setup\VC\ProductDir'), + ], + '8.0': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\8.0\Setup\VC\ProductDir'), + ], + '8.0Exp': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VCExpress\8.0\Setup\VC\ProductDir'), + ], + '7.1': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\7.1\Setup\VC\ProductDir'), + ], + '7.0': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\7.0\Setup\VC\ProductDir'), + ], + '6.0': [ + (SCons.Util.HKEY_LOCAL_MACHINE, r'Microsoft\VisualStudio\6.0\Setup\Microsoft Visual C++\ProductDir'), + ] +} + + +def msvc_version_to_maj_min(msvc_version): + msvc_version_numeric = get_msvc_version_numeric(msvc_version) + + t = msvc_version_numeric.split(".") + if not len(t) == 2: + raise ValueError("Unrecognized version %s (%s)" % (msvc_version,msvc_version_numeric)) + try: + maj = int(t[0]) + min = int(t[1]) + return maj, min + except ValueError: + raise ValueError("Unrecognized version %s (%s)" % (msvc_version,msvc_version_numeric)) from None + + +VSWHERE_PATHS = [os.path.join(p,'vswhere.exe') for p in [ + os.path.expandvars(r"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer"), + os.path.expandvars(r"%ProgramFiles%\Microsoft Visual Studio\Installer"), + os.path.expandvars(r"%ChocolateyInstall%\bin"), +]] + +def msvc_find_vswhere(): + """ Find the location of vswhere """ + # For bug 3333: support default location of vswhere for both + # 64 and 32 bit windows installs. + # For bug 3542: also accommodate not being on C: drive. + # NB: this gets called from testsuite on non-Windows platforms. + # Whether that makes sense or not, don't break it for those. + vswhere_path = None + for pf in VSWHERE_PATHS: + if os.path.exists(pf): + vswhere_path = pf + break + + return vswhere_path + +def find_vc_pdir_vswhere(msvc_version, env=None): + """ Find the MSVC product directory using the vswhere program. + + Args: + msvc_version: MSVC version to search for + env: optional to look up VSWHERE variable + + Returns: + MSVC install dir or None + + Raises: + UnsupportedVersion: if the version is not known by this file + + """ + try: + vswhere_version = _VCVER_TO_VSWHERE_VER[msvc_version] + except KeyError: + debug("Unknown version of MSVC: %s", msvc_version) + raise UnsupportedVersion("Unknown version %s" % msvc_version) from None + + if env is None or not env.get('VSWHERE'): + vswhere_path = msvc_find_vswhere() + else: + vswhere_path = env.subst('$VSWHERE') + + if vswhere_path is None: + return None + + debug('VSWHERE: %s', vswhere_path) + for vswhere_version_args in vswhere_version: + + vswhere_cmd = [vswhere_path] + vswhere_version_args + ["-property", "installationPath"] + + debug("running: %s", vswhere_cmd) + + # TODO: Python 3.7 + # cp = subprocess.run(vswhere_cmd, capture_output=True, check=True) # 3.7+ only + cp = subprocess.run(vswhere_cmd, stdout=PIPE, stderr=PIPE, check=True) + + if cp.stdout: + # vswhere could return multiple lines, e.g. if Build Tools + # and {Community,Professional,Enterprise} are both installed. + # We could define a way to pick the one we prefer, but since + # this data is currently only used to make a check for existence, + # returning the first hit should be good enough. + lines = cp.stdout.decode("mbcs").splitlines() + return os.path.join(lines[0], 'VC') + else: + # We found vswhere, but no install info available for this version + pass + + return None + + +def find_vc_pdir(env, msvc_version): + """Find the MSVC product directory for the given version. + + Tries to look up the path using a registry key from the table + _VCVER_TO_PRODUCT_DIR; if there is no key, calls find_vc_pdir_wshere + for help instead. + + Args: + msvc_version: str + msvc version (major.minor, e.g. 10.0) + + Returns: + str: Path found in registry, or None + + Raises: + UnsupportedVersion: if the version is not known by this file. + MissingConfiguration: found version but the directory is missing. + + Both exceptions inherit from VisualCException. + + """ + root = 'Software\\' + try: + hkeys = _VCVER_TO_PRODUCT_DIR[msvc_version] + except KeyError: + debug("Unknown version of MSVC: %s", msvc_version) + raise UnsupportedVersion("Unknown version %s" % msvc_version) from None + + for hkroot, key in hkeys: + try: + comps = None + if not key: + comps = find_vc_pdir_vswhere(msvc_version, env) + if not comps: + debug('no VC found for version %s', repr(msvc_version)) + raise OSError + debug('VC found: %s', repr(msvc_version)) + return comps + else: + if common.is_win64(): + try: + # ordinarily at win64, try Wow6432Node first. + comps = common.read_reg(root + 'Wow6432Node\\' + key, hkroot) + except OSError: + # at Microsoft Visual Studio for Python 2.7, value is not in Wow6432Node + pass + if not comps: + # not Win64, or Microsoft Visual Studio for Python 2.7 + comps = common.read_reg(root + key, hkroot) + except OSError: + debug('no VC registry key %s', repr(key)) + else: + if msvc_version == '9.0' and key.lower().endswith('\\vcforpython\\9.0\\installdir'): + # Visual C++ for Python registry key is installdir (root) not productdir (vc) + comps = os.path.join(comps, 'VC') + debug('found VC in registry: %s', comps) + if os.path.exists(comps): + return comps + else: + debug('reg says dir is %s, but it does not exist. (ignoring)', comps) + raise MissingConfiguration("registry dir {} not found on the filesystem".format(comps)) + return None + +def find_batch_file(env, msvc_version, host_arch, target_arch): + """ + Find the location of the batch script which should set up the compiler + for any TARGET_ARCH whose compilers were installed by Visual Studio/VCExpress + + In newer (2017+) compilers, make use of the fact there are vcvars + scripts named with a host_target pair that calls vcvarsall.bat properly, + so use that and return an empty argument. + """ + pdir = find_vc_pdir(env, msvc_version) + if pdir is None: + raise NoVersionFound("No version of Visual Studio found") + debug('looking in %s', pdir) + + # filter out e.g. "Exp" from the version name + msvc_ver_numeric = get_msvc_version_numeric(msvc_version) + vernum = float(msvc_ver_numeric) + + arg = '' + vcdir = None + + if vernum > 14: + # 14.1 (VS2017) and later + batfiledir = os.path.join(pdir, "Auxiliary", "Build") + batfile, _ = _GE2017_HOST_TARGET_BATCHFILE_CLPATHCOMPS[(host_arch, target_arch)] + batfilename = os.path.join(batfiledir, batfile) + vcdir = pdir + elif 14 >= vernum >= 8: + # 14.0 (VS2015) to 8.0 (VS2005) + arg, _ = _LE2015_HOST_TARGET_BATCHARG_CLPATHCOMPS[(host_arch, target_arch)] + batfilename = os.path.join(pdir, "vcvarsall.bat") + if msvc_version == '9.0' and not os.path.exists(batfilename): + # Visual C++ for Python batch file is in installdir (root) not productdir (vc) + batfilename = os.path.normpath(os.path.join(pdir, os.pardir, "vcvarsall.bat")) + else: + # 7.1 (VS2003) and earlier + pdir = os.path.join(pdir, "Bin") + batfilename = os.path.join(pdir, "vcvars32.bat") + + if not os.path.exists(batfilename): + debug("Not found: %s", batfilename) + batfilename = None + + installed_sdks = get_installed_sdks() + for _sdk in installed_sdks: + sdk_bat_file = _sdk.get_sdk_vc_script(host_arch, target_arch) + if not sdk_bat_file: + debug("batch file not found:%s", _sdk) + else: + sdk_bat_file_path = os.path.join(pdir, sdk_bat_file) + if os.path.exists(sdk_bat_file_path): + debug('sdk_bat_file_path:%s', sdk_bat_file_path) + return batfilename, arg, vcdir, sdk_bat_file_path + + return batfilename, arg, vcdir, None + +__INSTALLED_VCS_RUN = None +_VC_TOOLS_VERSION_FILE_PATH = ['Auxiliary', 'Build', 'Microsoft.VCToolsVersion.default.txt'] +_VC_TOOLS_VERSION_FILE = os.sep.join(_VC_TOOLS_VERSION_FILE_PATH) + +def _check_cl_exists_in_vc_dir(env, vc_dir, msvc_version): + """Return status of finding a cl.exe to use. + + Locates cl in the vc_dir depending on TARGET_ARCH, HOST_ARCH and the + msvc version. TARGET_ARCH and HOST_ARCH can be extracted from the + passed env, unless the env is None, in which case the native platform is + assumed for the host and all associated targets. + + Args: + env: Environment + a construction environment, usually if this is passed its + because there is a desired TARGET_ARCH to be used when searching + for a cl.exe + vc_dir: str + the path to the VC dir in the MSVC installation + msvc_version: str + msvc version (major.minor, e.g. 10.0) + + Returns: + bool: + + """ + + # Find the host, target, and all candidate (host, target) platform combinations: + platforms = get_host_target(env, msvc_version, all_host_targets=True) + debug("host_platform %s, target_platform %s host_target_list %s", *platforms) + host_platform, target_platform, host_target_list = platforms + + vernum = float(get_msvc_version_numeric(msvc_version)) + + # make sure the cl.exe exists meaning the tool is installed + if vernum > 14: + # 14.1 (VS2017) and later + # 2017 and newer allowed multiple versions of the VC toolset to be + # installed at the same time. This changes the layout. + # Just get the default tool version for now + # TODO: support setting a specific minor VC version + default_toolset_file = os.path.join(vc_dir, _VC_TOOLS_VERSION_FILE) + try: + with open(default_toolset_file) as f: + vc_specific_version = f.readlines()[0].strip() + except IOError: + debug('failed to read %s', default_toolset_file) + return False + except IndexError: + debug('failed to find MSVC version in %s', default_toolset_file) + return False + + for host_platform, target_platform in host_target_list: + + debug('host platform %s, target platform %s for version %s', host_platform, target_platform, msvc_version) + + batchfile_clpathcomps = _GE2017_HOST_TARGET_BATCHFILE_CLPATHCOMPS.get((host_platform, target_platform), None) + if batchfile_clpathcomps is None: + debug('unsupported host/target platform combo: (%s,%s)', host_platform, target_platform) + continue + + _, cl_path_comps = batchfile_clpathcomps + cl_path = os.path.join(vc_dir, 'Tools', 'MSVC', vc_specific_version, *cl_path_comps, _CL_EXE_NAME) + debug('checking for %s at %s', _CL_EXE_NAME, cl_path) + + if os.path.exists(cl_path): + debug('found %s!', _CL_EXE_NAME) + return True + + elif 14 >= vernum >= 8: + # 14.0 (VS2015) to 8.0 (VS2005) + + for host_platform, target_platform in host_target_list: + + debug('host platform %s, target platform %s for version %s', host_platform, target_platform, msvc_version) + + batcharg_clpathcomps = _LE2015_HOST_TARGET_BATCHARG_CLPATHCOMPS.get((host_platform, target_platform), None) + if batcharg_clpathcomps is None: + debug('unsupported host/target platform combo: (%s,%s)', host_platform, target_platform) + continue + + _, cl_path_comps = batcharg_clpathcomps + cl_path = os.path.join(vc_dir, *cl_path_comps, _CL_EXE_NAME) + debug('checking for %s at %s', _CL_EXE_NAME, cl_path) + + if os.path.exists(cl_path): + debug('found %s', _CL_EXE_NAME) + return True + + elif 8 > vernum >= 6: + # 7.1 (VS2003) to 6.0 (VS6) + + # quick check for vc_dir/bin and vc_dir/ before walk + # need to check root as the walk only considers subdirectories + for cl_dir in ('bin', ''): + cl_path = os.path.join(vc_dir, cl_dir, _CL_EXE_NAME) + if os.path.exists(cl_path): + debug('%s found %s', _CL_EXE_NAME, cl_path) + return True + # not in bin or root: must be in a subdirectory + for cl_root, cl_dirs, _ in os.walk(vc_dir): + for cl_dir in cl_dirs: + cl_path = os.path.join(cl_root, cl_dir, _CL_EXE_NAME) + if os.path.exists(cl_path): + debug('%s found %s', _CL_EXE_NAME, cl_path) + return True + return False + + else: + # version not support return false + debug('unsupported MSVC version: %s', str(vernum)) + + return False + +def get_installed_vcs(env=None): + global __INSTALLED_VCS_RUN + + if __INSTALLED_VCS_RUN is not None: + return __INSTALLED_VCS_RUN + + installed_versions = [] + + for ver in _VCVER: + debug('trying to find VC %s', ver) + try: + VC_DIR = find_vc_pdir(env, ver) + if VC_DIR: + debug('found VC %s', ver) + if _check_cl_exists_in_vc_dir(env, VC_DIR, ver): + installed_versions.append(ver) + else: + debug('no compiler found %s', ver) + else: + debug('return None for ver %s', ver) + except (MSVCUnsupportedTargetArch, MSVCUnsupportedHostArch): + # Allow this exception to propagate further as it should cause + # SCons to exit with an error code + raise + except VisualCException as e: + debug('did not find VC %s: caught exception %s', ver, str(e)) + + __INSTALLED_VCS_RUN = installed_versions + return __INSTALLED_VCS_RUN + +def reset_installed_vcs(): + """Make it try again to find VC. This is just for the tests.""" + global __INSTALLED_VCS_RUN + __INSTALLED_VCS_RUN = None + MSVC._reset() + +def msvc_default_version(env=None): + """Get default msvc version.""" + vcs = get_installed_vcs(env) + msvc_version = vcs[0] if vcs else None + debug('msvc_version=%s', repr(msvc_version)) + return msvc_version + +def get_installed_vcs_components(env=None): + """Test suite convenience function: return list of installed msvc version component tuples""" + vcs = get_installed_vcs(env) + msvc_version_component_defs = [MSVC.Util.msvc_version_components(vcver) for vcver in vcs] + return msvc_version_component_defs + +# Running these batch files isn't cheap: most of the time spent in +# msvs.generate() is due to vcvars*.bat. In a build that uses "tools='msvs'" +# in multiple environments, for example: +# env1 = Environment(tools='msvs') +# env2 = Environment(tools='msvs') +# we can greatly improve the speed of the second and subsequent Environment +# (or Clone) calls by memoizing the environment variables set by vcvars*.bat. +# +# Updated: by 2018, vcvarsall.bat had gotten so expensive (vs2017 era) +# it was breaking CI builds because the test suite starts scons so many +# times and the existing memo logic only helped with repeated calls +# within the same scons run. Windows builds on the CI system were split +# into chunks to get around single-build time limits. +# With VS2019 it got even slower and an optional persistent cache file +# was introduced. The cache now also stores only the parsed vars, +# not the entire output of running the batch file - saves a bit +# of time not parsing every time. + +script_env_cache = None + +def script_env(env, script, args=None): + global script_env_cache + + if script_env_cache is None: + script_env_cache = common.read_script_env_cache() + cache_key = (script, args if args else None) + cache_data = script_env_cache.get(cache_key, None) + + # Brief sanity check: if we got a value for the key, + # see if it has a VCToolsInstallDir entry that is not empty. + # If so, and that path does not exist, invalidate the entry. + # If empty, this is an old compiler, just leave it alone. + if cache_data is not None: + try: + toolsdir = cache_data["VCToolsInstallDir"] + except KeyError: + # we write this value, so should not happen + pass + else: + if toolsdir: + toolpath = Path(toolsdir[0]) + if not toolpath.exists(): + cache_data = None + + if cache_data is None: + stdout = common.get_output(script, args) + cache_data = common.parse_output(stdout) + + # debug(stdout) + olines = stdout.splitlines() + + # process stdout: batch file errors (not necessarily first line) + script_errlog = [] + for line in olines: + if re_script_output_error.match(line): + if not script_errlog: + script_errlog.append('vc script errors detected:') + script_errlog.append(line) + + if script_errlog: + script_errmsg = '\n'.join(script_errlog) + + have_cl = False + if cache_data and 'PATH' in cache_data: + for p in cache_data['PATH']: + if os.path.exists(os.path.join(p, _CL_EXE_NAME)): + have_cl = True + break + + debug( + 'script=%s args=%s have_cl=%s, errors=%s', + repr(script), repr(args), repr(have_cl), script_errmsg + ) + MSVC.Policy.msvc_scripterror_handler(env, script_errmsg) + + if not have_cl: + # detected errors, cl.exe not on path + raise BatchFileExecutionError(script_errmsg) + + # once we updated cache, give a chance to write out if user wanted + script_env_cache[cache_key] = cache_data + common.write_script_env_cache(script_env_cache) + + return cache_data + +def get_default_version(env): + msvc_version = env.get('MSVC_VERSION') + msvs_version = env.get('MSVS_VERSION') + debug('msvc_version:%s msvs_version:%s', msvc_version, msvs_version) + + if msvs_version and not msvc_version: + SCons.Warnings.warn( + SCons.Warnings.DeprecatedWarning, + "MSVS_VERSION is deprecated: please use MSVC_VERSION instead ") + return msvs_version + elif msvc_version and msvs_version: + if not msvc_version == msvs_version: + SCons.Warnings.warn( + SCons.Warnings.VisualVersionMismatch, + "Requested msvc version (%s) and msvs version (%s) do " + "not match: please use MSVC_VERSION only to request a " + "visual studio version, MSVS_VERSION is deprecated" + % (msvc_version, msvs_version)) + return msvs_version + + if not msvc_version: + msvc_version = msvc_default_version(env) + if not msvc_version: + #SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, msg) + debug('No installed VCs') + return None + debug('using default installed MSVC version %s', repr(msvc_version)) + else: + debug('using specified MSVC version %s', repr(msvc_version)) + + return msvc_version + +def msvc_setup_env_once(env, tool=None): + try: + has_run = env["MSVC_SETUP_RUN"] + except KeyError: + has_run = False + + if not has_run: + MSVC.SetupEnvDefault.register_setup(env, msvc_exists) + msvc_setup_env(env) + env["MSVC_SETUP_RUN"] = True + + req_tools = MSVC.SetupEnvDefault.register_iserror(env, tool, msvc_exists) + if req_tools: + msg = "No versions of the MSVC compiler were found.\n" \ + " Visual Studio C/C++ compilers may not be set correctly.\n" \ + " Requested tool(s) are: {}".format(req_tools) + MSVC.Policy.msvc_notfound_handler(env, msg) + +def msvc_find_valid_batch_script(env, version): + """Find and execute appropriate batch script to set up build env. + + The MSVC build environment depends heavily on having the shell + environment set. SCons does not inherit that, and does not count + on that being set up correctly anyway, so it tries to find the right + MSVC batch script, or the right arguments to the generic batch script + vcvarsall.bat, and run that, so we have a valid environment to build in. + There are dragons here: the batch scripts don't fail (see comments + elsewhere), they just leave you with a bad setup, so try hard to + get it right. + """ + + # Find the host, target, and all candidate (host, target) platform combinations: + platforms = get_host_target(env, version) + debug("host_platform %s, target_platform %s host_target_list %s", *platforms) + host_platform, target_platform, host_target_list = platforms + + d = None + version_installed = False + for host_arch, target_arch, in host_target_list: + # Set to current arch. + env['TARGET_ARCH'] = target_arch + arg = '' + + # Try to locate a batch file for this host/target platform combo + try: + (vc_script, arg, vc_dir, sdk_script) = find_batch_file(env, version, host_arch, target_arch) + debug('vc_script:%s vc_script_arg:%s sdk_script:%s', vc_script, arg, sdk_script) + version_installed = True + except VisualCException as e: + msg = str(e) + debug('Caught exception while looking for batch file (%s)', msg) + version_installed = False + continue + + # Try to use the located batch file for this host/target platform combo + debug('use_script 2 %s, args:%s', repr(vc_script), arg) + found = None + if vc_script: + arg = MSVC.ScriptArguments.msvc_script_arguments(env, version, vc_dir, arg) + try: + d = script_env(env, vc_script, args=arg) + found = vc_script + except BatchFileExecutionError as e: + debug('use_script 3: failed running VC script %s: %s: Error:%s', repr(vc_script), arg, e) + vc_script=None + continue + if not vc_script and sdk_script: + debug('use_script 4: trying sdk script: %s', sdk_script) + try: + d = script_env(env, sdk_script) + found = sdk_script + except BatchFileExecutionError as e: + debug('use_script 5: failed running SDK script %s: Error:%s', repr(sdk_script), e) + continue + elif not vc_script and not sdk_script: + debug('use_script 6: Neither VC script nor SDK script found') + continue + + debug("Found a working script/target: %s/%s", repr(found), arg) + break # We've found a working target_platform, so stop looking + + # If we cannot find a viable installed compiler, reset the TARGET_ARCH + # To it's initial value + if not d: + env['TARGET_ARCH'] = target_platform + + if version_installed: + msg = "MSVC version '{}' working host/target script was not found.\n" \ + " Host = '{}', Target = '{}'\n" \ + " Visual Studio C/C++ compilers may not be set correctly".format( + version, host_platform, target_platform + ) + else: + installed_vcs = get_installed_vcs(env) + if installed_vcs: + msg = "MSVC version '{}' was not found.\n" \ + " Visual Studio C/C++ compilers may not be set correctly.\n" \ + " Installed versions are: {}".format(version, installed_vcs) + else: + msg = "MSVC version '{}' was not found.\n" \ + " No versions of the MSVC compiler were found.\n" \ + " Visual Studio C/C++ compilers may not be set correctly".format(version) + + MSVC.Policy.msvc_notfound_handler(env, msg) + + return d + +_UNDEFINED = object() + +def get_use_script_use_settings(env): + + # use_script use_settings return values action + # value ignored (value, None) use script or bypass detection + # undefined value not None (False, value) use dictionary + # undefined undefined/None (True, None) msvc detection + + # None (documentation) or evaluates False (code): bypass detection + # need to distinguish between undefined and None + use_script = env.get('MSVC_USE_SCRIPT', _UNDEFINED) + + if use_script != _UNDEFINED: + # use_script defined, use_settings ignored (not type checked) + return use_script, None + + # undefined or None: use_settings ignored + use_settings = env.get('MSVC_USE_SETTINGS', None) + + if use_settings is not None: + # use script undefined, use_settings defined and not None (type checked) + return False, use_settings + + # use script undefined, use_settings undefined or None + return True, None + +def msvc_setup_env(env): + debug('called') + version = get_default_version(env) + if version is None: + if not msvc_setup_env_user(env): + MSVC.SetupEnvDefault.set_nodefault() + return None + + # XXX: we set-up both MSVS version for backward + # compatibility with the msvs tool + env['MSVC_VERSION'] = version + env['MSVS_VERSION'] = version + env['MSVS'] = {} + + use_script, use_settings = get_use_script_use_settings(env) + if SCons.Util.is_String(use_script): + use_script = use_script.strip() + if not os.path.exists(use_script): + raise MSVCScriptNotFound('Script specified by MSVC_USE_SCRIPT not found: "{}"'.format(use_script)) + args = env.subst('$MSVC_USE_SCRIPT_ARGS') + debug('use_script 1 %s %s', repr(use_script), repr(args)) + d = script_env(env, use_script, args) + elif use_script: + d = msvc_find_valid_batch_script(env,version) + debug('use_script 2 %s', d) + if not d: + return d + elif use_settings is not None: + if not SCons.Util.is_Dict(use_settings): + error_msg = 'MSVC_USE_SETTINGS type error: expected a dictionary, found {}'.format(type(use_settings).__name__) + raise MSVCUseSettingsError(error_msg) + d = use_settings + debug('use_settings %s', d) + else: + debug('MSVC_USE_SCRIPT set to False') + warn_msg = "MSVC_USE_SCRIPT set to False, assuming environment " \ + "set correctly." + SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg) + return None + + for k, v in d.items(): + env.PrependENVPath(k, v, delete_existing=True) + debug("env['ENV']['%s'] = %s", k, env['ENV'][k]) + + # final check to issue a warning if the compiler is not present + if not find_program_path(env, 'cl'): + debug("did not find %s", _CL_EXE_NAME) + if CONFIG_CACHE: + propose = "SCONS_CACHE_MSVC_CONFIG caching enabled, remove cache file {} if out of date.".format(CONFIG_CACHE) + else: + propose = "It may need to be installed separately with Visual Studio." + warn_msg = "Could not find MSVC compiler 'cl'. {}".format(propose) + SCons.Warnings.warn(SCons.Warnings.VisualCMissingWarning, warn_msg) + +def msvc_exists(env=None, version=None): + vcs = get_installed_vcs(env) + if version is None: + rval = len(vcs) > 0 + else: + rval = version in vcs + if not rval: + debug('version=%s, return=%s', repr(version), rval) + return rval + +def msvc_setup_env_user(env=None): + rval = False + if env: + + # Intent is to use msvc tools: + # MSVC_VERSION: defined and evaluates True + # MSVS_VERSION: defined and evaluates True + # MSVC_USE_SCRIPT: defined and (is string or evaluates False) + # MSVC_USE_SETTINGS: defined and is not None + + # defined and is True + for key in ['MSVC_VERSION', 'MSVS_VERSION']: + if key in env and env[key]: + rval = True + debug('key=%s, return=%s', repr(key), rval) + return rval + + # defined and (is string or is False) + for key in ['MSVC_USE_SCRIPT']: + if key in env and (SCons.Util.is_String(env[key]) or not env[key]): + rval = True + debug('key=%s, return=%s', repr(key), rval) + return rval + + # defined and is not None + for key in ['MSVC_USE_SETTINGS']: + if key in env and env[key] is not None: + rval = True + debug('key=%s, return=%s', repr(key), rval) + return rval + + debug('return=%s', rval) + return rval + +def msvc_setup_env_tool(env=None, version=None, tool=None): + MSVC.SetupEnvDefault.register_tool(env, tool, msvc_exists) + rval = False + if not rval and msvc_exists(env, version): + rval = True + if not rval and msvc_setup_env_user(env): + rval = True + return rval + +def msvc_sdk_versions(version=None, msvc_uwp_app=False): + debug('version=%s, msvc_uwp_app=%s', repr(version), repr(msvc_uwp_app)) + + rval = [] + + if not version: + version = msvc_default_version() + + if not version: + debug('no msvc versions detected') + return rval + + version_def = MSVC.Util.msvc_extended_version_components(version) + if not version_def: + msg = 'Unsupported version {}'.format(repr(version)) + raise MSVCArgumentError(msg) + + rval = MSVC.WinSDK.get_msvc_sdk_version_list(version, msvc_uwp_app) + return rval + +def msvc_toolset_versions(msvc_version=None, full=True, sxs=False): + debug('msvc_version=%s, full=%s, sxs=%s', repr(msvc_version), repr(full), repr(sxs)) + + env = None + rval = [] + + if not msvc_version: + msvc_version = msvc_default_version() + + if not msvc_version: + debug('no msvc versions detected') + return rval + + if msvc_version not in _VCVER: + msg = 'Unsupported msvc version {}'.format(repr(msvc_version)) + raise MSVCArgumentError(msg) + + vc_dir = find_vc_pdir(env, msvc_version) + if not vc_dir: + debug('VC folder not found for version %s', repr(msvc_version)) + return rval + + rval = MSVC.ScriptArguments._msvc_toolset_versions_internal(msvc_version, vc_dir, full=full, sxs=sxs) + return rval + +def msvc_toolset_versions_spectre(msvc_version=None): + debug('msvc_version=%s', repr(msvc_version)) + + env = None + rval = [] + + if not msvc_version: + msvc_version = msvc_default_version() + + if not msvc_version: + debug('no msvc versions detected') + return rval + + if msvc_version not in _VCVER: + msg = 'Unsupported msvc version {}'.format(repr(msvc_version)) + raise MSVCArgumentError(msg) + + vc_dir = find_vc_pdir(env, msvc_version) + if not vc_dir: + debug('VC folder not found for version %s', repr(msvc_version)) + return rval + + rval = MSVC.ScriptArguments._msvc_toolset_versions_spectre_internal(msvc_version, vc_dir) + return rval + +def msvc_query_version_toolset(version=None, prefer_newest=True): + """ + Returns an msvc version and a toolset version given a version + specification. + + This is an EXPERIMENTAL proxy for using a toolset version to perform + msvc instance selection. This function will be removed when + toolset version is taken into account during msvc instance selection. + + Search for an installed Visual Studio instance that supports the + specified version. + + When the specified version contains a component suffix (e.g., Exp), + the msvc version is returned and the toolset version is None. No + search if performed. + + When the specified version does not contain a component suffix, the + version is treated as a toolset version specification. A search is + performed for the first msvc instance that contains the toolset + version. + + Only Visual Studio 2017 and later support toolset arguments. For + Visual Studio 2015 and earlier, the msvc version is returned and + the toolset version is None. + + Args: + + version: str + The version specification may be an msvc version or a toolset + version. + + prefer_newest: bool + True: prefer newer Visual Studio instances. + False: prefer the "native" Visual Studio instance first. If + the native Visual Studio instance is not detected, prefer + newer Visual Studio instances. + + Returns: + tuple: A tuple containing the msvc version and the msvc toolset version. + The msvc toolset version may be None. + + Raises: + MSVCToolsetVersionNotFound: when the specified version is not found. + MSVCArgumentError: when argument validation fails. + """ + debug('version=%s, prefer_newest=%s', repr(version), repr(prefer_newest)) + + env = None + msvc_version = None + msvc_toolset_version = None + + if not version: + version = msvc_default_version() + + if not version: + debug('no msvc versions detected') + return msvc_version, msvc_toolset_version + + version_def = MSVC.Util.msvc_extended_version_components(version) + + if not version_def: + msg = 'Unsupported msvc version {}'.format(repr(version)) + raise MSVCArgumentError(msg) + + if version_def.msvc_suffix: + if version_def.msvc_verstr != version_def.msvc_toolset_version: + # toolset version with component suffix + msg = 'Unsupported toolset version {}'.format(repr(version)) + raise MSVCArgumentError(msg) + + if version_def.msvc_vernum > 14.0: + # VS2017 and later + force_toolset_msvc_version = False + else: + # VS2015 and earlier + force_toolset_msvc_version = True + extended_version = version_def.msvc_verstr + '0.00000' + if not extended_version.startswith(version_def.msvc_toolset_version): + # toolset not equivalent to msvc version + msg = 'Unsupported toolset version {} (expected {})'.format( + repr(version), repr(extended_version) + ) + raise MSVCArgumentError(msg) + + msvc_version = version_def.msvc_version + + if msvc_version not in MSVC.Config.MSVC_VERSION_TOOLSET_SEARCH_MAP: + # VS2013 and earlier + debug( + 'ignore: msvc_version=%s, msvc_toolset_version=%s', + repr(msvc_version), repr(msvc_toolset_version) + ) + return msvc_version, msvc_toolset_version + + if force_toolset_msvc_version: + query_msvc_toolset_version = version_def.msvc_verstr + else: + query_msvc_toolset_version = version_def.msvc_toolset_version + + if prefer_newest: + query_version_list = MSVC.Config.MSVC_VERSION_TOOLSET_SEARCH_MAP[msvc_version] + else: + query_version_list = MSVC.Config.MSVC_VERSION_TOOLSET_DEFAULTS_MAP[msvc_version] + \ + MSVC.Config.MSVC_VERSION_TOOLSET_SEARCH_MAP[msvc_version] + + seen_msvc_version = set() + for query_msvc_version in query_version_list: + + if query_msvc_version in seen_msvc_version: + continue + seen_msvc_version.add(query_msvc_version) + + vc_dir = find_vc_pdir(env, query_msvc_version) + if not vc_dir: + continue + + if query_msvc_version.startswith('14.0'): + # VS2015 does not support toolset version argument + msvc_toolset_version = None + debug( + 'found: msvc_version=%s, msvc_toolset_version=%s', + repr(query_msvc_version), repr(msvc_toolset_version) + ) + return query_msvc_version, msvc_toolset_version + + try: + toolset_vcvars = MSVC.ScriptArguments._msvc_toolset_internal(query_msvc_version, query_msvc_toolset_version, vc_dir) + if toolset_vcvars: + msvc_toolset_version = toolset_vcvars + debug( + 'found: msvc_version=%s, msvc_toolset_version=%s', + repr(query_msvc_version), repr(msvc_toolset_version) + ) + return query_msvc_version, msvc_toolset_version + + except MSVCToolsetVersionNotFound: + pass + + msvc_toolset_version = query_msvc_toolset_version + + debug( + 'not found: msvc_version=%s, msvc_toolset_version=%s', + repr(msvc_version), repr(msvc_toolset_version) + ) + + if version_def.msvc_verstr == msvc_toolset_version: + msg = 'MSVC version {} was not found'.format(repr(version)) + MSVC.Policy.msvc_notfound_handler(None, msg) + return msvc_version, msvc_toolset_version + + msg = 'MSVC toolset version {} not found'.format(repr(version)) + raise MSVCToolsetVersionNotFound(msg) + + +# internal consistency check (should be last) +MSVC._verify() + diff --git a/scons/scons-local-4.5.1/SCons/Tool/MSCommon/vs.py b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/vs.py new file mode 100644 index 000000000..08c3cf5af --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/MSCommon/vs.py @@ -0,0 +1,611 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +MS Compilers: detect Visual Studio and/or Visual C/C++ +""" + +import os + +import SCons.Errors +import SCons.Tool.MSCommon.vc +import SCons.Util + +from .common import ( + debug, + get_output, + is_win64, + normalize_env, + parse_output, + read_reg, +) + + +class VisualStudio: + """ + An abstract base class for trying to find installed versions of + Visual Studio. + """ + def __init__(self, version, **kw): + self.version = version + kw['vc_version'] = kw.get('vc_version', version) + kw['sdk_version'] = kw.get('sdk_version', version) + self.__dict__.update(kw) + self._cache = {} + + def find_batch_file(self): + vs_dir = self.get_vs_dir() + if not vs_dir: + debug('no vs_dir') + return None + batch_file = os.path.join(vs_dir, self.batch_file_path) + batch_file = os.path.normpath(batch_file) + if not os.path.isfile(batch_file): + debug('%s not on file system', batch_file) + return None + return batch_file + + def find_vs_dir_by_vc(self, env): + dir = SCons.Tool.MSCommon.vc.find_vc_pdir(env, self.vc_version) + if not dir: + debug('no installed VC %s', self.vc_version) + return None + return os.path.abspath(os.path.join(dir, os.pardir)) + + def find_vs_dir_by_reg(self, env): + root = 'Software\\' + + if is_win64(): + root = root + 'Wow6432Node\\' + for key in self.hkeys: + if key=='use_dir': + return self.find_vs_dir_by_vc(env) + key = root + key + try: + comps = read_reg(key) + except OSError: + debug('no VS registry key %s', repr(key)) + else: + debug('found VS in registry: %s', comps) + return comps + return None + + def find_vs_dir(self, env): + """ Can use registry or location of VC to find vs dir + First try to find by registry, and if that fails find via VC dir + """ + + vs_dir = self.find_vs_dir_by_reg(env) + if not vs_dir: + vs_dir = self.find_vs_dir_by_vc(env) + debug('found VS in %s', str(vs_dir)) + return vs_dir + + def find_executable(self, env): + vs_dir = self.get_vs_dir(env) + if not vs_dir: + debug('no vs_dir (%s)', vs_dir) + return None + executable = os.path.join(vs_dir, self.executable_path) + executable = os.path.normpath(executable) + if not os.path.isfile(executable): + debug('%s not on file system', executable) + return None + return executable + + def get_batch_file(self): + try: + return self._cache['batch_file'] + except KeyError: + batch_file = self.find_batch_file() + self._cache['batch_file'] = batch_file + return batch_file + + def get_executable(self, env=None): + try: + debug('using cache:%s', self._cache['executable']) + return self._cache['executable'] + except KeyError: + executable = self.find_executable(env) + self._cache['executable'] = executable + debug('not in cache:%s', executable) + return executable + + def get_vs_dir(self, env=None): + try: + return self._cache['vs_dir'] + except KeyError: + vs_dir = self.find_vs_dir(env) + self._cache['vs_dir'] = vs_dir + return vs_dir + + def get_supported_arch(self): + try: + return self._cache['supported_arch'] + except KeyError: + # RDEVE: for the time being use hardcoded lists + # supported_arch = self.find_supported_arch() + self._cache['supported_arch'] = self.supported_arch + return self.supported_arch + + def reset(self): + self._cache = {} + +# The list of supported Visual Studio versions we know how to detect. +# +# How to look for .bat file ? +# - VS 2008 Express (x86): +# * from registry key productdir, gives the full path to vsvarsall.bat. In +# HKEY_LOCAL_MACHINE): +# Software\Microsoft\VCEpress\9.0\Setup\VC\productdir +# * from environmnent variable VS90COMNTOOLS: the path is then ..\..\VC +# relatively to the path given by the variable. +# +# - VS 2008 Express (WoW6432: 32 bits on windows x64): +# Software\Wow6432Node\Microsoft\VCEpress\9.0\Setup\VC\productdir +# +# - VS 2005 Express (x86): +# * from registry key productdir, gives the full path to vsvarsall.bat. In +# HKEY_LOCAL_MACHINE): +# Software\Microsoft\VCEpress\8.0\Setup\VC\productdir +# * from environmnent variable VS80COMNTOOLS: the path is then ..\..\VC +# relatively to the path given by the variable. +# +# - VS 2005 Express (WoW6432: 32 bits on windows x64): does not seem to have a +# productdir ? +# +# - VS 2003 .Net (pro edition ? x86): +# * from registry key productdir. The path is then ..\Common7\Tools\ +# relatively to the key. The key is in HKEY_LOCAL_MACHINE): +# Software\Microsoft\VisualStudio\7.1\Setup\VC\productdir +# * from environmnent variable VS71COMNTOOLS: the path is the full path to +# vsvars32.bat +# +# - VS 98 (VS 6): +# * from registry key productdir. The path is then Bin +# relatively to the key. The key is in HKEY_LOCAL_MACHINE): +# Software\Microsoft\VisualStudio\6.0\Setup\VC98\productdir +# +# The first version found in the list is the one used by default if +# there are multiple versions installed. Barring good reasons to +# the contrary, this means we should list versions from most recent +# to oldest. Pro versions get listed before Express versions on the +# assumption that, by default, you'd rather use the version you paid +# good money for in preference to whatever Microsoft makes available +# for free. +# +# If you update this list, update _VCVER and _VCVER_TO_PRODUCT_DIR in +# Tool/MSCommon/vc.py, and the MSVC_VERSION documentation in Tool/msvc.xml. + +SupportedVSList = [ + # Visual Studio 2022 + VisualStudio('14.3', + vc_version='14.3', + sdk_version='10.0A', + hkeys=[], + common_tools_var='VS170COMNTOOLS', + executable_path=r'Common7\IDE\devenv.com', + # should be a fallback, prefer use vswhere installationPath + batch_file_path=r'Common7\Tools\VsDevCmd.bat', + supported_arch=['x86', 'amd64', "arm"], + ), + + # Visual Studio 2019 + VisualStudio('14.2', + vc_version='14.2', + sdk_version='10.0A', + hkeys=[], + common_tools_var='VS160COMNTOOLS', + executable_path=r'Common7\IDE\devenv.com', + # should be a fallback, prefer use vswhere installationPath + batch_file_path=r'Common7\Tools\VsDevCmd.bat', + supported_arch=['x86', 'amd64', "arm"], + ), + + # Visual Studio 2017 + VisualStudio('14.1', + vc_version='14.1', + sdk_version='10.0A', + hkeys=[], + common_tools_var='VS150COMNTOOLS', + executable_path=r'Common7\IDE\devenv.com', + # should be a fallback, prefer use vswhere installationPath + batch_file_path=r'Common7\Tools\VsDevCmd.bat', + supported_arch=['x86', 'amd64', "arm"], + ), + + # Visual C++ 2017 Express Edition (for Desktop) + VisualStudio('14.1Exp', + vc_version='14.1', + sdk_version='10.0A', + hkeys=[], + common_tools_var='VS150COMNTOOLS', + executable_path=r'Common7\IDE\WDExpress.exe', + # should be a fallback, prefer use vswhere installationPath + batch_file_path=r'Common7\Tools\VsDevCmd.bat', + supported_arch=['x86', 'amd64', "arm"], + ), + + # Visual Studio 2015 + VisualStudio('14.0', + vc_version='14.0', + sdk_version='10.0', + hkeys=[r'Microsoft\VisualStudio\14.0\Setup\VS\ProductDir'], + common_tools_var='VS140COMNTOOLS', + executable_path=r'Common7\IDE\devenv.com', + batch_file_path=r'Common7\Tools\vsvars32.bat', + supported_arch=['x86', 'amd64', "arm"], + ), + + # Visual C++ 2015 Express Edition (for Desktop) + VisualStudio('14.0Exp', + vc_version='14.0', + sdk_version='10.0A', + hkeys=[r'Microsoft\VisualStudio\14.0\Setup\VS\ProductDir'], + common_tools_var='VS140COMNTOOLS', + executable_path=r'Common7\IDE\WDExpress.exe', + batch_file_path=r'Common7\Tools\vsvars32.bat', + supported_arch=['x86', 'amd64', "arm"], + ), + + # Visual Studio 2013 + VisualStudio('12.0', + vc_version='12.0', + sdk_version='8.1A', + hkeys=[r'Microsoft\VisualStudio\12.0\Setup\VS\ProductDir'], + common_tools_var='VS120COMNTOOLS', + executable_path=r'Common7\IDE\devenv.com', + batch_file_path=r'Common7\Tools\vsvars32.bat', + supported_arch=['x86', 'amd64'], + ), + + # Visual C++ 2013 Express Edition (for Desktop) + VisualStudio('12.0Exp', + vc_version='12.0', + sdk_version='8.1A', + hkeys=[r'Microsoft\VisualStudio\12.0\Setup\VS\ProductDir'], + common_tools_var='VS120COMNTOOLS', + executable_path=r'Common7\IDE\WDExpress.exe', + batch_file_path=r'Common7\Tools\vsvars32.bat', + supported_arch=['x86', 'amd64'], + ), + + # Visual Studio 2012 + VisualStudio('11.0', + sdk_version='8.0A', + hkeys=[r'Microsoft\VisualStudio\11.0\Setup\VS\ProductDir'], + common_tools_var='VS110COMNTOOLS', + executable_path=r'Common7\IDE\devenv.com', + batch_file_path=r'Common7\Tools\vsvars32.bat', + supported_arch=['x86', 'amd64'], + ), + + # Visual C++ 2012 Express Edition (for Desktop) + VisualStudio('11.0Exp', + vc_version='11.0', + sdk_version='8.0A', + hkeys=[r'Microsoft\VisualStudio\11.0\Setup\VS\ProductDir'], + common_tools_var='VS110COMNTOOLS', + executable_path=r'Common7\IDE\WDExpress.exe', + batch_file_path=r'Common7\Tools\vsvars32.bat', + supported_arch=['x86', 'amd64'], + ), + + # Visual Studio 2010 + VisualStudio('10.0', + sdk_version='7.0A', + hkeys=[r'Microsoft\VisualStudio\10.0\Setup\VS\ProductDir'], + common_tools_var='VS100COMNTOOLS', + executable_path=r'Common7\IDE\devenv.com', + batch_file_path=r'Common7\Tools\vsvars32.bat', + supported_arch=['x86', 'amd64'], + ), + + # Visual C++ 2010 Express Edition + VisualStudio('10.0Exp', + vc_version='10.0', + sdk_version='7.0A', + hkeys=[r'Microsoft\VCExpress\10.0\Setup\VS\ProductDir'], + common_tools_var='VS100COMNTOOLS', + executable_path=r'Common7\IDE\VCExpress.exe', + batch_file_path=r'Common7\Tools\vsvars32.bat', + supported_arch=['x86'], + ), + + # Visual Studio 2008 + VisualStudio('9.0', + sdk_version='6.0A', + hkeys=[r'Microsoft\VisualStudio\9.0\Setup\VS\ProductDir'], + common_tools_var='VS90COMNTOOLS', + executable_path=r'Common7\IDE\devenv.com', + batch_file_path=r'Common7\Tools\vsvars32.bat', + supported_arch=['x86', 'amd64'], + ), + + # Visual C++ 2008 Express Edition + VisualStudio('9.0Exp', + vc_version='9.0', + sdk_version='6.0A', + hkeys=[r'Microsoft\VCExpress\9.0\Setup\VS\ProductDir'], + common_tools_var='VS90COMNTOOLS', + executable_path=r'Common7\IDE\VCExpress.exe', + batch_file_path=r'Common7\Tools\vsvars32.bat', + supported_arch=['x86'], + ), + + # Visual Studio 2005 + VisualStudio('8.0', + sdk_version='6.0A', + hkeys=[r'Microsoft\VisualStudio\8.0\Setup\VS\ProductDir'], + common_tools_var='VS80COMNTOOLS', + executable_path=r'Common7\IDE\devenv.com', + batch_file_path=r'Common7\Tools\vsvars32.bat', + default_dirname='Microsoft Visual Studio 8', + supported_arch=['x86', 'amd64'], + ), + + # Visual C++ 2005 Express Edition + VisualStudio('8.0Exp', + vc_version='8.0Exp', + sdk_version='6.0A', + hkeys=[r'Microsoft\VCExpress\8.0\Setup\VS\ProductDir'], + common_tools_var='VS80COMNTOOLS', + executable_path=r'Common7\IDE\VCExpress.exe', + batch_file_path=r'Common7\Tools\vsvars32.bat', + default_dirname='Microsoft Visual Studio 8', + supported_arch=['x86'], + ), + + # Visual Studio .NET 2003 + VisualStudio('7.1', + sdk_version='6.0', + hkeys=[r'Microsoft\VisualStudio\7.1\Setup\VS\ProductDir'], + common_tools_var='VS71COMNTOOLS', + executable_path=r'Common7\IDE\devenv.com', + batch_file_path=r'Common7\Tools\vsvars32.bat', + default_dirname='Microsoft Visual Studio .NET 2003', + supported_arch=['x86'], + ), + + # Visual Studio .NET + VisualStudio('7.0', + sdk_version='2003R2', + hkeys=[r'Microsoft\VisualStudio\7.0\Setup\VS\ProductDir'], + common_tools_var='VSCOMNTOOLS', + executable_path=r'Common7\IDE\devenv.com', + batch_file_path=r'Common7\Tools\vsvars32.bat', + default_dirname='Microsoft Visual Studio .NET', + supported_arch=['x86'], + ), + + # Visual Studio 6.0 + VisualStudio('6.0', + sdk_version='2003R1', + hkeys=[r'Microsoft\VisualStudio\6.0\Setup\Microsoft Visual Studio\ProductDir', + 'use_dir'], + common_tools_var='MSDevDir', + executable_path=r'Common\MSDev98\Bin\MSDEV.COM', + batch_file_path=r'Common7\Tools\vsvars32.bat', + default_dirname='Microsoft Visual Studio', + supported_arch=['x86'], + ), +] + +SupportedVSMap = {} +for vs in SupportedVSList: + SupportedVSMap[vs.version] = vs + + +# Finding installed versions of Visual Studio isn't cheap, because it +# goes not only to the registry but also to the disk to sanity-check +# that there is, in fact, a Visual Studio directory there and that the +# registry entry isn't just stale. Find this information once, when +# requested, and cache it. + +InstalledVSList = None +InstalledVSMap = None + +def get_installed_visual_studios(env=None): + global InstalledVSList + global InstalledVSMap + if InstalledVSList is None: + InstalledVSList = [] + InstalledVSMap = {} + for vs in SupportedVSList: + debug('trying to find VS %s', vs.version) + if vs.get_executable(env): + debug('found VS %s', vs.version) + InstalledVSList.append(vs) + InstalledVSMap[vs.version] = vs + return InstalledVSList + +def reset_installed_visual_studios(): + global InstalledVSList + global InstalledVSMap + InstalledVSList = None + InstalledVSMap = None + for vs in SupportedVSList: + vs.reset() + + # Need to clear installed VC's as well as they are used in finding + # installed VS's + SCons.Tool.MSCommon.vc.reset_installed_vcs() + + +# We may be asked to update multiple construction environments with +# SDK information. When doing this, we check on-disk for whether +# the SDK has 'mfc' and 'atl' subdirectories. Since going to disk +# is expensive, cache results by directory. + +#SDKEnvironmentUpdates = {} +# +#def set_sdk_by_directory(env, sdk_dir): +# global SDKEnvironmentUpdates +# try: +# env_tuple_list = SDKEnvironmentUpdates[sdk_dir] +# except KeyError: +# env_tuple_list = [] +# SDKEnvironmentUpdates[sdk_dir] = env_tuple_list +# +# include_path = os.path.join(sdk_dir, 'include') +# mfc_path = os.path.join(include_path, 'mfc') +# atl_path = os.path.join(include_path, 'atl') +# +# if os.path.exists(mfc_path): +# env_tuple_list.append(('INCLUDE', mfc_path)) +# if os.path.exists(atl_path): +# env_tuple_list.append(('INCLUDE', atl_path)) +# env_tuple_list.append(('INCLUDE', include_path)) +# +# env_tuple_list.append(('LIB', os.path.join(sdk_dir, 'lib'))) +# env_tuple_list.append(('LIBPATH', os.path.join(sdk_dir, 'lib'))) +# env_tuple_list.append(('PATH', os.path.join(sdk_dir, 'bin'))) +# +# for variable, directory in env_tuple_list: +# env.PrependENVPath(variable, directory) + +def msvs_exists(env=None) -> bool: + return len(get_installed_visual_studios(env)) > 0 + +def get_vs_by_version(msvs): + global InstalledVSMap + global SupportedVSMap + + debug('called') + if msvs not in SupportedVSMap: + msg = "Visual Studio version %s is not supported" % repr(msvs) + raise SCons.Errors.UserError(msg) + get_installed_visual_studios() + vs = InstalledVSMap.get(msvs) + debug('InstalledVSMap:%s', InstalledVSMap) + debug('found vs:%s', vs) + # Some check like this would let us provide a useful error message + # if they try to set a Visual Studio version that's not installed. + # However, we also want to be able to run tests (like the unit + # tests) on systems that don't, or won't ever, have it installed. + # It might be worth resurrecting this, with some configurable + # setting that the tests can use to bypass the check. + #if not vs: + # msg = "Visual Studio version %s is not installed" % repr(msvs) + # raise SCons.Errors.UserError, msg + return vs + +def get_default_version(env): + """Returns the default version string to use for MSVS. + + If no version was requested by the user through the MSVS environment + variable, query all the available visual studios through + get_installed_visual_studios, and take the highest one. + + Return + ------ + version: str + the default version. + """ + if 'MSVS' not in env or not SCons.Util.is_Dict(env['MSVS']): + # get all versions, and remember them for speed later + versions = [vs.version for vs in get_installed_visual_studios()] + env['MSVS'] = {'VERSIONS' : versions} + else: + versions = env['MSVS'].get('VERSIONS', []) + + if 'MSVS_VERSION' not in env: + if versions: + env['MSVS_VERSION'] = versions[0] #use highest version by default + else: + debug('WARNING: no installed versions found, ' + 'using first in SupportedVSList (%s)', + SupportedVSList[0].version) + env['MSVS_VERSION'] = SupportedVSList[0].version + + env['MSVS']['VERSION'] = env['MSVS_VERSION'] + + return env['MSVS_VERSION'] + +def get_default_arch(env): + """Return the default arch to use for MSVS + + if no version was requested by the user through the MSVS_ARCH environment + variable, select x86 + + Return + ------ + arch: str + """ + arch = env.get('MSVS_ARCH', 'x86') + + msvs = InstalledVSMap.get(env['MSVS_VERSION']) + + if not msvs: + arch = 'x86' + elif arch not in msvs.get_supported_arch(): + fmt = "Visual Studio version %s does not support architecture %s" + raise SCons.Errors.UserError(fmt % (env['MSVS_VERSION'], arch)) + + return arch + +def merge_default_version(env): + version = get_default_version(env) + arch = get_default_arch(env) + +# TODO: refers to versions and arch which aren't defined; called nowhere. Drop? +def msvs_setup_env(env): + msvs = get_vs_by_version(version) + if msvs is None: + return + batfilename = msvs.get_batch_file() + + # XXX: I think this is broken. This will silently set a bogus tool instead + # of failing, but there is no other way with the current scons tool + # framework + if batfilename is not None: + + vars = ('LIB', 'LIBPATH', 'PATH', 'INCLUDE') + + msvs_list = get_installed_visual_studios() + vscommonvarnames = [vs.common_tools_var for vs in msvs_list] + save_ENV = env['ENV'] + nenv = normalize_env(env['ENV'], + ['COMSPEC'] + vscommonvarnames, + force=True) + try: + output = get_output(batfilename, arch, env=nenv) + finally: + env['ENV'] = save_ENV + vars = parse_output(output, vars) + + for k, v in vars.items(): + env.PrependENVPath(k, v, delete_existing=1) + +def query_versions(): + """Query the system to get available versions of VS. A version is + considered when a batfile is found.""" + msvs_list = get_installed_visual_studios() + versions = [msvs.version for msvs in msvs_list] + return versions + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/PharLapCommon.py b/scons/scons-local-4.5.1/SCons/Tool/PharLapCommon.py new file mode 100644 index 000000000..9ffafa9e5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/PharLapCommon.py @@ -0,0 +1,116 @@ +"""SCons.Tool.PharLapCommon + +This module contains common code used by all Tools for the +Phar Lap ETS tool chain. Right now, this is linkloc and +386asm. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os +import os.path +import SCons.Errors +import SCons.Util +import re + +def getPharLapPath(): + """Reads the registry to find the installed path of the Phar Lap ETS + development kit. + + Raises UserError if no installed version of Phar Lap can + be found.""" + + if not SCons.Util.can_read_reg: + raise SCons.Errors.InternalError("No Windows registry module was found") + try: + k=SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, + 'SOFTWARE\\Pharlap\\ETS') + val, type = SCons.Util.RegQueryValueEx(k, 'BaseDir') + + # The following is a hack...there is (not surprisingly) + # an odd issue in the Phar Lap plug in that inserts + # a bunch of junk data after the phar lap path in the + # registry. We must trim it. + idx=val.find('\0') + if idx >= 0: + val = val[:idx] + + return os.path.normpath(val) + except SCons.Util.RegError: + raise SCons.Errors.UserError("Cannot find Phar Lap ETS path in the registry. Is it installed properly?") + +REGEX_ETS_VER = re.compile(r'#define\s+ETS_VER\s+([0-9]+)') + +def getPharLapVersion(): + """Returns the version of the installed ETS Tool Suite as a + decimal number. This version comes from the ETS_VER #define in + the embkern.h header. For example, '#define ETS_VER 1010' (which + is what Phar Lap 10.1 defines) would cause this method to return + 1010. Phar Lap 9.1 does not have such a #define, but this method + will return 910 as a default. + + Raises UserError if no installed version of Phar Lap can + be found.""" + + include_path = os.path.join(getPharLapPath(), os.path.normpath("include/embkern.h")) + if not os.path.exists(include_path): + raise SCons.Errors.UserError("Cannot find embkern.h in ETS include directory.\nIs Phar Lap ETS installed properly?") + with open(include_path, 'r') as f: + mo = REGEX_ETS_VER.search(f.read()) + if mo: + return int(mo.group(1)) + # Default return for Phar Lap 9.1 + return 910 + +def addPharLapPaths(env): + """This function adds the path to the Phar Lap binaries, includes, + and libraries, if they are not already there.""" + ph_path = getPharLapPath() + + try: + env_dict = env['ENV'] + except KeyError: + env_dict = {} + env['ENV'] = env_dict + SCons.Util.AddPathIfNotExists(env_dict, 'PATH', + os.path.join(ph_path, 'bin')) + SCons.Util.AddPathIfNotExists(env_dict, 'INCLUDE', + os.path.join(ph_path, 'include')) + SCons.Util.AddPathIfNotExists(env_dict, 'LIB', + os.path.join(ph_path, 'lib')) + SCons.Util.AddPathIfNotExists(env_dict, 'LIB', + os.path.join(ph_path, os.path.normpath('lib/vclib'))) + + env['PHARLAP_PATH'] = getPharLapPath() + env['PHARLAP_VERSION'] = str(getPharLapVersion()) + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/__init__.py b/scons/scons-local-4.5.1/SCons/Tool/__init__.py new file mode 100644 index 000000000..33c1d33ab --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/__init__.py @@ -0,0 +1,872 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons tool selection. + +Looks for modules that define a callable object that can modify a +construction environment as appropriate for a given tool (or tool chain). + +Note that because this subsystem just *selects* a callable that can +modify a construction environment, it's possible for people to define +their own "tool specification" in an arbitrary callable function. No +one needs to use or tie in to this subsystem in order to roll their own +tool specifications. +""" + +import sys +import os +import importlib.util +from typing import Optional + +import SCons.Builder +import SCons.Errors +import SCons.Node.FS +import SCons.Scanner +import SCons.Scanner.C +import SCons.Scanner.D +import SCons.Scanner.Java +import SCons.Scanner.LaTeX +import SCons.Scanner.Prog +import SCons.Scanner.SWIG +from SCons.Tool.linkCommon import LibSymlinksActionFunction, LibSymlinksStrFun + +DefaultToolpath = [] + +CScanner = SCons.Scanner.C.CScanner() +DScanner = SCons.Scanner.D.DScanner() +JavaScanner = SCons.Scanner.Java.JavaScanner() +LaTeXScanner = SCons.Scanner.LaTeX.LaTeXScanner() +PDFLaTeXScanner = SCons.Scanner.LaTeX.PDFLaTeXScanner() +ProgramScanner = SCons.Scanner.Prog.ProgramScanner() +SourceFileScanner = SCons.Scanner.ScannerBase({}, name='SourceFileScanner') +SWIGScanner = SCons.Scanner.SWIG.SWIGScanner() + +CSuffixes = [".c", ".C", ".cxx", ".cpp", ".c++", ".cc", + ".h", ".H", ".hxx", ".hpp", ".hh", + ".F", ".fpp", ".FPP", + ".m", ".mm", + ".S", ".spp", ".SPP", ".sx"] + +DSuffixes = ['.d'] + +IDLSuffixes = [".idl", ".IDL"] + +LaTeXSuffixes = [".tex", ".ltx", ".latex"] + +SWIGSuffixes = ['.i'] + +for suffix in CSuffixes: + SourceFileScanner.add_scanner(suffix, CScanner) + +for suffix in DSuffixes: + SourceFileScanner.add_scanner(suffix, DScanner) + +for suffix in SWIGSuffixes: + SourceFileScanner.add_scanner(suffix, SWIGScanner) + +# FIXME: what should be done here? Two scanners scan the same extensions, +# but look for different files, e.g., "picture.eps" vs. "picture.pdf". +# The builders for DVI and PDF explicitly reference their scanners +# I think that means this is not needed??? +for suffix in LaTeXSuffixes: + SourceFileScanner.add_scanner(suffix, LaTeXScanner) + SourceFileScanner.add_scanner(suffix, PDFLaTeXScanner) + +# Tool aliases are needed for those tools whose module names also +# occur in the python standard library (This causes module shadowing and +# can break using python library functions under python3) or if the current tool/file names +# are not legal module names (violate python's identifier rules or are +# python language keywords). +TOOL_ALIASES = { + 'gettext': 'gettext_tool', + 'clang++': 'clangxx', + 'as': 'asm', +} + + +class Tool: + def __init__(self, name, toolpath=None, **kwargs): + if toolpath is None: + toolpath = [] + + # Rename if there's a TOOL_ALIAS for this tool + self.name = TOOL_ALIASES.get(name, name) + self.toolpath = toolpath + DefaultToolpath + # remember these so we can merge them into the call + self.init_kw = kwargs + + module = self._tool_module() + self.generate = module.generate + self.exists = module.exists + if hasattr(module, 'options'): + self.options = module.options + + def _tool_module(self): + """Try to load a tool module. + + This will hunt in the toolpath for both a Python file (toolname.py) + and a Python module (toolname directory), then try the regular + import machinery, then fallback to try a zipfile. + """ + oldpythonpath = sys.path + sys.path = self.toolpath + sys.path + # These could be enabled under "if debug:" + # sys.stderr.write(f"Tool: {self.name}\n") + # sys.stderr.write(f"PATH: {sys.path}\n") + # sys.stderr.write(f"toolpath: {self.toolpath}\n") + # sys.stderr.write(f"SCONS.TOOL path: {sys.modules['SCons.Tool'].__path__}\n") + debug = False + spec = None + found_name = self.name + add_to_scons_tools_namespace = False + + # Search for the tool module, but don't import it, yet. + # + # First look in the toolpath: these take priority. + # TODO: any reason to not just use find_spec here? + for path in self.toolpath: + sepname = self.name.replace('.', os.path.sep) + file_path = os.path.join(path, sepname + ".py") + file_package = os.path.join(path, sepname) + + if debug: sys.stderr.write(f"Trying: {file_path} {file_package}\n") + + if os.path.isfile(file_path): + spec = importlib.util.spec_from_file_location(self.name, file_path) + if debug: sys.stderr.write(f"file_Path: {file_path} FOUND\n") + break + elif os.path.isdir(file_package): + file_package = os.path.join(file_package, '__init__.py') + spec = importlib.util.spec_from_file_location(self.name, file_package) + if debug: sys.stderr.write(f"PACKAGE: {file_package} Found\n") + break + else: + continue + + # Now look in the builtin tools (SCons.Tool package) + if spec is None: + if debug: sys.stderr.write(f"NO SPEC: {self.name}\n") + spec = importlib.util.find_spec("." + self.name, package='SCons.Tool') + if spec: + found_name = 'SCons.Tool.' + self.name + add_to_scons_tools_namespace = True + if debug: sys.stderr.write(f"Spec Found? .{self.name}: {spec}\n") + + if spec is None: + # we are going to bail out here, format up stuff for the msg + sconstools = os.path.normpath(sys.modules['SCons.Tool'].__path__[0]) + if self.toolpath: + sconstools = ", ".join(self.toolpath) + ", " + sconstools + msg = f"No tool module '{self.name}' found in {sconstools}" + raise SCons.Errors.UserError(msg) + + # We have a module spec, so we're good to go. + module = importlib.util.module_from_spec(spec) + if module is None: + if debug: sys.stderr.write(f"MODULE IS NONE: {self.name}\n") + msg = f"Tool module '{self.name}' failed import" + raise SCons.Errors.SConsEnvironmentError(msg) + + # Don't reload a tool we already loaded. + sys_modules_value = sys.modules.get(found_name, False) + + found_module = None + if sys_modules_value and sys_modules_value.__file__ == spec.origin: + found_module = sys.modules[found_name] + else: + # Not sure what to do in the case that there already + # exists sys.modules[self.name] but the source file is + # different.. ? + sys.modules[found_name] = module + spec.loader.exec_module(module) + if add_to_scons_tools_namespace: + # If we found it in SCons.Tool, add it to the module + setattr(SCons.Tool, self.name, module) + found_module = module + + if found_module is not None: + sys.path = oldpythonpath + return found_module + + sys.path = oldpythonpath + + # We try some other things here, but this is essentially dead code, + # because we bailed out above if we didn't find a module spec. + full_name = 'SCons.Tool.' + self.name + try: + return sys.modules[full_name] + except KeyError: + try: + # This support was added to enable running inside + # a py2exe bundle a long time ago - unclear if it's + # still needed. It is *not* intended to load individual + # tool modules stored in a zipfile. + import zipimport + + tooldir = sys.modules['SCons.Tool'].__path__[0] + importer = zipimport.zipimporter(tooldir) + if not hasattr(importer, 'find_spec'): + # zipimport only added find_spec, exec_module in 3.10, + # unlike importlib, where they've been around since 3.4. + # If we don't have 'em, use the old way. + module = importer.load_module(full_name) + else: + spec = importer.find_spec(full_name) + module = importlib.util.module_from_spec(spec) + importer.exec_module(module) + sys.modules[full_name] = module + setattr(SCons.Tool, self.name, module) + return module + except zipimport.ZipImportError as e: + msg = "No tool named '{self.name}': {e}" + raise SCons.Errors.SConsEnvironmentError(msg) + + def __call__(self, env, *args, **kw): + if self.init_kw is not None: + # Merge call kws into init kws; + # but don't bash self.init_kw. + if kw is not None: + call_kw = kw + kw = self.init_kw.copy() + kw.update(call_kw) + else: + kw = self.init_kw + env.Append(TOOLS=[self.name]) + if hasattr(self, 'options'): + import SCons.Variables + if 'options' not in env: + from SCons.Script import ARGUMENTS + env['options'] = SCons.Variables.Variables(args=ARGUMENTS) + opts = env['options'] + + self.options(opts) + opts.Update(env) + + self.generate(env, *args, **kw) + + def __str__(self): + return self.name + + +LibSymlinksAction = SCons.Action.Action(LibSymlinksActionFunction, LibSymlinksStrFun) + + +########################################################################## +# Create common executable program / library / object builders + +def createProgBuilder(env): + """This is a utility function that creates the Program + Builder in an Environment if it is not there already. + + If it is already there, we return the existing one. + """ + + try: + program = env['BUILDERS']['Program'] + except KeyError: + import SCons.Defaults + program = SCons.Builder.Builder(action=SCons.Defaults.LinkAction, + emitter='$PROGEMITTER', + prefix='$PROGPREFIX', + suffix='$PROGSUFFIX', + src_suffix='$OBJSUFFIX', + src_builder='Object', + target_scanner=ProgramScanner) + env['BUILDERS']['Program'] = program + + return program + + +def createStaticLibBuilder(env): + """This is a utility function that creates the StaticLibrary + Builder in an Environment if it is not there already. + + If it is already there, we return the existing one. + """ + + try: + static_lib = env['BUILDERS']['StaticLibrary'] + except KeyError: + action_list = [SCons.Action.Action("$ARCOM", "$ARCOMSTR")] + if env.get('RANLIB', False) or env.Detect('ranlib'): + ranlib_action = SCons.Action.Action("$RANLIBCOM", "$RANLIBCOMSTR") + action_list.append(ranlib_action) + + static_lib = SCons.Builder.Builder(action=action_list, + emitter='$LIBEMITTER', + prefix='$LIBPREFIX', + suffix='$LIBSUFFIX', + src_suffix='$OBJSUFFIX', + src_builder='StaticObject') + env['BUILDERS']['StaticLibrary'] = static_lib + env['BUILDERS']['Library'] = static_lib + + return static_lib + + +def createSharedLibBuilder(env, shlib_suffix='$_SHLIBSUFFIX'): + """This is a utility function that creates the SharedLibrary + Builder in an Environment if it is not there already. + + If it is already there, we return the existing one. + + Args: + shlib_suffix: The suffix specified for the shared library builder + + """ + + try: + shared_lib = env['BUILDERS']['SharedLibrary'] + except KeyError: + import SCons.Defaults + action_list = [SCons.Defaults.SharedCheck, + SCons.Defaults.ShLinkAction, + LibSymlinksAction] + shared_lib = SCons.Builder.Builder(action=action_list, + emitter="$SHLIBEMITTER", + prefix="$SHLIBPREFIX", + suffix=shlib_suffix, + target_scanner=ProgramScanner, + src_suffix='$SHOBJSUFFIX', + src_builder='SharedObject') + env['BUILDERS']['SharedLibrary'] = shared_lib + + return shared_lib + + +def createLoadableModuleBuilder(env, loadable_module_suffix='$_LDMODULESUFFIX'): + """This is a utility function that creates the LoadableModule + Builder in an Environment if it is not there already. + + If it is already there, we return the existing one. + + Args: + loadable_module_suffix: The suffix specified for the loadable module builder + + """ + + try: + ld_module = env['BUILDERS']['LoadableModule'] + except KeyError: + import SCons.Defaults + action_list = [SCons.Defaults.SharedCheck, + SCons.Defaults.LdModuleLinkAction, + LibSymlinksAction] + ld_module = SCons.Builder.Builder(action=action_list, + emitter="$LDMODULEEMITTER", + prefix="$LDMODULEPREFIX", + suffix=loadable_module_suffix, + target_scanner=ProgramScanner, + src_suffix='$SHOBJSUFFIX', + src_builder='SharedObject') + env['BUILDERS']['LoadableModule'] = ld_module + + return ld_module + + +def createObjBuilders(env): + """This is a utility function that creates the StaticObject + and SharedObject Builders in an Environment if they + are not there already. + + If they are there already, we return the existing ones. + + This is a separate function because soooo many Tools + use this functionality. + + The return is a 2-tuple of (StaticObject, SharedObject) + """ + + try: + static_obj = env['BUILDERS']['StaticObject'] + except KeyError: + static_obj = SCons.Builder.Builder(action={}, + emitter={}, + prefix='$OBJPREFIX', + suffix='$OBJSUFFIX', + src_builder=['CFile', 'CXXFile'], + source_scanner=SourceFileScanner, + single_source=1) + env['BUILDERS']['StaticObject'] = static_obj + env['BUILDERS']['Object'] = static_obj + + try: + shared_obj = env['BUILDERS']['SharedObject'] + except KeyError: + shared_obj = SCons.Builder.Builder(action={}, + emitter={}, + prefix='$SHOBJPREFIX', + suffix='$SHOBJSUFFIX', + src_builder=['CFile', 'CXXFile'], + source_scanner=SourceFileScanner, + single_source=1) + env['BUILDERS']['SharedObject'] = shared_obj + + return (static_obj, shared_obj) + + +def createCFileBuilders(env): + """This is a utility function that creates the CFile/CXXFile + Builders in an Environment if they + are not there already. + + If they are there already, we return the existing ones. + + This is a separate function because soooo many Tools + use this functionality. + + The return is a 2-tuple of (CFile, CXXFile) + """ + + try: + c_file = env['BUILDERS']['CFile'] + except KeyError: + c_file = SCons.Builder.Builder(action={}, + emitter={}, + suffix={None: '$CFILESUFFIX'}) + env['BUILDERS']['CFile'] = c_file + + env.SetDefault(CFILESUFFIX='.c') + + try: + cxx_file = env['BUILDERS']['CXXFile'] + except KeyError: + cxx_file = SCons.Builder.Builder(action={}, + emitter={}, + suffix={None: '$CXXFILESUFFIX'}) + env['BUILDERS']['CXXFile'] = cxx_file + env.SetDefault(CXXFILESUFFIX='.cc') + + return (c_file, cxx_file) + + +########################################################################## +# Create common Java builders + +def CreateJarBuilder(env): + """The Jar builder expects a list of class files + which it can package into a jar file. + + The jar tool provides an interface for passing other types + of java files such as .java, directories or swig interfaces + and will build them to class files in which it can package + into the jar. + """ + try: + java_jar = env['BUILDERS']['JarFile'] + except KeyError: + fs = SCons.Node.FS.get_default_fs() + jar_com = SCons.Action.Action('$JARCOM', '$JARCOMSTR') + java_jar = SCons.Builder.Builder(action=jar_com, + suffix='$JARSUFFIX', + src_suffix='$JAVACLASSSUFFIX', + src_builder='JavaClassFile', + source_factory=fs.Entry) + env['BUILDERS']['JarFile'] = java_jar + return java_jar + + +def CreateJavaHBuilder(env): + try: + java_javah = env['BUILDERS']['JavaH'] + except KeyError: + fs = SCons.Node.FS.get_default_fs() + java_javah_com = SCons.Action.Action('$JAVAHCOM', '$JAVAHCOMSTR') + java_javah = SCons.Builder.Builder(action=java_javah_com, + src_suffix='$JAVACLASSSUFFIX', + target_factory=fs.Entry, + source_factory=fs.File, + src_builder='JavaClassFile') + env['BUILDERS']['JavaH'] = java_javah + return java_javah + + +def CreateJavaClassFileBuilder(env): + try: + java_class_file = env['BUILDERS']['JavaClassFile'] + except KeyError: + fs = SCons.Node.FS.get_default_fs() + javac_com = SCons.Action.Action('$JAVACCOM', '$JAVACCOMSTR') + java_class_file = SCons.Builder.Builder(action=javac_com, + emitter={}, + # suffix = '$JAVACLASSSUFFIX', + src_suffix='$JAVASUFFIX', + src_builder=['JavaFile'], + target_factory=fs.Entry, + source_factory=fs.File, + target_scanner=JavaScanner) + env['BUILDERS']['JavaClassFile'] = java_class_file + return java_class_file + + +def CreateJavaClassDirBuilder(env): + try: + java_class_dir = env['BUILDERS']['JavaClassDir'] + except KeyError: + fs = SCons.Node.FS.get_default_fs() + javac_com = SCons.Action.Action('$JAVACCOM', '$JAVACCOMSTR') + java_class_dir = SCons.Builder.Builder(action=javac_com, + emitter={}, + target_factory=fs.Dir, + source_factory=fs.Dir, + target_scanner=JavaScanner) + env['BUILDERS']['JavaClassDir'] = java_class_dir + return java_class_dir + + +def CreateJavaFileBuilder(env): + try: + java_file = env['BUILDERS']['JavaFile'] + except KeyError: + java_file = SCons.Builder.Builder(action={}, + emitter={}, + suffix={None: '$JAVASUFFIX'}) + env['BUILDERS']['JavaFile'] = java_file + env['JAVASUFFIX'] = '.java' + return java_file + + +class ToolInitializerMethod: + """ + This is added to a construction environment in place of a + method(s) normally called for a Builder (env.Object, env.StaticObject, + etc.). When called, it has its associated ToolInitializer + object search the specified list of tools and apply the first + one that exists to the construction environment. It then calls + whatever builder was (presumably) added to the construction + environment in place of this particular instance. + """ + + def __init__(self, name, initializer): + """ + Note: we store the tool name as __name__ so it can be used by + the class that attaches this to a construction environment. + """ + self.__name__ = name + self.initializer = initializer + + def get_builder(self, env): + """ + Returns the appropriate real Builder for this method name + after having the associated ToolInitializer object apply + the appropriate Tool module. + """ + builder = getattr(env, self.__name__) + + self.initializer.apply_tools(env) + + builder = getattr(env, self.__name__) + if builder is self: + # There was no Builder added, which means no valid Tool + # for this name was found (or possibly there's a mismatch + # between the name we were called by and the Builder name + # added by the Tool module). + return None + + self.initializer.remove_methods(env) + + return builder + + def __call__(self, env, *args, **kw): + """ + """ + builder = self.get_builder(env) + if builder is None: + return [], [] + return builder(*args, **kw) + + +class ToolInitializer: + """ + A class for delayed initialization of Tools modules. + + Instances of this class associate a list of Tool modules with + a list of Builder method names that will be added by those Tool + modules. As part of instantiating this object for a particular + construction environment, we also add the appropriate + ToolInitializerMethod objects for the various Builder methods + that we want to use to delay Tool searches until necessary. + """ + + def __init__(self, env, tools, names): + if not SCons.Util.is_List(tools): + tools = [tools] + if not SCons.Util.is_List(names): + names = [names] + self.env = env + self.tools = tools + self.names = names + self.methods = {} + for name in names: + method = ToolInitializerMethod(name, self) + self.methods[name] = method + env.AddMethod(method) + + def remove_methods(self, env): + """ + Removes the methods that were added by the tool initialization + so we no longer copy and re-bind them when the construction + environment gets cloned. + """ + for method in self.methods.values(): + env.RemoveMethod(method) + + def apply_tools(self, env): + """ + Searches the list of associated Tool modules for one that + exists, and applies that to the construction environment. + """ + for t in self.tools: + tool = SCons.Tool.Tool(t) + if tool.exists(env): + env.Tool(tool) + return + + # If we fall through here, there was no tool module found. + # This is where we can put an informative error message + # about the inability to find the tool. We'll start doing + # this as we cut over more pre-defined Builder+Tools to use + # the ToolInitializer class. + + +def Initializers(env): + ToolInitializer(env, ['install'], ['_InternalInstall', '_InternalInstallAs', '_InternalInstallVersionedLib']) + + def Install(self, *args, **kw): + return self._InternalInstall(*args, **kw) + + def InstallAs(self, *args, **kw): + return self._InternalInstallAs(*args, **kw) + + def InstallVersionedLib(self, *args, **kw): + return self._InternalInstallVersionedLib(*args, **kw) + + env.AddMethod(Install) + env.AddMethod(InstallAs) + env.AddMethod(InstallVersionedLib) + + +def FindTool(tools, env): + for tool in tools: + t = Tool(tool) + if t.exists(env): + return tool + return None + + +def FindAllTools(tools, env): + def ToolExists(tool, env=env): + return Tool(tool).exists(env) + + return list(filter(ToolExists, tools)) + + +def tool_list(platform, env): + other_plat_tools = [] + # XXX this logic about what tool to prefer on which platform + # should be moved into either the platform files or + # the tool files themselves. + # The search orders here are described in the man page. If you + # change these search orders, update the man page as well. + if str(platform) == 'win32': + "prefer Microsoft tools on Windows" + linkers = ['mslink', 'gnulink', 'ilink', 'linkloc', 'ilink32'] + c_compilers = ['msvc', 'mingw', 'gcc', 'intelc', 'icl', 'icc', 'cc', 'bcc32'] + cxx_compilers = ['msvc', 'intelc', 'icc', 'g++', 'cxx', 'bcc32'] + assemblers = ['masm', 'nasm', 'gas', '386asm'] + fortran_compilers = ['gfortran', 'g77', 'ifl', 'cvf', 'f95', 'f90', 'fortran'] + ars = ['mslib', 'ar', 'tlib'] + other_plat_tools = ['msvs', 'midl', 'wix'] + elif str(platform) == 'os2': + "prefer IBM tools on OS/2" + linkers = ['ilink', 'gnulink', ] # 'mslink'] + c_compilers = ['icc', 'gcc', ] # 'msvc', 'cc'] + cxx_compilers = ['icc', 'g++', ] # 'msvc', 'cxx'] + assemblers = ['nasm', ] # 'masm', 'gas'] + fortran_compilers = ['ifl', 'g77'] + ars = ['ar', ] # 'mslib'] + elif str(platform) == 'irix': + "prefer MIPSPro on IRIX" + linkers = ['sgilink', 'gnulink'] + c_compilers = ['sgicc', 'gcc', 'cc'] + cxx_compilers = ['sgicxx', 'g++', 'cxx'] + assemblers = ['as', 'gas'] + fortran_compilers = ['f95', 'f90', 'f77', 'g77', 'fortran'] + ars = ['sgiar'] + elif str(platform) == 'sunos': + "prefer Forte tools on SunOS" + linkers = ['sunlink', 'gnulink'] + c_compilers = ['suncc', 'gcc', 'cc'] + cxx_compilers = ['suncxx', 'g++', 'cxx'] + assemblers = ['as', 'gas'] + fortran_compilers = ['sunf95', 'sunf90', 'sunf77', 'f95', 'f90', 'f77', + 'gfortran', 'g77', 'fortran'] + ars = ['sunar'] + elif str(platform) == 'hpux': + "prefer aCC tools on HP-UX" + linkers = ['hplink', 'gnulink'] + c_compilers = ['hpcc', 'gcc', 'cc'] + cxx_compilers = ['hpcxx', 'g++', 'cxx'] + assemblers = ['as', 'gas'] + fortran_compilers = ['f95', 'f90', 'f77', 'g77', 'fortran'] + ars = ['ar'] + elif str(platform) == 'aix': + "prefer AIX Visual Age tools on AIX" + linkers = ['aixlink', 'gnulink'] + c_compilers = ['aixcc', 'gcc', 'cc'] + cxx_compilers = ['aixcxx', 'g++', 'cxx'] + assemblers = ['as', 'gas'] + fortran_compilers = ['f95', 'f90', 'aixf77', 'g77', 'fortran'] + ars = ['ar'] + elif str(platform) == 'darwin': + "prefer GNU tools on Mac OS X, except for some linkers and IBM tools" + linkers = ['applelink', 'gnulink'] + c_compilers = ['gcc', 'cc'] + cxx_compilers = ['g++', 'cxx'] + assemblers = ['as'] + fortran_compilers = ['gfortran', 'f95', 'f90', 'g77'] + ars = ['ar'] + elif str(platform) == 'cygwin': + "prefer GNU tools on Cygwin, except for a platform-specific linker" + linkers = ['cyglink', 'mslink', 'ilink'] + c_compilers = ['gcc', 'msvc', 'intelc', 'icc', 'cc'] + cxx_compilers = ['g++', 'msvc', 'intelc', 'icc', 'cxx'] + assemblers = ['gas', 'nasm', 'masm'] + fortran_compilers = ['gfortran', 'g77', 'ifort', 'ifl', 'f95', 'f90', 'f77'] + ars = ['ar', 'mslib'] + else: + "prefer GNU tools on all other platforms" + linkers = ['gnulink', 'ilink'] + c_compilers = ['gcc', 'intelc', 'icc', 'cc'] + cxx_compilers = ['g++', 'intelc', 'icc', 'cxx'] + assemblers = ['gas', 'nasm', 'masm'] + fortran_compilers = ['gfortran', 'g77', 'ifort', 'ifl', 'f95', 'f90', 'f77'] + ars = ['ar', ] + + if not str(platform) == 'win32': + other_plat_tools += ['m4', 'rpm'] + + c_compiler = FindTool(c_compilers, env) or c_compilers[0] + + # XXX this logic about what tool provides what should somehow be + # moved into the tool files themselves. + if c_compiler and c_compiler == 'mingw': + # MinGW contains a linker, C compiler, C++ compiler, + # Fortran compiler, archiver and assembler: + cxx_compiler = None + linker = None + assembler = None + fortran_compiler = None + ar = None + else: + # Don't use g++ if the C compiler has built-in C++ support: + if c_compiler in ('msvc', 'intelc', 'icc'): + cxx_compiler = None + else: + cxx_compiler = FindTool(cxx_compilers, env) or cxx_compilers[0] + linker = FindTool(linkers, env) or linkers[0] + assembler = FindTool(assemblers, env) or assemblers[0] + fortran_compiler = FindTool(fortran_compilers, env) or fortran_compilers[0] + ar = FindTool(ars, env) or ars[0] + + d_compilers = ['dmd', 'ldc', 'gdc'] + d_compiler = FindTool(d_compilers, env) or d_compilers[0] + + other_tools = FindAllTools(other_plat_tools + [ + # TODO: merge 'install' into 'filesystem' and + # make 'filesystem' the default + 'filesystem', + # Parser generators + 'lex', 'yacc', + # Foreign function interface + 'rpcgen', 'swig', + # Java + 'jar', 'javac', 'javah', 'rmic', + # TeX + 'dvipdf', 'dvips', 'gs', + 'tex', 'latex', 'pdflatex', 'pdftex', + # Archivers + 'tar', 'zip', + # File builders (text) + 'textfile', + ], env) + + tools = [ + linker, + c_compiler, + cxx_compiler, + fortran_compiler, + assembler, + ar, + d_compiler, + ] + other_tools + + return [x for x in tools if x] + + +def find_program_path(env, key_program, default_paths=None, add_path=False) -> Optional[str]: + """ + Find the location of a tool using various means. + + Mainly for windows where tools aren't all installed in /usr/bin, etc. + + Args: + env: Current Construction Environment. + key_program: Tool to locate. + default_paths: List of additional paths this tool might be found in. + add_path: If true, add path found if it was from *default_paths*. + """ + # First search in the SCons path + path = env.WhereIs(key_program) + if path: + return path + + # Then in the OS path + path = SCons.Util.WhereIs(key_program) + if path: + if add_path: + env.AppendENVPath('PATH', os.path.dirname(path)) + return path + + # Finally, add the defaults and check again. + if default_paths is None: + return path + + save_path = env['ENV']['PATH'] + for p in default_paths: + env.AppendENVPath('PATH', p) + path = env.WhereIs(key_program) + + # By default, do not change ['ENV']['PATH'] permananetly + # leave that to the caller, unless add_path is true. + env['ENV']['PATH'] = save_path + if path and add_path: + env.AppendENVPath('PATH', os.path.dirname(path)) + + return path + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/aixc++.py b/scons/scons-local-4.5.1/SCons/Tool/aixc++.py new file mode 100644 index 000000000..c3efaea44 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/aixc++.py @@ -0,0 +1,43 @@ +"""SCons.Tool.aixc++ + +Tool-specific initialization for IBM xlC / Visual Age C++ compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +#forward proxy to the preffered cxx version +from SCons.Tool.aixcxx import * + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/aixcc.py b/scons/scons-local-4.5.1/SCons/Tool/aixcc.py new file mode 100644 index 000000000..09365b1df --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/aixcc.py @@ -0,0 +1,74 @@ +"""SCons.Tool.aixcc + +Tool-specific initialization for IBM xlc / Visual Age C compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os.path + +import SCons.Platform.aix + +from . import cc + +packages = ['vac.C', 'ibmcxx.cmp'] + +def get_xlc(env): + xlc = env.get('CC', 'xlc') + return SCons.Platform.aix.get_xlc(env, xlc, packages) + +def generate(env): + """Add Builders and construction variables for xlc / Visual Age + suite to an Environment.""" + path, _cc, version = get_xlc(env) + if path and _cc: + _cc = os.path.join(path, _cc) + + if 'CC' not in env: + env['CC'] = _cc + + cc.generate(env) + + if version: + env['CCVERSION'] = version + +def exists(env): + path, _cc, version = get_xlc(env) + if path and _cc: + xlc = os.path.join(path, _cc) + if os.path.exists(xlc): + return xlc + return None + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/aixcxx.py b/scons/scons-local-4.5.1/SCons/Tool/aixcxx.py new file mode 100644 index 000000000..58d9ecca9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/aixcxx.py @@ -0,0 +1,77 @@ +"""SCons.Tool.aixc++ + +Tool-specific initialization for IBM xlC / Visual Age C++ compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os.path + +import SCons.Platform.aix + +import SCons.Tool.cxx +cplusplus = SCons.Tool.cxx +#cplusplus = __import__('cxx', globals(), locals(), []) + +packages = ['vacpp.cmp.core', 'vacpp.cmp.batch', 'vacpp.cmp.C', 'ibmcxx.cmp'] + +def get_xlc(env): + xlc = env.get('CXX', 'xlC') + return SCons.Platform.aix.get_xlc(env, xlc, packages) + +def generate(env): + """Add Builders and construction variables for xlC / Visual Age + suite to an Environment.""" + path, _cxx, version = get_xlc(env) + if path and _cxx: + _cxx = os.path.join(path, _cxx) + + if 'CXX' not in env: + env['CXX'] = _cxx + + cplusplus.generate(env) + + if version: + env['CXXVERSION'] = version + +def exists(env): + path, _cxx, version = get_xlc(env) + if path and _cxx: + xlc = os.path.join(path, _cxx) + if os.path.exists(xlc): + return xlc + return None + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/aixf77.py b/scons/scons-local-4.5.1/SCons/Tool/aixf77.py new file mode 100644 index 000000000..4cef908fa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/aixf77.py @@ -0,0 +1,80 @@ +"""SCons.Tool.aixf77 + +Tool-specific initialization for IBM Visual Age f77 Fortran compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os.path + +#import SCons.Platform.aix + +from . import f77 + +# It would be good to look for the AIX F77 package the same way we're now +# looking for the C and C++ packages. This should be as easy as supplying +# the correct package names in the following list and uncommenting the +# SCons.Platform.aix_get_xlc() call in the function below. +packages = [] + +def get_xlf77(env): + xlf77 = env.get('F77', 'xlf77') + xlf77_r = env.get('SHF77', 'xlf77_r') + #return SCons.Platform.aix.get_xlc(env, xlf77, xlf77_r, packages) + return (None, xlf77, xlf77_r, None) + +def generate(env): + """ + Add Builders and construction variables for the Visual Age FORTRAN + compiler to an Environment. + """ + path, _f77, _shf77, version = get_xlf77(env) + if path: + _f77 = os.path.join(path, _f77) + _shf77 = os.path.join(path, _shf77) + + f77.generate(env) + + env['F77'] = _f77 + env['SHF77'] = _shf77 + +def exists(env): + path, _f77, _shf77, version = get_xlf77(env) + if path and _f77: + xlf77 = os.path.join(path, _f77) + if os.path.exists(xlf77): + return xlf77 + return None + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/aixlink.py b/scons/scons-local-4.5.1/SCons/Tool/aixlink.py new file mode 100644 index 000000000..dc0de2a3d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/aixlink.py @@ -0,0 +1,78 @@ +"""SCons.Tool.aixlink + +Tool-specific initialization for the IBM Visual Age linker. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# 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. +# + +import os +import os.path + +import SCons.Util + +from . import aixcc +from . import link + +import SCons.Tool.cxx +cplusplus = SCons.Tool.cxx + + +def smart_linkflags(source, target, env, for_signature): + if cplusplus.iscplusplus(source): + build_dir = env.subst('$BUILDDIR', target=target, source=source) + if build_dir: + return '-qtempinc=' + os.path.join(build_dir, 'tempinc') + return '' + + +def generate(env): + """ + Add Builders and construction variables for Visual Age linker to + an Environment. + """ + link.generate(env) + + env['SMARTLINKFLAGS'] = smart_linkflags + env['LINKFLAGS'] = SCons.Util.CLVar('$SMARTLINKFLAGS') + env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -qmkshrobj -qsuppress=1501-218') + env['SHLIBSUFFIX'] = '.a' + + +def exists(env): + # TODO: sync with link.smart_link() to choose a linker + linkers = { 'CXX': ['aixc++'], 'CC': ['aixcc'] } + alltools = [] + for langvar, linktools in linkers.items(): + if langvar in env: # use CC over CXX when user specified CC but not CXX + return SCons.Tool.FindTool(linktools, env) + alltools.extend(linktools) + return SCons.Tool.FindTool(alltools, env) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/applelink.py b/scons/scons-local-4.5.1/SCons/Tool/applelink.py new file mode 100644 index 000000000..b81d2b3cd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/applelink.py @@ -0,0 +1,209 @@ +"""SCons.Tool.applelink + +Tool-specific initialization for Apple's gnu-like linker. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# MIT License +# +# Copyright The SCons Foundation +# +# 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. +# + +# Even though the Mac is based on the GNU toolchain, it doesn't understand +# the -rpath option, so we use the "link" tool instead of "gnulink". +from SCons.Util import CLVar +from SCons.Errors import UserError +from . import link + +# User programmatically describes how SHLIBVERSION maps to values for compat/current. +_APPLELIB_MAX_VERSION_VALUES = (65535, 255, 255) + + +class AppleLinkInvalidCurrentVersionException(Exception): + pass + + +class AppleLinkInvalidCompatibilityVersionException(Exception): + pass + + +def _applelib_check_valid_version(version_string): + """ + Check that the version # is valid. + X[.Y[.Z]] + where X 0-65535 + where Y either not specified or 0-255 + where Z either not specified or 0-255 + :param version_string: + :return: + """ + parts = version_string.split('.') + if len(parts) > 3: + return False, "Version string has too many periods [%s]" % version_string + if len(parts) <= 0: + return False, "Version string unspecified [%s]" % version_string + + for (i, p) in enumerate(parts): + try: + p_i = int(p) + except ValueError: + return False, "Version component %s (from %s) is not a number" % (p, version_string) + if p_i < 0 or p_i > _APPLELIB_MAX_VERSION_VALUES[i]: + return False, "Version component %s (from %s) is not valid value should be between 0 and %d" % ( + p, version_string, _APPLELIB_MAX_VERSION_VALUES[i]) + + return True, "" + + +def _applelib_currentVersionFromSoVersion(source, target, env, for_signature): + """ + A generator function to create the -Wl,-current_version flag if needed. + If env['APPLELINK_NO_CURRENT_VERSION'] contains a true value no flag will be generated + Otherwise if APPLELINK_CURRENT_VERSION is not specified, env['SHLIBVERSION'] + will be used. + + :param source: + :param target: + :param env: + :param for_signature: + :return: A string providing the flag to specify the current_version of the shared library + """ + if env.get('APPLELINK_NO_CURRENT_VERSION', False): + return "" + elif env.get('APPLELINK_CURRENT_VERSION', False): + version_string = env['APPLELINK_CURRENT_VERSION'] + elif env.get('SHLIBVERSION', False): + version_string = env['SHLIBVERSION'] + else: + return "" + + version_string = ".".join(version_string.split('.')[:3]) + + valid, reason = _applelib_check_valid_version(version_string) + if not valid: + raise AppleLinkInvalidCurrentVersionException(reason) + + return "-Wl,-current_version,%s" % version_string + + +def _applelib_compatVersionFromSoVersion(source, target, env, for_signature): + """ + A generator function to create the -Wl,-compatibility_version flag if needed. + If env['APPLELINK_NO_COMPATIBILITY_VERSION'] contains a true value no flag will be generated + Otherwise if APPLELINK_COMPATIBILITY_VERSION is not specified + the first two parts of env['SHLIBVERSION'] will be used with a .0 appended. + + :param source: + :param target: + :param env: + :param for_signature: + :return: A string providing the flag to specify the compatibility_version of the shared library + """ + if env.get('APPLELINK_NO_COMPATIBILITY_VERSION', False): + return "" + elif env.get('APPLELINK_COMPATIBILITY_VERSION', False): + version_string = env['APPLELINK_COMPATIBILITY_VERSION'] + elif env.get('SHLIBVERSION', False): + version_string = ".".join(env['SHLIBVERSION'].split('.')[:2] + ['0']) + else: + return "" + + if version_string is None: + return "" + + valid, reason = _applelib_check_valid_version(version_string) + if not valid: + raise AppleLinkInvalidCompatibilityVersionException(reason) + + return "-Wl,-compatibility_version,%s" % version_string + +def _applelib_soname(target, source, env, for_signature): + """ + Override default _soname() function from SCons.Tools.linkCommon.SharedLibrary. + Apple's file naming for versioned shared libraries puts the version string before + the shared library suffix (.dylib), instead of after. + """ + if "SONAME" in env: + # Now verify that SOVERSION is not also set as that is not allowed + if "SOVERSION" in env: + raise UserError( + "Ambiguous library .so naming, both SONAME: %s and SOVERSION: %s are defined. " + "Only one can be defined for a target library." + % (env["SONAME"], env["SOVERSION"]) + ) + return "$SONAME" + else: + return "$SHLIBPREFIX$_get_shlib_stem$_SHLIBSOVERSION${SHLIBSUFFIX}" + + +def generate(env): + """Add Builders and construction variables for applelink to an + Environment.""" + link.generate(env) + + env['FRAMEWORKPATHPREFIX'] = '-F' + env['_FRAMEWORKPATH'] = '${_concat(FRAMEWORKPATHPREFIX, FRAMEWORKPATH, "", __env__, RDirs)}' + + env['_FRAMEWORKS'] = '${_concat("-framework ", FRAMEWORKS, "", __env__)}' + env['LINKCOM'] = env['LINKCOM'] + ' $_FRAMEWORKPATH $_FRAMEWORKS $FRAMEWORKSFLAGS' + env['SHLINKFLAGS'] = CLVar('$LINKFLAGS -dynamiclib') + env['SHLINKCOM'] = env['SHLINKCOM'] + ' $_FRAMEWORKPATH $_FRAMEWORKS $FRAMEWORKSFLAGS' + + env['_APPLELINK_CURRENT_VERSION'] = _applelib_currentVersionFromSoVersion + env['_APPLELINK_COMPATIBILITY_VERSION'] = _applelib_compatVersionFromSoVersion + env['_SHLIBVERSIONFLAGS'] = '$_APPLELINK_CURRENT_VERSION $_APPLELINK_COMPATIBILITY_VERSION ' + env['_LDMODULEVERSIONFLAGS'] = '$_APPLELINK_CURRENT_VERSION $_APPLELINK_COMPATIBILITY_VERSION ' + + # override the default for loadable modules, which are different + # on OS X than dynamic shared libs. echoing what XCode does for + # pre/suffixes: + env['LDMODULEPREFIX'] = '' + env['LDMODULESUFFIX'] = '' + env['LDMODULEFLAGS'] = CLVar('$LINKFLAGS -bundle') + env['LDMODULECOM'] = '$LDMODULE -o ${TARGET} $LDMODULEFLAGS' \ + ' $SOURCES $_LIBDIRFLAGS $_LIBFLAGS $_FRAMEWORKPATH $_FRAMEWORKS $FRAMEWORKSFLAGS' + + # New stuff + # + env['_SHLIBSUFFIX'] = '${_SHLIBVERSION}${SHLIBSUFFIX}' + + env['__SHLIBVERSIONFLAGS'] = '${__lib_either_version_flag(__env__,' \ + '"SHLIBVERSION","_APPLELINK_CURRENT_VERSION", "_SHLIBVERSIONFLAGS")}' + env['__LDMODULEVERSIONFLAGS'] = '${__lib_either_version_flag(__env__,' \ + '"LDMODULEVERSION","_APPLELINK_CURRENT_VERSION", "_LDMODULEVERSIONFLAGS")}' + + env["_SHLIBSONAME"] = _applelib_soname + + +def exists(env): + return env['PLATFORM'] == 'darwin' + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/ar.py b/scons/scons-local-4.5.1/SCons/Tool/ar.py new file mode 100644 index 000000000..2cd15c844 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ar.py @@ -0,0 +1,63 @@ +"""SCons.Tool.ar + +Tool-specific initialization for ar (library archive). + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Defaults +import SCons.Tool +import SCons.Util + + +def generate(env): + """Add Builders and construction variables for ar to an Environment.""" + SCons.Tool.createStaticLibBuilder(env) + + env['AR'] = 'ar' + env['ARFLAGS'] = SCons.Util.CLVar('rc') + env['ARCOM'] = '$AR $ARFLAGS $TARGET $SOURCES' + env['LIBPREFIX'] = 'lib' + env['LIBSUFFIX'] = '.a' + + if env.get('RANLIB',env.Detect('ranlib')) : + env['RANLIB'] = env.get('RANLIB','ranlib') + env['RANLIBFLAGS'] = SCons.Util.CLVar('') + env['RANLIBCOM'] = '$RANLIB $RANLIBFLAGS $TARGET' + +def exists(env): + return env.Detect('ar') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/as.py b/scons/scons-local-4.5.1/SCons/Tool/as.py new file mode 100644 index 000000000..d21cc8eea --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/as.py @@ -0,0 +1,49 @@ +"""SCons.Tool.as + +Tool-specific initialization for generic assembler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +# +# forward proxy to the preferred asm version +# +import SCons.Tool.asm + +# Resolve FLAKE8 F401 (make sider happy) +generate = SCons.Tool.asm.generate +exists = SCons.Tool.asm.exists + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/asm.py b/scons/scons-local-4.5.1/SCons/Tool/asm.py new file mode 100644 index 000000000..c7482513b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/asm.py @@ -0,0 +1,78 @@ +"""SCons.Tool.as + +Tool-specific initialization for as, the generic Posix assembler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Defaults +import SCons.Tool +import SCons.Util + +assemblers = ['as'] + +ASSuffixes = ['.s', '.asm', '.ASM'] +ASPPSuffixes = ['.spp', '.SPP', '.sx'] +if SCons.Util.case_sensitive_suffixes('.s', '.S'): + ASPPSuffixes.extend(['.S']) +else: + ASSuffixes.extend(['.S']) + +def generate(env): + """Add Builders and construction variables for as to an Environment.""" + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + for suffix in ASSuffixes: + static_obj.add_action(suffix, SCons.Defaults.ASAction) + shared_obj.add_action(suffix, SCons.Defaults.ASAction) + static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter) + shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter) + + for suffix in ASPPSuffixes: + static_obj.add_action(suffix, SCons.Defaults.ASPPAction) + shared_obj.add_action(suffix, SCons.Defaults.ASPPAction) + static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter) + shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter) + + env['AS'] = env.Detect(assemblers) or 'as' + env['ASFLAGS'] = SCons.Util.CLVar('') + env['ASCOM'] = '$AS $ASFLAGS -o $TARGET $SOURCES' + env['ASPPFLAGS'] = '$ASFLAGS' + env['ASPPCOM'] = '$CC $ASPPFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES' + +def exists(env): + return env.Detect(assemblers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/bcc32.py b/scons/scons-local-4.5.1/SCons/Tool/bcc32.py new file mode 100644 index 000000000..55f871b75 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/bcc32.py @@ -0,0 +1,81 @@ +"""SCons.Tool.bcc32 + +XXX + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os +import os.path + +import SCons.Defaults +import SCons.Tool +import SCons.Util + +def findIt(program, env): + # First search in the SCons path and then the OS path: + borwin = env.WhereIs(program) or SCons.Util.WhereIs(program) + if borwin: + dir = os.path.dirname(borwin) + env.PrependENVPath('PATH', dir) + return borwin + +def generate(env): + findIt('bcc32', env) + """Add Builders and construction variables for bcc to an + Environment.""" + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + for suffix in ['.c', '.cpp']: + static_obj.add_action(suffix, SCons.Defaults.CAction) + shared_obj.add_action(suffix, SCons.Defaults.ShCAction) + static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter) + shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter) + + env['CC'] = 'bcc32' + env['CCFLAGS'] = SCons.Util.CLVar('') + env['CFLAGS'] = SCons.Util.CLVar('') + env['CCCOM'] = '$CC -q $CFLAGS $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o$TARGET $SOURCES' + env['SHCC'] = '$CC' + env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS') + env['SHCFLAGS'] = SCons.Util.CLVar('$CFLAGS') + env['SHCCCOM'] = '$SHCC -WD $SHCFLAGS $SHCCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o$TARGET $SOURCES' + env['CPPDEFPREFIX'] = '-D' + env['CPPDEFSUFFIX'] = '' + env['INCPREFIX'] = '-I' + env['INCSUFFIX'] = '' + env['SHOBJSUFFIX'] = '.dll' + env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 0 + env['CFILESUFFIX'] = '.cpp' + +def exists(env): + return findIt('bcc32', env) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/c++.py b/scons/scons-local-4.5.1/SCons/Tool/c++.py new file mode 100644 index 000000000..6b772fa70 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/c++.py @@ -0,0 +1,44 @@ +"""SCons.Tool.c++ + +Tool-specific initialization for generic Posix C++ compilers. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + + +#forward proxy to the preffered cxx version +from SCons.Tool.cxx import * + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/cc.py b/scons/scons-local-4.5.1/SCons/Tool/cc.py new file mode 100644 index 000000000..590ec5fd3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/cc.py @@ -0,0 +1,105 @@ +"""SCons.Tool.cc + +Tool-specific initialization for generic Posix C compilers. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Tool +import SCons.Defaults +import SCons.Util + +CSuffixes = ['.c', '.m'] +if not SCons.Util.case_sensitive_suffixes('.c', '.C'): + CSuffixes.append('.C') + +def add_common_cc_variables(env): + """ + Add underlying common "C compiler" variables that + are used by multiple tools (specifically, c++). + """ + if '_CCCOMCOM' not in env: + env['_CCCOMCOM'] = '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS' + # It's a hack to test for darwin here, but the alternative + # of creating an applecc.py to contain this seems overkill. + # Maybe someday the Apple platform will require more setup and + # this logic will be moved. + env['FRAMEWORKS'] = SCons.Util.CLVar('') + env['FRAMEWORKPATH'] = SCons.Util.CLVar('') + if env['PLATFORM'] == 'darwin': + env['_CCCOMCOM'] = env['_CCCOMCOM'] + ' $_FRAMEWORKPATH' + + if 'CCFLAGS' not in env: + env['CCFLAGS'] = SCons.Util.CLVar('') + + if 'SHCCFLAGS' not in env: + env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS') + +compilers = ['cc'] + +def generate(env): + """ + Add Builders and construction variables for C compilers to an Environment. + """ + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + for suffix in CSuffixes: + static_obj.add_action(suffix, SCons.Defaults.CAction) + shared_obj.add_action(suffix, SCons.Defaults.ShCAction) + static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter) + shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter) + + add_common_cc_variables(env) + + if 'CC' not in env: + env['CC'] = env.Detect(compilers) or compilers[0] + env['CFLAGS'] = SCons.Util.CLVar('') + env['CCCOM'] = '$CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES' + env['SHCC'] = '$CC' + env['SHCFLAGS'] = SCons.Util.CLVar('$CFLAGS') + env['SHCCCOM'] = '$SHCC -o $TARGET -c $SHCFLAGS $SHCCFLAGS $_CCCOMCOM $SOURCES' + + env['CPPDEFPREFIX'] = '-D' + env['CPPDEFSUFFIX'] = '' + env['INCPREFIX'] = '-I' + env['INCSUFFIX'] = '' + env['SHOBJSUFFIX'] = '.os' + env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 0 + + env['CFILESUFFIX'] = '.c' + +def exists(env): + return env.Detect(env.get('CC', compilers)) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/clang.py b/scons/scons-local-4.5.1/SCons/Tool/clang.py new file mode 100644 index 000000000..518b09ed0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/clang.py @@ -0,0 +1,95 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for clang. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# Based on SCons/Tool/gcc.py by PaweÅ‚ Tomulik 2014 as a separate tool. +# Brought into the SCons mainline by Russel Winder 2017. + +import os +import re +import subprocess + +import SCons.Util +import SCons.Tool.cc +from SCons.Tool.clangCommon import get_clang_install_dirs +from SCons.Tool.MSCommon import msvc_setup_env_once + + +compilers = ['clang'] + + +def generate(env): + """Add Builders and construction variables for clang to an Environment.""" + SCons.Tool.cc.generate(env) + + if env['PLATFORM'] == 'win32': + # Ensure that we have a proper path for clang + clang = SCons.Tool.find_program_path(env, compilers[0], + default_paths=get_clang_install_dirs(env['PLATFORM'])) + if clang: + clang_bin_dir = os.path.dirname(clang) + env.AppendENVPath('PATH', clang_bin_dir) + + # Set-up ms tools paths + msvc_setup_env_once(env) + + env['CC'] = env.Detect(compilers) or 'clang' + if env['PLATFORM'] in ['cygwin', 'win32']: + env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS') + else: + env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS -fPIC') + + # determine compiler version + if env['CC']: + # pipe = SCons.Action._subproc(env, [env['CC'], '-dumpversion'], + pipe = SCons.Action._subproc(env, [env['CC'], '--version'], + stdin='devnull', + stderr='devnull', + stdout=subprocess.PIPE) + if pipe.wait() != 0: return + # clang -dumpversion is of no use + with pipe.stdout: + line = pipe.stdout.readline() + line = line.decode() + match = re.search(r'clang +version +([0-9]+(?:\.[0-9]+)+)', line) + if match: + env['CCVERSION'] = match.group(1) + + env['CCDEPFLAGS'] = '-MMD -MF ${TARGET}.d' + env["NINJA_DEPFILE_PARSE_FORMAT"] = 'clang' + + +def exists(env): + return env.Detect(compilers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/clangCommon/__init__.py b/scons/scons-local-4.5.1/SCons/Tool/clangCommon/__init__.py new file mode 100644 index 000000000..55014579f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/clangCommon/__init__.py @@ -0,0 +1,18 @@ +""" +Common routines and data for clang tools +""" + +clang_win32_dirs = [ + r'C:\Program Files\LLVM\bin', + r'C:\cygwin64\bin', + r'C:\msys64', + r'C:\msys64\mingw64\bin', + r'C:\cygwin\bin', + r'C:\msys', +] + +def get_clang_install_dirs(platform): + if platform == 'win32': + return clang_win32_dirs + else: + return [] \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/clangxx.py b/scons/scons-local-4.5.1/SCons/Tool/clangxx.py new file mode 100644 index 000000000..07d8378e3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/clangxx.py @@ -0,0 +1,103 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for clang++. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# Based on SCons/Tool/g++.py by PaweÅ‚ Tomulik 2014 as a separate tool. +# Brought into the SCons mainline by Russel Winder 2017. + +import os.path +import re +import subprocess + +import SCons.Tool +import SCons.Util +import SCons.Tool.cxx +from SCons.Tool.clangCommon import get_clang_install_dirs +from SCons.Tool.MSCommon import msvc_setup_env_once + + +compilers = ['clang++'] + +def generate(env): + """Add Builders and construction variables for clang++ to an Environment.""" + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + SCons.Tool.cxx.generate(env) + + env['CXX'] = env.Detect(compilers) or 'clang++' + + # platform specific settings + if env['PLATFORM'] == 'aix': + env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -mminimal-toc') + env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1 + env['SHOBJSUFFIX'] = '$OBJSUFFIX' + elif env['PLATFORM'] == 'hpux': + env['SHOBJSUFFIX'] = '.pic.o' + elif env['PLATFORM'] == 'sunos': + env['SHOBJSUFFIX'] = '.pic.o' + elif env['PLATFORM'] == 'win32': + # Ensure that we have a proper path for clang++ + clangxx = SCons.Tool.find_program_path(env, compilers[0], default_paths=get_clang_install_dirs(env['PLATFORM'])) + if clangxx: + clangxx_bin_dir = os.path.dirname(clangxx) + env.AppendENVPath('PATH', clangxx_bin_dir) + + # Set-up ms tools paths + msvc_setup_env_once(env) + + + # determine compiler version + if env['CXX']: + pipe = SCons.Action._subproc(env, [env['CXX'], '--version'], + stdin='devnull', + stderr='devnull', + stdout=subprocess.PIPE) + if pipe.wait() != 0: + return + + # clang -dumpversion is of no use + with pipe.stdout: + line = pipe.stdout.readline() + line = line.decode() + match = re.search(r'clang +version +([0-9]+(?:\.[0-9]+)+)', line) + if match: + env['CXXVERSION'] = match.group(1) + + env['CCDEPFLAGS'] = '-MMD -MF ${TARGET}.d' + env["NINJA_DEPFILE_PARSE_FORMAT"] = 'clang' + + +def exists(env): + return env.Detect(compilers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/compilation_db.py b/scons/scons-local-4.5.1/SCons/Tool/compilation_db.py new file mode 100644 index 000000000..a4954c1de --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/compilation_db.py @@ -0,0 +1,265 @@ +""" +Implements the ability for SCons to emit a compilation database for the MongoDB project. See +http://clang.llvm.org/docs/JSONCompilationDatabase.html for details on what a compilation +database is, and why you might want one. The only user visible entry point here is +'env.CompilationDatabase'. This method takes an optional 'target' to name the file that +should hold the compilation database, otherwise, the file defaults to compile_commands.json, +which is the name that most clang tools search for by default. +""" + +# Copyright 2020 MongoDB Inc. +# +# 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. +# + +import json +import itertools +import fnmatch +import SCons + +from SCons.Platform import TempFileMunge + +from .cxx import CXXSuffixes +from .cc import CSuffixes +from .asm import ASSuffixes, ASPPSuffixes + +# TODO: Is there a better way to do this than this global? Right now this exists so that the +# emitter we add can record all of the things it emits, so that the scanner for the top level +# compilation database can access the complete list, and also so that the writer has easy +# access to write all of the files. But it seems clunky. How can the emitter and the scanner +# communicate more gracefully? +__COMPILATION_DB_ENTRIES = [] + + +# We make no effort to avoid rebuilding the entries. Someday, perhaps we could and even +# integrate with the cache, but there doesn't seem to be much call for it. +class __CompilationDbNode(SCons.Node.Python.Value): + def __init__(self, value): + SCons.Node.Python.Value.__init__(self, value) + self.Decider(changed_since_last_build_node) + + +def changed_since_last_build_node(child, target, prev_ni, node): + """ Dummy decider to force always building""" + return True + + +def make_emit_compilation_DB_entry(comstr): + """ + Effectively this creates a lambda function to capture: + * command line + * source + * target + :param comstr: unevaluated command line + :return: an emitter which has captured the above + """ + user_action = SCons.Action.Action(comstr) + + def emit_compilation_db_entry(target, source, env): + """ + This emitter will be added to each c/c++ object build to capture the info needed + for clang tools + :param target: target node(s) + :param source: source node(s) + :param env: Environment for use building this node + :return: target(s), source(s) + """ + + dbtarget = __CompilationDbNode(source) + + entry = env.__COMPILATIONDB_Entry( + target=dbtarget, + source=[], + __COMPILATIONDB_UOUTPUT=target, + __COMPILATIONDB_USOURCE=source, + __COMPILATIONDB_UACTION=user_action, + __COMPILATIONDB_ENV=env, + ) + + # TODO: Technically, these next two lines should not be required: it should be fine to + # cache the entries. However, they don't seem to update properly. Since they are quick + # to re-generate disable caching and sidestep this problem. + env.AlwaysBuild(entry) + env.NoCache(entry) + + __COMPILATION_DB_ENTRIES.append(dbtarget) + + return target, source + + return emit_compilation_db_entry + + +class CompDBTEMPFILE(TempFileMunge): + def __call__(self, target, source, env, for_signature): + return self.cmd + + +def compilation_db_entry_action(target, source, env, **kw): + """ + Create a dictionary with evaluated command line, target, source + and store that info as an attribute on the target + (Which has been stored in __COMPILATION_DB_ENTRIES array + :param target: target node(s) + :param source: source node(s) + :param env: Environment for use building this node + :param kw: + :return: None + """ + + command = env["__COMPILATIONDB_UACTION"].strfunction( + target=env["__COMPILATIONDB_UOUTPUT"], + source=env["__COMPILATIONDB_USOURCE"], + env=env["__COMPILATIONDB_ENV"], + overrides={'TEMPFILE': CompDBTEMPFILE} + ) + + entry = { + "directory": env.Dir("#").abspath, + "command": command, + "file": env["__COMPILATIONDB_USOURCE"][0], + "output": env['__COMPILATIONDB_UOUTPUT'][0] + } + + target[0].write(entry) + + +def write_compilation_db(target, source, env): + entries = [] + + use_abspath = env['COMPILATIONDB_USE_ABSPATH'] in [True, 1, 'True', 'true'] + use_path_filter = env.subst('$COMPILATIONDB_PATH_FILTER') + + for s in __COMPILATION_DB_ENTRIES: + entry = s.read() + source_file = entry['file'] + output_file = entry['output'] + + if use_abspath: + source_file = source_file.srcnode().abspath + output_file = output_file.abspath + else: + source_file = source_file.srcnode().path + output_file = output_file.path + + if use_path_filter and not fnmatch.fnmatch(output_file, use_path_filter): + continue + + path_entry = {'directory': entry['directory'], + 'command': entry['command'], + 'file': source_file, + 'output': output_file} + + entries.append(path_entry) + + with open(target[0].path, "w") as output_file: + json.dump( + entries, output_file, sort_keys=True, indent=4, separators=(",", ": ") + ) + output_file.write("\n") + + +def scan_compilation_db(node, env, path): + return __COMPILATION_DB_ENTRIES + + +def compilation_db_emitter(target, source, env): + """ fix up the source/targets """ + + # Someone called env.CompilationDatabase('my_targetname.json') + if not target and len(source) == 1: + target = source + + # Default target name is compilation_db.json + if not target: + target = ['compile_commands.json', ] + + # No source should have been passed. Drop it. + if source: + source = [] + + return target, source + + +def generate(env, **kwargs): + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + env["COMPILATIONDB_COMSTR"] = kwargs.get( + "COMPILATIONDB_COMSTR", "Building compilation database $TARGET" + ) + + components_by_suffix = itertools.chain( + itertools.product( + CSuffixes, + [ + (static_obj, SCons.Defaults.StaticObjectEmitter, "$CCCOM"), + (shared_obj, SCons.Defaults.SharedObjectEmitter, "$SHCCCOM"), + ], + ), + itertools.product( + CXXSuffixes, + [ + (static_obj, SCons.Defaults.StaticObjectEmitter, "$CXXCOM"), + (shared_obj, SCons.Defaults.SharedObjectEmitter, "$SHCXXCOM"), + ], + ), + itertools.product( + ASSuffixes, + [(static_obj, SCons.Defaults.StaticObjectEmitter, "$ASCOM")], + [(shared_obj, SCons.Defaults.SharedObjectEmitter, "$ASCOM")], + ), + itertools.product( + ASPPSuffixes, + [(static_obj, SCons.Defaults.StaticObjectEmitter, "$ASPPCOM")], + [(shared_obj, SCons.Defaults.SharedObjectEmitter, "$ASPPCOM")], + ), + ) + + for entry in components_by_suffix: + suffix = entry[0] + builder, base_emitter, command = entry[1] + + # Assumes a dictionary emitter + emitter = builder.emitter.get(suffix, False) + if emitter: + # We may not have tools installed which initialize all or any of + # cxx, cc, or assembly. If not skip resetting the respective emitter. + builder.emitter[suffix] = SCons.Builder.ListEmitter( + [emitter, make_emit_compilation_DB_entry(command), ] + ) + + env["BUILDERS"]["__COMPILATIONDB_Entry"] = SCons.Builder.Builder( + action=SCons.Action.Action(compilation_db_entry_action, None), + ) + + env["BUILDERS"]["CompilationDatabase"] = SCons.Builder.Builder( + action=SCons.Action.Action(write_compilation_db, "$COMPILATIONDB_COMSTR"), + target_scanner=SCons.Scanner.Scanner( + function=scan_compilation_db, node_class=None + ), + emitter=compilation_db_emitter, + suffix='json', + ) + + env['COMPILATIONDB_USE_ABSPATH'] = False + env['COMPILATIONDB_PATH_FILTER'] = '' + + +def exists(env): + return True diff --git a/scons/scons-local-4.5.1/SCons/Tool/cvf.py b/scons/scons-local-4.5.1/SCons/Tool/cvf.py new file mode 100644 index 000000000..47e733ebd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/cvf.py @@ -0,0 +1,58 @@ +"""SCons.Tool.cvf + +Tool-specific initialization for the Compaq Visual Fortran compiler. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +from . import fortran + +compilers = ['f90'] + +def generate(env): + """Add Builders and construction variables for compaq visual fortran to an Environment.""" + + fortran.generate(env) + + env['FORTRAN'] = 'f90' + env['FORTRANCOM'] = '$FORTRAN $FORTRANFLAGS $_FORTRANMODFLAG $_FORTRANINCFLAGS /compile_only ${SOURCES.windows} /object:${TARGET.windows}' + env['FORTRANPPCOM'] = '$FORTRAN $FORTRANFLAGS $CPPFLAGS $_CPPDEFFLAGS $_FORTRANMODFLAG $_FORTRANINCFLAGS /compile_only ${SOURCES.windows} /object:${TARGET.windows}' + env['SHFORTRANCOM'] = '$SHFORTRAN $SHFORTRANFLAGS $_FORTRANMODFLAG $_FORTRANINCFLAGS /compile_only ${SOURCES.windows} /object:${TARGET.windows}' + env['SHFORTRANPPCOM'] = '$SHFORTRAN $SHFORTRANFLAGS $CPPFLAGS $_CPPDEFFLAGS $_FORTRANMODFLAG $_FORTRANINCFLAGS /compile_only ${SOURCES.windows} /object:${TARGET.windows}' + env['OBJSUFFIX'] = '.obj' + env['FORTRANMODDIR'] = '${TARGET.dir}' + env['FORTRANMODDIRPREFIX'] = '/module:' + env['FORTRANMODDIRSUFFIX'] = '' + +def exists(env): + return env.Detect(compilers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/cxx.py b/scons/scons-local-4.5.1/SCons/Tool/cxx.py new file mode 100644 index 000000000..128cdc4f6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/cxx.py @@ -0,0 +1,95 @@ +"""SCons.Tool.c++ + +Tool-specific initialization for generic Posix C++ compilers. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# 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. +# + +import os.path + +import SCons.Defaults +import SCons.Util + +compilers = ['CC', 'c++'] + +CXXSuffixes = ['.cpp', '.cc', '.cxx', '.c++', '.C++', '.mm'] +if SCons.Util.case_sensitive_suffixes('.c', '.C'): + CXXSuffixes.append('.C') + +def iscplusplus(source): + if not source: + # Source might be None for unusual cases like SConf. + return 0 + for s in source: + if s.sources: + ext = os.path.splitext(str(s.sources[0]))[1] + if ext in CXXSuffixes: + return 1 + return 0 + +def generate(env): + """ + Add Builders and construction variables for Visual Age C++ compilers + to an Environment. + """ + import SCons.Tool + import SCons.Tool.cc + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + for suffix in CXXSuffixes: + static_obj.add_action(suffix, SCons.Defaults.CXXAction) + shared_obj.add_action(suffix, SCons.Defaults.ShCXXAction) + static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter) + shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter) + + SCons.Tool.cc.add_common_cc_variables(env) + + if 'CXX' not in env: + env['CXX'] = env.Detect(compilers) or compilers[0] + env['CXXFLAGS'] = SCons.Util.CLVar('') + env['CXXCOM'] = '$CXX -o $TARGET -c $CXXFLAGS $CCFLAGS $_CCCOMCOM $SOURCES' + env['SHCXX'] = '$CXX' + env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS') + env['SHCXXCOM'] = '$SHCXX -o $TARGET -c $SHCXXFLAGS $SHCCFLAGS $_CCCOMCOM $SOURCES' + + env['CPPDEFPREFIX'] = '-D' + env['CPPDEFSUFFIX'] = '' + env['INCPREFIX'] = '-I' + env['INCSUFFIX'] = '' + env['SHOBJSUFFIX'] = '.os' + env['OBJSUFFIX'] = '.o' + env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 0 + + env['CXXFILESUFFIX'] = '.cc' + +def exists(env): + return env.Detect(env.get('CXX', compilers)) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/cyglink.py b/scons/scons-local-4.5.1/SCons/Tool/cyglink.py new file mode 100644 index 000000000..bb5cd1035 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/cyglink.py @@ -0,0 +1,212 @@ +"""SCons.Tool.cyglink + +Customization of gnulink for Cygwin (http://www.cygwin.com/) + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +from SCons.Tool.linkCommon import StringizeLibSymlinks, EmitLibSymlinks +from SCons.Util import CLVar, is_String +from . import gnulink + + +def cyglink_lib_emitter(target, source, env, **kw): + verbose = True + + if 'variable_prefix' in kw: + var_prefix = kw['variable_prefix'] + else: + var_prefix = 'SHLIB' + + no_import_lib = env.get('no_import_lib', False) + + if verbose: + print("cyglink_lib_emitter: target[0]={!r}".format(target[0].get_path())) + + if not no_import_lib: + # Specify import lib and add to targets + + import_lib = env.subst('$%s_IMPLIBNAME' % var_prefix, target=target, source=source) + import_lib_target = env.fs.File(import_lib) + import_lib_target.attributes.shared = 1 + target.append(import_lib_target) + + if verbose: + print("cyglink_lib_emitter: import_lib={}".format(import_lib)) + print("cyglink_lib_emitter: target=%s" % target) + + for tgt in target: + if is_String(tgt): + tgt = env.File(tgt) + tgt.attributes.shared = 1 + + return target, source + + +def cyglink_ldmodule_emitter(target, source, env, **kw): + return cyglink_lib_emitter(target, source, env, variable_prefix='LDMODULE') + + +def cyglink_shlib_symlink_emitter(target, source, env, **kw): + """ + On cygwin, we only create a symlink from the non-versioned implib to the versioned implib. + We don't version the shared library itself. + :param target: + :param source: + :param env: + :param kw: + :return: + """ + verbose = True + + if 'variable_prefix' in kw: + var_prefix = kw['variable_prefix'] + else: + var_prefix = 'SHLIB' + + no_import_lib = env.get('no_import_lib', False) + if no_import_lib in ['1', 'True', 'true', True]: + if verbose: + print("cyglink_shlib_symlink_emitter: no_import_lib=%s" % no_import_lib) + return target, source + + no_symlinks = env.subst('$%sNOVERSIONSYMLINKS' % var_prefix) + if no_symlinks in ['1', 'True', 'true', True]: + return target, source + + shlibversion = env.subst('$%sVERSION' % var_prefix) + if shlibversion: + if verbose: + print("cyglink_shlib_symlink_emitter: %sVERSION=%s" % (var_prefix, shlibversion)) + + # The implib (added by the cyglink_lib_emitter) + imp_lib_node = target[1] + shlib_noversion_symlink = env.subst('$%s_NOVERSION_SYMLINK' % var_prefix, target=target[0], source=source) + + if verbose: + print("cyglink_shlib_symlink_emitter: shlib_noversion_symlink :%s" % shlib_noversion_symlink) + print("cyglink_shlib_symlink_emitter: imp_lib_node :%s" % imp_lib_node) + + symlinks = [(env.File(shlib_noversion_symlink), imp_lib_node)] + + if verbose: + print("cyglink_shlib_symlink_emitter: symlinks={!r}".format( + ', '.join(["%r->%r" % (k, v) for k, v in StringizeLibSymlinks(symlinks)]) + )) + + if symlinks: + # This does the actual symlinking + EmitLibSymlinks(env, symlinks, target[0]) + + # This saves the information so if the versioned shared library is installed + # it can faithfully reproduce the correct symlinks + target[0].attributes.shliblinks = symlinks + + return target, source + + +def cyglink_ldmod_symlink_emitter(target, source, env, **kw): + return cyglink_shlib_symlink_emitter(target, source, env, variable_prefix='LDMODULE') + + +def cyglink_shlibversion(target, source, env, for_signature): + var_prefix = 'SHLIB' + var = '%sVERSION' % var_prefix + if var not in env: + return '' + + version = env.subst("$%s" % var, target=target, source=source) + version = version.replace('.', '-') + return "." + version + + +def cyglink_ldmodule_version(target, source, env, for_signature): + var_prefix = 'LDMODULE' + var = '%sVERSION' % var_prefix + if var not in env: + return '' + + version = env.subst("$%s" % var, target=target, source=source) + version = version.replace('.', '-') + return "." + version + + +def _implib_pre_flags(target, source, env, for_signature): + no_import_lib = env.get('no_import_lib', False) + if no_import_lib in ['1', 'True', 'true', True]: + return '' + else: + return '-Wl,--out-implib=${TARGETS[1]} -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--whole-archive' + + +def _implib_post_flags(target, source, env, for_signature): + no_import_lib = env.get('no_import_lib', False) + if no_import_lib in ['1', 'True', 'true', True]: + return '' + else: + return '-Wl,--no-whole-archive' + + +def generate(env): + """Add Builders and construction variables for cyglink to an Environment.""" + gnulink.generate(env) + + env['LINKFLAGS'] = CLVar('-Wl,-no-undefined') + + env['SHLIBPREFIX'] = 'cyg' + env['SHLIBSUFFIX'] = '.dll' + + env['IMPLIBPREFIX'] = 'lib' + env['IMPLIBSUFFIX'] = '.dll.a' + + # Variables used by versioned shared libraries + # SHLIBVERSIONFLAGS and LDMODULEVERSIONFLAGS are same as in gnulink... + env['_SHLIBVERSIONFLAGS'] = '$SHLIBVERSIONFLAGS' + env['_LDMODULEVERSIONFLAGS'] = '$LDMODULEVERSIONFLAGS' + + env['_IMPLIB_PRE_SOURCES'] = _implib_pre_flags + env['_IMPLIB_POST_SOURCES'] = _implib_post_flags + env['SHLINKCOM'] = '$SHLINK -o $TARGET $SHLINKFLAGS $__SHLIBVERSIONFLAGS $__RPATH ' \ + '$_IMPLIB_PRE_SOURCES $SOURCES $_IMPLIB_POST_SOURCES $_LIBDIRFLAGS $_LIBFLAGS' + env['LDMODULECOM'] = '$LDMODULE -o $TARGET $SHLINKFLAGS $__LDMODULEVERSIONFLAGS $__RPATH ' \ + '$_IMPLIB_PRE_SOURCES $SOURCES $_IMPLIB_POST_SOURCES $_LIBDIRFLAGS $_LIBFLAGS' + + # Overwrite emitters. Cyglink does things differently when creating symlinks + env['SHLIBEMITTER'] = [cyglink_lib_emitter, cyglink_shlib_symlink_emitter] + env['LDMODULEEMITTER'] = [cyglink_ldmodule_emitter, cyglink_ldmod_symlink_emitter] + + # This is the non versioned shlib filename + # If SHLIBVERSION is defined then this will symlink to $SHLIBNAME + env['SHLIB_NOVERSION_SYMLINK'] = '${IMPLIBPREFIX}$_get_shlib_stem${IMPLIBSUFFIX}' + env['LDMODULE_NOVERSION_SYMLINK'] = '${IMPLIBPREFIX}$_get_ldmodule_stem${IMPLIBSUFFIX}' + + env['SHLIB_IMPLIBNAME'] = '${IMPLIBPREFIX}$_get_shlib_stem${_SHLIB_IMPLIBSUFFIX}' + env['LDMODULE_IMPLIBNAME'] = '${IMPLIBPREFIX}$_get_ldmodule_stem${_LDMODULE_IMPLIBSUFFIX}' + + env['_cyglink_shlibversion'] = cyglink_shlibversion + env['_SHLIB_IMPLIBSUFFIX'] = '${_cyglink_shlibversion}${IMPLIBSUFFIX}' + env['_SHLIBSUFFIX'] = '${_cyglink_shlibversion}${SHLIBSUFFIX}' + + env['_cyglink_ldmodule_version'] = cyglink_ldmodule_version + + env['_LDMODULESUFFIX'] = '${_cyglink_ldmodule_version}${LDMODULESUFFIX}' + env['_LDMODULE_IMPLIBSUFFIX'] = '${_cyglink_ldmodule_version}${IMPLIBSUFFIX}' + + # Remove variables set by default initialization which aren't needed/used by cyglink + # these variables were set by gnulink but are not used in cyglink + for rv in ['_SHLIBSONAME', '_LDMODULESONAME']: + if rv in env: + del env[rv] + + +def exists(env): + return gnulink.exists(env) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/default.py b/scons/scons-local-4.5.1/SCons/Tool/default.py new file mode 100644 index 000000000..a36e9ec1c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/default.py @@ -0,0 +1,50 @@ +"""SCons.Tool.default + +Initialization with a default tool list. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Tool + +def generate(env): + """Add default tools.""" + for t in SCons.Tool.tool_list(env['PLATFORM'], env): + SCons.Tool.Tool(t)(env) + +def exists(env): + return 1 + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/dmd.py b/scons/scons-local-4.5.1/SCons/Tool/dmd.py new file mode 100644 index 000000000..67ed43eda --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/dmd.py @@ -0,0 +1,169 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons.Tool.dmd + +Tool-specific initialization for the Digital Mars D compiler. +(http://digitalmars.com/d) + +Originally coded by Andy Friesen (andy@ikagames.com) +15 November 2003 + +Evolved by Russel Winder (russel@winder.org.uk) +2010-02-07 onwards + +Compiler variables: + +DC + The name of the D compiler to use. + Defaults to dmd or gdmd, whichever is found. + +DPATH + List of paths to search for import modules. + +DVERSIONS + List of version tags to enable when compiling. + +DDEBUG + List of debug tags to enable when compiling. + +Linker related variables: + +LIBS + List of library files to link in. + +DLINK + Name of the linker to use. + Defaults to dmd or gdmd, whichever is found. + +DLINKFLAGS + List of linker flags. + +Lib tool variables: + +DLIB + Name of the lib tool to use. Defaults to lib. + +DLIBFLAGS + List of flags to pass to the lib tool. + +LIBS + Same as for the linker. (libraries to pull into the .lib) + +""" + + +import SCons.Action +import SCons.Builder +import SCons.Defaults +import SCons.Scanner.D +import SCons.Tool + +import SCons.Tool.DCommon as DCommon + + +def generate(env): + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + static_obj.add_action('.d', SCons.Defaults.DAction) + shared_obj.add_action('.d', SCons.Defaults.ShDAction) + static_obj.add_emitter('.d', SCons.Defaults.StaticObjectEmitter) + shared_obj.add_emitter('.d', SCons.Defaults.SharedObjectEmitter) + + env['DC'] = env.Detect(['dmd', 'ldmd2', 'gdmd']) or 'dmd' + env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -of$TARGET $SOURCES' + env['_DINCFLAGS'] = '${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, TARGET, SOURCE)}' + env['_DVERFLAGS'] = '${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)}' + env['_DDEBUGFLAGS'] = '${_concat(DDEBUGPREFIX, DDEBUG, DDEBUGSUFFIX, __env__)}' + env['_DFLAGS'] = '${_concat(DFLAGPREFIX, DFLAGS, DFLAGSUFFIX, __env__)}' + + env['SHDC'] = '$DC' + env['SHDCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -fPIC -of$TARGET $SOURCES' + + env['DPATH'] = ['#/'] + env['DFLAGS'] = [] + env['DVERSIONS'] = [] + env['DDEBUG'] = [] + + if env['DC']: + DCommon.addDPATHToEnv(env, env['DC']) + + env['DINCPREFIX'] = '-I' + env['DINCSUFFIX'] = '' + env['DVERPREFIX'] = '-version=' + env['DVERSUFFIX'] = '' + env['DDEBUGPREFIX'] = '-debug=' + env['DDEBUGSUFFIX'] = '' + env['DFLAGPREFIX'] = '-' + env['DFLAGSUFFIX'] = '' + env['DFILESUFFIX'] = '.d' + + env['DLINK'] = '$DC' + env['DLINKFLAGS'] = SCons.Util.CLVar('') + env['DLINKCOM'] = '$DLINK -of$TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS' + + env['SHDLINK'] = '$DC' + env['SHDLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -defaultlib=libphobos2.so') + env[ + 'SHDLINKCOM'] = '$DLINK -of$TARGET $SHDLINKFLAGS $__SHDLIBVERSIONFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS' + + env['DLIBLINKPREFIX'] = '' if env['PLATFORM'] == 'win32' else '-L-l' + env['DLIBLINKSUFFIX'] = '.lib' if env['PLATFORM'] == 'win32' else '' + env['_DLIBFLAGS'] = '${_stripixes(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__)}' + + env['DLIBDIRPREFIX'] = '-L-L' + env['DLIBDIRSUFFIX'] = '' + env['_DLIBDIRFLAGS'] = '${_concat(DLIBDIRPREFIX, LIBPATH, DLIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)}' + + env['DLIB'] = 'lib' if env['PLATFORM'] == 'win32' else 'ar cr' + env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {0}$TARGET $SOURCES $_DLIBFLAGS'.format( + '-c ' if env['PLATFORM'] == 'win32' else '') + + # env['_DLIBFLAGS'] = '${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)}' + + env['DLIBFLAGPREFIX'] = '-' + env['DLIBFLAGSUFFIX'] = '' + + # __RPATH is set to $_RPATH in the platform specification if that + # platform supports it. + env['DRPATHPREFIX'] = '-L-rpath,' if env['PLATFORM'] == 'darwin' else '-L-rpath=' + env['DRPATHSUFFIX'] = '' + env['_DRPATH'] = '${_concat(DRPATHPREFIX, RPATH, DRPATHSUFFIX, __env__)}' + + # Support for versioned libraries + env['_SHDLIBVERSIONFLAGS'] = '$SHDLIBVERSIONFLAGS -L-soname=$_SHLIBSONAME' + + env['BUILDERS']['ProgramAllAtOnce'] = SCons.Builder.Builder( + action='$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -of$TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS', + emitter=DCommon.allAtOnceEmitter, + ) + + +def exists(env): + return env.Detect(['dmd', 'ldmd2', 'gdmd']) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/__init__.py b/scons/scons-local-4.5.1/SCons/Tool/docbook/__init__.py new file mode 100644 index 000000000..52e291144 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/__init__.py @@ -0,0 +1,843 @@ + +"""SCons.Tool.docbook + +Tool-specific initialization for Docbook. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +import os +import glob +import re + +import SCons.Action +import SCons.Builder +import SCons.Defaults +import SCons.Script +import SCons.Tool +import SCons.Util + + +__debug_tool_location = False +# Get full path to this script +scriptpath = os.path.dirname(os.path.realpath(__file__)) + +# Local folder for the collection of DocBook XSLs +db_xsl_folder = 'docbook-xsl-1.76.1' + +# Do we have lxml? +has_lxml = True +try: + import lxml +except Exception: + has_lxml = False + +# Set this to True, to prefer xsltproc over lxml +prefer_xsltproc = False + +# Regexs for parsing Docbook XML sources of MAN pages +re_manvolnum = re.compile(r"([^<]*)") +re_refname = re.compile(r"([^<]*)") + +# +# lxml etree XSLT global max traversal depth +# + +lmxl_xslt_global_max_depth = 3600 + +if has_lxml and lmxl_xslt_global_max_depth: + def __lxml_xslt_set_global_max_depth(max_depth): + from lxml import etree + etree.XSLT.set_global_max_depth(max_depth) + __lxml_xslt_set_global_max_depth(lmxl_xslt_global_max_depth) + +# +# Helper functions +# +def __extend_targets_sources(target, source): + """ Prepare the lists of target and source files. """ + if not SCons.Util.is_List(target): + target = [target] + if not source: + source = target[:] + elif not SCons.Util.is_List(source): + source = [source] + if len(target) < len(source): + target.extend(source[len(target):]) + + return target, source + +def __init_xsl_stylesheet(kw, env, user_xsl_var, default_path): + if kw.get('DOCBOOK_XSL','') == '': + xsl_style = kw.get('xsl', env.subst(user_xsl_var)) + if xsl_style == '': + path_args = [scriptpath, db_xsl_folder] + default_path + xsl_style = os.path.join(*path_args) + kw['DOCBOOK_XSL'] = xsl_style + +def __select_builder(lxml_builder, cmdline_builder): + """ Selects a builder, based on which Python modules are present. """ + if has_lxml and not prefer_xsltproc: + return lxml_builder + + return cmdline_builder + +def __ensure_suffix(t, suffix): + """ Ensure that the target t has the given suffix. """ + tpath = str(t) + if not tpath.endswith(suffix): + return tpath+suffix + + return t + +def __ensure_suffix_stem(t, suffix): + """ Ensure that the target t has the given suffix, and return the file's stem. """ + tpath = str(t) + if not tpath.endswith(suffix): + stem = tpath + tpath += suffix + + return tpath, stem + else: + stem, ext = os.path.splitext(tpath) + + return t, stem + +def __get_xml_text(root): + """ Return the text for the given root node (xml.dom.minidom). """ + txt = "" + for e in root.childNodes: + if e.nodeType == e.TEXT_NODE: + txt += e.data + return txt + +def __create_output_dir(base_dir): + """ Ensure that the output directory base_dir exists. """ + root, tail = os.path.split(base_dir) + dir = None + if tail: + if base_dir.endswith('/'): + dir = base_dir + else: + dir = root + else: + if base_dir.endswith('/'): + dir = base_dir + + if dir and not os.path.isdir(dir): + os.makedirs(dir) + + +# +# Supported command line tools and their call "signature" +# +xsltproc_com_priority = ['xsltproc', 'saxon', 'saxon-xslt', 'xalan'] + +# TODO: Set minimum version of saxon-xslt to be 8.x (lower than this only supports xslt 1.0. +# see: http://saxon.sourceforge.net/saxon6.5.5/ +# see: http://saxon.sourceforge.net/ +xsltproc_com = {'xsltproc' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGET $DOCBOOK_XSL $SOURCE', + 'saxon' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGET $DOCBOOK_XSL $SOURCE $DOCBOOK_XSLTPROCPARAMS', + # Note if saxon-xslt is version 5.5 the proper arguments are: (swap order of docbook_xsl and source) + # 'saxon-xslt' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGET $SOURCE $DOCBOOK_XSL $DOCBOOK_XSLTPROCPARAMS', + 'saxon-xslt' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGET $DOCBOOK_XSL $SOURCE $DOCBOOK_XSLTPROCPARAMS', + 'xalan' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -q -out $TARGET -xsl $DOCBOOK_XSL -in $SOURCE'} +xmllint_com = {'xmllint' : '$DOCBOOK_XMLLINT $DOCBOOK_XMLLINTFLAGS --xinclude $SOURCE > $TARGET'} +fop_com = {'fop' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -fo $SOURCE -pdf $TARGET', + 'xep' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -valid -fo $SOURCE -pdf $TARGET', + 'jw' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -f docbook -b pdf $SOURCE -o $TARGET'} + +def __detect_cl_tool(env, chainkey, cdict, cpriority=None): + """ + Helper function, picks a command line tool from the list + and initializes its environment variables. + """ + if env.get(chainkey,'') == '': + clpath = '' + + if cpriority is None: + cpriority = cdict.keys() + for cltool in cpriority: + if __debug_tool_location: + print("DocBook: Looking for %s"%cltool) + clpath = env.WhereIs(cltool) + if clpath: + if __debug_tool_location: + print("DocBook: Found:%s"%cltool) + env[chainkey] = clpath + if not env[chainkey + 'COM']: + env[chainkey + 'COM'] = cdict[cltool] + break + +def _detect(env): + """ + Detect all the command line tools that we might need for creating + the requested output formats. + """ + global prefer_xsltproc + + if env.get('DOCBOOK_PREFER_XSLTPROC',''): + prefer_xsltproc = True + + if (not has_lxml) or prefer_xsltproc: + # Try to find the XSLT processors + __detect_cl_tool(env, 'DOCBOOK_XSLTPROC', xsltproc_com, xsltproc_com_priority) + __detect_cl_tool(env, 'DOCBOOK_XMLLINT', xmllint_com) + + __detect_cl_tool(env, 'DOCBOOK_FOP', fop_com, ['fop','xep','jw']) + +# +# Scanners +# +include_re = re.compile(r'fileref\\s*=\\s*["|\']([^\\n]*)["|\']') +sentity_re = re.compile(r'') + +def __xml_scan(node, env, path, arg): + """ Simple XML file scanner, detecting local images and XIncludes as implicit dependencies. """ + # Does the node exist yet? + if not os.path.isfile(str(node)): + return [] + + if env.get('DOCBOOK_SCANENT',''): + # Use simple pattern matching for system entities..., no support + # for recursion yet. + contents = node.get_text_contents() + return sentity_re.findall(contents) + + xsl_file = os.path.join(scriptpath,'utils','xmldepend.xsl') + if not has_lxml or prefer_xsltproc: + # Try to call xsltproc + xsltproc = env.subst("$DOCBOOK_XSLTPROC") + if xsltproc and xsltproc.endswith('xsltproc'): + # TODO: switch to _subproc or subprocess.run call + result = env.backtick(' '.join([xsltproc, xsl_file, str(node)])) + depfiles = [x.strip() for x in str(result).splitlines() if x.strip() != "" and not x.startswith(" 1: + env.Clean(outfiles[0], outfiles[1:]) + + + return result + +def DocbookSlidesPdf(env, target, source=None, *args, **kw): + """ + A pseudo-Builder, providing a Docbook toolchain for PDF slides output. + """ + # Init list of targets/sources + target, source = __extend_targets_sources(target, source) + + # Init XSL stylesheet + __init_xsl_stylesheet(kw, env, '$DOCBOOK_DEFAULT_XSL_SLIDESPDF', ['slides','fo','plain.xsl']) + + # Setup builder + __builder = __select_builder(__lxml_builder, __xsltproc_builder) + + # Create targets + result = [] + for t,s in zip(target,source): + t, stem = __ensure_suffix_stem(t, '.pdf') + xsl = __builder.__call__(env, stem+'.fo', s, **kw) + env.Depends(xsl, kw['DOCBOOK_XSL']) + result.extend(xsl) + result.extend(__fop_builder.__call__(env, t, xsl, **kw)) + + return result + +def DocbookSlidesHtml(env, target, source=None, *args, **kw): + """ + A pseudo-Builder, providing a Docbook toolchain for HTML slides output. + """ + # Init list of targets/sources + if not SCons.Util.is_List(target): + target = [target] + if not source: + source = target + target = ['index.html'] + elif not SCons.Util.is_List(source): + source = [source] + + # Init XSL stylesheet + __init_xsl_stylesheet(kw, env, '$DOCBOOK_DEFAULT_XSL_SLIDESHTML', ['slides','xhtml','plain.xsl']) + + # Setup builder + __builder = __select_builder(__lxml_builder, __xsltproc_builder) + + # Detect base dir + base_dir = kw.get('base_dir', '') + if base_dir: + __create_output_dir(base_dir) + + # Create targets + result = [] + r = __builder.__call__(env, __ensure_suffix(str(target[0]), '.html'), source[0], **kw) + env.Depends(r, kw['DOCBOOK_XSL']) + result.extend(r) + # Add supporting files for cleanup + env.Clean(r, [os.path.join(base_dir, 'toc.html')] + + glob.glob(os.path.join(base_dir, 'foil*.html'))) + + return result + +def DocbookXInclude(env, target, source, *args, **kw): + """ + A pseudo-Builder, for resolving XIncludes in a separate processing step. + """ + # Init list of targets/sources + target, source = __extend_targets_sources(target, source) + + # Setup builder + __builder = __select_builder(__xinclude_lxml_builder,__xmllint_builder) + + # Create targets + result = [] + for t,s in zip(target,source): + result.extend(__builder.__call__(env, t, s, **kw)) + + return result + +def DocbookXslt(env, target, source=None, *args, **kw): + """ + A pseudo-Builder, applying a simple XSL transformation to the input file. + """ + # Init list of targets/sources + target, source = __extend_targets_sources(target, source) + + # Init XSL stylesheet + kw['DOCBOOK_XSL'] = env.File(kw.get('xsl', 'transform.xsl')) + + # Setup builder + __builder = __select_builder(__lxml_builder, __xsltproc_builder) + + # Create targets + result = [] + for t,s in zip(target,source): + r = __builder.__call__(env, t, s, **kw) + env.Depends(r, kw['DOCBOOK_XSL']) + result.extend(r) + + return result + + +def generate(env): + """Add Builders and construction variables for docbook to an Environment.""" + + env.SetDefault( + # Default names for customized XSL stylesheets + DOCBOOK_DEFAULT_XSL_EPUB = '', + DOCBOOK_DEFAULT_XSL_HTML = '', + DOCBOOK_DEFAULT_XSL_HTMLCHUNKED = '', + DOCBOOK_DEFAULT_XSL_HTMLHELP = '', + DOCBOOK_DEFAULT_XSL_PDF = '', + DOCBOOK_DEFAULT_XSL_MAN = '', + DOCBOOK_DEFAULT_XSL_SLIDESPDF = '', + DOCBOOK_DEFAULT_XSL_SLIDESHTML = '', + + # Paths to the detected executables + DOCBOOK_XSLTPROC = '', + DOCBOOK_XMLLINT = '', + DOCBOOK_FOP = '', + + # Additional flags for the text processors + DOCBOOK_XSLTPROCFLAGS = SCons.Util.CLVar(''), + DOCBOOK_XMLLINTFLAGS = SCons.Util.CLVar(''), + DOCBOOK_FOPFLAGS = SCons.Util.CLVar(''), + DOCBOOK_XSLTPROCPARAMS = SCons.Util.CLVar(''), + + # Default command lines for the detected executables + DOCBOOK_XSLTPROCCOM = xsltproc_com['xsltproc'], + DOCBOOK_XMLLINTCOM = xmllint_com['xmllint'], + DOCBOOK_FOPCOM = fop_com['fop'], + + # Screen output for the text processors + DOCBOOK_XSLTPROCCOMSTR = None, + DOCBOOK_XMLLINTCOMSTR = None, + DOCBOOK_FOPCOMSTR = None, + + ) + _detect(env) + + env.AddMethod(DocbookEpub, "DocbookEpub") + env.AddMethod(DocbookHtml, "DocbookHtml") + env.AddMethod(DocbookHtmlChunked, "DocbookHtmlChunked") + env.AddMethod(DocbookHtmlhelp, "DocbookHtmlhelp") + env.AddMethod(DocbookPdf, "DocbookPdf") + env.AddMethod(DocbookMan, "DocbookMan") + env.AddMethod(DocbookSlidesPdf, "DocbookSlidesPdf") + env.AddMethod(DocbookSlidesHtml, "DocbookSlidesHtml") + env.AddMethod(DocbookXInclude, "DocbookXInclude") + env.AddMethod(DocbookXslt, "DocbookXslt") + + +def exists(env): + return 1 diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/AUTHORS b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/AUTHORS new file mode 100644 index 000000000..9c3dcdc4b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/AUTHORS @@ -0,0 +1,4 @@ +The DocBook XSL stylesheets are maintained by Norman Walsh, +, and members of the DocBook Project, + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/BUGS b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/BUGS new file mode 100644 index 000000000..b3c78679d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/BUGS @@ -0,0 +1,21 @@ +To view a list of all open DocBook Project XSL stylesheet bugs: + + http://docbook.sf.net/tracker/xsl/bugs + +To submit a bug report against the stylesheets: + + http://docbook.sf.net/tracker/submit/bug + +To do a full-text search of all DocBook Project issues: + + http://docbook.sf.net/tracker/search + +Discussion about the DocBook Project XSL stylesheets takes place +on the docbook-apps mailing list: + + http://wiki.docbook.org/topic/DocBookAppsMailingList + +Real-time discussion takes place on IRC: + + http://wiki.docbook.org/topic/DocBookIrcChannel + irc://irc.freenode.net/docbook diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/COPYING b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/COPYING new file mode 100644 index 000000000..46bc1209c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/COPYING @@ -0,0 +1,47 @@ +Copyright +--------- +Copyright (C) 1999-2007 Norman Walsh +Copyright (C) 2003 Jiří Kosek +Copyright (C) 2004-2007 Steve Ball +Copyright (C) 2005-2008 The DocBook Project + +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. + +Except as contained in this notice, the names of individuals +credited with contribution to this software shall not be used in +advertising or otherwise to promote the sale, use or other +dealings in this Software without prior written authorization +from the individuals in question. + +Any stylesheet derived from this Software that is publically +distributed will be identified with a different name and the +version strings in any derived Software will be changed so that +no possibility of confusion between the derived package and this +Software will exist. + +Warranty +-------- +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 NORMAN WALSH OR ANY OTHER +CONTRIBUTOR 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. + +Contacting the Author +--------------------- +The DocBook XSL stylesheets are maintained by Norman Walsh, +, and members of the DocBook Project, + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/INSTALL b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/INSTALL new file mode 100644 index 000000000..72cb82b64 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/INSTALL @@ -0,0 +1,88 @@ +$Id: INSTALL 6145 2006-08-06 13:13:03Z xmldoc $ + +INSTALL file for the DocBook XSL stylesheets distribution + +---------------------------------------------------------------------- +Case #1: Installation using a package management system +---------------------------------------------------------------------- +If you have installed the DocBook XSL distribution using "apt-get", +"yum", "urpmi", or some similar package-management front-end, +then, as part of the package installation, the stylesheets have +already been automatically installed in the appropriate location +for your system, and your XML catalog environment has probably +been updated to use that location. + +---------------------------------------------------------------------- +Case #2: Installing manually +---------------------------------------------------------------------- +If you have downloaded a docbook-xsl zip, tar.gz, or tar.bz2 +file, use the following steps to install it. + + 1. Move the zip, tar.gz, or tar.bz2 file to the directory where + you'd like to install it (not to a temporary directory). + + 2. unzip or untar/uncompress the file + + That will create a docbook-xsl-$VERSION directory (where + $VERSION is the version number for the release). + +The remaining steps are all OPTIONAL. They are intended to +automatically update your user environment with XML Catalog +information about the DocBook XSL distribution. You are NOT +REQUIRED to complete these remaining steps. However, if you do +not, and you want to use XML catalogs with the DocBook XSL +stylesheets, you will need to manually update your XML catalog +environment + + 3. Change to the docbook-xsl-$VERSION directory and execute the + install.sh script: + + ./install.sh + + That will launch an interactive installer, which will emit a + series of prompts for you to respond to. + + To instead run it non-interactively without being prompted + for confirmation of the changes it makes, invoke it with the + "--batch" switch, like this: + + ./install.sh --batch + + After the process is complete, the installer will emit a + message with a command you need to run in order to source + your environment for use with the stylesheets. + + 4. To test that he installation has updated your environment + correctly, execute the test.sh script: + + ./test.sh + + That will test your XML catalog environment, using both the + xmlcatalog application and the Apache XML Commons Resolver. + + NOTE: The test.sh file is not created until the install.sh + file is run for the first time. + + 5. (UNINSTALLING) If/when you want to uninstall the release, + execute the uninstall.sh script. + + ./uninstall.sh + + To instead run it non-interactively without being prompted + for confirmation of the changes it makes, invoke it with the + "--batch" switch, like this: + + ./uninstall.sh --batch + + NOTE: The uninstall.sh file is not created until the install.sh + file is run for the first time. + + +---------------------------------------------------------------------- +Note to packagers +---------------------------------------------------------------------- +The install.sh, .CatalogManager.properties.example, and .urilist +files should not be packaged. They are useful only to users who +are installing the stylesheets manually. + +The catalog.xml file should be packaged. diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/Makefile b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/Makefile new file mode 100644 index 000000000..a87d60b65 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/Makefile @@ -0,0 +1,89 @@ +# $Id: Makefile.tests 8481 2009-07-13 20:18:41Z abdelazer $ +# +# This makefile does a "smoketest" of stylesheets for various +# output formats in the DocBook XSL Stylesheets release package. +# It doesn't actually check the output -- it's just useful for +# confirming whether each XSLT transformation actually executes +# successfully without any errors. +# +# To use it, run "make check" or just "make" + +XSLTPROC=xsltproc +XSLTPROC_FLAGS= + +TESTFILE=tests/refentry.007.xml +TESTFILE_NS=tests/refentry.007.ns.xml + +NORMAL_STYLES=fo/docbook.xsl html/docbook.xsl xhtml/docbook.xsl +NORMAL_PROFILE_STYLES=fo/profile-docbook.xsl html/profile-docbook.xsl xhtml/profile-docbook.xsl +CHUNK_STYLES=html/chunk.xsl html/onechunk.xsl xhtml/chunk.xsl xhtml/onechunk.xsl +HELP_STYLES=htmlhelp/htmlhelp.xsl javahelp/javahelp.xsl eclipse/eclipse.xsl +MULTIFILE_STYLES=$(CHUNK_STYLES) $(HELP_STYLES) +CHUNK_PROFILE_STYLES=html/profile-chunk.xsl html/profile-onechunk.xsl xhtml/profile-chunk.xsl xhtml/profile-onechunk.xsl +HELP_PROFILE_STYLES=htmlhelp/profile-htmlhelp.xsl eclipse/profile-eclipse.xsl javahelp/profile-javahelp.xsl +MULTIFILE_PROFILE_STYLES=$(CHUNK_PROFILE_STYLES) $(HELP_PROFILE_STYLES) + +MAN_STYLE=manpages/docbook.xsl +MAN_PROFILE_STYLE=manpages/profile-docbook.xsl + +TWO_PROFILE_STYLE=profiling/profile.xsl + +ROUNDTRIP_STYLES=roundtrip/dbk2ooo.xsl roundtrip/dbk2pages.xsl roundtrip/dbk2wordml.xsl +SLIDES_STYLES=slides/html/default.xsl slides/xhtml/default.xsl slides/fo/plain.xsl +WEBSITE_STYLES=website/website.xsl +WEBSITE_CHUNK_STYLES=website/chunk-website.xsl + +# chunked output gets written to TMP_OUTPUT_DIR +TMP_OUTPUT_DIR=/tmp/smoketest-output/ +# if you don't want TMP_OUTPUT_DIR and its contents deleted, unset +# SMOKETEST_CLEAN_TARGET; e.g. "make check SMOKETEST_CLEAN_TARGET=''" +SMOKETEST_CLEAN_TARGET=smoketest-clean + +check: smoketest-make-tmp-dir smoketest-normal smoketest-normal-profile smoketest-chunk smoketest-chunk-profile smoketest-man smoketest-man-profile smoketest-two-profile $(SMOKETEST_CLEAN_TARGET) + +smoketest-make-tmp-dir: + $(RM) -r $(TMP_OUTPUT_DIR) + mkdir '$(TMP_OUTPUT_DIR)' + +smoketest-normal: + for stylesheet in $(NORMAL_STYLES); do \ + echo "$(XSLT) $(TESTFILE) $$stylesheet > /dev/null"; \ + $(XSLT) $(TESTFILE) $$stylesheet > /dev/null; \ + echo "$(XSLT) $(TESTFILE_NS) $$stylesheet > /dev/null"; \ + $(XSLT) $(TESTFILE_NS) $$stylesheet > /dev/null; \ + done + +smoketest-normal-profile: + for stylesheet in $(NORMAL_PROFILE_STYLES); do \ + echo "$(XSLT) $(TESTFILE) $$stylesheet > /dev/null"; \ + $(XSLT) $(TESTFILE) $$stylesheet > /dev/null; \ + echo "$(XSLT) $(TESTFILE_NS) $$stylesheet > /dev/null"; \ + $(XSLT) $(TESTFILE_NS) $$stylesheet > /dev/null; \ + done + +smoketest-chunk: + for stylesheet in $(MULTIFILE_STYLES) ; do \ + $(XSLT) $(TESTFILE) $$stylesheet manifest.in.base.dir=1 base.dir=$(TMP_OUTPUT_DIR) ; \ + $(XSLT) $(TESTFILE_NS) $$stylesheet manifest.in.base.dir=1 base.dir=$(TMP_OUTPUT_DIR) ; \ + done; + +smoketest-chunk-profile: + for stylesheet in $(MULTIFILE_PROFILE_STYLES) ; do \ + $(XSLT) $(TESTFILE) $$stylesheet manifest.in.base.dir=1 base.dir=$(TMP_OUTPUT_DIR) ; \ + $(XSLT) $(TESTFILE_NS) $$stylesheet manifest.in.base.dir=1 base.dir=$(TMP_OUTPUT_DIR) ; \ + done; + +smoketest-man: + $(XSLT) $(TESTFILE) $(MAN_STYLE) man.output.in.separate.dir=1 man.output.base.dir=$(TMP_OUTPUT_DIR) ; \ + $(XSLT) $(TESTFILE_NS) $(MAN_STYLE) man.output.in.separate.dir=1 man.output.base.dir=$(TMP_OUTPUT_DIR) ; + +smoketest-man-profile: + $(XSLT) $(TESTFILE) $(MAN_PROFILE_STYLE) man.output.in.separate.dir=1 man.output.base.dir=$(TMP_OUTPUT_DIR) ; \ + $(XSLT) $(TESTFILE_NS) $(MAN_PROFILE_STYLE) man.output.in.separate.dir=1 man.output.base.dir=$(TMP_OUTPUT_DIR) ; + +smoketest-two-profile: + $(XSLT) $(TESTFILE_NS) $(TWO_PROFILE_STYLE) > /dev/null ; + +smoketest-clean: + $(RM) -r $(TMP_OUTPUT_DIR) + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS new file mode 100644 index 000000000..ed3dc5462 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS @@ -0,0 +1,139 @@ +Changes since the 1.76.0 release + +Note: This document lists changes only since the 1.76.0 release. If you instead +want a record of the complete list of changes for the codebase over its entire +history, you can obtain one by running the following commands: + + svn checkout https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl + svn log --xml --verbose xsl > ChangeHistory.xml + +â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â” + +Table of Contents + +Release Notes: 1.76.1 + + Common + FO + HTML + Epub + Webhelp + Params + Extensions + +Release Notes: 1.76.1 + +The following is a list of changes that have been made since the 1.76.0 +release. + +Common + +The following changes have been made to the common code since the 1.76.0 +release. + + â— Mauritz Jeanson: Makefile + + Added eu.xml and gl.xml to SOURCES. + + â— Jirka Kosek: l10n.xsl + + Fixed bug when context was lost due to usage of xsl:key + +FO + +The following changes have been made to the fo code since the 1.76.0 release. + + â— Robert Stayton: docbook.xsl; xref.xsl; fop1.xsl + + Apply patch to support named destination in fop1.xsl, per Sourceforge + bug report #3029845. + + â— dleidert: pagesetup.xsl + + Remove the namespace mistakingly added with the last upload. + +HTML + +The following changes have been made to the html code since the 1.76.0 release. + + â— Keith Fahlgren: highlight.xsl + + Implementing handling for and : transform to and for XHTML outputs and do not use in the highliting output (per Mauritz Jeanson) + +Epub + +The following changes have been made to the epub code since the 1.76.0 release. + + â— Keith Fahlgren: docbook.xsl + + Bugfix for [#3071521] to ensure that NCX navPoints are generated for d:book root nodes with the -NS version of the stylesheets + + â— Keith Fahlgren: docbook.xsl + + Remove unused NCX metadata elements + + â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/ + files/test_cust.x⋯ + + Normalizing identifier lookup between NCX and OPF + + â— Keith Fahlgren: bin/dbtoepub + + Reduce logging verbosity + + â— Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb + + Only copy images once for the DocBook to EPUB tool to correct Windows bug reported in [#3065489] + +Webhelp + +The following changes have been made to the webhelp code since the 1.76.0 +release. + + â— David Cramer: indexer + + More webhelp indexer refactoring + + â— David Cramer: build.xml + + Removed cruft from before webhelp indexer refactoring + + â— David Cramer: indexer/src + + Refactoring webhelp to separate more cleanly the xsl and java code. + + â— David Cramer: indexer/lib + + Refactoring webhelp to separate more cleanly the xsl and java code. + + â— David Cramer: Makefile; build.xml + + Refactoring webhelp to separate more cleanly the xsl and java code. + + â— David Cramer: indexer/src/com/nexwave/nquindexer/IndexerTask.java; + build.xml; indexer/src/⋯ + + Merged in changes from webhelp branch to address issue #3058244 regarding the xx.html temp file that was being created + +Params + +The following changes have been made to the params code since the 1.76.0 +release. + + â— Robert Stayton: draft.mode.xml + + Change default for draft.mode to 'no'. + +Extensions + +The following changes have been made to the extensions code since the 1.76.0 +release. + + â— David Cramer: Makefile + + More webhelp refactoring + + â— David Cramer: Makefile + + Refactoring webhelp to separate more cleanly the xsl and java code. + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.html b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.html new file mode 100644 index 000000000..979e2a2e6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.html @@ -0,0 +1,25 @@ +Changes since the 1.76.0 release

Changes since the 1.76.0 release

Note: This + document lists changes only since the 1.76.0 release. + If you instead want a record of the complete list of + changes for the codebase over its entire history, you + can obtain one by running the following commands: + +

  svn checkout https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl
+  svn log --xml --verbose xsl > ChangeHistory.xml

Release Notes: 1.76.1

The following is a list of changes that have been made + since the 1.76.0 release.

Common

The following changes have been made to the + common code + since the 1.76.0 release.

  • Mauritz Jeanson: Makefile

    Added eu.xml and gl.xml to SOURCES.
  • Jirka Kosek: l10n.xsl

    Fixed bug when context was lost due to usage of xsl:key

FO

The following changes have been made to the + fo code + since the 1.76.0 release.

  • Robert Stayton: docbook.xsl; xref.xsl; fop1.xsl

    Apply patch to support named destination in fop1.xsl, per Sourceforge
    +bug report #3029845.
  • dleidert: pagesetup.xsl

    Remove the namespace mistakingly added with the last upload.

HTML

The following changes have been made to the + html code + since the 1.76.0 release.

  • Keith Fahlgren: highlight.xsl

    Implementing handling for <b> and <i>: transform to <strong> and <em> for XHTML outputs and do not use in the highliting output (per Mauritz Jeanson)

Epub

The following changes have been made to the + epub code + since the 1.76.0 release.

  • Keith Fahlgren: docbook.xsl

    Bugfix for [#3071521] to ensure that NCX navPoints are generated for d:book root nodes with the -NS version of the stylesheets
  • Keith Fahlgren: docbook.xsl

    Remove unused NCX metadata elements
  • Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/files/test_cust.x⋯

    Normalizing identifier lookup between NCX and OPF
  • Keith Fahlgren: bin/dbtoepub

    Reduce logging verbosity
  • Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb

    Only copy images once for the DocBook to EPUB tool to correct Windows bug reported in [#3065489]

Webhelp

The following changes have been made to the + webhelp code + since the 1.76.0 release.

  • David Cramer: indexer

    More webhelp indexer refactoring
  • David Cramer: build.xml

    Removed cruft from before webhelp indexer refactoring
  • David Cramer: indexer/src

    Refactoring webhelp to separate more cleanly the xsl and java code.
  • David Cramer: indexer/lib

    Refactoring webhelp to separate more cleanly the xsl and java code.
  • David Cramer: Makefile; build.xml

    Refactoring webhelp to separate more cleanly the xsl and java code.
  • David Cramer: indexer/src/com/nexwave/nquindexer/IndexerTask.java; build.xml; indexer/src/⋯

    Merged in changes from webhelp branch to address issue #3058244 regarding the xx.html temp file that was being created

Params

The following changes have been made to the + params code + since the 1.76.0 release.

  • Robert Stayton: draft.mode.xml

    Change default for draft.mode to 'no'.

Extensions

The following changes have been made to the + extensions code + since the 1.76.0 release.

  • David Cramer: Makefile

    More webhelp refactoring
  • David Cramer: Makefile

    Refactoring webhelp to separate more cleanly the xsl and java code.
+ diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.xml new file mode 100644 index 000000000..8cc04e6da --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/NEWS.xml @@ -0,0 +1,145 @@ + + +
+ + +Note: This + document lists changes only since the 1.76.0 release. + If you instead want a record of the complete list of + changes for the codebase over its entire history, you + can obtain one by running the following commands: + + svn checkout https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl + svn log --xml --verbose xsl > ChangeHistory.xml + +Changes since the 1.76.0 release + + +Release Notes: 1.76.1 +The following is a list of changes that have been made + since the 1.76.0 release. + + +Common +The following changes have been made to the + common code + since the 1.76.0 release. + + +Mauritz Jeanson: MakefileAdded eu.xml and gl.xml to SOURCES. + + +Jirka Kosek: l10n.xslFixed bug when context was lost due to usage of xsl:key + + + + + +FO +The following changes have been made to the + fo code + since the 1.76.0 release. + + +Robert Stayton: docbook.xsl; xref.xsl; fop1.xslApply patch to support named destination in fop1.xsl, per Sourceforge +bug report #3029845. + + +dleidert: pagesetup.xslRemove the namespace mistakingly added with the last upload. + + + + + +HTML +The following changes have been made to the + html code + since the 1.76.0 release. + + +Keith Fahlgren: highlight.xslImplementing handling for <b> and <i>: transform to <strong> and <em> for XHTML outputs and do not use in the highliting output (per Mauritz Jeanson) + + + + + +Epub +The following changes have been made to the + epub code + since the 1.76.0 release. + + +Keith Fahlgren: docbook.xslBugfix for [#3071521] to ensure that NCX navPoints are generated for d:book root nodes with the -NS version of the stylesheets + + +Keith Fahlgren: docbook.xslRemove unused NCX metadata elements + + +Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/files/test_cust.x⋯Normalizing identifier lookup between NCX and OPF + + +Keith Fahlgren: bin/dbtoepubReduce logging verbosity + + +Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rbOnly copy images once for the DocBook to EPUB tool to correct Windows bug reported in [#3065489] + + + + + +Webhelp +The following changes have been made to the + webhelp code + since the 1.76.0 release. + + +David Cramer: indexerMore webhelp indexer refactoring + + +David Cramer: build.xmlRemoved cruft from before webhelp indexer refactoring + + +David Cramer: indexer/srcRefactoring webhelp to separate more cleanly the xsl and java code. + + +David Cramer: indexer/libRefactoring webhelp to separate more cleanly the xsl and java code. + + +David Cramer: Makefile; build.xmlRefactoring webhelp to separate more cleanly the xsl and java code. + + +David Cramer: indexer/src/com/nexwave/nquindexer/IndexerTask.java; build.xml; indexer/src/⋯Merged in changes from webhelp branch to address issue #3058244 regarding the xx.html temp file that was being created + + + + + +Params +The following changes have been made to the + params code + since the 1.76.0 release. + + +Robert Stayton: draft.mode.xmlChange default for draft.mode to 'no'. + + + + + +Extensions +The following changes have been made to the + extensions code + since the 1.76.0 release. + + +David Cramer: MakefileMore webhelp refactoring + + +David Cramer: MakefileRefactoring webhelp to separate more cleanly the xsl and java code. + + + + + +
+ diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/README b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/README new file mode 100644 index 000000000..3a5558ab0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/README @@ -0,0 +1,157 @@ +---------------------------------------------------------------------- + README file for the DocBook XSL Stylesheets +---------------------------------------------------------------------- +$Id: README 8484 2009-07-13 20:35:34Z mzjn $ + +These are XSL stylesheets for transforming DocBook XML document +instances into various output formats. + +This README file provides only very minimal documentation on using +the stylesheets. For more complete information, see Bob Stayton's +book "DocBook XSL: The Complete Guide", available online at: + + http://www.sagehill.net/docbookxsl/ + +---------------------------------------------------------------------- +Installation +---------------------------------------------------------------------- +See the INSTALL file for information about installing this release. + +---------------------------------------------------------------------- +How to use the stylesheets +---------------------------------------------------------------------- +The base canonical URI for these stylesheets is: + + http://docbook.sourceforge.net/release/xsl/current/ + +You call any of the stylesheets in this distribution by doing one +of the following: + + - Use the base canonical URI in combination with one of the + pathnames below. For example, for "chunked" HTML, output: + + http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl + + If your system has a working XML Catalog or SGML Catalog setup + (most Linux systems do), then that URI will automatically be + resolved and replaced with a local pathname on your system. + + - Use a "real" local system base path in combination with one of + the pathnames below. For example, for "chunked" HTML, output: + + /usr/share/xml/docbook/stylesheet/nwalsh/html/chunk.xsl + +To transform documents created with the standard DocBook +schema/DTD, use one of the following stylesheets: + + fo/docbook.xsl - for XSL-FO + + html/docbook.xsl - for HTML (as a single file) + html/chunk.xsl - for HTML (chunked into multiple files) + html/onechunk.xsl - for HTML (chunked output in single file) + + xhtml/*.xsl - for XHTML versions of the above + + xhtml-1_1/*.xsl - for XHTML 1.1 versions of the above + + epub/docbook.xsl - for .epub + + htmlhelp/htmlhelp.xsl - for HTML Help + javahelp/javahelp.xsl - for JavaHelp + eclipse/eclipse.xsl - for Eclipse Help + + manpages/docbook.xsl - for groff/nroff man pages + + */profile-* - single-pass-profiling versions of all above + + roundtrip/*.xsl - for DocBook to WordML, etc., to DocBook + +To transform documents created with the DocBook Slides schema/DTD, +use one of the following stylesheets: + + slides/html/*.xsl - for HTML slides of various kinds + slides/xhtml/*.xsl - for XHTML slides of various kinds + slides/fo/plain.xsl - for XSL-FO slides + slides/htmlhelp/... - for HTML Help slides + +To transform documents created with the DocBook Website +schema/DTD, use one of the following stylesheets: + + website/website.xsl - for non-tabular, non-chunked output + website/tabular.xsl - for tabular, non-chunked output + website/chunk-* - for chunked output + +To generate a titlepage customization layer from a titlepage spec: + + template/titlepage.xsl + +For details about creating titlepage spec files and generating and +using titlepage customization layers, see "DocBook XSL: The +Complete Guide" + +---------------------------------------------------------------------- +Manifest +---------------------------------------------------------------------- +AUTHORS contact information +BUGS about known problems +COPYING copyright information +INSTALL installation instructions +README this file +RELEASE.* per-release cumulative summaries of user-visible changes +TODO about planned features not yet implemented +VERSION release metadata, including the current version + number (note that the VERSION file is an XSL stylesheet) +NEWS changes since the last public release (for a cumulative list of + changes, see the ChangeHistory.xml file) + +common/ code used among several output formats (HTML, FO, manpages,...) +docsrc/ documentation sources +eclipse/ for producing Eclipse Help +epub/ for producing .epub +extensions/ DocBook XSL Java extensions +fo/ for producing XSL-FO +highlighting files used for adding source-code syntax highlighting in output +html/ for producing HTML +htmlhelp/ for producing HTML Help +images/ images used in callouts and graphical admonitions +javahelp/ for producing Java Help +lib/ utility stylesheets with schema-independent functions +manpages/ for producing groff/troff man pages +profiling/ for profiling (omitting/including conditional text) +roundtrip/ for "round trip" conversion among DocBook and + various word-processor formats (WordML, etc.) +slides/ for producing slides output (from Slides source) +template/ templates for building stylesheet customization layers +tools/ assorted supplementary tools +website/ for producing website output (from Website source) +xhtml/ for producing XHTML +xhtml-1_1/ for producing (stricter) XHTML 1.1 + +---------------------------------------------------------------------- +Changes +---------------------------------------------------------------------- +See the NEWS file for changes made since the previous release. + +See the RELEASE-NOTES.html or RELEASE-NOTES.txt or RELEASE-NOTES.pdf +files for per-release cumulative summaries of significant +user-visible changes. + +For online access to a hyperlinked view of all changes made over +the entire history of the codebase, see the following: + + http://docbook.svn.sourceforge.net/viewvc/docbook/trunk/xsl/?view=log + +WARNING: That above change history is a very long list and may +take a long time to load/download. + +You can also create an XML-formatted "ChangeHistory.xml" copy of +the complete change history for the codebase by running the +following commands: + + svn checkout https://docbook.svn.sf.net/svnroot/docbook/trunk/xsl + svn log --xml --verbose xsl > ChangeHistory.xml + +---------------------------------------------------------------------- +Copyright information +---------------------------------------------------------------------- +See the accompanying file named COPYING. diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.html b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.html new file mode 100644 index 000000000..556bd67a7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.html @@ -0,0 +1,8353 @@ +Release Notes for the DocBook XSL Stylesheets

Release Notes for the DocBook XSL Stylesheets

$Revision: 8934 $ $Date: 2010-11-01 13:03:14 -0700 (Mon, 01 Nov 2010) $

2010-11-01

+

This release-notes + document is available in the following formats: + HTML, + PDF, + plain text; it provides a per-release list +of enhancements and changes to the stylesheets’ public APIs +(user-configurable parameters) and excludes descriptions of most +bug fixes. For a complete list of all changes (including all bug +fixes) that have been made since the previous release, see the +separate NEWS (plain text) or NEWS.html files. Also available: +An online hyperlinked change history (warning: big file) of all +changes made over the entire history of the codebase.

+ +

As with all DocBook Project “dot + one plus” releases, this release aspires to be stable (in + contrast to dot-zero releases, which + are experimental).

+ + +

+ + + + +

Release Notes: 1.76.1

+ +

The following is a list of changes that have been made + since the 1.76.0 release.

+ +

FO

+ +

The following changes have been made to the + fo code + since the 1.76.0 release.

+
  • +

    Robert Stayton: docbook.xsl; xref.xsl; fop1.xsl

    Apply patch to support named destination in fop1.xsl, per Sourceforge
    +bug report #3029845.
    +
+
+ +

HTML

+ +

The following changes have been made to the html code since the 1.76.0 release.

+
  • +

    Keith Fahlgren: highlight.xsl

    Implementing handling for <b> and <i>: transform to <strong> and <em> for XHTML outputs and do not use in the highliting output (per Mauritz Jeanson)
    +
+
+ +

Params

+ +

The following changes have been made to the + params code + since the 1.76.0 release.

+
  • +

    Robert Stayton: draft.mode.xml

    Change default for draft.mode to 'no'.
    +
+
+ + +
+

Release Notes: 1.76.0

+ +

This release includes important bug fixes and adds the following +significant feature changes:

+
Webhelp

A new browser-based, cross-platform help format with full-text search and other features typically found in help systems. See webhelp/docs/content/ch01.html for more information and a demo.

Gentext

Many updates and additions to translation/locales thanks to Red Hat, the Fedora Project, and other contributors.

Common

Faster localization support, as language files are loaded on demand.

FO

Support for SVG content in imagedata added.

HTML

Output improved when using 'make.clean.html' and a stock CSS file is now provided.

EPUB

A number of improvements to NCX, cover and image selection, and XHTML 1.1 element choices

+ +

The following is a list of changes that have been made since the 1.75.2 release.

+

Gentext

+ +

The following changes have been made to the gentext code since the 1.75.2 release.

+
  • +

    + rlandmann: locale/fa.xml +

    +
    +            Update to Persian translation from the Fedora Project
    +          
    +
  • +

    + rlandmann: locale/nds.xml +

    +
    +            Locale for Low German
    +          
    +
  • +

    + Mauritz Jeanson: locale/ka.xml; Makefile +

    +
    +            Added support for Georgian based on patch #2917147.
    +          
    +
  • +

    + rlandmann: locale/nl.xml; locale/ja.xml +

    +
    +            Updated translations from Red Hat and the Fedora Project
    +          
    +
  • +

    + rlandmann: locale/bs.xml; locale/ru.xml; locale/hr.xml +

    +
    +            Updated locales from Red Hat and the Fedora Project
    +          
    +
  • +

    + rlandmann: locale/pt.xml; locale/cs.xml; locale/es.xml; locale/bg.xml; locale/nl.xml; loca⋯ +

    +
    +            Updated translations from Red Hat and the Fedora Project
    +          
    +
  • +

    + rlandmann: locale/as.xml; locale/bn_IN.xml; locale/ast.xml; locale/ml.xml; locale/te.xml; ⋯ +

    +
    +            New translations from Red Hat and the Fedora Project
    +          
    +
  • +

    + rlandmann: locale/pt.xml; locale/ca.xml; locale/da.xml; locale/sr.xml; locale/ru.xml; loca⋯ +

    +
    +            Updated translations from Red Hat and the Fedora Project
    +          
    +
+
+ +

Common

+ +

The following changes have been made to the common code since the 1.75.2 release.

+
  • +

    + Mauritz Jeanson: common.xsl +

    +
    +            Fixed bug in output-orderedlist-starting-number template (@startingnumber did not work for FO).
    +          
    +
  • +

    + Mauritz Jeanson: gentext.xsl +

    +
    +            Added fix to catch ID also of descendants of listitem. Closes bug #2955077.
    +          
    +
  • +

    + Jirka Kosek: l10n.xsl +

    +
    +            Stripped down, faster version of gentext.template is used when there is no localization customization.
    +          
    +
  • +

    + Mauritz Jeanson: stripns.xsl +

    +
    +            Added fix that preserves link/@role (makes links in the reference documentation
    +with @role="tcg" work).
    +          
    +
  • +

    + Mauritz Jeanson: l10n.xsl +

    +
    +            Fixed bugs related to manpages and L10n.
    +          
    +
  • +

    + Jirka Kosek: entities.ent; autoidx-kosek.xsl +

    +
    +            Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.
    +          
    +
  • +

    + Jirka Kosek: l10n.xsl; l10n.dtd; l10n.xml; autoidx-kosek.xsl +

    +
    +            Refactored localization support. Language files are loaded on demand. Speedup is about 30%.
    +          
    +
  • +

    + Jirka Kosek: l10n.xsl +

    +
    +            Added xsl:keys for improved performance of localization texts look up. Performance gain around 15%.
    +          
    +
  • +

    + Mauritz Jeanson: titles.xsl +

    +
    +            Fixed bug #2912677 (error with xref in title).
    +          
    +
  • +

    + Robert Stayton: olink.xsl +

    +
    +            Fix bug in xrefstyle "title" handling introduced with 
    +the 'insert.targetdb.data' template.
    +          
    +
  • +

    + Robert Stayton: gentext.xsl +

    +
    +            Fix bug in xref to equation without title to use context="xref-number" instead
    +of "xref-number-and-title".
    +          
    +
  • +

    + Robert Stayton: labels.xsl +

    +
    +            Number all equations in one sequence, with or without title.
    +          
    +
  • +

    + Robert Stayton: entities.ent +

    +
    +            Fix bug #2896909 where duplicate @sortas on indexterms caused 
    +some indexterms to drop out of index.
    +          
    +
  • +

    + Robert Stayton: stripns.xsl +

    +
    +            Expand the "Stripping namespace ..." message to advise users to
    +use the namespaced stylesheets.
    +          
    +
  • +

    + Robert Stayton: stripns.xsl +

    +
    +            need a local version of $exsl.node.set.available variable because
    +this module imported many places.
    +          
    +
  • +

    + Mauritz Jeanson: olink.xsl +

    +
    +            Added /node() to the select expression that is used to compute the title text
    +so that no <ttl> elements end up in the output. Closes bug #2830119.
    +          
    +
+
+ +

FO

+ +

The following changes have been made to the + fo code + since the 1.75.2 release.

+
  • +

    + Robert Stayton: table.xsl +

    +
    +            Fix bug 2979166 able - Attribute @rowheader not working
    +          
    +
  • +

    + Mauritz Jeanson: inline.xsl +

    +
    +            Improved glossterm auto-linking by using keys. The old code was inefficient when processing documents
    +with many inline glossterms.
    +          
    +
  • +

    + Robert Stayton: titlepage.xsl +

    +
    +            Fix bug 2805530 author/orgname not appearing on title page.
    +          
    +
  • +

    + Mauritz Jeanson: graphics.xsl +

    +
    +            Added support for SVG content in imagedata (inspired by patch #2909154).
    +          
    +
  • +

    + Mauritz Jeanson: table.xsl +

    +
    +            Removed superfluous test used when computing column-width. Closes bug #3000898.
    +          
    +
  • +

    + Mauritz Jeanson: inline.xsl +

    +
    +            Added missing <xsl:call-template name="anchor"/>. Closes bug #2998567.
    +          
    +
  • +

    + Mauritz Jeanson: lists.xsl +

    +
    +            Added table-layout="fixed" on segmentedlist table (required by XSL spec when  proportional-column-width() is used).
    +          
    +
  • +

    + Jirka Kosek: autoidx-kosek.xsl +

    +
    +            Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.
    +          
    +
  • +

    + Jirka Kosek: index.xsl +

    +
    +            Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.
    +          
    +
  • +

    + Robert Stayton: xref.xsl +

    +
    +            Fix bug in olink template when an olink has an id.
    +Add warning message with id value when trying to link
    +to an element that has no generated text.
    +          
    +
  • +

    + Mauritz Jeanson: refentry.xsl +

    +
    +            Fixed bug #2930968 (indexterm in refmeta not handled correctly).
    +          
    +
  • +

    + Robert Stayton: block.xsl +

    +
    +            fix bug 2949567 title in revhistory breaks FO transform.
    +          
    +
  • +

    + Robert Stayton: glossary.xsl +

    +
    +            Output id attributes on glossdiv blocks so they can be added to
    +xrefs or TOC.
    +          
    +
  • +

    + Jirka Kosek: xref.xsl +

    +
    +            Enabled hyphenation of URLs when ulink content is the same as link target
    +          
    +
  • +

    + Robert Stayton: table.xsl +

    +
    +            Apply patch to turn off row recursion if no @morerows attributes present.
    +This will enable very large tables without row spanning to 
    +process without running into recursion limits.
    +          
    +
  • +

    + Robert Stayton: formal.xsl +

    +
    +            Format equation without title using table layout with equation number
    +next to the equation.
    +          
    +
  • +

    + Robert Stayton: param.xweb; param.ent +

    +
    +            Add equation.number.properties.
    +          
    +
+
+ +

HTML

+ +

The following changes have been made to the + html code + since the 1.75.2 release.

+
  • +

    + Mauritz Jeanson: block.xsl +

    +
    +            Modified acknowledgements template to avoid invalid output (<p> in <p>).
    +          
    +
  • +

    + Mauritz Jeanson: titlepage.xsl +

    +
    +            Added default sidebar attribute-sets.
    +          
    +
  • +

    + Robert Stayton: table.xsl +

    +
    +            Fix bug 2979166 able - Attribute @rowheader not working
    +          
    +
  • +

    + Robert Stayton: footnote.xsl +

    +
    +            Fix bug 3033191 footnotes in html tables.
    +          
    +
  • +

    + Mauritz Jeanson: inline.xsl +

    +
    +            Improved glossterm auto-linking by using keys. The old code was inefficient when processing documents
    +with many inline glossterms.
    +          
    +
  • +

    + Robert Stayton: docbook.css.xml; verbatim.xsl +

    +
    +            Fix bug 2844927 Validity error for callout bugs.
    +          
    +
  • +

    + Robert Stayton: formal.xsl +

    +
    +            Convert formal.object.heading to respect make.clean.html param.
    +          
    +
  • +

    + Robert Stayton: titlepage.templates.xml; block.xsl +

    +
    +            Fix bug 2840768 sidebar without title inserts empty b tag.
    +          
    +
  • +

    + Mauritz Jeanson: docbook.xsl +

    +
    +            Moved the template that outputs <base> so that the base URI also applies to relative CSS paths that come later.
    +See patch #2896121.
    +          
    +
  • +

    + Jirka Kosek: autoidx-kosek.xsl +

    +
    +            Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms.
    +          
    +
  • +

    + Robert Stayton: chunk-code.xsl +

    +
    +            fix bug 2948363 generated filename for refentry not unique, when
    +used in a set.
    +          
    +
  • +

    + Robert Stayton: component.xsl +

    +
    +            Fix missing "Chapter n" label when use chapter/info/title.
    +          
    +
  • +

    + Robert Stayton: table.xsl +

    +
    +            Row recursion turned off if no @morerows attributes in the table.
    +This will prevent failure on long table (with no @morerows) due
    +to excessive depth of recursion.
    +          
    +
  • +

    + Robert Stayton: autotoc.xsl; docbook.css.xml +

    +
    +            Support make.clean.html in autotoc.xsl.
    +          
    +
  • +

    + Robert Stayton: docbook.css.xml; block.xsl +

    +
    +            Add support for make.clean.html setting in block elements.
    +          
    +
  • +

    + Robert Stayton: docbook.css.xml +

    +
    +            Stock CSS styles for DocBook HTML output when 'make.clean.html' is non-zero.
    +          
    +
  • +

    + Robert Stayton: html.xsl +

    +
    +            Add templates for generating CSS files and links to them.
    +          
    +
  • +

    + Robert Stayton: param.xweb +

    +
    +            Fix bugs in new entity references.
    +          
    +
  • +

    + Robert Stayton: chunk-common.xsl +

    +
    +            List of Equations now includes on equations with titles.
    +          
    +
  • +

    + Robert Stayton: table.xsl +

    +
    +            If a colspec has a colname attribute, add it to the HTML col
    +element as a class attribute so it can be styled.
    +          
    +
  • +

    + Robert Stayton: formal.xsl +

    +
    +            Fix bug 2825842 where table footnotes not appearing in HTML-coded table.
    +          
    +
  • +

    + Robert Stayton: chunktoc.xsl +

    +
    +            Fix bug #2834826 where appendix inside part was not chunked as it should be.
    +          
    +
  • +

    + Mauritz Jeanson: chunktoc.xsl +

    +
    +            Added missing namespace declarations. Closes bug #2890069.
    +          
    +
  • +

    + Mauritz Jeanson: footnote.xsl +

    +
    +            Updated the template for footnote paras to use the 'paragraph' template. Closes bug #2803739.
    +          
    +
  • +

    + Keith Fahlgren: inline.xsl; lists.xsl +

    +
    +            Remove <b> and <i> elements "discouraged in favor of style sheets" from
    +XHTML, XHTML 1.1 (and therefore EPUB) outputs by changing html2xhtml.xsl.
    +
    +Fixes bug #2873153: No <b> and <i> tags in XHTML/EPUB
    +
    +Added regression to EPUB specs:
    +          
    +
  • +

    + Mauritz Jeanson: inline.xsl +

    +
    +            Fixed bug #2844916 (don't output @target if ulink.target is empty).
    +          
    +
  • +

    + Keith Fahlgren: autoidx.xsl +

    +
    +            Fix a bug when using index.on.type: an 'index symbols' section was created 
    +even if that typed index didn't include any symbols (they were in the other types).
    +          
    +
+
+ +

Manpages

+ +

The following changes have been made to the + manpages code + since the 1.75.2 release.

+
  • +

    + Mauritz Jeanson: other.xsl +

    +
    +            Modified the write.stubs template so that the section directory name is not output twice. Should fix bug #2831602.
    +Also ensured that $lang is added to the .so path (when man.output.lang.in.name.enabled=1).
    +          
    +
  • +

    + Mauritz Jeanson: docbook.xsl; other.xsl +

    +
    +            Fixed bug #2412738 (apostrophe escaping) by applying the submitted patch.
    +          
    +
  • +

    + Norman Walsh: block.xsl; endnotes.xsl +

    +
    +            Fix bug where simpara in footnote didn't work. Patch by Jonathan Nieder, jrnieder@gmail.com
    +          
    +
  • +

    + dleidert: lists.xsl +

    +
    +            Fix two indentation issues: In the first case there is no corresponding .RS
    +macro (Debian #519438, sf.net 2793873). In the second case an .RS instead of
    +the probably intended .sp leads to an indentation bug (Debian #527309,
    +sf.net #2642139).
    +          
    +
+
+ +

Epub

+ +

The following changes have been made to the + epub code + since the 1.75.2 release.

+
  • +

    + Keith Fahlgren: bin/spec/examples/AMasqueOfDays.epub; docbook.xsl; bin/spec/epub_spec.rb +

    +
    +            Resolve some actual regressions in date output spotted by more recent versions of epubcheck
    +          
    +
  • +

    + Keith Fahlgren: docbook.xsl +

    +
    +            Updated mediaobject selection code that better uses roles (when available); based on contributons by  Glenn McDonald
    +          
    +
  • +

    + Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl +

    +
    +            Ensure that NCX documents are always outputted with a default namespace
    +to prevent problems with the kindlegen machinery
    +          
    +
  • +

    + Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/partintro.xml; docbook.x⋯ +

    +
    +            Adding support for partintros with sect2s, 3s, etc
    +          
    +
  • +

    + Keith Fahlgren: docbook.xsl +

    +
    +            Adding param to workaround horrific ADE bug with the inability to process <br>
    +          
    +
  • +

    + Keith Fahlgren: docbook.xsl +

    +
    +            Add support for authorgroup/author in OPF metadata (via Michael Wiedmann)
    +          
    +
  • +

    + Keith Fahlgren: bin/spec/epub_regressions_spec.rb +

    +
    +            Remove <b> and <i> elements "discouraged in favor of style sheets" from
    +XHTML, XHTML 1.1 (and therefore EPUB) outputs by changing html2xhtml.xsl.
    +
    +Fixes bug #2873153: No <b> and <i> tags in XHTML/EPUB
    +
    +Added regression to EPUB specs:
    +          
    +
  • +

    + Keith Fahlgren: bin/lib/docbook.rb; bin/spec/files/DejaVuSerif-Italic.otf; docbook.xsl; bi⋯ +

    +
    +            This resolves bug #2873142, Please add support for multiple embedded fonts
    +
    +
    +If you navigate to a checkout of DocBook-XSL and go to:
    +xsl/epub/bin/spec/files
    +You can now run the following command:
    +
    +../../dbtoepub -f DejaVuSerif.otf -f DejaVuSerif-Italic.otf -c test.css
    +-s test_cust.xsl orm.book.001.xml
    +
    +In dbtoepub, the following option can be used more than once:
    +-f, --font [OTF FILE] Embed OTF FILE in .epub.
    +
    +The underlying stylesheet now accepts a comma-separated list of font file
    +names rather than just one as the RENAMED epub.embedded.fonts ('s' added).
    +
    +The runnable EPUB spec now includes:
    +- should be valid .epub after including more than one embedded font
    +          
    +
  • +

    + Keith Fahlgren: docbook.xsl +

    +
    +            Improve the selection of cover images when working in DocBook 4.x land (work in progress)
    +          
    +
  • +

    + Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl +

    +
    +            Improve the quality of the OPF spine regression by ensuring that the spine
    +elements for deeply nested refentries are in order and adjacent to their
    +opening wrapper XHTML chunk.
    +          
    +
  • +

    + Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/files/orm.book.00⋯ +

    +
    +            Add more careful handling of refentries to ensure that they always appear in the opf:spine.
    +This was only a problem when refentries were pushed deep into the hierarchy (like inside
    +a sect2), but presented navigational problems for many reading systems (despite the
    +correct NCX references). This may *not* be the best solution, but attacking a better
    +chunking strategy for refentries was too big a nut to crack at this time.
    +          
    +
+
+ +

Eclipse

+ +

The following changes have been made to the + eclipse code + since the 1.75.2 release.

+
  • +

    + Mauritz Jeanson: eclipse3.xsl +

    +
    +            Added a stylesheet module that generates plug-ins conforming to the standard (OSGi-based) Eclipse 3.x 
    +architecture. The main difference to the older format is that metadata is stored in a separate 
    +manifest file. The module imports and extends the existing eclipse.xsl module. Based on code 
    +contributed in patch #2624668.
    +          
    +
+
+ +

Params

+ +

The following changes have been made to the + params code + since the 1.75.2 release.

+
  • +

    + Robert Stayton: draft.watermark.image.xml +

    +
    +            Fix bug 2922488 draft.watermark.image pointing to web resource.
    +Now the value is images/draft.png, and may require customization
    +for local resolution.
    +          
    +
  • +

    + Mauritz Jeanson: equation.number.properties.xml +

    +
    +            Corrected refpurpose.
    +          
    +
  • +

    + Norman Walsh: paper.type.xml +

    +
    +            Added USlegal and USlegallandscape paper types.
    +          
    +
  • +

    + Jirka Kosek: highlight.xslthl.config.xml +

    +
    +            Added note about specifying location as URL
    +          
    +
  • +

    + Robert Stayton: docbook.css.source.xml; generate.css.header.xml; custom.css.source.xml; ma⋯ +

    +
    +            Params to support generated CSS files.
    +          
    +
  • +

    + Robert Stayton: equation.number.properties.xml +

    +
    +            New attribute set for numbers appearing next to equations.
    +          
    +
+
+ +

XSL-Xalan

+ +

The following changes have been made to the + xsl-xalan code + since the 1.75.2 release.

+
  • +

    + dleidert: nbproject/genfiles.properties; nbproject/build-impl.xml +

    +
    +            Rebuild netbeans build files after adding missing Netbeans configuration to allow easier packaging for Debian.
    +          
    +
+
+ +
+

Release Notes: 1.75.2

+ +

The following is a list of changes that have been made + since the 1.75.1 release.

+ +

Gentext

+ +

The following changes have been made to the + gentext code + since the 1.75.1 release.

+
  • +

    dleidert: locale/ja.xml

    Improved Japanese translation for Note(s). Closes bug #2823965.
    +
  • +

    dleidert: locale/pl.xml

    Polish alphabet contains O with acute accent, not with grave accent. Closes bug #2823964.
    +
  • +

    Robert Stayton: locale/ja.xml

    Fix translation of "index", per bug report 2796064.
    +
  • +

    Robert Stayton: locale/is.xml

    New Icelandic locale file.
    +
+
+ +

Common

+ +

The following changes have been made to the + common code + since the 1.75.1 release.

+
  • +

    Norman Walsh: stripns.xsl

    Support more downconvert cases
    +
  • +

    Robert Stayton: titles.xsl

    Make sure title inside info is used if no other title.
    +
+
+ +

FO

+ +

The following changes have been made to the + fo code + since the 1.75.1 release.

+
  • +

    Robert Stayton: pi.xsl

    Turn off dbfo-need for fop1.extensions also, per bug #2816141.
    +
+
+ +

HTML

+ +

The following changes have been made to the + html code + since the 1.75.1 release.

+
  • +

    Mauritz Jeanson: titlepage.xsl

    Output "Copyright" heading in XHTML too.
    +
  • +

    Mauritz Jeanson: titlepage.xsl

    Added stylesheet.result.type test for copyright. Closes bug #2813289.
    +
  • +

    Norman Walsh: htmltbl.xsl

    Remove ambiguity wrt @span, @rowspan, and @colspan
    +
+
+ +

Manpages

+ +

The following changes have been made to the + manpages code + since the 1.75.1 release.

+
  • +

    Mauritz Jeanson: endnotes.xsl

    Added normalize-space() for ulink content. Closes bug #2793877.
    +
  • +

    Mauritz Jeanson: docbook.xsl

    Added stylesheet.result.type test for copyright. Closes bug #2813289.
    +
+
+ +

Epub

+ +

The following changes have been made to the + epub code + since the 1.75.1 release.

+
  • +

    Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb

    Corrected bugs caused by path and file assumptions were not met
    +
  • +

    Keith Fahlgren: bin/lib/docbook.rb; docbook.xsl

    Cleaning up hardcoded values into parameters and fixing Ruby library to pass them properly; all thanks to patch from Liza Daly
    +
+
+ +

Profiling

+ +

The following changes have been made to the + profiling code + since the 1.75.1 release.

+
+
+ +

XSL-Saxon

+ +

The following changes have been made to the + xsl-saxon code + since the 1.75.1 release.

+
  • +

    Mauritz Jeanson: src/com/nwalsh/saxon/ColumnUpdateEmitter.java; src/com/nwalsh/saxon/Colum⋯

    Added fixes so that colgroups in the XHTML namespace are processed properly.
    +
+
+ +

XSL-Xalan

+ +

The following changes have been made to the + xsl-xalan code + since the 1.75.1 release.

+
  • +

    Mauritz Jeanson: nbproject/project.xml

    Added missing NetBeans configuration.
    +
+
+ +
+ + +

Release Notes: 1.75.1

+ +

This release includes bug fixes.

+ +

The following is a list of changes that have been made since the 1.75.0 release.

+ + +

FO

+ +

The following changes have been made to the fo code since the 1.75.0 release.

+
  • +

    Keith Fahlgren: block.xsl

    Switching to em dash for character before attribution in epigraph; resolves Bug #2793878
    +
  • +

    Robert Stayton: lists.xsl

    Fixed bug 2789947, id attribute missing on simplelist fo output.
    +
+
+ +

HTML

+ +

The following changes have been made to the + html code + since the 1.75.0 release.

+
  • +

    Keith Fahlgren: block.xsl

    Switching to em dash for character before attribution in epigraph; resolves Bug #2793878
    +
  • +

    Robert Stayton: lists.xsl

    Fixed bug 2789678: apply-templates line accidentally deleted.
    +
+
+ +

Epub

+ +

The following changes have been made to the + epub code + since the 1.75.0 release.

+
  • +

    Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl

    Added regression and fix to correct "bug" with namespace-prefixed container elements in META-INF/container.xml ; resolves Issue #2790017
    +
  • +

    Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/onegraphic.xinclude.xml;⋯

    Another attempt at flexible named entity and XInclude processing
    +
  • +

    Keith Fahlgren: bin/lib/docbook.rb

    Tweaking solution to Bug #2750442 following regression reported by Michael Wiedmann.
    +
+
+ +

Params

+ +

The following changes have been made to the + params code + since the 1.75.0 release.

+
  • +

    Mauritz Jeanson: highlight.source.xml

    Updated documentation to reflect changes made in r8419.
    +
+
+ +
+ + +

Release Notes: 1.75.0

+ +

This release includes important bug fixes and adds the following +significant feature changes: +

Gentext

Modifications to translations have been made.

Common
+

Added support for some format properties on tables using +HTML table markup.

+

Added two new qanda.defaultlabel values so that numbered sections +and numbered questions can be distinguished. Satisfies +Feature Request #1539045.

+

Added code to handle acknowledgements in book and part. The element is processed +similarly to dedication. All acknowledgements will appear as front matter, after +any dedications.

+
FO
+

The inclusion of highlighting code has been simplified.

+

Add support for pgwide on informal objects.

+

Added a new parameter, bookmarks.collapse, that controls the initial state of the bookmark tree. Closes FR #1792326.

+

Add support for more dbfo processing instructions.

+

Add new variablelist.term.properties to format terms, per request # 1968513.

+

Add support for @width on screen and programlisting, fixes bug #2012736.

+

Add support for writing-mode="rl-tb" (right-to-left) in FO outputs.

+

Add writing.mode param for FO output.

+
HTML
+

Convert all calls to class.attribute to calls to common.html.attributes to support dir, lang, and title attributes in html output for all elements. Fulfills feature request #1993833.

+

Inclusion of highlighting code was simplified. Only one import is now necessary.

+

Add new param index.links.to.section.

+

Add support for the new index.links.to.section param which permits precise links to indexterms in HTML output rather than to the section title.

+
ePub
+

Slightly more nuanced handling of imageobject alternatives and better support in dbtoepub for XIncludes and ENTITYs to resolve Issue #2750442 reported by Raphael Hertzog.

+

Added a colon after an abstract/title when mapping into the dc:description for OPF metadata in ePub output to help the flat text have more pseudo-semantics (sugestions from Michael Wiedmann)

+

Added DocBook subjectset -> OPF dc:subject mapping and tests

+

Added DocBook date -> OPF dc:date mapping and tests

+

Added DocBook abstract -> OPF dc:description mapping and tests

+

Added --output option to dbtoepub based on user request

+
HTMLHelp
+

Add support for generating olink target database for htmlhelp files.

Params
+

Add default setting for @rules attribute on HTML markup tables.

+

Added a new parameter, bookmarks.collapse, that controls the initial state of the bookmark tree. When the parameter has a non-zero value (the default), only the top-level bookmarks are displayed initially. Otherwise, the whole tree of bookmarks is displayed. This is implemented for FOP 0.9X. Closes FR #1792326.

+

Add new variablelist.term.properties to format terms, per request # 1968513.

+

Add two new qanda.defaultlabel values so that numbered sections and numbered questions can be distinguished. Satisfies Feature Request #1539045.

+

Add param to control whether an index entry links to a section title or to the precise location of the indexterm.

+

New attribute list for glossentry in glossary.

+

New parameter to support @width on programlisting and screen.

+

Add attribute-sets for formatting glossary terms and defs.

+
Highlighting
+

Inclusion of highlighting code was simplified. Only one import is now necessary.

+

+ + +

+

The following is a list of changes that have been made + since the 1.74.3 release.

+ +

Gentext

+ +

The following changes have been made to the + gentext code + since the 1.74.3 release.

+
  • +

    Robert Stayton: locale/sv.xml; locale/ja.xml; locale/pl.xml

    Check in translations of Legalnotice submitted on mailing list.
    +
  • +

    Robert Stayton: locale/es.xml

    Fix spelling errors in Acknowledgements entries.
    +
  • +

    Robert Stayton: locale/es.xml

    Check in translations for 4 elements submitted through docbook-apps
    +message of 14 April 2009.
    +
  • +

    David Cramer: locale/zh.xml; locale/ca.xml; locale/ru.xml; locale/ga.xml; locale/gl.xml; l⋯

    Internationalized punctuation in glosssee and glossseealso
    +
  • +

    Robert Stayton: Makefile

    Check in fixes for DSSSL gentext targets from submitted patch #1689633.
    +
  • +

    Robert Stayton: locale/uk.xml

    Check in major update submitted with bug report #2008524.
    +
  • +

    Robert Stayton: locale/zh_tw.xml

    Check in fix to Note string submitted in bug #2441051.
    +
  • +

    Robert Stayton: locale/ru.xml

    Checkin typo fix submitted in bug #2453406.
    +
+
+ +

Common

+ +

The following changes have been made to the + common code + since the 1.74.3 release.

+
  • +

    Robert Stayton: gentext.xsl

    Fix extra generated space when xrefstyle includes 'nopage'.
    +
  • +

    Robert Stayton: table.xsl

    Add support for some format properties on tables using
    +HTML table markup.  These include:
    +  - frame attribute on table (or uses $default.table.frame parameter).
    +  - rules attribute on table (or uses $default.table.rules parameter).
    +  - align attribute on td and th
    +  - valign attribute on td and th
    +  - colspan on td and th
    +  - rowspan on td and th
    +  - bgcolor on td and th
    +
  • +

    Robert Stayton: olink.xsl

    Add placeholder template to massage olink hot text to make
    +customization easier, per Feature Request 1828608.
    +
  • +

    Robert Stayton: targets.xsl

    Add support for collecting olink targets from a glossary
    +generated from a glossary.collection.
    +
  • +

    Robert Stayton: titles.xsl

    Handle firstterm like glossterm in mode="title.markup".
    +
  • +

    Robert Stayton: titles.xsl

    Add match on info/title in title.markup templates where missing.
    +
  • +

    Mauritz Jeanson: titles.xsl

    Changed "ancestor::title" to "(ancestor::title and (@id or @xml:id))".
    +This enables proper formatting of inline elements in titles in TOCs, 
    +as long as these inlines don't have id or xml:id attributes.
    +
  • +

    Robert Stayton: labels.xsl

    Add two new qanda.defaultlabel values so that numbered sections
    +and numbered questions can be distinguished.  Satisfies
    +Feature Request #1539045.
    +
  • +

    Robert Stayton: stripns.xsl; pi.xsl

    Convert function-available(exsl:node-set) to use the new param
    +so Xalan bug is isolated.
    +
  • +

    Mauritz Jeanson: titles.xsl

    Added fixes for bugs #2112656 and #1759205:
    +1. Reverted mistaken commits r7485 and r7523. 
    +2. Updated the template with match="link" and mode="no.anchor.mode" so that 
    +@endterm is used if it exists and if the link has no content.
    +
  • +

    Mauritz Jeanson: titles.xsl

    Added code to handle acknowledgements in book and part. The element is processed
    +similarly to dedication. All acknowledgements will appear as front matter, after
    +any dedications.
    +
  • +

    Robert Stayton: olink.xsl

    Fix bug #2018717 use.local.olink.style uses wrong gentext context.
    +
  • +

    Robert Stayton: olink.xsl

    Fix bug #1787167 incorrect hot text for some olinks.
    +
  • +

    Robert Stayton: common.xsl

    Fix bug #1669654 Broken output if copyright <year> contains a range.
    +
  • +

    Robert Stayton: labels.xsl

    Fix bug in labelling figure inside appendix inside article inside book.
    +
+
+ +

FO

+ +

The following changes have been made to the + fo code + since the 1.74.3 release.

+
  • +

    Jirka Kosek: highlight.xsl

    Inclusion of highlighting code was simplified. Only one import is now necessary.
    +
  • +

    Robert Stayton: fop1.xsl

    Add the new fop extensions namespace declaration, in case FOP
    +extension functions are used.
    +
  • +

    Robert Stayton: formal.xsl

    Add support for pgwide on informal objects.
    +
  • +

    Robert Stayton: docbook.xsl

    Fixed spurious closing quote on line 134.
    +
  • +

    Robert Stayton: docbook.xsl; autoidx-kosek.xsl; autoidx.xsl

    Convert function-available for node-set() to use
    +new $exsl.node.set.available param in test.
    +
  • +

    David Cramer: xref.xsl

    Suppress extra space after xref when xrefstyle='select: label nopage' (#2740472)
    +
  • +

    Mauritz Jeanson: pi.xsl

    Fixed doc bug for row-height.
    +
  • +

    David Cramer: glossary.xsl

    Internationalized punctuation in glosssee and glossseealso
    +
  • +

    Robert Stayton: param.xweb; param.ent; htmltbl.xsl; table.xsl

    Add support for some format properties on tables using
    +HTML table markup.  These include:
    +  - frame attribute on table (or uses $default.table.frame parameter).
    +  - rules attribute on table (or uses $default.table.rules parameter).
    +  - align attribute on td and th
    +  - valign attribute on td and th
    +  - colspan on td and th
    +  - rowspan on td and th
    +  - bgcolor on td and th
    +
  • +

    Robert Stayton: table.xsl

    Add support bgcolor in td and th
    +elements in HTML table markup.
    +
  • +

    Robert Stayton: htmltbl.xsl

    Add support for colspan and rowspan and bgcolor in td and th
    +elements in HTML table markup.
    +
  • +

    Robert Stayton: param.xweb

    Fix working of page-master left and right margins.
    +
  • +

    Mauritz Jeanson: param.xweb; param.ent; fop1.xsl

    Added a new parameter, bookmarks.collapse, that controls the initial state of the bookmark tree. When the parameter has a non-zero value (the default), only the top-level bookmarks are displayed initially. Otherwise, the whole tree of bookmarks is displayed.  This is implemented for FOP 0.9X. Closes FR #1792326.
    +
  • +

    Robert Stayton: table.xsl; pi.xsl

    Add support for dbfo row-height processing instruction, like that in dbhtml.
    +
  • +

    Robert Stayton: lists.xsl

    Add support for dbfo keep-together processing instruction for
    +entire list instances.
    +
  • +

    Robert Stayton: lists.xsl; block.xsl

    Add support fo dbfo keep-together processing instruction to
    +more blocks like list items and paras.
    +
  • +

    Robert Stayton: lists.xsl; param.xweb; param.ent

    Add new variablelist.term.properties to format terms, per request # 1968513.
    +
  • +

    Robert Stayton: inline.xsl

    In simple.xlink, rearrange order of processing.
    +
  • +

    Robert Stayton: xref.xsl

    Handle firstterm like glossterm in mode="xref-to".
    +
  • +

    Robert Stayton: glossary.xsl; xref.xsl; pi.xsl; footnote.xsl

    Implement simple.xlink for glosssee and glossseealso so they can use
    +other types of linking besides otherterm.
    +
  • +

    Robert Stayton: qandaset.xsl

    Add two new qanda.defaultlabel values so that numbered sections and numbered questions can be distinguished.  Satisfies Feature Request #1539045.
    +
  • +

    Robert Stayton: titlepage.xsl

    For the book title templates, I changed info/title to book/info/title
    +so other element's titles will not be affected.
    +
  • +

    Robert Stayton: xref.xsl; verbatim.xsl

    Use param exsl.node.set.available to test for function.
    +
  • +

    Robert Stayton: param.xweb; param.ent; footnote.xsl

    Start using new param exsl.node.set.available to work around Xalan bug.
    +
  • +

    Robert Stayton: titlepage.templates.xml

    Add comment on use of t:predicate for editor to prevent
    +extra processing of multiple editors. Fixes bug 2687842.
    +
  • +

    Robert Stayton: xref.xsl; autoidx.xsl

    An indexterm primary, secondary, or tertiary element with an id or xml:id
    +now outputs that ID, so that index entries can be cross referenced to.
    +
  • +

    Mauritz Jeanson: synop.xsl

    Added modeless template for ooclass|oointerface|ooexception.
    +Closes bug #1623468.
    +
  • +

    Robert Stayton: xref.xsl

    Add template with match on indexterm in mode="xref-to" to fix bug 2102592.
    +
  • +

    Robert Stayton: xref.xsl

    Now xref to qandaentry will use the label element in a question for
    +the link text if it has one.
    +
  • +

    Robert Stayton: inline.xsl

    Add id if specified from @id to output for quote and phrase so
    +they can be xref'ed to.
    +
  • +

    Robert Stayton: xref.xsl

    Add support for xref to phrase, simpara, anchor, and quote.
    +This assumes the author specifies something using xrefstyle since
    +the elements don't have ordinary link text.
    +
  • +

    Robert Stayton: toc.xsl

    Fix bug in new toc templates.
    +
  • +

    Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; xref.xsl; titlepage.templates⋯

    Added code to handle acknowledgements in book and part. The element is processed
    +similarly to dedication. All acknowledgements will appear as front matter, after
    +any dedications.
    +
  • +

    Robert Stayton: toc.xsl

    Rewrite toc templates to support an empty toc or populated toc
    +in all permitted contexts.  Same for lot elements.
    +This fixes bug #1595969 for FO outputs.
    +
  • +

    Robert Stayton: index.xsl

    Fix indents for seealsoie so they are consistent.
    +
  • +

    Mauritz Jeanson: param.xweb

    Removed duplicate (monospace.font.family).
    +
  • +

    Robert Stayton: param.xweb; param.ent

    Add glossentry.list.item.properties.
    +
  • +

    Robert Stayton: param.xweb; param.ent

    Add monospace.verbatim.font.width param to support @width on programlisting.
    +
  • +

    Robert Stayton: verbatim.xsl

    Put programlisting in fo:block-container with writing-mode="lr-tb"
    +when text direction is right to left because all program languages
    +are left-to-right.
    +
  • +

    Robert Stayton: verbatim.xsl

    Add support for @width on screen and programlisting, fixes bug #2012736.
    +
  • +

    Robert Stayton: xref.xsl

    Fix bug #1973585 xref to para with xrefstyle not handled correctly.
    +
  • +

    Mauritz Jeanson: block.xsl

    Added support for acknowledgements in article.
    +Support in book/part remains to be added.
    +
  • +

    Robert Stayton: xref.xsl

    Fix bug #1787167 incorrect hot text for some olinks.
    +
  • +

    Robert Stayton: fo.xsl

    Add writing-mode="tb-rl" as well since some XSL-FO processors support it.
    +
  • +

    Robert Stayton: autotoc.xsl; lists.xsl; glossary.xsl; fo.xsl; table.xsl; pagesetup.xsl

    Add support for writing-mode="rl-tb" (right-to-left) in FO outputs.
    +Changed instances of margin-left to margin-{$direction.align.start}
    +and margin-right to margin-{$direction.align.end}. Those direction.align
    +params are computed from the writing mode value in each locale's
    +gentext key named 'writing-mode', introduced in 1.74.3 to add
    +right-to-left support to HTML outputs.
    +
  • +

    Robert Stayton: param.xweb; param.ent

    Add attribute-sets for formatting glossary terms and defs.
    +
  • +

    Robert Stayton: param.xweb; param.ent

    Add writing.mode param for FO output.
    +
  • +

    Robert Stayton: autotoc.xsl

    Fix bug 1546008: in qandaentry in a TOC, use its blockinfo/titleabbrev or blockinfo/title
    +instead of question, if available. For DocBook 5, use the info versions.
    +
  • +

    Keith Fahlgren: verbatim.xsl

    Add better pointer to README for XSLTHL
    +
  • +

    Keith Fahlgren: verbatim.xsl

    More tweaking the way that XSLTHL does or does not get called
    +
  • +

    Keith Fahlgren: verbatim.xsl

    Alternate attempt at sanely including/excluding XSLTHT code
    +
+
+ +

HTML

+ +

The following changes have been made to the + html code + since the 1.74.3 release.

+
  • +

    Robert Stayton: lists.xsl

    Removed redundant lang and title attributes on list element inside
    +div element for lists.
    +
  • +

    Robert Stayton: inline.xsl; titlepage.xsl; division.xsl; toc.xsl; sections.xsl; table.xsl;⋯

    Convert all calls to class.attribute to calls to common.html.attributes
    +to support dir, lang, and title attributes in html output for all elements.
    +Fulfills feature request #1993833.
    +
  • +

    Robert Stayton: chunk-common.xsl

    Fix bug #2750253 wrong links in list of figures in chunk.html
    +when target html is in a subdirectory and dbhtml filename used.
    +
  • +

    Jirka Kosek: highlight.xsl

    Inclusion of highlighting code was simplified. Only one import is now necessary.
    +
  • +

    Robert Stayton: chunk-common.xsl; chunktoc.xsl; docbook.xsl; chunk-changebars.xsl; autoidx⋯

    Convert function-available for node-set() to use
    +new $exsl.node.set.available param in test.
    +
  • +

    Mauritz Jeanson: pi.xsl

    Fixed doc bug for row-height.
    +
  • +

    David Cramer: glossary.xsl

    Internationalized punctuation in glosssee and glossseealso
    +
  • +

    Robert Stayton: lists.xsl; html.xsl; block.xsl

    More elements get common.html.attributes.
    +Added locale.html.attributes template which does the lang,
    +dir, and title attributes, but not the class attribute
    +(used on para, for example).
    +
  • +

    Robert Stayton: lists.xsl

    Replace more literal class atts with mode="class.attribute" to support
    +easier customization.
    +
  • +

    Robert Stayton: glossary.xsl

    Support olinking in glosssee and glossseealso.
    +
  • +

    Robert Stayton: inline.xsl

    In simple.xlink, rearrange order of processing.
    +
  • +

    Robert Stayton: xref.xsl

    Handle firstterm like glossterm in mode="xref-to".
    +
  • +

    Robert Stayton: lists.xsl; html.xsl; block.xsl

    Added template named common.html.attributes to output
    +class, title, lang, and dir for most elements.
    +Started adding it to some list and block elements.
    +
  • +

    Robert Stayton: qandaset.xsl

    Add two new qanda.defaultlabel values so that numbered sections
    +and numbered questions can be distinguished.  Satisfies
    +Feature Request #1539045.
    +
  • +

    Robert Stayton: param.xweb; chunk-code.xsl; param.ent; xref.xsl; chunkfast.xsl; verbatim.x⋯

    Use new param exsl.node.set.available to test, handles Xalan bug.
    +
  • +

    Robert Stayton: autoidx.xsl

    Use named anchors for primary, secondary, and tertiary ids so
    +duplicate entries with different ids can still have an id output.
    +
  • +

    Robert Stayton: param.xweb; param.ent

    Add new param index.links.to.section.
    +
  • +

    Robert Stayton: xref.xsl; autoidx.xsl

    Pass through an id on primary, secondary, or tertiary to 
    +the index entry, so that one could link to an index entry.
    +You can't link to the id on an indexterm because that is
    +used to place the main anchor in the text flow.
    +
  • +

    Robert Stayton: autoidx.xsl

    Add support for the new index.links.to.section param which permits
    +precise links to indexterms in HTML output rather than to
    +the section title.
    +
  • +

    Mauritz Jeanson: synop.xsl

    Added modeless template for ooclass|oointerface|ooexception.
    +Closes bug #1623468.
    +
  • +

    Robert Stayton: qandaset.xsl

    Make sure a qandaset has an anchor, even when it has no title, 
    +because it may be referenced in a TOC or xref.
    +Before, the anchor was output by the title, but there was no
    +anchor if there was no title.
    +
  • +

    Robert Stayton: xref.xsl

    Add a template for indexterm with mode="xref-to" to fix bug 2102592.
    +
  • +

    Robert Stayton: xref.xsl

    Now xref to qandaentry will use the label element in a question for
    +the link text if it has one.
    +
  • +

    Robert Stayton: qandaset.xsl; html.xsl

    Create separate templates for computing label of question and answer
    +in a qandaentry, so such can be used for the alt text of an xref
    +to a qandaentry.
    +
  • +

    Robert Stayton: inline.xsl; xref.xsl

    Now support xref to phrase, simpara, anchor, and quote,
    +most useful when an xrefstyle is used.
    +
  • +

    Robert Stayton: toc.xsl

    Rewrite toc templates to support an empty toc or populated toc
    +in all permitted contexts.  Same for lot elements.
    +This fixes bug #1595969 for HTML outputs.
    +
  • +

    Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; xref.xsl; titlepage.templates⋯

    Added code to handle acknowledgements in book and part. The element is processed
    +similarly to dedication. All acknowledgements will appear as front matter, after
    +any dedications.
    +
  • +

    Robert Stayton: index.xsl

    Rewrote primaryie, secondaryie and tertiaryie templates to handle
    +nesting of elements and seeie and seealsoie, as reported in
    +bug # 1168912.
    +
  • +

    Robert Stayton: autotoc.xsl

    Fix simplesect in toc problem.
    +
  • +

    Robert Stayton: verbatim.xsl

    Add support for @width per bug report #2012736.
    +
  • +

    Robert Stayton: formal.xsl; htmltbl.xsl

    Fix bug #1787140 HTML tables not handling attributes correctly.
    +
  • +

    Robert Stayton: param.xweb

    Move writing-mode param.
    +
  • +

    Keith Fahlgren: refentry.xsl

    Remove a nesting of <p> inside <p> for refclass (made XHTML* invalid, made HTML silly)
    +
  • +

    Robert Stayton: table.xsl

    Fix bug #1945872 to allow passthrough of colwidth values to
    +HTML table when no tablecolumns.extension is available and
    +when no instance of * appears in the table's colspecs.
    +
  • +

    Mauritz Jeanson: block.xsl

    Added support for acknowledgements in article.
    +Support in book/part remains to be added.
    +
  • +

    Robert Stayton: chunk-common.xsl

    Fix bug #1787167 incorrect hot text for some olinks.
    +
  • +

    Robert Stayton: qandaset.xsl

    Fix bug 1546008: in qandaentry in a TOC, use its blockinfo/titleabbrev or blockinfo/title
    +instead of question, if available. For DocBook 5, use the info versions.
    +
  • +

    Robert Stayton: chunktoc.xsl

    Add support for generating olink database when using chunktoc.xsl.
    +
  • +

    Keith Fahlgren: verbatim.xsl

    Add better pointer to README for XSLTHL
    +
  • +

    Keith Fahlgren: verbatim.xsl

    Another stab at fixing the stupid XSLTHT includes across processors (Saxon regression reported by Sorin Ristache)
    +
  • +

    Keith Fahlgren: verbatim.xsl

    More tweaking the way that XSLTHL does or does not get called
    +
  • +

    Keith Fahlgren: verbatim.xsl

    Alternate attempt at sanely including/excluding XSLTHT code
    +
+
+ +

Manpages

+ +

The following changes have been made to the + manpages code + since the 1.74.3 release.

+
  • +

    Robert Stayton: table.xsl

    Convert function-available test for node-set() function to
    +test of $exsl.node.set.available param.
    +
  • +

    Mauritz Jeanson: lists.xsl

    Added a template for bibliolist. Closes bug #1815916.
    +
+
+ +

ePub

+ +

The following changes have been made to the + epub code + since the 1.74.3 release.

+
  • +

    Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/onegraphic.xinclude.xml;⋯

    Slightly more nuanced handling of imageobject alternatives and better support in dbtoepub for XIncludes and ENTITYs to resolve Issue #2750442 reported by Raphael Hertzog.
    +
  • +

    Keith Fahlgren: docbook.xsl

    Add a colon after an abstract/title when mapping into the dc:description for OPF metadata in ePub output to help the flat text have more pseudo-semantics (sugestions from Michael Wiedmann)
    +
  • +

    Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/files/de.xml

    Correctly set dc:language in OPF metadata when i18nizing. Closes Bug #2755150
    +
  • +

    Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl

    Corrected namespace declarations for literal XHTML elements to make them serialize "normally"
    +
  • +

    Keith Fahlgren: docbook.xsl

    Be a little bit more nuanced about dates
    +
  • +

    Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x⋯

    Add DocBook subjectset -> OPF dc:subject mapping and tests
    +
  • +

    Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x⋯

    Add DocBook date -> OPF dc:date mapping and tests
    +
  • +

    Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x⋯

    Add DocBook abstract -> OPF dc:description mapping and tests
    +
  • +

    Robert Stayton: docbook.xsl

    Check in patch submitted by user to add opf:file-as attribute
    +to dc:creator element.
    +
  • +

    Keith Fahlgren: bin/dbtoepub

    Adding --output option to dbtoepub based on user request
    +
  • +

    Keith Fahlgren: docbook.xsl; bin/spec/epub_spec.rb

    Cleaning and regularizing the generation of namespaced nodes for OPF, NCX, XHTML and other outputted filetypes (hat tip to bobstayton for pointing out the silly, incorrect code)
    +
  • +

    Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/refclass.xml

    Remove a nesting of <p> inside <p> for refclass (made XHTML* invalid, made HTML silly)
    +
  • +

    Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/blockquotepre.xml

    Added regression test and fix for XHTML validation problem with <a>s added inside <blockquote>; This potentially causes another problem (where something is referenced by has no anchor, but someone reporting that should cause the whole <a id='thing'/> thing to be reconsidered with modern browsers in mind.
    +
+
+ +

HTMLHelp

+ +

The following changes have been made to the + htmlhelp code + since the 1.74.3 release.

+
  • +

    Robert Stayton: htmlhelp-common.xsl

    Add support for generating olink target database for htmlhelp files.
    +
+
+ + +

Params

+ +

The following changes have been made to the + params code + since the 1.74.3 release.

+
  • +

    Robert Stayton: default.table.rules.xml

    Add default setting for @rules attribute on HTML markup tables.
    +
  • +

    Mauritz Jeanson: bookmarks.collapse.xml

    Added a new parameter, bookmarks.collapse, that controls the initial state 
    +of the bookmark tree. When the parameter has a non-zero value (the default), 
    +only the top-level bookmarks are displayed initially. Otherwise, the whole 
    +tree of bookmarks is displayed. 
    +
    +This is implemented for FOP 0.9X. Closes FR #1792326.
    +
  • +

    Robert Stayton: variablelist.term.properties.xml

    Add new variablelist.term.properties to format terms, per 
    +request # 1968513.
    +
  • +

    Robert Stayton: qanda.defaultlabel.xml

    Add two new qanda.defaultlabel values so that numbered sections
    +and numbered questions can be distinguished.  Satisfies
    +Feature Request #1539045.
    +
  • +

    Robert Stayton: index.links.to.section.xml

    Change default to 1 to match past behavior.
    +
  • +

    Robert Stayton: exsl.node.set.available.xml

    Isolate this text for Xalan bug regarding exsl:node-set available.
    +If it is ever fixed in Xalan, just fix it here.
    +
  • +

    Robert Stayton: index.links.to.section.xml

    Add param to control whether an index entry links to
    +a section title or to the precise location of the
    +indexterm.
    +
  • +

    Robert Stayton: glossentry.list.item.properties.xml

    New attribute list for glossentry in glossary.
    +
  • +

    Robert Stayton: monospace.verbatim.font.width.xml

    New parameter to support @width on programlisting and screen.
    +
  • +

    Mauritz Jeanson: highlight.source.xml

    Updated and reorganized the description.
    +
  • +

    Robert Stayton: page.margin.outer.xml; page.margin.inner.xml

    Add caveat about XEP bug when writing-mode is right-to-left.
    +
  • +

    Robert Stayton: article.appendix.title.properties.xml; writing.mode.xml; body.start.indent⋯

    Change 'left' to 'start' and 'right' to 'end' to support right-to-left
    +writing mode.
    +
  • +

    Robert Stayton: glossdef.block.properties.xml; glossdef.list.properties.xml; glossterm.blo⋯

    Add attribute-sets for formatting glossary terms and defs.
    +
  • +

    Robert Stayton: glossterm.separation.xml

    Clarify the description.
    +
  • +

    Robert Stayton: make.year.ranges.xml

    Now handles year element containing a comma or dash without error.
    +
+
+ +

Highlighting

+ +

The following changes have been made to the + highlighting code + since the 1.74.3 release.

+
  • +

    Jirka Kosek: README

    Inclusion of highlighting code was simplified. Only one import is now necessary.
    +
  • +

    Keith Fahlgren: README

    Adding XSLTHL readme
    +
  • +

    Keith Fahlgren: common.xsl

    Alternate attempt at sanely including/excluding XSLTHT code
    +
+
+ +

XSL-Saxon

+ +

The following changes have been made to the + xsl-saxon code + since the 1.74.3 release.

+
  • +

    Mauritz Jeanson: src/com/nwalsh/saxon/Text.java

    Added a fix that prevents output of extra blank line.
    +Hopefully this closes bug #894805.
    +
+
+ +

XSL-Xalan

+ +

The following changes have been made to the + xsl-xalan code + since the 1.74.3 release.

+
  • +

    Mauritz Jeanson: src/com/nwalsh/xalan/Text.java

    Added a fix that prevents output of extra blank line.
    +Hopefully this closes bug #894805.
    +
+
+ + +
+ +

Release Notes: 1.74.3

+ +

This release fixes some bugs in the 1.74.2 release.

+

See highlighting/README for XSLTHL usage instructions.

+
+

Release Notes: 1.74.2

+ +

This release fixes some bugs in the 1.74.1 release.

+
+ +

Release Notes: 1.74.1

+ +

This release includes important bug fixes and adds the following +significant feature changes: +

Gentext

Kirghiz locale added and Chinese translations have been simplified.

Somme support for gentext and right-to-left languages has been added.

FO

Various bugs have been resolved.

Support for a new processing instruction: dbfo funcsynopsis-style has been added.

Added new param email.mailto.enabled for FO output. Patch from Paolo Borelli.

+

Support for documented metadata in fop1 mode has been added.

+
Highlighting

Support for the latest version of XSLTHL 2.0 and some new language syntaxes have been added to a variety of outputs.

Manpages

Added man.output.better.ps.enabled param (zero default). It non-zero, no such +markup is embedded in generated man pages, and no enhancements are +included in the PostScript output generated from those man pages +by the man -Tps command.

HTML

Support for writing.mode to set text direction and alignment based on document locale has been added.

+

Added a new top-level stylesheet module, chunk-changebars.xsl, to be +used for generating chunked output with highlighting based on change +(@revisionflag) markup. The module imports/includes the standard chunking +and changebars templates and contains additional logic for chunked output. +See FRs #1015180 and #1819915.

+
ePub
+

Covers now look better in Adobe Digital Editions thanks to a patch from Paul Norton of Adobe

+

Cover handling now more generic (including limited DocBook 5.0 cover support thanks to patch contributed by Liza Daly.

Cover markup now carries more reliably into files destined for .mobi and the Kindle.

dc:identifiers are now generated from more types of numbering schemes.

Both SEO and semantic structure of chunked ePub output by ensuring that we always send out one and only one h1 in each XHTML chunk.

+

Primitive support for embedding a single font added.

+ +

Support for embedding a CSS customizations added.

+
Roundtrip
+

Support for imagedata-metadata and table as images added.

+ +

Support for imagedata-metadata and legalnotice as images added.

+
Params

man.output.better.ps.enabled added for Manpages output

+

writing.mode.xml added to set text direction.

+ +

Added new param email.mailto.enabled for FO output. +Patch from Paolo Borelli. Closes #2086321.

+ +

highlight.source upgraded to support the latest version of XSLTHL 2.0.

+

+

+

The following is a list of changes that have been made since the 1.74.0 release.

+ + +

Gentext

+ +

The following changes have been made to the gentext code since the 1.74.0 release.

+
  • +

    Michael(tm) Smith: locale/ky.xml; Makefile

    new Kirghiz locale from Ilyas Bakirov
    +
  • +

    Mauritz Jeanson: locale/en.xml

    Added "Acknowledgements".
    +
  • +

    Dongsheng Song: locale/zh_cn.xml

    Simplified Chinese translation.
    +
  • +

    Robert Stayton: locale/lv.xml; locale/ca.xml; locale/pt.xml; locale/tr.xml; locale/af.xml;⋯

    Add writing-mode gentext string to support right-to-left languages.
    +
+
+ +

FO

+ +

The following changes have been made to the fo code since the 1.74.0 release.

+
  • +

    David Cramer: footnote.xsl

    Added a check to confirm that a footnoteref's linkend points to a footnote. Stylesheets stop processing if not and provide a useful error message.
    +
  • +

    Mauritz Jeanson: spaces.xsl

    Convert spaces to fo:leader also in elements in the DB 5 namespace.
    +
  • +

    Mauritz Jeanson: pi.xsl; synop.xsl

    Added support for a new processing instruction: dbfo funcsynopsis-style. 
    +Closes bug #1838213.
    +
  • +

    Michael(tm) Smith: inline.xsl; param.xweb; param.ent

    Added new param email.mailto.enabled for FO output.
    +Patch from Paolo Borelli. Closes #2086321.
    +
  • +

    Mauritz Jeanson: docbook.xsl

    Added support for document metadata for fop1 (patch #2067318).
    +
  • +

    Jirka Kosek: param.ent; param.xweb; highlight.xsl

    Upgraded to support the latest version of XSLTHL 2.0
    + -- nested markup in highlited code is now processed
    + -- it is no longer needed to specify path XSLTHL configuration file using Java property
    + -- support for new languages, including Perl, Python and Ruby was added
    +
+
+ +

HTML

+ +

The following changes have been made to the html code since the 1.74.0 release.

+
  • +

    Robert Stayton: param.xweb; docbook.xsl; param.ent; html.xsl

    Add support for writing.mode to set text direction and alignment based on document locale.
    +
  • +

    Mauritz Jeanson: chunk-changebars.xsl

    Added a new top-level stylesheet module, chunk-changebars.xsl, to be 
    +used for generating chunked output with highlighting based on change 
    +(@revisionflag) markup. The module imports/includes the standard chunking 
    +and changebars templates and contains additional logic for chunked output.
    +See FRs #1015180 and #1819915.
    +
+
+ +

Manpages

+ +

The following changes have been made to the manpages code since the 1.74.0 release.

+
  • +

    Michael(tm) Smith: docbook.xsl

    Put the following at the top of generated roff for each page:
    +  \" t
    +purpose is to explicitly tell AT&T troff that the page needs to be
    +pre-processed through tbl(1); groff can figure it out
    +automatically, but apparently AT&T troff needs to be explicitly told
    +
+
+ +

ePub

+ +

The following changes have been made to the epub code since the 1.74.0 release.

+
  • +

    Keith Fahlgren: docbook.xsl

    Patch from Paul Norton of Adobe to get covers to look better in Adobe Digital Editions
    +
  • +

    Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/v5cover.xml; bin/spec/sp⋯

    Patch contributed by Liza Daly to make ePub cover handling more generic. Additionally
    +DocBook 5.0's <cover> now has some limited support:
    +
    +- should reference a cover in the OPF guide for a DocBook 5.0 test document
    +
  • +

    Keith Fahlgren: bin/spec/files/isbn.xml; bin/spec/files/issn.xml; bin/spec/files/biblioid.⋯

    Liza Daly reported that the dc:identifer-generation code was garbage (she was right).
    +
    +Added new tests:
    +- should include at least one dc:identifier
    +- should include an ISBN as URN for dc:identifier if an ISBN was in the metadata
    +- should include an ISSN as URN for dc:identifier if an ISSN was in the metadata
    +- should include an biblioid as a dc:identifier if an biblioid was in the metadata
    +- should include a URN for a biblioid with @class attribute as a dc:identifier if an biblioid was in the metadata
    +
  • +

    Keith Fahlgren: docbook.xsl; bin/spec/epub_spec.rb

    Improve both SEO and  semantic structure of chunked ePub output by ensuring that
    +we always send out one and only one h1 in each XHTML chunk.
    +
    +DocBook::Epub
    +- should include one and only one <h1> in each HTML file in rendered ePub files
    +for <book>s
    +- should include one and only one <h1> in each HTML file in rendered ePub files
    +for <book>s even if they do not have section markup
    +
  • +

    Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x⋯

    Adding better support for covers in epub files destined for .mobi and the Kindle
    +
  • +

    Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb; bin/spec/files/DejaVuSerif.otf; docbook.⋯

    Adding primitive support for embedding a single font
    +
  • +

    Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb; bin/spec/files/test_cust.xsl; bin/spec/e⋯

    Adding support for user-specified customization layers in dbtoepub
    +
  • +

    Keith Fahlgren: bin/dbtoepub; bin/spec/epub_regressions_spec.rb; bin/lib/docbook.rb; bin/s⋯

    Adding CSS support to .epub target & dbtoepub:
    +    -c, --css [FILE]                 Use FILE for CSS on generated XHTML.
    +
    +
    +DocBook::Epub
    +...
    +- should include a CSS link in HTML files when a CSS file has been provided
    +- should include CSS file in .epub when a CSS file has been provided
    +- should include a CSS link in OPF file when a CSS file has been provided
    +
+
+ +

Roundtrip

+ +

The following changes have been made to the + roundtrip code + since the 1.74.0 release.

+
  • +

    Steve Ball: blocks2dbk.xsl; template.xml; template.dot

    added support for imagedata-metadata
    +added support for table as images
    +
  • +

    Steve Ball: blocks2dbk.xsl; normalise2sections.xsl; sections2blocks.xsl

    Improved support for personname inlines.
    +
  • +

    Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; template.xml

    Added support for legalnotice.
    +
  • +

    Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl

    added support for orgname in author
    +
  • +

    Steve Ball: specifications.xml; supported.xml; blocks2dbk.xsl; wordml2normalise.xsl; dbk2w⋯

    Updated specification.
    +to-DocBook: add cols attribute to tgroup
    +from-DocBook: fix for blockquote title
    +
+
+ +

Params

+ +

The following changes have been made to the params since the 1.74.0 release.

+
  • +

    The change was to add man.output.better.ps.enabled parameter, with +its default value set to zero. + +If the value of the man.output.better.ps.enabled parameter is +non-zero, certain markup is embedded in each generated man page +such that PostScript output from the man -Tps command for that +page will include a number of enhancements designed to improve the +quality of that output. + +If man.output.better.ps.enabled is zero (the default), no such +markup is embedded in generated man pages, and no enhancements are +included in the PostScript output generated from those man pages +by the man -Tps command. + +WARNING: The enhancements provided by this parameter rely on +features that are specific to groff (GNU troff) and that are not +part of "classic" AT&T troff or any of its derivatives. Therefore, +any man pages you generate with this parameter enabled will be +readable only on systems on which the groff (GNU troff) program is +installed, such as GNU/Linux systems. The pages will not not be +readable on systems on with the classic troff (AT&T troff) command +is installed. + +NOTE: The value of this parameter only affects PostScript output +generated from the man command. It has no effect on output +generated using the FO backend. + +TIP: You can generate PostScript output for any man page by +running the following command: + +man FOO -Tps > FOO.ps + +You can then generate PDF output by running the following command: + +ps2pdf FOO.ps

    +
  • +

    Robert Stayton: writing.mode.xml

    writing mode param used to set text direction.
    +
  • +

    Michael(tm) Smith: email.mailto.enabled.xml

    Added new param email.mailto.enabled for FO output.
    +Patch from Paolo Borelli. Closes #2086321.
    +
  • +

    Jirka Kosek: highlight.source.xml; highlight.xslthl.config.xml

    Upgraded to support the latest version of XSLTHL 2.0
    + -- nested markup in highlited code is now processed
    + -- it is no longer needed to specify path XSLTHL configuration file using Java property
    + -- support for new languages, including Perl, Python and Ruby was added
    +
+
+ +

Highlighting

+ +

The following changes have been made to the + highlighting code + since the 1.74.0 release.

+
  • +

    Jirka Kosek: cpp-hl.xml; c-hl.xml; tcl-hl.xml; php-hl.xml; common.xsl; perl-hl.xml; delphi⋯

    Upgraded to support the latest version of XSLTHL 2.0
    + -- nested markup in highlited code is now processed
    + -- it is no longer needed to specify path XSLTHL configuration file using Java property
    + -- support for new languages, including Perl, Python and Ruby was added
    +
+
+ +
+ + +

Release Notes: 1.74.0

+ +

This release includes important bug fixes and adds the following +significant feature changes: +

.epub target

Paul Norton (Adobe) and Keith Fahlgren(O'Reilly Media) have donated code that generates .epub documents from +DocBook input. An alpha-reference implementation in Ruby has also been provided.

+

.epub is an open standard of the The International Digital Publishing Forum (IDPF), +a the trade and standards association for the digital publishing industry.

+

Read more about this target in epub/README +

XHTML 1.1 target

To support .epub output, a strict XHTML 1.1 target has been added. The stylesheets for this output are +generated and are quite similar to the XHTML target.

Gentext updates

A number of locales have been updated.

Roundtrip improvements

Table, figure, template syncronization, and character style improvements have been made for WordML & Pages. Support added for OpenOffice.org.

First implementation of a libxslt extension
+

A stylesheet extension for libxslt, written in Python, has been added. + The extension is a function for adjusting column widths in CALS tables. See + extensions/README.LIBXSLT for more information.

+

+

+

The following is a list of changes that have been made + since the 1.73.2 release.

+ +

Gentext

+ +

The following changes have been made to the + gentext code + since the 1.73.2 release.

+
  • +

    Michael(tm) Smith: locale/id.xml

    Checked in changes to Indonesion locale submitted by Euis Luhuanam a long time ago.
    +
  • +

    Michael(tm) Smith: locale/lt.xml

    Added changes to Lithuanian locate submitted a long time back by Nikolajus Krauklis.
    +
  • +

    Michael(tm) Smith: locale/hu.xml

    fixed error in lowercase.alpha definition in Hungarian locale
    +
  • +

    Michael(tm) Smith: locale/nb.xml

    Corrected language code for nb locale, and restored missing "startquote" key.
    +
  • +

    Michael(tm) Smith: locale/ja.xml

    Committed changes to ja locale file, from Akagi Kobayashi. Adds bracket quotes around many xref instances that did not have them
    +before.
    +
  • +

    Michael(tm) Smith: Makefile

    "no" locale is now "nb"
    +
  • +

    Michael(tm) Smith: locale/nb.xml

    Update Norwegian Bokmål translation. Thanks to Hans F. Nordhaug.
    +
  • +

    Michael(tm) Smith: locale/no.xml; locale/nb.xml

    per message from Hans F. Nordhaug, correct identifier for
    +Norwegian Bokmål is "nb" (not "no") and has been for quite some
    +time now...
    +
  • +

    Michael(tm) Smith: locale/ja.xml

    Converted ja.xml source file to use real unicode characters so
    +that the actual glyphs so up when you edit it in a text editor
    +(instead of the character references).
    +
  • +

    Michael(tm) Smith: locale/ja.xml

    Checked in changes to ja.xml locale file. Thanks to Akagi Kobayashi.
    +
  • +

    Michael(tm) Smith: locale/it.xml

    Changes from Federico Zenith
    +
  • +

    Dongsheng Song: locale/zh_cn.xml

    Added missing translations.
    +
+
+ +

Common

+ +

The following changes have been made to the + common code + since the 1.73.2 release.

+
  • +

    Michael(tm) Smith: l10n.xsl

    Added new template "l10.language.name" for retrieving the
    +English-language name of the lang setting of the current document.
    +Closes #1916837. Thanks to Simon Kennedy.
    +
  • +

    Michael(tm) Smith: refentry.xsl

    fixed syntax error
    +
  • +

    Michael(tm) Smith: refentry.xsl

    fixed a couple of typos
    +
  • +

    Michael(tm) Smith: refentry.xsl

    refined handling of cases where refentry "source" or "manual"
    +metadata is missing or when we use fallback content instead. We
    +now report a Warning if we use fallback content.
    +
  • +

    Michael(tm) Smith: refentry.xsl

    don't use refmiscinfo@class=date value as fallback for refentry
    +"source" or "manual" metadata fields
    +
  • +

    Michael(tm) Smith: refentry.xsl

    Made reporting of missing refentry metadata more quiet:
    +
    +  - we no longer report anything if usable-but-not-preferred
    +    metadata is found; we just quietly use whatever we manage to
    +    find
    +
    +  - we now only report missing "source" metadata if the refentry
    +    is missing BOTH "source name" and "version" metadata; if it
    +    has one but not the other, we use whichever one it has and
    +    don't report anything as missing
    +
    +The above changes were made because testing with some "real world"
    +source reveals that some authors are intentionally choosing to use
    +"non preferred" markup for some metadata, and also choosing to
    +omit "source name" or "version" metadata in there DocBook XML. So
    +it does no good to give them pedantic reminders about what they
    +already know...
    +
    +Also, changed code to cause "fixme" text to be inserted in output
    +in particular cases:
    +
    +  - if we can't manage to find any "source" metadata at all, we
    +    now put fixme text into the output
    +
    +  - if we can't manage to find any "manual" metadata a all, we 
    +    now put fixme text into the output
    +
    +The "source" and "manual" metadata is necessary information, so
    +buy putting the fixme stuff in the output, we alert users to the
    +need problem of it being missing.
    +
  • +

    Michael(tm) Smith: refentry.xsl

    When generating manpages output, we no longer report anything if
    +the refentry source is missing date or pubdate content. In
    +practice, many users intentionally omit the date from the source
    +because they explicitly want it to be generated.
    +
  • +

    Michael(tm) Smith: l10n.xml

    further change needed for switch from no locale to nb.
    +
  • +

    Michael(tm) Smith: common.xsl

    Added support for orgname in authorgroup. Thanks to Camille
    +Bégnis.
    +
  • +

    Michael(tm) Smith: Makefile

    "no" locale is now "nb"
    +
  • +

    Mauritz Jeanson: stripns.xsl

    Removed the template matching "ng:link|db:link" (in order to make @xlink:show 
    +work with <link> elements). As far as I can tell, this template is no longer needed.
    +
  • +

    Mauritz Jeanson: entities.ent

    Moved declaration of comment.block.parents entity to common/entities.ent.
    +
  • +

    Mauritz Jeanson: titles.xsl

    Added an update the fix made in revision 7528 (handling of xref/link in no.anchor.mode mode).
    +Having xref in title is not a problem as long as the target is not an ancestor element. 
    +Closes bug #1838136.
    +
    +Note that an xref that is in a title and whose target is an ancestor element is still not 
    +rendered in the TOC. This could be considered a bug, but on the other hand I cannot really
    +see the point in having such an xref in a document.
    +
  • +

    Mauritz Jeanson: titles.xsl

    Added a "not(ancestor::title)" test to work around "too many nested 
    +apply-templates" problems when processing xrefs or links in no.anchor.mode mode.
    +Hopefully, this closes bug #1811721.
    +
  • +

    Mauritz Jeanson: titles.xsl

    Removed old template matching "link" in no.anchor.mode mode.
    +
  • +

    Mauritz Jeanson: titles.xsl

    Process <link> in no.anchor.mode mode with the same template as <xref>. 
    +Closes bug #1759205 (Empty link in no.anchor.mode mode).
    +
  • +

    Mauritz Jeanson: titles.xsl

    In no.anchor.mode mode, do not output anchors for elements that are descendants 
    +of <title>. Previously, having inline elements with @id/@xml:id in <title>s 
    +resulted in anchors both in the TOC and in the main flow. Closes bug #1797492.
    +
+
+ +

FO

+ +

The following changes have been made to the + fo code + since the 1.73.2 release.

+
  • Mauritz Jeanson: pi.xsl

    Updated documentation for keep-together.
  • Mauritz Jeanson: task.xsl

    Enabled use of the keep-together PI on task elements.
  • +

    Robert Stayton: index.xsl

    FOP1 requires fo:wrapper for inline index entries, not fo:inline.
    +
  • +

    Robert Stayton: index.xsl

    Fixed non-working inline.or.block template for indexterm wrappers.
    +Add fop1 to list of processors using inline.or.block.
    +
  • +

    Mauritz Jeanson: table.xsl

    Fixed bug #1891965 (colsep in entytbl not working).
    +
  • +

    Mauritz Jeanson: titlepage.xsl

    Added support for title in revhistory. Closes bug #1842847.
    +
  • +

    Mauritz Jeanson: pi.xsl

    Small doc cleanup (dbfo float-type).
    +
  • +

    Mauritz Jeanson: titlepage.xsl

    Insert commas between multiple copyright holders.
    +
  • +

    Mauritz Jeanson: autotoc.xsl; division.xsl

    Added modifications to support nested set elements. See bug #1853172.
    +
  • +

    David Cramer: glossary.xsl

    Added normalize-space to xsl:sorts to avoid missorting of glossterms due to stray leading spaces.
    +
  • +

    David Cramer: glossary.xsl

    Fixed bug #1854199: glossary.xsl should use the sortas attribute on glossentry
    +
  • +

    Mauritz Jeanson: inline.xsl

    Added a template for citebiblioid. The hyperlink target is the parent of the referenced biblioid,
    +and the "hot text" is the biblioid itself enclosed in brackets.
    +
  • +

    Mauritz Jeanson: inline.xsl

    Moved declaration of comment.block.parents entity to common/entities.ent.
    +
  • +

    Mauritz Jeanson: docbook.xsl

    Updated message about unmatched element.
    +
  • +

    Mauritz Jeanson: param.xweb

    Added link to profiling chapter of TCG.
    +
  • +

    Mauritz Jeanson: refentry.xsl

    Fixed typo (refsynopsysdiv -> refsynopsisdiv).
    +
  • +

    David Cramer: fop.xsl; fop1.xsl; ptc.xsl; xep.xsl

    Added test to check generate.index param when generating pdf bookmarks
    +
  • +

    Mauritz Jeanson: graphics.xsl

    Added support for MathML in imagedata.
    +
  • +

    Michael(tm) Smith: math.xsl

    Removed unnecessary extra test condition in test express that
    +checks for passivetex.
    +
  • +

    Michael(tm) Smith: math.xsl

    Don't use fo:instream-foreign-object if we are processing with
    +passivetex. Closes #1806899. Thanks to Justus Piater.
    +
  • +

    Mauritz Jeanson: component.xsl

    Added code to output a TOC for an appendix in an article when 
    +generate.toc='article/appendix toc'. Closes bug #1669658.
    +
  • +

    Dongsheng Song: biblio-iso690.xsl

    Change encoding from "windows-1250" to "UTF-8".
    +
  • +

    Mauritz Jeanson: pi.xsl

    Updated documentation for dbfo_label-width.
    +
  • +

    Mauritz Jeanson: lists.xsl

    Added support for the dbfo_label-width PI in calloutlists.
    +
  • +

    Robert Stayton: biblio.xsl

    Support finding glossary database entries inside bibliodivs.
    +
  • +

    Robert Stayton: formal.xsl

    Complete support for <?dbfo pgwide="1"?> for informal
    +elements too.
    +
  • +

    Mauritz Jeanson: table.xsl

    In the table.block template, added a check for the dbfo_keep-together PI, so that 
    +a table may break (depending on the PI value) at a page break. This was needed 
    +since the outer fo:block that surrounds fo:table has keep-together.within-column="always" 
    +by default, which prevents the table from breaking. Closes bug #1740964 (Titled 
    +table does not respect dbfo PI).
    +
  • +

    Mauritz Jeanson: pi.xsl

    Added a few missing @role="tcg".
    +
  • +

    Mauritz Jeanson: inline.xsl

    Use normalize-space() in glossterm comparisons (as in html/inline.xsl).
    +
  • +

    Mauritz Jeanson: autoidx.xsl

    Removed the [&scope;] predicate from the target variable in the template with name="reference".
    +This filter was the cause of missing index backlinks when @zone and @type were used on indexterms,
    +with index.on.type=1. Closes bug #1680836.
    +
  • +

    Michael(tm) Smith: inline.xsl; xref.xsl; footnote.xsl

    Added capability in FO output for displaying URLs for all
    +hyperlinks (elements marked up with xlink:href attributes) in the
    +same way as URLs for ulinks are already handled (which is to say,
    +either inline or as numbered footnotes).
    +
    +Background on this change:
    +DocBook 5 allows "ubiquitous" linking, which means you can make
    +any element a hyperlink just by adding an xlink:href attribute to
    +it, with the value set to an external URL. That's in contrast to
    +DocBook 4, which only allows you to use specific elements (e.g.,
    +the link and ulink elements) to mark up hyperlinks.
    +
    +The existing FO stylesheets have a mechanism for handling display
    +of URLs for hyperlinks that are marked up with ulink, but they did
    +not handle display of URLs for elements that were marked up with
    +xlink:href attributes. This change adds handling for those other
    +elements, enabling the URLs they link to be displayed either
    +inline or as numbered footnotes (depending on what values the user
    +has the ulink.show and ulink.footnotes params set to).
    +
    +Note that this change only adds URL display support for elements
    +that call the simple.xlink template -- which currently is most
    +(but not all) inline elements.
    +
    +This change also moves the URL display handling out of the ulink
    +template and into a new "hyperlink.url.display" named template;
    +the ulink template and the simple.xlink named template now both
    +call the hyperlink.url.display template.
    +
    +Warning: In the stylesheet code that determines what footnote
    +number to assign to each footnote or external hyperlink, there is
    +an XPath expression for determining whether a particular
    +xlink:href instance is an external hyperlink; that expression is
    +necessarily a bit complicated and further testing may reveal that
    +it doesn't handle all cases as expected -- so some refinements to
    +it may need to be done later.
    +
    +Closes #1785519. Thanks to Ken Morse for reporting and
    +troubleshooting the problem.
    +
+
+ +

HTML

+ +

The following changes have been made to the + html code + since the 1.73.2 release.

+
  • Keith Fahlgren: inline.xsl; synop.xsl

    Work to make HTML and XHTML targets more valid
  • Keith Fahlgren: table.xsl

    Add better handling for tables that have footnotes in the titles
  • Keith Fahlgren: biblio.xsl

    Add anchors to bibliodivs
  • +

    Keith Fahlgren: formal.xsl; Makefile; htmltbl.xsl

    Initial checkin/merge of epub target from work provided by Paul Norton of Adobe
    +and Keith Fahlgren of O'Reilly.
    +

    This change includes new code for generating the XHTML 1.1 target sanely.

    +
  • +

    Mauritz Jeanson: biblio.xsl

    Added code for creating URLs from biblioids with @class="doi" (representing Digital 
    +Object Identifiers). See FR #1934434 and http://doi.org.
    +
    +To do: 1) Add support for FO output. 2) Figure out how @class="doi" should be handled 
    +for bibliorelation, bibliosource and citebiblioid.
    +
  • +

    Norman Walsh: formal.xsl

    Don't use xsl:copy because it forces the resulting element to be in the same namespace as the source element; in the XHTML stylesheets, that's wrong. But the HTML-to-XHTML converter does the right thing with literal result elements, so use one of them.
    +
  • +

    Michael(tm) Smith: Makefile

    Added checks and hacks to various makefiles to enable building
    +under Cygwin. This stuff is ugly and maybe not worth the mess and
    +trouble, but does seem to work as expected and not break anything
    +else.
    +
  • +

    Michael(tm) Smith: docbook.xsl

    added "exslt" namespace binding to html/docbook.xsl file (in
    +addition to existing "exsl" binding. reason is because lack of it
    +seems to cause processing problems when using the profiled
    +version of the stylsheet
    +
  • +

    Norman Walsh: chunk-common.xsl

    Rename link
    +
  • +

    Mauritz Jeanson: table.xsl

    Added a fix to make rowsep apply to the last row of thead in entrytbl.
    +
  • +

    Michael(tm) Smith: synop.xsl

    Simplified and streamlined handling of output for ANSI-style
    +funcprototype output, to correct a problem that was causing type
    +data to be lost in the output parameter definitions. For example,
    +for an instance like this:
    +  <paramdef>void *<parameter>dataptr</parameter>[]</paramdef>
    +... the brackets (indicating an array type) were being dropped.
    +
  • +

    Michael(tm) Smith: synop.xsl

    Changed HTML handling of K&R-style paramdef output. The parameter
    +definitions are no longer output in a table (though the prototype
    +still is). The reason for the change is that the
    +kr-tabular-funcsynopsis-mode template was causing type data to be
    +lost in the output parameter definitions. For example, for an
    +instance like this:
    +  <paramdef>void *<parameter>dataptr</parameter>[]</paramdef>
    +... the brackets (indicating an array type) were being dropped.
    +The easiest way to deal with the problem is to not try to chop up
    +the parameter definitions and display them in table format, but to
    +instead just output them as-is. May not look quite as pretty, but
    +at least we can be sure no information is being lost...
    +
  • +

    Michael(tm) Smith: pi.xsl

    updated wording of doc for funcsynopsis-style PI
    +
  • +

    Michael(tm) Smith: param.xweb; param.ent; synop.xsl

    Removed the funcsynopsis.tabular.threshold param. It's no longer
    +being used in the code and hasn't been since mid 2006.
    +
  • +

    Mauritz Jeanson: graphics.xsl

    Added support for the img.src.path parameter for SVG graphics. Closes bug #1888169.
    +
  • +

    Mauritz Jeanson: chunk-common.xsl

    Added missing space.
    +
  • +

    Norman Walsh: component.xsl

    Fix bug where component titles inside info elements were not handled properly
    +
  • +

    Michael(tm) Smith: pi.xsl

    Moved dbhtml_stop-chunking embedded doc into alphabetical order,
    +fixed text of TCG section it see-also'ed.
    +
  • +

    David Cramer: pi.xsl

    Added support for <?dbhtml stop-chunking?> processing instruction
    +
  • +

    David Cramer: chunk-common.xsl; pi.xsl

    Added support for <?dbhtml stop-chunking?> processing instruction
    +
  • +

    David Cramer: glossary.xsl

    Fixed bug #1854199: glossary.xsl should use the sortas attribute on glossentry. Also added normalize-space to avoid missorting due to stray leading spaces.
    +
  • +

    Mauritz Jeanson: inline.xsl

    Added a template for citebiblioid. The hyperlink target is the parent of the referenced biblioid,
    +and the "hot text" is the biblioid itself enclosed in brackets.
    +
  • +

    Mauritz Jeanson: inline.xsl

    Added support for @xlink:show in the simple.xlink template. The "new" and "replace" 
    +values are supported (corresponding to values of "_blank" and "_top" for the 
    +ulink.target parameter). I have assumed that @xlink:show should override ulink.target
    +for external URI links. This closes bugs #1762023 and #1727498.
    +
  • +

    Mauritz Jeanson: inline.xsl

    Moved declaration of comment.block.parents entity to common/entities.ent.
    +
  • +

    Mauritz Jeanson: param.xweb

    Added link to profiling chapter of TCG.
    +
  • +

    Dongsheng Song: biblio-iso690.xsl

    Change encoding from "windows-1250" to "UTF-8".
    +
  • +

    Robert Stayton: biblio.xsl

    Add support in biblio collection to entries in bibliodivs.
    +
  • +

    Mauritz Jeanson: pi.xsl

    Added missing @role="tcg".
    +
  • +

    Mauritz Jeanson: chunk-common.xsl; titlepage.xsl

    Refactored legalnotice/revhistory chunking, so that the use.id.as.filename 
    +parameter as well as the dbhtml_filename PI are taken into account. A new named
    +template in titlepage.xsl is used to compute the filename.
    +
  • +

    Mauritz Jeanson: chunk-common.xsl; titlepage.xsl

    An update to the fix for bug #1790495 (r7433):
    +The "ln-" prefix is output only when the legalnotice doesn't have an
    +@id/@xml:id, in which case the stylesheets generate an ID value, 
    +resulting in a filename like "ln-7e0fwgj.html". This is useful because 
    +without the prefix, you wouldn't know that the file contained a legalnotice. 
    +The same logic is also applied to revhistory, using an "rh-" prefix.
    +
  • +

    Mauritz Jeanson: autoidx.xsl

    Removed the [&scope;] predicate from the target variable in the template with name="reference".
    +This filter was the cause of missing index backlinks when @zone and @type were used on indexterms,
    +with index.on.type=1. Closes bug #1680836.
    +
  • +

    Mauritz Jeanson: titlepage.xsl

    Added 'ln-' prefix to the name of the legalnotice chunk, in order to match the 
    +<link href"..."> that is output by make.legalnotice.head.links (chunk-common.xsl).
    +Modified the href attribute on the legalnotice link.
    +Closes bug #1790495.
    +
+
+ +

Manpages

+ +

The following changes have been made to the + manpages code + since the 1.73.2 release.

+
  • +

    Michael(tm) Smith: other.xsl

    slightly adjusted spacing around admonition markers
    +
  • +

    Michael(tm) Smith: refentry.xsl; utility.xsl

    make sure refsect3 titles are preceded by a line of space, and
    +make the indenting of their child content less severe
    +
  • +

    Michael(tm) Smith: block.xsl

    only indent verbatim environments in TTY output, not in non-TTY/PS
    +
  • +

    Michael(tm) Smith: block.xsl

    made another adjustment to correct vertical alignment of admonition marker
    +
  • +

    Michael(tm) Smith: block.xsl; other.xsl

    Adjusted/corrected alignment of adominition marker in PS/non-TTY output.
    +
  • +

    Michael(tm) Smith: endnotes.xsl

    For PS/non-TTY output, display footnote/endnote numbers in
    +superscript.
    +
  • +

    Michael(tm) Smith: table.xsl; synop.xsl; utility.xsl

    Changed handling of hanging indents for cmdsynopsis, funcsynopsis,
    +and synopfragment such that they now look correct in non-TTY/PS
    +output. We now use the groff \w escape to hang by the actual width
    +-- in the current font -- of the command, funcdef, or
    +synopfragment references number (as opposed to hanging by the
    +number of characters). This rendering in TTY output remains the
    +same, since the width in monospaced TTY output is the same as the
    +number of characters.
    +
    +Also, created new synopsis-block-start and synopsis-block-end
    +templates to use for cmdsynopsis and funcsynopsis instead of the
    +corresponding verbatim-* templates.
    +
    +Along with those changes, also corrected a problem that caused the
    +content of synopfragment to be dropped, and made a
    +vertical-spacing change to adjust spacing around table titles and
    +among sibling synopfragment instances.
    +
  • +

    Michael(tm) Smith: other.xsl

    use common l10.language.name template to retrieve English-language name
    +
  • +

    Michael(tm) Smith: synop.xsl; inline.xsl

    added comment in code explaining why we don't put filename output
    +in italic (despite the fact that man guidelines say we should)
    +
  • +

    Michael(tm) Smith: inline.xsl

    put filename output in monospace instead of italic
    +
  • +

    Michael(tm) Smith: synop.xsl

    put cmdsynopsis in monospace
    +
  • +

    Michael(tm) Smith: inline.xsl

    removed template match for literal. template matches for monospace
    +inlines are all imported from the HTML stylesheet
    +
  • +

    Michael(tm) Smith: block.xsl

    don't indent verbatim environments that are descendants of
    +refsynopsisdiv, not put backgrounds behind them
    +
  • +

    Michael(tm) Smith: inline.xsl

    set output of the literal element in monospace. this causes all
    +inline monospace instances in the git man pages to be set in
    +monospace (since DocBook XML source for git docs is generated with
    +asciidoc and asciidoc consistently outputs only <literal> for
    +inline monospace (not <command> or <code> or anything else).
    +Of course this only affects non-TTY output...
    +
  • +

    Michael(tm) Smith: utility.xsl

    Added inline.monoseq named template.
    +
  • +

    Michael(tm) Smith: utility.xsl

    don't bother using a custom register to store the previous
    +font-family value when setting blocks of text in code font; just
    +use \F[] .fam with no arg to switch back
    +
  • +

    Michael(tm) Smith: endnotes.xsl

    put links in blue in PS output (note that this matches how groff
    +renders content marked up with the .URL macro)
    +
  • +

    Michael(tm) Smith: endnotes.xsl; param.xweb; param.ent

    removed man.links.are.underlined and added man.font.links. Also,
    +changed the default font formatting for links to bold.
    +
  • +

    Michael(tm) Smith: endnotes.xsl; param.xweb; param.ent

    Added new param man.base.url.for.relative.links .. specifies a
    +base URL for relative links (for ulink, @xlink:href, imagedata,
    +audiodata, videodata) shown in the generated NOTES section of
    +man-page output. The value of man.base.url.for.relative.links is
    +prepended to any relative URI that is a value of ulink url,
    +xlink:href, or fileref attribute.
    +
    +If you use relative URIs in link sources in your DocBook refentry
    +source, and you leave man.base.url.for.relative.links unset, the
    +relative links will appear "as is" in the NOTES section of any
    +man-page output generated from your source. That's probably not
    +what you want, because such relative links are only usable in the
    +context of HTML output. So, to make the links meaningful and
    +usable in the context of man-page output, set a value for
    +man.base.url.for.relative.links that points
    +to the online version of HTML output generated from your DocBook
    +refentry source. For example:
    +
    +  <xsl:param name="man.base.url.for.relative.links"
    +  >http://www.kernel.org/pub/software/scm/git/docs/</xsl:param>
    +
  • +

    Michael(tm) Smith: info.xsl

    If a source refentry contains a Documentation or DOCUMENTATION
    +section, don't report it as having missing AUTHOR information.
    +Also, if missing a contrib/personblurb for a person or org, report
    +pointers to http://docbook.sf.net/el/personblurb and to
    +http://docbook.sf.net/el/contrib
    +
  • +

    Michael(tm) Smith: info.xsl

    If we encounter an author|editor|othercredit instance that lacks a
    +personblurb or contrib, report it to the user (because that means
    +we have no information about that author|editor|othercredit to
    +display in the generated AUTHOR|AUTHORS section...)
    +
  • +

    Michael(tm) Smith: info.xsl; docbook.xsl; other.xsl

    if we can't find any usable author data, emit a warning and insert
    +a fixme in the output
    +
  • +

    Michael(tm) Smith: info.xsl

    fixed bug in indenting of output for contrib instances in AUTHORS
    +section. Thanks to Daniel Leidert and the fglrx docs for exposing
    +the bug.
    +
  • +

    Michael(tm) Smith: block.xsl

    for a para or simpara that is the first child of a callout,
    +suppress the .sp or .PP that would normally be output (because in
    +those cases, the output goes into a table cell, and the .sp or .PP
    +markup causes a spurious linebreak before it when displayed
    +
  • +

    Michael(tm) Smith: lists.xsl

    Added support for rendering co callouts and calloutlist instances.
    +So you can now use simple callouts -- marking up programlisting
    +and such with co instances -- and have the callouts displayed in
    +man-page output. ("simple callouts" means using co@id and
    +callout@arearefs pointing to co@id instances; in man/roff output,
    +we can't/don't support markup that uses areaset and area)
    +
  • +

    Michael(tm) Smith: block.xsl

    only put a line of space after a verbatim if it's followed by a
    +text node or a paragraph
    +
  • +

    Michael(tm) Smith: utility.xsl

    put verbatim environments in slightly smaller font in non-TTY
    +output
    +
  • +

    Michael(tm) Smith: lists.xsl

    minor whitespace-only reformatting of lists.xsl source
    +
  • +

    Michael(tm) Smith: lists.xsl

    Made refinements/fixes to output of orderedlist and itemizedlist
    +-- in part, to get mysql man pages to display correctly. This
    +change causes a "\c" continuation marker to be added between
    +listitem markers and contents (to ensure that the content remains
    +on the same line as the marker when displayed)
    +
  • +

    Michael(tm) Smith: block.xsl

    put a line of vertical space after all verbatim output that has
    +sibling content following it (not just if that sibling content is
    +a text node)
    +
  • +

    Michael(tm) Smith: block.xsl

    refined spacing around titles for admonitions
    +
  • +

    Michael(tm) Smith: block.xsl; other.xsl

    Deal with case of verbatim environments that have a linebreak
    +after the opening tag. Assumption is that users generally don't
    +want that linebreak to appear in output, so we do some groff
    +hackery to mess with vertical spacing and close the space.
    +
  • +

    Michael(tm) Smith: inline.xsl

    indexterm instances now produce groff comments like this:
    +
    +  .\" primary: secondary: tertiary
    +
    +remark instances, if non-empty, now produce groff comments
    +
  • +

    Michael(tm) Smith: charmap.groff.xsl; other.xsl

    convert no-break space character to groff "\ \&" (instead of just
    +"\ "). the reason is that if a space occurs at the end of a line,
    +our processing causes it to be eaten. a real-world case of this is
    +the mysql(1) man page. appending the "\&" prevents that
    +
  • +

    Michael(tm) Smith: block.xsl

    output "sp" before simpara output, not after it (outputting it
    +after results in undesirable whitespace in particular cases; for
    +example, in the hg/mercurial docs
    +
  • +

    Michael(tm) Smith: table.xsl; synop.xsl; utility.xsl

    renamed from title-preamble to pinch.together and replaced "sp -1"
    +between synopsis fragments with call to pinch.together instead
    +
  • +

    Michael(tm) Smith: table.xsl

    use title-preamble template for table titles (instead of "sp -1"
    +hack), and "sp 1" after all tables (instead of just "sp"
    +
  • +

    Michael(tm) Smith: utility.xsl

    created title-preamble template for suppressing line spacing after
    +headings
    +
  • +

    Michael(tm) Smith: info.xsl

    further refinement of indenting in AUTHORS section
    +
  • +

    Michael(tm) Smith: block.xsl; other.xsl

    refined handling of admonitions
    +
  • +

    Michael(tm) Smith: lists.xsl

    Use RS/RE in another place where we had IP ""
    +
  • +

    Michael(tm) Smith: info.xsl

    Replace (ab)use of IP with "sp -1" in AUTHORS section with RS/RE
    +instead.
    +
  • +

    Michael(tm) Smith: table.xsl; synop.xsl; info.xsl

    changed all instances of ".sp -1n" to ".sp -1"
    +
  • +

    Michael(tm) Smith: other.xsl

    add extra line before SH heads only in non-TTY output
    +
  • +

    Michael(tm) Smith: block.xsl

    Reworked output for admonitions (caution, important, note, tip,
    +warning). In TTY output, admonitions now get indented. In non-TTY
    +output, a colored marker (yellow) is displayed next to them.
    +
  • +

    Michael(tm) Smith: other.xsl

    Added BM/EM macros for putting a colored marker in margin next to
    +a block of text.
    +
  • +

    Michael(tm) Smith: utility.xsl

    created make.bold.title template by moving title-bolding part out
    +from nested-section-title template. This allows the bolding to
    +also be used by the template for formatting admonitions
    +
  • +

    Michael(tm) Smith: info.xsl

    put .br before copyright contents to prevent them from getting run in
    +
  • +

    Michael(tm) Smith: refentry.xsl; other.xsl; utility.xsl

    made point size of output for Refsect2 and Refsect3 heads bigger
    +
  • +

    Michael(tm) Smith: other.xsl

    put slightly more space between SH head and underline in non-TTY
    +output
    +
  • +

    Michael(tm) Smith: param.xweb; param.ent; other.xsl

    Added the man.charmap.subset.profile.english parameter and refined
    +the handling of charmap subsets to differentiate between English
    +and non-English source.
    +
    +This way charmap subsets are now handled is this:
    +
    +If the value of the man.charmap.use.subset parameter is non-zero,
    +and your DocBook source is not written in English (that is, if its
    +lang or xml:lang attribute has a value other than en), then the
    +character-map subset specified by the man.charmap.subset.profile
    +parameter is used instead of the full roff character map.
    +
    +Otherwise, if the lang or xml:lang attribute on the root element
    +in your DocBook source or on the first refentry element in your
    +source has the value en or if it has no lang or xml:lang
    +attribute, then the character-map subset specified by the
    +man.charmap.subset.profile.english parameter is used instead of
    +man.charmap.subset.profile.
    +
    +The difference between the two subsets is that
    +man.charmap.subset.profile provides mappings for characters in
    +Western European languages that are not part of the Roman
    +(English) alphabet (ASCII character set).
    +
  • +

    Michael(tm) Smith: other.xsl

    Various updates, mainly related to uppercasing SH titles:
    +
    +  - added a "Language: " metadata line to the top comment area of
    +    output man pages, to indicate the language the page is in
    +
    +  - added a "toupper" macro of doing locale-aware uppercasing of
    +    SH titles and cross-references to SH titles; the mechanism
    +    relies on the uppercase.alpha and lowercase.alpha DocBook
    +    gentext keys to do locale-aware uppercasing based on the
    +    language the page is written in
    +
    +  - added a "string.shuffle" template, which provides a library
    +    function for "shuffling" two strings together into a single
    +    string; it takes the first character for the first string, the
    +    first character from second string, etc. The only current use
    +    for it is to generate the argument for the groff tr request
    +    that does string uppercasing.
    +
    +  - added make.tr.uppercase.arg and make.tr.normalcase.arg named
    +    templates for use in generating groff code for uppercasing and
    +    "normal"-casing SH titles
    +
    +  - made the BB/BE "background drawing" macros have effect only in
    +    non-TTY output
    +
    +  - output a few comments in the top part of source
    +
  • +

    Michael(tm) Smith: utility.xsl

    removed some leftover kruft
    +
  • +

    Michael(tm) Smith: refentry.xsl

    To create the name(s) for each man page, we now replace any spaces
    +in the refname(s) with underscores. This ensures that tools like
    +lexgrog(1) will be able to parse the name (lexgrog won't parse
    +names that contain spaces).
    +
  • +

    Michael(tm) Smith: docbook.xsl

    Put a comment into source of man page to indicate where the main
    +content starts. (We now have a few of macro definitions at the
    +start of the source, so putting this comment in helps those that
    +might be viewing the source.)
    +
  • +

    Michael(tm) Smith: refentry.xsl

    refined mechanism for generating SH titles
    +
  • +

    Michael(tm) Smith: charmap.groff.xsl

    Added zcaron, Zcaron, scaron, and Scaron to the groff character map.
    +This means that generated Finnish man pages will no longer contain
    +any raw accented characters -- they'll instead by marked up with
    +groff escapes.
    +
  • +

    Michael(tm) Smith: other.xsl; utility.xsl

    corrected a regression I introduced about a year ago that caused
    +dots to be output just as "\." -- instead needs to be "\&." (which
    +is what it will be now, after this change)
    +
  • +

    Michael(tm) Smith: refentry.xsl

    Changed backend handling for generating titles for SH sections and
    +for cross-references to those sections. This should have no effect
    +on TTY output (behavior should remain the same hopefully) but
    +results in titles in normal case (instead of uppercase) in PS
    +output.
    +
  • +

    Michael(tm) Smith: info.xsl

    use make.subheading template to make subheadings for AUTHORS and
    +COPYRIGHT sections (instead of harcoding roff markup)
    +
  • +

    Michael(tm) Smith: block.xsl

    put code font around programlisting etc.
    +
  • +

    Michael(tm) Smith: synop.xsl; docbook.xsl

    embed custom macro definitions in man pages, plus wrap synopsis in
    +code font
    +
  • +

    Michael(tm) Smith: endnotes.xsl

    use the make.subheading template to generated SH subheading for
    +endnotes section.
    +
  • +

    Michael(tm) Smith: lists.xsl

    Added some templates for generating if-then-else conditional
    +markup in groff, so let's use those instead of hard-coding it in
    +multiple places...
    +
  • +

    Michael(tm) Smith: other.xsl; utility.xsl

    Initial checkin of some changes related to making PS/PDF output
    +from "man -l -Tps" look better. The current changes:
    +
    +  - render synopsis and verbatim sections in a monospace/code font
    +
    +  - put a light-grey background behind all programlisting, screen,
    +    and literallayout instances
    +
    +  - prevent SH heads in PS output from being rendered in uppercase
    +    (as they are in console output)
    +
    +  - also display xrefs to SH heads in PS output in normal case
    +    (instead of uppercase)
    +
    +  - draw a line under SH heads in PS output
    +
    +The changes made to the code to support the above features were:
    +
    +  - added some embedded/custom macros: one for conditionally
    +    upper-casing SH x-refs, one for redefining the SH macro
    +    itself, with some conditional handling for PS output, and
    +    finally a macro for putting a background/screen (filled box)
    +    around a block of text (e.g., a program listing) in PS output
    +
    +  - added utility templates for wrapping blocks of text in code
    +    font; also templates for inline code font
    +
  • +

    Robert Stayton: refentry.xsl

    refpurpose nodes now get apply-templates instead of just normalize-space().
    +
  • +

    Michael(tm) Smith: lists.xsl

    Fixed alignment of first lined of text for each listitem in
    +orderedlist output for TTY. Existing code seemed to have been
    +causing an extra undesirable space to appear.
    +
  • +

    Michael(tm) Smith: lists.xsl

    Wrapped some roff conditionals around roff markup for orderedlist
    +and itemizedlist output, so that the lists look acceptable in PS
    +output as well as TTY.
    +
  • +

    Michael(tm) Smith: pi.xsl; synop.xsl; param.xweb; param.ent

    Added the man.funcsynopsis.style parameter. Has the same effect in
    +manpages output as the funcsynopsis.style parameter has in HTML
    +output -- except that its default value is 'ansi' instead of 'kr'.
    +
  • +

    Michael(tm) Smith: synop.xsl

    Reworked handling of K&R funcprototype output. It no longer relies
    +on the HTML kr-tabular templates, but instead just does direct
    +transformation to roff. For K&R output, it displays the paramdef
    +output in an indented list following the prototype.
    +
  • +

    Michael(tm) Smith: synop.xsl

    Properly integrated handling for K&R output into manpages
    +stylesheet. The choice between K&R output and ANSI output is
    +currently controlled through use of the (HTML) funcsynopsis.style
    +parameter. Note that because the mechanism does currently rely on
    +funcsynopsis.style, the default in manpages output is now K&R
    +(because that's the default of that param). But I suppose I ought
    +to create a man.funcsynopsis.style and make the default for that
    +ANSI (to preserve the existing default behavior).
    +
  • +

    Michael(tm) Smith: docbook.xsl

    added manpages/pi.xsl file
    +
  • +

    Michael(tm) Smith: .cvsignore; pi.xsl

    Added "dbman funcsynopsis-style" PI and incorporated it into the
    +doc build.
    +
  • +

    Michael(tm) Smith: refentry.xsl

    Fixed regression that caused an unescaped dash to be output
    +between refname and refpurpose content. Closes bug #1894244.
    +Thanks to Daniel Leidert.
    +
  • +

    Michael(tm) Smith: other.xsl

    Fixed problem with dots being escaped in filenames of generated
    +man files. Closes #1827195. Thanks to Daniel Leidert.
    +
  • +

    Michael(tm) Smith: inline.xsl

    Added support for processing structfield (was appearing in roff
    +output surrounded by HTML <em> tags; fixed so that it gets roff
    +ital markup). Closes bug #1858329.  Thanks to Sam Varshavchik.
    +
+
+ +

Epub

+ +

The following changes have been made to the + epub code + since the 1.73.2 release.

+
  • Keith Fahlgren: bin/spec/README; bin/spec/epub_realbook_spec.rb

    'Realbook' spec now passes
  • Keith Fahlgren: bin/dbtoepub; README; bin/spec/README; bin/lib/docbook.rb; bin/spec/epub_r⋯

    Very primitive Windows support for dbtoepub reference implementation; README for running tests and for the .epub target in general; shorter realbook test document (still fails for now)
  • Keith Fahlgren: bin/dbtoepub; bin/spec/epub_regressions_spec.rb; bin/lib/docbook.rb; bin/s⋯

    Changes to OPF spine to not duplicate idrefs for documents with parts not at the root; regression specs for same
  • Keith Fahlgren: docbook.xsl

    Fixing linking to cover @id, distinct from other needs of cover-image-id (again, thanks to Martin Goerner)
  • Keith Fahlgren: docbook.xsl

    Updating the title of the toc element in the guide to be more explicit (thanks to Martin Goerner)
  • +

    Keith Fahlgren: bin/spec/examples/amasque_exploded/content.opf; bin/spec/examples/amasque_⋯

    Initial checkin/merge of epub target from work provided by Paul Norton of Adobe
    +and Keith Fahlgren of O'Reilly.
    +
  • +

    Keith Fahlgren: docbook.xsl

    == General epub test support
    +
    +$ spec -O ~/.spec.opts spec/epub_spec.rb 
    +
    +DocBook::Epub
    +- should be able to be created
    +- should fail on a nonexistent file
    +- should be able to render to a file
    +- should create a file after rendering
    +- should have the correct mimetype after rendering
    +- should be valid .epub after rendering an article
    +- should be valid .epub after rendering an article without sections
    +- should be valid .epub after rendering a book
    +- should be valid .epub after rendering a book even if it has one graphic
    +- should be valid .epub after rendering a book even if it has many graphics
    +- should be valid .epub after rendering a book even if it has many duplicated graphics
    +- should report an empty file as invalid
    +- should confirm that a valid .epub file is valid
    +- should not include PDFs in rendered epub files as valid image inclusions
    +- should include a TOC link in rendered epub files for <book>s
    +
    +Finished in 20.608395 seconds
    +
    +15 examples, 0 failures
    +
    +
    +== Verbose epub test coverage against _all_ of the testdocs 
    +
    +Fails on only (errors truncated):
    +1)
    +'DocBook::Epub should be able to render a valid .epub for the test document /Users/keith/work/docbook-dev/trunk/xsl/epub/bin/spec/testdocs/calloutlist.003.xml [30]' FAILED
    +'DocBook::Epub should be able to render a valid .epub for the test document /Users/keith/work/docbook-dev/trunk/xsl/epub/bin/spec/testdocs/cmdsynopsis.001.xml [35]' FAILED
    +....
    +
    +Finished in 629.89194 seconds
    +
    +224 examples, 15 failures
    +
    +224 examples, 15 failures yields 6% failure rate
    +
+
+ +

HTMLHelp

+ +

The following changes have been made to the + htmlhelp code + since the 1.73.2 release.

+
  • +

    Mauritz Jeanson: htmlhelp-common.xsl

    Added <xsl:with-param name="quiet" select="$chunk.quietly"/> to calls to
    +the write.chunk, write.chunk.with.doctype, and write.text.chunk templates.
    +This makes chunk.quietly=1 suppress chunk filename messages also for help 
    +support files (which seems to be what one would expect). See bug #1648360.
    +
+
+ +

Eclipse

+ +

The following changes have been made to the + eclipse code + since the 1.73.2 release.

+
  • +

    David Cramer: eclipse.xsl

    Use sortas attributes (if they exist) when sorting indexterms
    +
  • +

    David Cramer: eclipse.xsl

    Added support for indexterm/see in eclipse index.xml
    +
  • +

    Mauritz Jeanson: eclipse.xsl

    Added <xsl:with-param name="quiet" select="$chunk.quietly"/>
    +to helpidx template.
    +
  • +

    David Cramer: eclipse.xsl

    Generate index.xml file and add related goo to plugin.xml file. Does not yet support see and seealso.
    +
  • +

    Mauritz Jeanson: eclipse.xsl

    Added <xsl:with-param name="quiet" select="$chunk.quietly"/> to calls to
    +the write.chunk, write.chunk.with.doctype, and write.text.chunk templates.
    +This makes chunk.quietly=1 suppress chunk filename messages also for help 
    +support files (which seems to be what one would expect). See bug #1648360.
    +
+
+ +

JavaHelp

+ +

The following changes have been made to the + javahelp code + since the 1.73.2 release.

+
  • +

    Mauritz Jeanson: javahelp.xsl

    Added <xsl:with-param name="quiet" select="$chunk.quietly"/> to calls to
    +the write.chunk, write.chunk.with.doctype, and write.text.chunk templates.
    +This makes chunk.quietly=1 suppress chunk filename messages also for help 
    +support files (which seems to be what one would expect). See bug #1648360.
    +
+
+ +

Roundtrip

+ +

The following changes have been made to the + roundtrip code + since the 1.73.2 release.

+
  • +

    Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl

    fix table/cell borders for wordml, fix formal figure, add emphasis-strong
    +
  • +

    Mauritz Jeanson: supported.xml

    Changed @cols to 5.
    +
  • +

    Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; template.xml

    added pubdate, fixed metadata handling in biblioentry
    +
  • +

    Steve Ball: supported.xml

    Added support for edition.
    +
  • +

    Steve Ball: docbook-pages.xsl; wordml-blocks.xsl; docbook.xsl; wordml.xsl; pages-normalise⋯

    Removed stylesheets for old, deprecated conversion method.
    +
  • +

    Steve Ball: specifications.xml; dbk2ooo.xsl; blocks2dbk.xsl; dbk2pages.xsl; blocks2dbk.dtd⋯

    Added support for Open Office, added edition element, improved list and table support in Word and Pages
    +
  • +

    Steve Ball: normalise-common.xsl; blocks2dbk.xsl; dbk2pages.xsl; template-pages.xml; templ⋯

    Fixed bug in WordML table handling, improved table handling for Pages 08, synchronised WordML and Pages templates.
    +
  • +

    Steve Ball: normalise-common.xsl; blocks2dbk.xsl; wordml2normalise.xsl; dbk2wp.xsl

    fix caption, attributes
    +
  • +

    Steve Ball: specifications.xml; blocks2dbk.xsl; wordml2normalise.xsl; blocks2dbk.dtd; temp⋯

    Fixes to table and list handling
    +
  • +

    Steve Ball: blocks2dbk.xsl

    added support for explicit emphasis character styles
    +
  • +

    Steve Ball: wordml2normalise.xsl

    added support for customisation in image handling
    +
  • +

    Steve Ball: blocks2dbk.xsl

    Added inlinemediaobject support for metadata.
    +
  • +

    Steve Ball: normalise-common.xsl; blocks2dbk.xsl; template.xml; dbk2wordml.xsl; dbk2wp.xsl

    Added support file. Added style locking. Conversion bug fixes.
    +
+
+ +

Slides

+ +

The following changes have been made to the + slides code + since the 1.73.2 release.

+
  • +

    Michael(tm) Smith: fo/Makefile; html/Makefile

    Added checks and hacks to various makefiles to enable building
    +under Cygwin. This stuff is ugly and maybe not worth the mess and
    +trouble, but does seem to work as expected and not break anything
    +else.
    +
  • +

    Jirka Kosek: html/plain.xsl

    Added support for showing foil number
    +
+
+ +

Website

+ +

The following changes have been made to the + website code + since the 1.73.2 release.

+
  • +

    Michael(tm) Smith: extensions/saxon64/.classes/.gitignore; extensions/xalan2/.classes/com/⋯

    renamed a bunch more .cvsignore files to .gitignore (to facilitate use of git-svn)
    +
+
+ +

Params

+ +

The following changes have been made to the + params code + since the 1.73.2 release.

+
  • Keith Fahlgren: epub.autolabel.xml

    New parameter for epub, epub.autolabel
  • +

    Mauritz Jeanson: table.frame.border.color.xml; table.cell.padding.xml; table.cell.border.t⋯

    Added missing refpurposes and descriptions.
    +
  • +

    Keith Fahlgren: ade.extensions.xml

    Extensions to support Adobe Digital Editions extensions in .epub output.
    +
  • +

    Mauritz Jeanson: fop.extensions.xml; fop1.extensions.xml

    Clarified that fop1.extensions is for FOP 0.90 and later. Version 1 is not here yet...
    +
  • +

    Michael(tm) Smith: man.links.are.underlined.xml; man.endnotes.list.enabled.xml; man.font.l⋯

    removed man.links.are.underlined and added man.font.links. Also,
    +changed the default font formatting for links to bold.
    +
  • +

    Michael(tm) Smith: man.base.url.for.relative.links.xml

    Added new param man.base.url.for.relative.links .. specifies a
    +base URL for relative links (for ulink, @xlink:href, imagedata,
    +audiodata, videodata) shown in the generated NOTES section of
    +man-page output. The value of man.base.url.for.relative.links is
    +prepended to any relative URI that is a value of ulink url,
    +xlink:href, or fileref attribute.
    +
    +If you use relative URIs in link sources in your DocBook refentry
    +source, and you leave man.base.url.for.relative.links unset, the
    +relative links will appear "as is" in the NOTES section of any
    +man-page output generated from your source. That's probably not
    +what you want, because such relative links are only usable in the
    +context of HTML output. So, to make the links meaningful and
    +usable in the context of man-page output, set a value for
    +man.base.url.for.relative.links that points
    +to the online version of HTML output generated from your DocBook
    +refentry source. For example:
    +
    +  <xsl:param name="man.base.url.for.relative.links"
    +  >http://www.kernel.org/pub/software/scm/git/docs/</xsl:param>
    +
  • +

    Michael(tm) Smith: man.string.subst.map.xml

    squeeze .sp\n.sp into a single .sp (to prevent a extra, spurious
    +line of whitespace from being inserted after programlisting etc.
    +in certain cases)
    +
  • +

    Michael(tm) Smith: refentry.manual.fallback.profile.xml; refentry.source.fallback.profile.⋯

    don't use refmiscinfo@class=date value as fallback for refentry
    +"source" or "manual" metadata fields
    +
  • +

    Michael(tm) Smith: man.charmap.subset.profile.xml; man.charmap.enabled.xml; man.charmap.su⋯

    made some further doc tweaks related to the
    +man.charmap.subset.profile.english param
    +
  • +

    Michael(tm) Smith: man.charmap.subset.profile.xml; man.charmap.enabled.xml; man.charmap.su⋯

    Added the man.charmap.subset.profile.english parameter and refined
    +the handling of charmap subsets to differentiate between English
    +and non-English source.
    +
    +This way charmap subsets are now handled is this:
    +
    +If the value of the man.charmap.use.subset parameter is non-zero,
    +and your DocBook source is not written in English (that is, if its
    +lang or xml:lang attribute has a value other than en), then the
    +character-map subset specified by the man.charmap.subset.profile
    +parameter is used instead of the full roff character map.
    +
    +Otherwise, if the lang or xml:lang attribute on the root element
    +in your DocBook source or on the first refentry element in your
    +source has the value en or if it has no lang or xml:lang
    +attribute, then the character-map subset specified by the
    +man.charmap.subset.profile.english parameter is used instead of
    +man.charmap.subset.profile.
    +
    +The difference between the two subsets is that
    +man.charmap.subset.profile provides mappings for characters in
    +Western European languages that are not part of the Roman
    +(English) alphabet (ASCII character set).
    +
  • +

    Michael(tm) Smith: man.charmap.subset.profile.xml

    Added to default charmap used by manpages:
    +
    +  - the "letters" part of the 'C1 Controls And Latin-1 Supplement
    +    (Latin-1 Supplement)' Unicode block
    +  - Latin Extended-A block (but not all of the characters from
    +    that block have mappings in groff, so some of them are still
    +    passed through as-is)
    +
    +The effects of this change are that in man pages generated for
    +most Western European languages and for Finnish, all characters
    +not part of the Roman alphabet are (e.g., "accented" characters)
    +are converted to groff escapes.
    +
    +Previously, by default we passed through those characters as is
    +(and users needed to use the full charmap if they wanted to have
    +those characters converted).
    +
    +As a result of this change, man pages generated for Western
    +European languages will be viewable in some environments in which
    +they are not viewable if the "raw" non-Roman characters are in them.
    +
  • +

    Mauritz Jeanson: generate.legalnotice.link.xml; generate.revhistory.link.xml

    Added information on how the filename is computed.
    +
  • +

    Mauritz Jeanson: default.table.width.xml

    Clarified PI usage.
    +
  • +

    Michael(tm) Smith: man.funcsynopsis.style.xml

    Added the man.funcsynopsis.style parameter. Has the same effect in
    +manpages output as the funcsynopsis.style parameter has in HTML
    +output -- except that its default value is 'ansi' instead of 'kr'.
    +
  • +

    Michael(tm) Smith: funcsynopsis.tabular.threshold.xml

    Removed the funcsynopsis.tabular.threshold param. It's no longer
    +being used in the code and hasn't been since mid 2006.
    +
  • +

    Mauritz Jeanson: table.properties.xml

    Set keep-together.within-column to "auto". This seems to be the most sensible
    +default value for tables.
    +
  • +

    Mauritz Jeanson: informal.object.properties.xml; admon.graphics.extension.xml; informalequ⋯

    Several small documentation fixes.
    +
  • +

    Mauritz Jeanson: manifest.in.base.dir.xml

    Wording fixes.
    +
  • +

    Mauritz Jeanson: header.content.properties.xml; footer.content.properties.xml

    Added refpurpose.
    +
  • +

    Mauritz Jeanson: ulink.footnotes.xml; ulink.show.xml

    Updated for DocBook 5.
    +
  • +

    Mauritz Jeanson: index.method.xml; glossterm.auto.link.xml

    Spelling and wording fixes.
    +
  • +

    Mauritz Jeanson: callout.graphics.extension.xml

    Clarifed available graphics formats and extensions.
    +
  • +

    Mauritz Jeanson: footnote.sep.leader.properties.xml

    Corrected refpurpose.
    +
  • +

    Jirka Kosek: footnote.properties.xml

    Added more properties which make it possible to render correctly footnotes placed inside verbatim elements.
    +
  • +

    Mauritz Jeanson: img.src.path.xml

    img.src.path works with inlinegraphic too.
    +
  • +

    Mauritz Jeanson: saxon.character.representation.xml

    Added TCG link.
    +
  • +

    Mauritz Jeanson: img.src.path.xml

    Updated description of img.src.path. Bug #1785224 revealed that 
    +there was a risk of misunderstanding how it works.
    +
+
+ +

Profiling

+ +

The following changes have been made to the + profiling code + since the 1.73.2 release.

+
  • +

    Jirka Kosek: xsl2profile.xsl

    Added new rules to profile all content generated by HTML Help (including alias files)
    +
  • +

    Robert Stayton: profile-mode.xsl

    use mode="profile" instead of xsl:copy-of for attributes so
    +they can be more easily customized.
    +
+
+ + +

Tools

+ +

The following changes have been made to the + tools code + since the 1.73.2 release.

+
  • +

    Michael(tm) Smith: make/Makefile.DocBook

    various changes and additions to support making with asciidoc as
    +an input format
    +
  • +

    Michael(tm) Smith: make/Makefile.DocBook

    make dblatex the default PDF maker for the example makefile
    +
  • +

    Michael(tm) Smith: xsl/build/html2roff.xsl

    Reworked handling of K&R funcprototype output. It no longer relies
    +on the HTML kr-tabular templates, but instead just does direct
    +transformation to roff. For K&R output, it displays the paramdef
    +output in an indented list following the prototype.
    +
  • +

    Mauritz Jeanson: xsl/build/make-xsl-params.xsl

    Made attribute-sets members of the param list. This enables links to attribute-sets in the
    +reference documentation.
    +
  • +

    Michael(tm) Smith: xsl/build/html2roff.xsl

    use .BI handling in K&R funsynopsis output for manpages, just as
    +we do already of ANSI output
    +
  • +

    Michael(tm) Smith: xsl/build/html2roff.xsl

    Implemented initial support for handling tabular K&R output of
    +funcprototype in manpages output. Accomplished by adding more
    +templates to the intermediate HTML-to-roff stylesheet that the
    +build uses to create the manpages/html-synop.xsl stylesheet.
    +
  • +

    Michael(tm) Smith: xsl/build/doc-link-docbook.xsl

    Made the xsl/tools/xsl/build/doc-link-docbook.xsl stylesheet
    +import profile-docbook.xsl, so that we can do profiling of release
    +notes. Corrected some problems in the target for the release-notes
    +HTML build.
    +
+
+ +

Extensions

+ +

The following changes have been made to the + extensions code + since the 1.73.2 release.

+
  • Keith Fahlgren: Makefile

    Use DOCBOOK_SVN variable everywhere, please; build with PDF_MAKER
  • +

    Michael(tm) Smith: Makefile

    moved extensions build targets from master xsl/Makefile to
    +xsl/extensions/Makefile
    +
  • +

    Michael(tm) Smith: .cvsignore

    re-adding empty extensions subdir
    +
+
+ +

XSL-Saxon

+ +

The following changes have been made to the + xsl-saxon code + since the 1.73.2 release.

+
  • +

    Michael(tm) Smith: VERSION

    bring xsl2, xsl-saxon, and xsl-xalan VERSION files up-to-date with
    +recent change to snapshot build infrastructure
    +
  • +

    Michael(tm) Smith: nbproject/build-impl.xml; nbproject/project.properties

    Changed hard-coded file references in "clean" target to variable
    +references. Closes #1792043. Thanks to Daniel Leidert.
    +
  • +

    Michael(tm) Smith: VERSION; Makefile

    Did post-release wrap-up of xsl-saxon and xsl-xalan dirs
    +
  • +

    Michael(tm) Smith: nbproject/build-impl.xml; VERSION; Makefile; test

    More tweaks to get release-ready
    +
+
+ +

XSL-Xalan

+ +

The following changes have been made to the + xsl-xalan code + since the 1.73.2 release.

+
  • +

    Michael(tm) Smith: VERSION

    bring xsl2, xsl-saxon, and xsl-xalan VERSION files up-to-date with
    +recent change to snapshot build infrastructure
    +
  • +

    Michael(tm) Smith: nbproject/build-impl.xml

    Changed hard-coded file references in "clean" target to variable
    +references. Closes #1792043. Thanks to Daniel Leidert.
    +
  • +

    Michael(tm) Smith: Makefile; VERSION

    Did post-release wrap-up of xsl-saxon and xsl-xalan dirs
    +
  • +

    Michael(tm) Smith: Makefile; nbproject/build-impl.xml; VERSION

    More tweaks to get release-ready
    +
+
+ +

XSL-libxslt

+ +

The following changes have been made to the + xsl-libxslt code + since the 1.73.2 release.

+
  • +

    Mauritz Jeanson: python/xslt.py

    Print the result to stdout if no outfile has been given.
    +Some unnecessary semicolons removed.
    +
  • +

    Mauritz Jeanson: python/xslt.py

    Added a function that quotes parameter values (to ensure that they are interpreted as strings).
    +Replaced deprecated functions from the string module with string methods.
    +
  • +

    Michael(tm) Smith: python/README; python/README.LIBXSLT

    renamed xsl-libxslt/python/README to xsl-libxslt/python/README.LIBXSLT
    +
  • +

    Mauritz Jeanson: python/README

    Tweaked the text a little.
    +
+
+ +
+ +

Release Notes: 1.73.2

+ +

This is solely a minor bug-fix update to the 1.73.1 release. + It fixes a packaging error in the 1.73.1 package, as well as a + bug in footnote handling in FO output.

+
+ +

Release: 1.73.1

+ +

This is mostly a bug-fix update to the 1.73.0 release.

+ +

Gentext

+ +

The following changes have been made to the + gentext code + since the 1.73.0 release.

+
  • +

    Mauritz Jeanson: locale/de.xml

    Applied patch #1766009.
    +
  • +

    Michael(tm) Smith: locale/lv.xml

    Added localization for ProductionSet.
    +
+
+ +

FO

+ +

The following changes have been made to the + fo code + since the 1.73.0 release.

+
  • +

    Mauritz Jeanson: table.xsl

    Modified the tgroup template so that, for tables with multiple tgroups, 
    +a width attribute is output on all corresponding fo:tables. Previously, 
    +there was a test prohibiting this (and a comment saying that outputting more
    +than one width attribute will cause an error). But this seems to be no longer 
    +relevant; it is not a problem with FOP 0.93 or XEP 4.10. Closes bug #1760559.
    +
  • +

    Mauritz Jeanson: graphics.xsl

    Replaced useless <a> elements with warning messages (textinsert extension).
    +
  • +

    Mauritz Jeanson: admon.xsl

    Enabled generation of ids (on fo:wrapper) for indexterms in admonition titles, so that page
    +references in the index can be created. Closes bug #1775086.
    +
+
+ +

HTML

+ +

The following changes have been made to the + html code + since the 1.73.0 release.

+
  • +

    Mauritz Jeanson: titlepage.xsl

    Added <xsl:call-template name="process.footnotes"/> to abstract template
    +so that footnotes in info/abstract are processed. Closes bug #1760907.
    +
  • +

    Michael(tm) Smith: pi.xsl; synop.xsl

    Changed handling of HTML output for the cmdsynopsis and
    +funcsynopsis elements, such that a@id instances are generated for
    +them if they are descendants of any element containing a dbcmdlist
    +or dbfunclist PI. Also, update the embedded reference docs for the
    +dbcmdlist and dbfunclist PIs to make it clear that they can be
    +used within any element for which cmdsynopsis or funcsynopsis are
    +valid children.
    +
  • +

    Michael(tm) Smith: formal.xsl

    Reverted the part of revision 6952 that caused a@id anchors to be
    +generated for output of informal objects. Thanks to Sam Steingold
    +for reporting.
    +
  • +

    Robert Stayton: glossary.xsl

    Account for a glossary with no glossdiv or glossentry children.
    +
  • +

    Mauritz Jeanson: titlepage.xsl

    Modified legalnotice template so that the base.name parameter is calculated 
    +in the same way as for revhistory chunks. Using <xsl:apply-templates 
    +mode="chunk-filename" select="."/> did not work for single-page output since
    +the template with that mode is in chunk-code.xsl.
    +
  • +

    Mauritz Jeanson: graphics.xsl

    Updated support for SVG (must be a child of imagedata in DB 5).
    +Added support for MathML in imagedata.
    +
  • +

    Mauritz Jeanson: pi.xsl

    Added documentation for the dbhh PI (used for context-sensitive HTML Help).
    +(The two templates matching 'dbhh' are still in htmlhelp-common.xsl).
    +
+
+ +

Manpages

+ +

The following changes have been made to the + manpages code + since the 1.73.0 release.

+
  • +

    Michael(tm) Smith: endnotes.xsl

    In manpages output, generate warnings about notesources with
    +non-para children only if the notesource is a footnote or
    +annotation. Thanks to Sam Steingold for reporting problems with
    +the existing handling.
    +
+
+ +

HTMLHelp

+ +

The following changes have been made to the + htmlhelp code + since the 1.73.0 release.

+
  • +

    Michael(tm) Smith: htmlhelp-common.xsl

    Added single-pass namespace-stripping support to the htmlhelp,
    +eclipse, and javahelp stylesheets.
    +
+
+ +

Eclipse

+ +

The following changes have been made to the + eclipse code + since the 1.73.0 release.

+
  • +

    Michael(tm) Smith: eclipse.xsl

    Added single-pass namespace-stripping support to the htmlhelp,
    +eclipse, and javahelp stylesheets.
    +
+
+ +

JavaHelp

+ +

The following changes have been made to the + javahelp code + since the 1.73.0 release.

+
  • +

    Michael(tm) Smith: javahelp.xsl

    Added single-pass namespace-stripping support to the htmlhelp,
    +eclipse, and javahelp stylesheets.
    +
+
+ +

Roundtrip

+ +

The following changes have been made to the + roundtrip code + since the 1.73.0 release.

+
  • +

    Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; pages2normalise.xsl

    Modularised blocks2dbk to allow customisation,
    +Added support for tables to pages2normalise
    +
+
+ +

Params

+ +

The following changes have been made to the + params code + since the 1.73.0 release.

+
  • +

    Robert Stayton: procedure.properties.xml

    procedure was inheriting keep-together from formal.object.properties, but
    +a procedure does not need to be kept together by default.
    +
  • +

    Dave Pawson: title.font.family.xml; component.label.includes.part.label.xml; table.frame.b⋯

    Regular formatting re-org.
    +
+
+
+ +

Release: 1.73.0

+ +

This release includes important bug fixes and adds the following +significant feature changes: +

New localizations and localization updates
+

We added two new localizations: Latvian and + Esperanto, and made updates to the Czech, Chinese + Simplified, Mongolian, Serbian, Italian, and Ukrainian + localizations.

+
ISO690 citation style for bibliography output.
+

Set the + bibliography.style parameter to + iso690 to use ISO690 style.

+
New documentation for processing instructions (PI)
+

The reference documentation that ships with the + release now includes documentation on all PIs that you can use to + control output from the stylesheets.

+
New profiling parameters for audience and wordsize
+

You can now do profiling based on the values of the + audience and + wordsize attributes.

+
Changes to man-page output
+

The manpages stylesheet now supports single-pass + profiling and single-pass DocBook 5 namespace stripping + (just as the HTML and FO stylesheets also do). Also, added + handling for mediaobject & + inlinemediaobject. (Each imagedata, + audiodata, or videodata element + within a mediaobject or inline + mediaobject is now treated as a "notesource" + and so handled in much the same way as links and + annotation/alt/footnote + are in manpages output.) And added the + man.authors.section.enabled and + man.copyright.section.enabled + parameters to enable control over whether output includes + auto-generated AUTHORS and + COPYRIGHT sections.

+
Highlighting support for C
+

The highlighting mechanism for generating + syntax-highlighted code snippets in output now supports C + code listings (along with Java, PHP, XSLT, and others).

+
Experimental docbook-xsl-update script
+

We added an experimental docbook-xsl-update + script, the purpose of which is to facilitate + easy sync-up to the latest docbook-xsl snapshot (by means + of rsync).

+

+

+ +

Gentext

+ +

The following changes have been made to the +gentext code +since the 1.72.0 release.

+
  • +

    Michael(tm) Smith: locale/lv.xml; Makefile

    Added Latvian localization file, from Girts Ziemelis.
    +
  • +

    Dongsheng Song: locale/zh_cn.xml

    Brought up to date with en.xml in terms of items. A few strings marked for translation.
    +
  • +

    Jirka Kosek: locale/cs.xml

    Added missing translations
    +
  • +

    Robert Stayton: locale/eo.xml

    New locale for Esperanto.
    +
  • +

    Robert Stayton: locale/mn.xml

    Update from Ganbold Tsagaankhuu.
    +
  • +

    Jirka Kosek: locale/en.xml; locale/cs.xml

    Rules for normalizing glossary entries before they are sorted can be now different for each language.
    +
  • +

    Michael(tm) Smith: locale/sr_Latn.xml; locale/sr.xml

    Committed changes from Miloš Komarčević to Serbian files.
    +
  • +

    Robert Stayton: locale/ja.xml

    Fix chapter in context xref-number-and-title
    +
  • +

    Robert Stayton: locale/it.xml

    Improved version from contributor.
    +
  • +

    Mauritz Jeanson: locale/uk.xml

    Applied patch 1592083.
    +
+
+

Common

+ +

The following changes have been made to the +common code +since the 1.72.0 release.

+
  • +

    Michael(tm) Smith: labels.xsl

    Changed handling of reference auto-labeling such that reference
    +(when it appears at the component level) is now affected by the
    +label.from.part param, just as preface, chapter, and appendix.
    +
  • +

    Michael(tm) Smith: common.xsl

    Added support to the HTML stylesheets for proper processing of
    +orgname as a child of author.
    +
  • +

    Michael(tm) Smith: refentry.xsl

    Refined logging output of refentry metadata-gathering template;
    +for some cases of "missing" elements (refmiscinfo stuff, etc.),
    +the log messages now include URL to corresponding page in the
    +Definitive Guide (TDG).
    +
  • +

    Robert Stayton: titles.xsl

    Add refsection/info/title support.
    +
  • +

    Michael(tm) Smith: titles.xsl

    Added support for correct handling of xref to elements that
    +contain info/title descendants but no title children.
    +
    +This should be further refined so that it handles any *info
    +elements. And there are probably some other places where similar
    +handling for *info/title should be added.
    +
  • +

    Mauritz Jeanson: pi.xsl

    Modified <xsl:when> in datetime.format template to work
    +around Xalan bug.
    +
+
+

FO

+ +

The following changes have been made to the +fo code +since the 1.72.0 release.

+
  • +

    Robert Stayton: component.xsl

    Add parameters to the page.sequence utility template.
    +
  • +

    Mauritz Jeanson: xref.xsl

    Added template for xref to area/areaset.
    +Part of fix for bug #1675513 (xref to area broken).
    +
  • +

    Michael(tm) Smith: inline.xsl

    Added template match for person element to fo stylesheet.
    +
  • +

    Robert Stayton: lists.xsl

    Added support for spacing="compact" in variablelist, per bug report #1722540.
    +
  • +

    Robert Stayton: table.xsl

    table pgwide="1" should also use pgwide.properties attribute-set.
    +
  • +

    Mauritz Jeanson: inline.xsl

    Make citations numbered if bibliography.numbered != 0.
    +
  • +

    Robert Stayton: param.xweb; param.ent

    Add new profiling parameters for audience and wordsize.
    +
  • +

    Robert Stayton: param.xweb; param.ent

    Added callout.icon.size parameter.
    +
  • +

    Robert Stayton: inline.xsl; xref.xsl

    Add support for xlink as olink.
    +
  • +

    Robert Stayton: autotoc.xsl; param.xweb; param.ent

    Add support for qanda.in.toc to fo TOC.
    +
  • +

    Robert Stayton: component.xsl

    Improved the page.sequence utility template for use with book.
    +
  • +

    Robert Stayton: division.xsl

    Refactored the big book template into smaller pieces.
    +Used the "page.sequence" utility template in
    +component.xsl to shorten the toc piece.
    +Added placeholder templates for front.cover and back.cover.
    +
  • +

    Robert Stayton: param.xweb; param.ent; sections.xsl

    Add section.container.element parameter to enable
    +pgwide spans inside sections.
    +
  • +

    Robert Stayton: param.xweb; param.ent; component.xsl

    Add component.titlepage.properties attribute-set to
    +support span="all" and other properties.
    +
  • +

    Robert Stayton: htmltbl.xsl; table.xsl

    Apply table.row.properties template to html tr rows too.
    +Add keep-with-next to table.row.properties when row is in thead.
    +
  • +

    Robert Stayton: table.xsl

    Add support for default.table.frame parameter.
    +Fix bug 1575446 rowsep last check for @morerows.
    +
  • +

    Robert Stayton: refentry.xsl

    Add support for info/title in refsections.
    +
  • +

    David Cramer: qandaset.xsl

    Make fo questions and answers behave the same way as html
    +
  • +

    Jirka Kosek: lists.xsl

    Added missing attribute set for procedure
    +
  • +

    Jirka Kosek: param.xweb; biblio.xsl; docbook.xsl; param.ent; biblio-iso690.xsl

    Added support for formatting biblioentries according to ISO690 citation style.
    +New bibliography style can be turned on by setting parameter bibliography.style to "iso690"
    +The code was provided by Jana Dvorakova
    +
  • +

    Robert Stayton: param.xweb; param.ent; pagesetup.xsl

    Add header.table.properties and footer.table.properties attribute-sets.
    +
  • +

    Robert Stayton: inline.xsl

    Add fop1.extensions for menuchoice arrow handling exception.
    +
+
+

HTML

+ +

The following changes have been made to the + html code + since the 1.72.0 release.

+
  • +

    Mauritz Jeanson: param.xweb; param.ent

    Moved declaration and documentation of javahelp.encoding from javahelp.xsl to the
    +regular "parameter machinery".
    +
  • +

    Michael(tm) Smith: admon.xsl

    Changed handling of titles for note, warning, caution, important,
    +tip admonitions: We now output and HTML h3 head only if
    +admon.textlabel is non-zero or if the admonition actually contains
    +a title; otherwise, we don't output an h3 head at all.
    +(Previously, we were outputting an empty h3 if the admon.textlabel
    +was zero and if the admonition had no title.)
    +
  • +

    Mauritz Jeanson: xref.xsl

    Added template for xref to area/areaset.
    +Part of fix for bug #1675513 (xref to area broken).
    +
  • +

    Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; sections.xsl

    Added fixes to avoid duplicate ids when generate.id.attributes = 1.
    +This (hopefully) closes bug #1671052.
    +
  • +

    Michael(tm) Smith: formal.xsl; pi.xsl

    Made the dbfunclist PI work as intended. Also added doc for
    +dbfunclist and dbcmdlist PIs.
    +
  • +

    Michael(tm) Smith: pi.xsl; synop.xsl

    Made the dbcmdlist work the way it appears to have been intended
    +to work. Restored dbhtml-dir template back to pi.xsl.
    +
  • +

    Michael(tm) Smith: titlepage.xsl; param.xweb; param.ent

    Added new param abstract.notitle.enabled.
    +If non-zero, in output of the abstract element on titlepages,
    +display of the abstract title is suppressed.
    +Because sometimes you really don't want or need that title
    +there...
    +
  • +

    Michael(tm) Smith: chunk-code.xsl; graphics.xsl

    When we are chunking long descriptions for mediaobject instances
    +into separate HTML output files, and use.id.as.filename is
    +non-zero, if a mediaobject has an ID, use that ID as the basename
    +for the long-description file (otherwise, we generate an ID for it
    +and use that ID as the basename for the file).
    +The parallels the recent change made to cause IDs for legalnotice
    +instances to be used as basenames for legalnotice chunks.
    +Also, made some minor refinements to the recent changes for
    +legalnotice chunk handling.
    +
  • +

    Michael(tm) Smith: titlepage.xsl

    Added support to the HTML stylesheets for proper processing of
    +orgname as a child of author.
    +
  • +

    Michael(tm) Smith: chunk-code.xsl

    When $generate.legalnotice.link is non-zero and
    +$use.id.as.filename is also non-zero, if a legalnotice has an ID,
    +then instead of assigning the "ln-<generatedID>" basename to the
    +output file for that legalnotice, just use its real ID as the
    +basename for the file -- as we do when chunking other elements
    +that have IDs.
    +
  • +

    David Cramer: xref.xsl

    Handle alt text on xrefs to steps when the step doesn't have a title.
    +
  • +

    David Cramer: lists.xsl

    Added <p> element around term in variablelist when formatted as table to avoid misalignment of term and listitem in xhtml (non-quirks mode) output
    +
  • +

    David Cramer: qandaset.xsl

    Added <p> element around question and answer labels to avoid misalignment of label and listitem in xhtml (non-quirks mode) output
    +
  • +

    David Cramer: lists.xsl

    Added <p> element around callouts to avoid misalignment of callout and listitem in xhtml (non-quirks mode) output
    +
  • +

    Mauritz Jeanson: inline.xsl

    Make citations numbered if bibliography.numbered != 0.
    +
  • +

    Robert Stayton: param.xweb; param.ent

    Add support for new profiling attributes audience and wordsize.
    +
  • +

    Robert Stayton: inline.xsl; xref.xsl

    Add support for xlink olinks.
    +
  • +

    Jirka Kosek: glossary.xsl

    Rules for normalizing glossary entries before they are sorted can be now different for each language.
    +
  • +

    Robert Stayton: chunk-common.xsl; chunk-code.xsl; manifest.xsl; chunk.xsl

    Refactored the chunking modules to move all named templates to
    +chunk-common.xsl and all match templates to chunk-code.xsl, in
    +order to enable better chunk customization.
    +See the comments in chunk.xsl for more details.
    +
  • +

    Robert Stayton: lists.xsl

    Add anchor for xml:id for listitem in varlistentry.
    +
  • +

    Robert Stayton: refentry.xsl

    Add support for info/title in refsections for db5.
    +
  • +

    Jirka Kosek: param.xweb; biblio.xsl; docbook.xsl; param.ent; biblio-iso690.xsl

    Added support for formatting biblioentries according to ISO690 citation style.
    +New bibliography style can be turned on by setting parameter bibliography.style to "iso690"
    +The code was provided by Jana Dvorakova
    +
  • +

    Robert Stayton: inline.xsl; xref.xsl

    Add call to class.attribute to <a> output elements so they can
    +have a class value too.
    +
  • +

    Mauritz Jeanson: glossary.xsl

    Fixed bug #1644881:
    +* Added curly braces around all $language attribute values. 
    +* Moved declaration of language variable to top level of stylesheet.
    +Tested with Xalan, Saxon, and xsltproc.
    +
+
+

Manpages

+ +

The following changes have been made to the + manpages code + since the 1.72.0 release.

+
  • +

    Michael(tm) Smith: param.xweb; docbook.xsl; param.ent

    Added the man.authors.section.enabled and
    +man.copyright.section.enabled parameters. Set those to zero when
    +you want to suppress display of the auto-generated AUTHORS and
    +COPYRIGHT sections. Closes request #1467806. Thanks to Daniel
    +Leidert.
    +
  • +

    Michael(tm) Smith: docbook.xsl

    Took the test that the manpages stylesheet does to see if there
    +are any Refentry chilren in current doc, and made it
    +namespace-agnostic. Reason for that is because the test otherwise
    +won't work when it is copied over into the generated
    +profile-docbook.xsl stylesheet.
    +
  • +

    Michael(tm) Smith: Makefile

    Added a manpages/profile-docbook.xsl file to enable single-pass
    +profiling for manpages output.
    +
  • +

    Michael(tm) Smith: info.xsl

    Output copyright and legalnotice in man-page output in whatever
    +place they are in in document order. Closes #1690539. Thanks to
    +Daniel Leidert for reporting.
    +
  • +

    Michael(tm) Smith: docbook.xsl

    Restored support for single-pass namespace stripping to manpages
    +stylesheet.
    +
  • +

    Michael(tm) Smith: synop.xsl; block.xsl; info.xsl; inline.xsl; lists.xsl; endnotes.xsl; ut⋯

    Changed handling of bold and italic/underline output in manpages
    +output. Should be transparent to users, but...
    +
    +This touches handling of all bold and italic/underline output. The
    +exact change is that the mode="bold" and mode="italic" utility
    +templates were changed to named templates. (I think maybe I've
    +changed it back and forth from mode to named before, so this is
    +maybe re-reverting it yet again).
    +
    +Anyway, the reason for the change is that the templates are
    +sometimes call on dynamically node-sets, and using modes to format
    +those doesn't allow passing info about the current/real context
    +node from the source (not the node-set created by the stylesheet)
    +to that formatting stage.
    +
    +The named templates allow the context to be passed in as a
    +parameter, so that the bold/ital formatting template can use
    +context-aware condition checking.
    +
    +This was basically necessary in order to suppress bold formatting
    +in titles, which otherwise gets screwed up because of the numbnut
    +way that roff handles nested bold/ital.
    +
    +Closes #1674534). Much thanks to Daniel Leidert, whose in his
    +docbook-xsl bug-finding kung-fu has achieved Grand Master status.
    +
  • +

    Michael(tm) Smith: block.xsl

    Fixed handling of example instances by adding the example element
    +to the same template we use for processing figure. Closes
    +#1674538. Thanks to Daniel Leidert.
    +
  • +

    Michael(tm) Smith: utility.xsl

    Don't include lang in manpages filename/pathname if lang=en (that
    +is, only generate lang-qualified file-/pathnames for non-English).
    +
  • +

    Michael(tm) Smith: endnotes.xsl

    In manpages output, emit warnings for notesources (footnote, etc.)
    +that have something other than para as a child.
    +
    +The numbered-with-hanging-indent formatting that's used for
    +rendering endnotes in the NOTES section of man pages places some
    +limits/assumptions on how the DocBook source is marked up; namely,
    +for notesources (footnote, annotation, etc.) that can contain
    +block-level children, if the they have a block-level child such as
    +a table or itemizedlist or orderedlist that is the first child of
    +a footnote, we have no way of rendering/indenting its content
    +properly in the endnotes list.
    +
    +Thus, the manpages stylesheet not emits a warning message for that
    +case, and suggests the "fix" (which is to wrap the table or
    +itemizedlist or whatever in a para that has some preferatory text.
    +
  • +

    Michael(tm) Smith: utility.xsl

    Added support to mixed-block template for handling tables in
    +mixed-blocks (e.g., as child of para) correctly.
    +
  • +

    Michael(tm) Smith: table.xsl; synop.xsl; block.xsl; info.xsl; lists.xsl; refentry.xsl; end⋯

    Reverted necessary escaping of backslash, dot, and dash
    +out of the well-intentioned (but it now appears,
    +misguided) "marker" mechanism (introduced in the 1.72.0
    +release) -- which made use of alternative "marker"
    +characters as internal representations of those
    +characters, and then replaced them just prior to
    +serialization -- and back into what's basically the
    +system that was used prior to the 1.69.0 release; that
    +is, into a part of stylesheet code that gets executed
    +at the beginning of processing -- before any other roff
    +markup up is. This change obviates the need for the
    +marker system. It also requires a lot less RAM during
    +processing (for large files, the marker mechanism
    +ending up requiring gigabytes of memory).
    +
    +Closes bug #1661177. Thanks to Scott Smedley for
    +providing a test case (the fvwm man page) that exposed
    +the problem with the marker mechanism.
    +
    +Also moved the mechanism for converting non-breaking
    +spaces back into the same area of the stylesheet code.
    +
  • +

    Michael(tm) Smith: lists.xsl

    Fixed problem with incorrect formatting of nested variablelist.
    +Closes bug #1650931. Thanks to Daniel "Eagle Eye" Leidert.
    +
  • +

    Michael(tm) Smith: lists.xsl

    Make sure that all listitems in itemizedlist and orderedlist are
    +preceded by a blank line. This fixes a regression that occurred
    +when instances of the TP macro that were use in a previous
    +versions of the list-handling code were switched to RS/RE (because
    +TP doesn't support nesting). TP automatically generates a blank
    +line, but RS doesn't. So I added a .sp before each .RS
    +
  • +

    Michael(tm) Smith: block.xsl; inline.xsl; param.xweb; docbook.xsl; links.xsl; param.ent

    Made a number of changes related to elements with
    +out-of-line content:
    +
    +- Added handling for mediaobject & inlinemediaobject.
    +  Each imagedata, audiodata, or videodata element
    +  within a mediaobject or inline mediaobject is now
    +  treated as a "notesource" and so handled in much the
    +  same way as links and annotation/alt/footnotes.
    +
    +  That means a numbered marker is generated inline to
    +  mark the place in the main flow where the imagedata,
    +  audiodata, or videodata element occurs, and a
    +  corresponding numbered endnote for it is generated in
    +  the endnotes list at the end of the man page; the
    +  endnote contains the URL from the fileref attribute
    +  of the imagedata, audiodata, or videodata element.
    +
    +  For mediobject and inlinemediaobject instances that
    +  have a textobject child, the textobject is displayed
    +  within the main text flow.
    +
    +- Renamed several man.link.* params to man.endnotes.*,
    +  to reflect that fact that the endnotes list now
    +  contains more than just links. Also did similar
    +  renaming for a number of stylesheet-internal vars.
    +
    +- Added support for xlink:href (along with existing
    +  support for the legacy ulink element).
    +
    +- Cleaned up and streamlined the endnotes-handling
    +  code. It's still messy and klunky and the basic
    +  mechanism it uses is very inefficent for documents
    +  that contain a lot of notesources, but at least it's
    +  a bit better than it was.
    +
+
+

Eclipse

+ +

The following changes have been made to the + eclipse code + since the 1.72.0 release.

+
  • +

    Mauritz Jeanson: Makefile

    Fixed bug #1715093: Makefile for creating profiled version of eclipse.xsl added.
    +
  • +

    David Cramer: eclipse.xsl

    Added normalize-space around  to avoid leading whitespace from appearing in the output if there's extra leading whitespace (e.g. <title> Foo</title>) in the source
    +
+
+

JavaHelp

+ +

The following changes have been made to the + javahelp code + since the 1.72.0 release.

+
  • +

    Mauritz Jeanson: javahelp.xsl

    Implemented FR #1230233 (sorted index in javahelp).
    +
  • +

    Mauritz Jeanson: javahelp.xsl

    Added normalize-space() around titles and index entries to work around whitespace problems.
    +Added support for glossary and bibliography in toc and map files.
    +
+
+

Roundtrip

+ +

The following changes have been made to the + roundtrip code + since the 1.72.0 release.

+
  • +

    Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl; normalise2sections.xsl; sections2blocks.⋯

    new stylesheets for better word processor support and easier maintenance
    +
  • +

    Steve Ball: template-pages.xml; dbk2wp.xsl; sections-spec.xml

    fixed bugs
    +
+
+

Params

+ +

The following changes have been made to the + params code + since the 1.72.0 release.

+
  • +

    Mauritz Jeanson: htmlhelp.button.back.xml; htmlhelp.button.forward.xml; htmlhelp.button.zo⋯

    Modified refpurpose text.
    +
  • +

    Mauritz Jeanson: htmlhelp.map.file.xml; htmlhelp.force.map.and.alias.xml; htmlhelp.alias.f⋯

    Fixed typos, made some small changes.
    +
  • +

    Mauritz Jeanson: javahelp.encoding.xml

    Moved declaration and documentation of javahelp.encoding from javahelp.xsl to the
    +regular "parameter machinery".
    +
  • +

    Mauritz Jeanson: generate.id.attributes.xml

    Added refpurpose text.
    +
  • +

    Mauritz Jeanson: annotation.js.xml; annotation.graphic.open.xml; annotation.graphic.close.⋯

    Added better refpurpose texts.
    +
  • +

    Michael(tm) Smith: chunker.output.cdata-section-elements.xml; chunker.output.standalone.xm⋯

    Fixed some broken formatting in source files for chunker.* params,
    +as pointed out by Dave Pawson.
    +
  • +

    Michael(tm) Smith: label.from.part.xml

    Changed handling of reference auto-labeling such that reference
    +(when it appears at the component level) is now affected by the
    +label.from.part param, just as preface, chapter, and appendix.
    +
  • +

    Mauritz Jeanson: callout.graphics.extension.xml

    Clarified that 'extension' refers to file names.
    +
  • +

    Michael(tm) Smith: abstract.notitle.enabled.xml

    Added new param abstract.notitle.enabled.
    +If non-zero, in output of the abstract element on titlepages,
    +display of the abstract title is suppressed.
    +Because sometimes you really don't want or need that title
    +there...
    +
  • +

    Michael(tm) Smith: man.string.subst.map.xml

    Updated manpages string-substitute map to reflect fact that
    +because of another recent change to suppress bold markup in .SH
    +output, we no longer need to add a workaround for the accidental
    +uppercasing of roff escapes that occurred previously.
    +
  • +

    Jirka Kosek: margin.note.float.type.xml; title.font.family.xml; table.frame.border.color.x⋯

    Improved parameter metadata
    +
  • +

    Robert Stayton: profile.wordsize.xml; profile.audience.xml

    Add support for profiling on new attributes audience and wordsize.
    +
  • +

    Robert Stayton: callout.graphics.number.limit.xml; callout.graphics.extension.xml

    Added SVG graphics for fo output.
    +
  • +

    Robert Stayton: callout.icon.size.xml

    Set size of callout graphics.
    +
  • +

    Jirka Kosek: default.units.xml; chunker.output.method.xml; toc.list.type.xml; output.inden⋯

    Updated parameter metadata to the new format.
    +
  • +

    Jirka Kosek: man.output.quietly.xml; title.font.family.xml; footnote.sep.leader.properties⋯

    Added type annotations into parameter definition files.
    +
  • +

    Robert Stayton: section.container.element.xml

    Support spans in sections for certain processors.
    +
  • +

    Robert Stayton: component.titlepage.properties.xml

    Empty attribute set for top level component titlepage block.
    +Allows setting a span on title info.
    +
  • +

    Jirka Kosek: bibliography.style.xml

    Added link to WiKi page with description of special markup needed for ISO690 biblioentries
    +
  • +

    Robert Stayton: make.year.ranges.xml

    Clarify that multiple year elements are required.
    +
  • +

    Robert Stayton: id.warnings.xml

    Turn off id.warnings by default.
    +
  • +

    Jirka Kosek: bibliography.style.xml

    Added support for formatting biblioentries according to ISO690 citation style.
    +New bibliography style can be turned on by setting parameter bibliography.style to "iso690"
    +The code was provided by Jana Dvorakova
    +
  • +

    Robert Stayton: header.table.properties.xml; footer.table.properties.xml

    Support adding table properties to header and footer tables.
    +
+
+

Highlighting

+ +

The following changes have been made to the + highlighting code + since the 1.72.0 release.

+
  • +

    Jirka Kosek: c-hl.xml; xslthl-config.xml

    Added support for C language. Provided by Bruno Guegan.
    +
+
+

Profiling

+ +

The following changes have been made to the + profiling code + since the 1.72.0 release.

+
  • +

    Robert Stayton: profile-mode.xsl

    Add support for new profiling attributes audience and wordsize.
    +
+
+

Lib

+ +

The following changes have been made to the + lib code + since the 1.72.0 release.

+
  • +

    Michael(tm) Smith: lib.xweb

    Changed name of prepend-pad template to pad-string and twheeked so
    +it can do both right/left padding.
    +
+
+

Tools

+ +

The following changes have been made to the + tools code + since the 1.72.0 release.

+
  • +

    Michael(tm) Smith: bin; bin/docbook-xsl-update

    Did some cleanup to the install.sh source and added a
    +docbook-xsl-update script to the docbook-xsl distro, the purpose
    +of which is to facilitate easy sync-up to the latest docbook-xsl
    +snapshot (by means of rsync).
    +
+
+

XSL-Saxon

+ +

The following changes have been made to the + xsl-saxon code + since the 1.72.0 release.

+
  • +

    Mauritz Jeanson: xalan27/src/com/nwalsh/xalan/Verbatim.java; xalan27/src/com/nwalsh/xalan/⋯

    Added modifications so that the new callout.icon.size parameter is taken into account. This 
    +parameter is used for FO output (where SVG now is the default graphics format for callouts).
    +
  • +

    Mauritz Jeanson: saxon65/src/com/nwalsh/saxon/FormatCallout.java; xalan27/src/com/nwalsh/x⋯

    Added code for generating id attributes on callouts in HTML and FO output.
    +These patches enable cross-references to callouts placed by area coordinates.
    +It works for graphic, unicode and text callouts. 
    +Part of fix for bug #1675513 (xref to area broken).
    +
  • +

    Michael(tm) Smith: saxon65/src/com/nwalsh/saxon/Website.java; xalan27/src/com/nwalsh/xalan⋯

    Copied over Website XSL Java extensions.
    +
+
+

XSL-Xalan

+ +

The following changes have been made to the + xsl-xalan code + since the 1.72.0 release.

+
  • +

    Michael(tm) Smith: Makefile; xalan2

    Turned off xalan2.jar build. This removes DocBook XSL
    +Java extensions support for versions of Xalan prior to
    +Xalan 2.7. If you are currently using the extensions
    +with an earlier version of Xalan, you need to upgrade
    +to Xalan 2.7.
    +
  • +

    Mauritz Jeanson: xalan27/src/com/nwalsh/xalan/Verbatim.java; xalan27/src/com/nwalsh/xalan/⋯

    Added modifications so that the new callout.icon.size parameter is taken into account. This 
    +parameter is used for FO output (where SVG now is the default graphics format for callouts).
    +
  • +

    Mauritz Jeanson: saxon65/src/com/nwalsh/saxon/FormatCallout.java; xalan27/src/com/nwalsh/x⋯

    Added code for generating id attributes on callouts in HTML and FO output.
    +These patches enable cross-references to callouts placed by area coordinates.
    +It works for graphic, unicode and text callouts. 
    +Part of fix for bug #1675513 (xref to area broken).
    +
  • +

    Michael(tm) Smith: saxon65/src/com/nwalsh/saxon/Website.java; xalan27/src/com/nwalsh/xalan⋯

    Copied over Website XSL Java extensions.
    +
+
+
+ +

Release: 1.72.0

+ +

This release includes important bug fixes and adds the following +significant feature changes: +

Automatic sorting of glossary entries
+

The HTML and FO stylesheets now support automatic sorting + of glossary entries. To enable glossary sorting, set + the value of the glossary.sort parameter + to 1 (by default, it’s value is + 0). When you enable glossary sorting, + glossentry elements within a glossary, + glossdiv, or glosslist are sorted on the + glossterm, using the current language setting. If you + don’t enable glossary sorting, then the order of + glossentry elements is left “as is” — that is, they + are not sorted but are instead just displayed in document + order.

+
WordML renamed to Roundtrip, OpenOffice support added
+

Stylesheets for “roundtrip” conversion between documents in + OpenOffice format (ODF) and DocBook XML have been added to the set + of stylesheets that formerly had the collective title + WordML, and that set of stylesheets has + been renamed to Roundtrip to better + reflect the actual scope and purpose of its contents.

+

So the DocBook XSL Stylesheets now support roundtrip + conversion (with certain limitations) of WordML, OpenOffice, and + Apple Pages documents to and from DocBook XML.

+
Including QandASet questions in TOCs
+

The HTML stylesheet now provides support for including + QandASet questions in the document TOC. To + enable display of questions in the document TOC, set + the value of the qanda.in.toc to + 1 (by default, it’s 0). When you + enable qanda.in.toc, then the generated + table of contents for a document will include + qandaset titles, qandadiv titles, and + question elements. The default value of zero + excludes them from the TOC. +

Note

+

The qanda.in.toc parameter does + not affect any tables of contents that may be generated + within a qandaset or + qandadiv (only in the document TOC).

+

+

+
Language identifier in man-page filenames and pathnames
+

Added new parameter man.output.lang.in.name.enabled, which controls whether + a language identifier is included in man-page filenames and + pathnames. It works like this:

+ +

If the value of man.output.lang.in.name.enabled is non-zero, + man-page files are output with a language identifier included in + their filenames or pathnames as follows:

+ +
+ +
index.page.number.properties property set
+

For FO output, use the + index.page.number.properties to control + formatting of page numbers in index output — to (for + example) to display page numbers in index output in a + different color (to indicate that they are links).

+
Crop marks in output from Antenna House XSL Formatter
+

Support has been added for generating crop marks in + print/PDF output generated using Antenna House XSL Formatter

+
More string-substitution hooks in manpages output
+

The man.string.subst.map.local.pre + and man.string.subst.map.local.post + parameters have been added to enable easier control over + custom string substitutions.

+
Moved verbatim properties to attribute-set
+

The hardcoded properties used in verbatim elements (literallayout, + programlisting, screen) were moved to the verbatim.properties + attribute-set so they can be more easily customized.

+
enhanced simple.xlink template
+

Now the simple.xlink template in inline.xsl works with + cross reference elements xref and link as well. Also, more elements + call simple.xlink, which enables DB5 xlink functionality. +

+
DocBook 5 compatibility
+

Stylesheets now consistently support DocBook 5 attributes + (such as xml:id). Also, DocBook 5 info elements are now checked + along with other *info elements, and the use of name() function + was replaced by local-name() so it also matches on DocBook 5 elements. + These changes enable reusing the stylesheets with DocBook 5 + documents with minimal fixup. +

+
HTML class attributes now handled in class.attribute mode
+

The HTML class attributes were formerly hardcoded to the + element name. Now the class attribute is generated by applying + templates in class.attribute mode so class attribute names + can be customized. The default is still the element name.

+
arabic-indic numbering enabled in autolabels
+

Numbering of chapter, sections, and pages can now use + arabic-indic numbering when number format is set to 'arabicindic' or + to ١.

+

+The following is a detailed list of changes (not +including bug fixes) that have been made since the 1.71.1 +release.

+ +

Common

+ +

The following changes have been made to the + common code + since the 1.71.1 release.

+
  • +

    Add support for arabicindic numbering to autolabel.format template.

    +
  • +

    Finish support for @xml:id everywhere @id is used.

    +
  • +

    replace name() with local-name() in most cases.

    +
  • +

    Add support for info.

    +
  • +

    Add utility template tabstyle to return the tabstyle from
    +any table element.

    +
+
+ +

FO

+ +

The following changes have been made to the + fo code + since the 1.71.1 release.

+
  • +

    Add support for sorting glossary entries

    +
  • +

    Add table.row.properties template to customize table rows.

    +
  • +

    Moved all properties to attribute-sets so can be customized more easily.

    +
  • +

    Add index.page.number.properties attribute-set to format page numbers.

    +
  • +

    xref now supports xlink:href, using simple.xlink template.

    +
  • +

    Rewrote simple.xlink, and call it with all charseq templates.

    +
  • +

    Add simple.xlink processing to term and member elements.

    +
  • +

    Add support for crop marks in Antenna House.

    +
+
+ +

HTML

+ +

The following changes have been made to the + html code + since the 1.71.1 release.

+
  • +

    Add support for sorting glossary entries

    +
  • +

    Add support for qanda.in.toc to add qandaentry questions to document TOC.

    +
  • +

    add simple.xlink support to variablelist term and simplelist member.

    +
  • +

    *.propagates.style now handled in class.attribute mode.

    +
  • +

    add class parameter to class.attribute mode to set default class.

    +
  • +

    Convert all class attributes to use the class.attribute mode
    +so class names can be customized more easily.

    +
  • +

    Add class.attribute mode to generate class attributes.

    +
  • +

    Added simple.xlink to most remaining inlines.
    +Changed class attributes to applying class.attributes mode.

    +
  • +

    Changed xref template to use simple.xlink tempalte.

    +
  • +

    Improve generate.html.title to work with link targets too.

    +
  • +

    Improved simple.xlink to support link and xref.

    +
  • +

    Use new link.title.attribute now.

    +
  • +

    Rewrote simple.xlink to handle linkend also.
    +Better computation of title attribute on link too.

    +
  • +

    Handle Xalan quirk as special case.

    +
  • +

    Add support for info.

    +
  • +

    Fixed imagemaps so they work properly going from calspair coords
    +to HTML area coords.

    +
+
+ +

Manpages

+ +

The following changes have been made to the + manpages code + since the 1.71.1 release.

+
  • +

    Added doc for man.output.lang.in.name.enabled parameter. This
    +checkin completes support for writing file/pathnames for man-pages
    +with $lang include in the names. Closes #1585967. knightly
    +accolades to Daniel Leidert for providing the feature request.

    +
  • +

    Added new param man.output.lang.in.name.enabled, which
    +controls whether $LANG value is included in manpages
    +filenames and pathnames. It works like this:
    +
    +If the value of man.output.lang.in.name.enabled is non-zero,
    +man-page files are output with the $lang value included in
    +their filenames or pathnames as follows;
    +
    +- if man.output.subdirs.enabled is non-zero, each file is
    +  output to, e.g., a /$lang/man8/foo.8 pathname
    +
    +- if man.output.subdirs.enabled is zero, each file is output
    +  with a foo.$lang.8 filename

    +
  • +

    Use "\e" instead of "\\" for backslash output, because the
    +groff docs say that's the correct thing to do; also because
    +testing (thanks, Paul Dubois) shows that "\\" doesn't always
    +work as expected; for example, "\\" within a table seems to
    +mess things up.

    +
  • +

    Added the man.string.subst.map.local.pre and
    +man.string.subst.map.local.post parameters. Those parameters
    +enable local additions and changes to string-substitution mappings
    +without the need to change the value of man.string.subst.map
    +parameter (which is for standard system mappings). Closes
    +#1456738. Thanks to Sam Steingold for constructing a true
    +stylesheet torture test (the clisp docs) that exposed the need for
    +these params.

    +
  • +

    Added the Markup element to the list of elements that get output
    +in bold. Thanks to Eric S. Raymond.

    +
  • +

    Replaced all dots in roff requests with U+2302 ("house"
    +character), and added escaping in output for all instances of dot
    +that are not in roff requests. This fixes the problem case where a
    +string beginning with a dot (for example, the string ".bashrc")
    +might occur at the beginning of a line in output, in which case 
    +would mistakenly get interpreted as a roff request. Thanks to Eric
    +S. Raymond for pushing to fix this.

    +
  • +

    Made change to ensure that list content nested in
    +itemizedlist and orderedlist instances is properly indented. This
    +is a switch from using .TP to format those lists to using .RS/.RE
    +to format them instead (because .TP does not allow nesting). Closes bug #1602616.
    +Thanks to Daniel Leidert.

    +
+
+ +

Params

+ +

The following changes have been made to the + params code + since the 1.71.1 release.

+
  • +

    Added doc for man.output.lang.in.name.enabled parameter. This
    +checkin completes support for writing file/pathnames for man-pages
    +with $lang include in the names. Closes #1585967. knightly
    +accolades to Daniel Leidert for providing the feature request.

    +
  • +

    Added new param man.output.lang.in.name.enabled, which
    +controls whether $LANG value is included in manpages
    +filenames and pathnames. It works like this:
    +
    +If the value of man.output.lang.in.name.enabled is non-zero,
    +man-page files are output with the $lang value included in
    +their filenames or pathnames as follows;
    +
    +- if man.output.subdirs.enabled is non-zero, each file is
    +  output to, e.g., a /$lang/man8/foo.8 pathname
    +
    +- if man.output.subdirs.enabled is zero, each file is output
    +  with a foo.$lang.8 filename

    +
  • +

    Added the man.string.subst.map.local.pre and
    +man.string.subst.map.local.post parameters. Those parameters
    +enable local additions and changes to string-substitution mappings
    +without the need to change the value of man.string.subst.map
    +parameter (which is for standard system mappings). Closes
    +#1456738. Thanks to Sam Steingold for constructing a true
    +stylesheet torture test (the clisp docs) that exposed the need for
    +these params.

    +
  • +

    Add index.page.number.properties by default.

    +
  • +

    Added index.page.number.properties to allow customizations of page numbers in indexes.

    +
  • +

    Move show-destination="replace" property from template to attribute-set
    +so it can be customized.

    +
  • +

    Add support for sorting glossary entries

    +
  • +

    Add option to include qanda in tables of contents.

    +
  • +

    Moved all properties to attribute-sets so can be customized more easily.

    +
+
+ +

Template

+ +

The following changes have been made to the + template code + since the 1.71.1 release.

+
  • +

    Added workaround for Xalan bug: use for-each and copy instead of copy-of (#1604770).

    +
+
+ +

Roundtrip

+ +

The following changes have been made to the + roundtrip code + since the 1.71.1 release.

+
  • +

    rename to roundtrip, add OpenOffice support

    +
+
+
+ +

Release: 1.71.1

+ +

This is a minor update to the 1.71.0 release. Along with a +number of bug fixes, it includes two feature changes: + +

  • +

    Added support for profiling based on xml:lang and status attributes.

    +
  • +

    Added initial support in manpages output for + footnote, annotation, and alt + instances. Basically, they all now get handled the same way + ulink instances are. They are treated as a class as + "note sources": A numbered marker is generated at the place in the + main text flow where they occur, then their contents are displayed + in an endnotes section at the end of the man page.

    +

+

+ +

Common

+ +

The following changes have been made to the + common code + since the 1.71.1 release.

+
  • +

    For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.

    +
  • +

    Add support for Xalan generating a root xml:base like saxon.

    +
+
+ +

FO

+ +

The following changes have been made to the + fo code + since the 1.71.1 release.

+
  • +

    For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.

    +
  • +

    Add support for Xalan to add root node xml:base for db5 docs.

    +
  • +

    Added support for profiling based on xml:lang and status attributes.

    +
+
+ +

HTML

+ +

The following changes have been made to the + html code + since the 1.71.1 release.

+
  • +

    For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.

    +
  • +

    Add support for Xalan to add root node xml:base for db5 docs.

    +
  • +

    Added support for profiling based on xml:lang and status attributes.

    +
  • +

    Made changes in namespace declarations to prevent xmllint's
    +canonicalizer from treating them as relative namespace URIs.
    +
    +  - Changed xmlns:k="java:com.isogen.saxoni18n.Saxoni18nService"
    +    to xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService";
    +    Saxon accepts either form
    +    (see http://www.saxonica.com/documentation/extensibility/functions.html);
    +    to Saxon, "the part of the URI before the final '/' is immaterial".
    +
    +  - Changed, e.g. xmlns:xverb="com.nwalsh.xalan.Verbatim" to
    +    xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim"; Xalan accepts
    +    either form
    +    (see http://xml.apache.org/xalan-j/extensions.html#java-namespace-declare);
    +    just as Saxon does, it will "simply use the string to the
    +    right of the rightmost forward slash as the Java class name".
    +
    +  - Changed xmlns:xalanredirect="org.apache.xalan.xslt.extensions.Redirect"
    +    to xmlns:redirect="http://xml.apache.org/xalan/redirect", and
    +    adjusted associated code to make the current Xalan redirect spec.
    +    (see http://xml.apache.org/xalan-j/apidocs/org/apache/xalan/lib/Redirect.html)

    +
  • +

    Added the html.append and chunk.append parameters. By default, the
    +value of both is empty; but the internal DocBook XSL stylesheets
    +build sets their value to "<xsl:text>&#x0a;</xsl:text>", in order
    +to ensure that all files in the docbook-xsl-doc package end in a
    +newline character. (Because diff and some other tools may emit
    +error messages and/or not behave as expected when processing
    +files that are not newline-terminated.)

    +
+
+ +

Highlighting

+ +

The following changes have been made to the + highlighting code + since the 1.71.1 release.

+
  • +

    Added license information

    +
+
+ +

Manpages

+ +

The following changes have been made to the + manpages code + since the 1.71.1 release.

+
  • +

    Added initial support in manpages output for footnoteannotation,
    +and alt instances. Basically, they all now get handled the same
    +way ulink instances are. They are treated as a class as "note
    +sources": A numbered marker is generated at the place in the main
    +text flow where they occur, then their contents are displayed in
    +an endnotes section at the end of the man page (currently titled
    +REFERENCES, for English output, but will be changed to NOTES).
    +
    +This support is not yet complete. It works for most "normal"
    +cases, but probably mishandles a good number of cases. More
    +testing will be needed to expose the problems. It may well also
    +introduce some bugs and regressions in other areas, including
    +basic paragraph handling, handling of "mixed block" content,
    +handling of other indented content, and handling of authorblurb
    +and personblurb in the AUTHORS section.

    +
+
+ +

Params

+ +

The following changes have been made to the + params code + since the 1.71.1 release.

+
  • +

    Added support for profiling based on xml:lang and status attributes.

    +
  • +

    Added the html.append and chunk.append parameters. By default, the
    +value of both is empty; but the internal DocBook XSL stylesheets
    +build sets their value to "<xsl:text>&#x0a;</xsl:text>", in order
    +to ensure that all files in the docbook-xsl-doc package end in a
    +newline character. (Because diff and some other tools may emit
    +error messages and/or not behave as expected when processing
    +files that are not newline-terminated.)

    +
+
+ +

Profiling

+ +

The following changes have been made to the + profiling code + since the 1.71.1 release.

+
  • +

    Added support for profiling based on xml:lang and status attributes.

    +
+
+ +
+ +

Release: 1.71.0

+ +

This is mainly a bug fix release, but it also includes two +significant feature changes: +

Highlighting support added
+

The stylesheets now include support for source-code + highlighting in output of programlisting instances (controlled + through the highlight.source + parameter). The Java-based implementation requires Saxon and + makes use of Michal Molhanec’s XSLTHL. More details are available at Jirka Kosek’s + website:

The support is currently limited to highlighting + of XML, Java, PHP, Delphi, Modula-2 sources, and INI + files.

+
Changes to autoindexing
+

The templates that handle alternative indexing methods + were reworked to avoid errors produced by certain processors not + being able to tolerate the presence of unused functions. With + this release, none of the code for the 'kimber' or 'kosek' + methods is included in the default stylesheets. In order to use + one of those methods, your customization layer must import one + of the optional stylesheet modules:

+

+

  • + html/autoidx-kosek.xsl +
  • + html/autoidx-kimber.xsl +
  • + fo/autoidx-kosek.xsl +
  • + fo/autoidx-kimber.xsl +

+ See the index.method parameter + reference page for more information. +

+

Two other changes to note: +

  • + The default indexing method now can handle accented + characters in latin-based alphabets, not just English. This + means accented latin letters will group and sort with their + unaccented counterpart. +
  • + The default value for the + index.method parameter was changed + from 'english' to 'basic' because now the default method can + handle latin-based alphabets, not just English. +

+

+

+The following is a list of changes that have +been made since the 1.70.1 release.

+ +

Common

+ +

The following changes have been made to the + common code + since the 1.70.1 release.

+
  • +

    Added reference.autolabel parameter for controlling labels on
    +reference output.

    +
  • +

    Support rows that are *completely* overlapped by the preceding row

    +
  • +

    New modules for supporting indexing extensions.

    +
  • +

    Support startinglinenumber on orderedlist

    +
+
+ +

Extensions

+ +

The following changes have been made to the + extensions code + since the 1.70.1 release.

+
  • +

    Completely reworked extensions build system; now uses NetBeans and ant

    +
+
+ +

FO

+ +

The following changes have been made to the + fo code + since the 1.70.1 release.

+
  • +

    xsl:sort lang attribute now uses two-char substring of lang attribute.

    +
  • +

    Support titlecase "Java", "Perl", and "IDL" as values for the
    +language attribute on classsynopsis, etc. (instead of just
    +lowercase "java", "perl", and "idl"). Also support "c++" and "C++"
    +(instead of just "cpp").
    +
    +Affects HTML, FO, and manpages output. Closes bug 1552332. Thanks
    +to "Brian A. Vanderburg II".

    +
  • +

    Added support for the reference.autolabel param in (X)HTML and FO
    +output.

    +
  • +

    Support rows that are *completely* overlapped by the preceding row

    +
  • +

    Rearranged templates for the 3 indexing methods
    +and changed method named 'english' to 'basic'.

    +
  • +

    New modules for supporting indexing extensions.

    +
  • +

    Turn off blank-body for fop1.extensions too since fop 0.92
    +does not support it either.

    +
  • +

    Add Xalan variant to test for exslt:node-set function.
    +Xalan can use function named node-set(), but doesn't
    +recognize it using function-available().

    +
  • +

    Added support to FO stylesheets for handling instances of Org
    +where it occurs outside of *info content. In HTML stylesheets,
    +moved handling of Org out of info.xsl and into inline.xsl. In both
    +FO and HTML stylesheets, added support for correctly processing
    +Affiliation and Jobtitle.

    +
  • +

    Don't output punctuation between Refname and Refpurpose if
    +Refpurpose is empty. Also corrected handling of Refsect2/title
    +instances, and removed some debugging stuff that was generated in
    +manpages output to mark the ends of sections.

    +
  • +

    Added new email.delimiters.enabled param. If non-zero (the
    +default), delimiters are generated around e-mail addresses (output
    +of the email element). If zero, the delimiters are suppressed.

    +
  • +

    Initial support of syntax highlighting of programlistings.

    +
  • +

    Chapter after preface should restart numbering of pages.

    +
+
+ +

HTML

+ +

The following changes have been made to the + html code + since the 1.70.1 release.

+
  • +

    xsl:sort lang attribute now uses two-char substring of lang attribute.

    +
  • +

    Support titlecase "Java", "Perl", and "IDL" as values for the
    +language attribute on classsynopsis, etc. (instead of just
    +lowercase "java", "perl", and "idl"). Also support "c++" and "C++"
    +(instead of just "cpp").
    +
    +Affects HTML, FO, and manpages output. Closes bug 1552332. Thanks
    +to "Brian A. Vanderburg II".

    +
  • +

    Added support for the reference.autolabel param in (X)HTML and FO
    +output.

    +
  • +

    Support rows that are *completely* overlapped by the preceding row

    +
  • +

    Rearranged templates for the 3 indexing methods
    +and changed method named 'english' to 'basic'.

    +
  • +

    New modules for supporting indexing extensions.

    +
  • +

    Added several new HTML parameters for controlling appearance of
    +content on HTML title pages:
    +
    +contrib.inline.enabled:
    +  If non-zero (the default), output of the contrib element is
    +  displayed as inline content rather than as block content.
    +
    +othercredit.like.author.enabled:
    +  If non-zero, output of the othercredit element on titlepages is
    +  displayed in the same style as author and editor output. If zero
    +  (the default), othercredit output is displayed using a style
    +  different than that of author and editor.
    +
    +blurb.on.titlepage.enabled:
    +  If non-zero, output from authorblurb and personblurb elements is
    +  displayed on title pages. If zero (the default), output from
    +  those elements is suppressed on title pages (unless you are
    +  using a titlepage customization that causes them to be included).
    +
    +editedby.enabled
    +  If non-zero (the default), a localized Edited by heading is
    +  displayed above editor names in output of the editor element.

    +
  • +

    Add Xalan variant to test for exslt:node-set function.
    +Xalan can use function named node-set(), but doesn't
    +recognize it using function-available().

    +
  • +

    Added support to FO stylesheets for handling instances of Org
    +where it occurs outside of *info content. In HTML stylesheets,
    +moved handling of Org out of info.xsl and into inline.xsl. In both
    +FO and HTML stylesheets, added support for correctly processing
    +Affiliation and Jobtitle.

    +
  • +

    Don't output punctuation between Refname and Refpurpose if
    +Refpurpose is empty. Also corrected handling of Refsect2/title
    +instances, and removed some debugging stuff that was generated in
    +manpages output to mark the ends of sections.

    +
  • +

    Added new email.delimiters.enabled param. If non-zero (the
    +default), delimiters are generated around e-mail addresses (output
    +of the email element). If zero, the delimiters are suppressed.

    +
  • +

    Added qanda.nested.in.toc param. Default value is zero. If
    +non-zero, instances of "nested" Qandaentry (ones that are children
    +of Answer elements) are displayed in the TOC. Closes patch 1509018
    +(from Daniel Leidert). Currently on affects HTML output (no patch
    +for FO output provided).

    +
  • +

    Improved handling of relative locations generated files

    +
  • +

    Initial support of syntax highlighting of programlistings.

    +
  • +

    Support org

    +
  • +

    Support person

    +
  • +

    Support $keep.relative.image.uris also when chunking

    +
+
+ +

Highlighting

+ +

The following changes have been made to the + highlighting code + since the 1.70.1 release.

+
  • +

    Initial support of syntax highlighting of programlistings.

    +
+
+ +

Manpages

+ +

The following changes have been made to the + manpages code + since the 1.70.1 release.

+
  • +

    Suppress footnote markers and output warning that footnotes are
    +not yet supported.

    +
  • +

    Handle instances of address/otheraddr/ulink in author et al in the
    +same way as email instances; that is, display them on the same
    +linke as the authoreditor, etc., name.

    +
  • +

    Don't number or link-list any Ulink instance whose string value is
    +identical to the value of its url attribute. Just display it inline.

    +
  • +

    Don't output punctuation between Refname and Refpurpose if
    +Refpurpose is empty. Also corrected handling of Refsect2/title
    +instances, and removed some debugging stuff that was generated in
    +manpages output to mark the ends of sections.

    +
  • +

    Added new email.delimiters.enabled param. If non-zero (the
    +default), delimiters are generated around e-mail addresses (output
    +of the email element). If zero, the delimiters are suppressed.

    +
  • +

    In manpages output, if the last/nearest *info element for
    +particular Refentry has multiple Copyright and/or Legalnotice
    +children, process them all (not just the first ones). Closes bug
    +1524576. Thanks to Sam Steingold for the report and to Daniel
    +Leidert for providing a patch.

    +
+
+ +

Params

+ +

The following changes have been made to the + params code + since the 1.70.1 release.

+
  • +

    Added reference.autolabel parameter for controlling labels on
    +reference output.

    +
  • +

    Added namespace declarations to document elements for all param files.

    +
  • +

    Updated index.method doc to describe revised setup for importing index extensions.

    +
  • +

    Added several new HTML parameters for controlling appearance of
    +content on HTML title pages:
    +
    +contrib.inline.enabled:
    +  If non-zero (the default), output of the contrib element is
    +  displayed as inline content rather than as block content.
    +
    +othercredit.like.author.enabled:
    +  If non-zero, output of the othercredit element on titlepages is
    +  displayed in the same style as author and editor output. If zero
    +  (the default), othercredit output is displayed using a style
    +  different than that of author and editor.
    +
    +blurb.on.titlepage.enabled:
    +  If non-zero, output from authorblurb and personblurb elements is
    +  displayed on title pages. If zero (the default), output from
    +  those elements is suppressed on title pages (unless you are
    +  using a titlepage customization that causes them to be included).
    +
    +editedby.enabled
    +  If non-zero (the default), a localized Edited by heading is
    +  displayed above editor names in output of the editor element.

    +
  • +

    Added new email.delimiters.enabled param. If non-zero (the
    +default), delimiters are generated around e-mail addresses (output
    +of the email element). If zero, the delimiters are suppressed.

    +
  • +

    Added qanda.nested.in.toc param. Default value is zero. If
    +non-zero, instances of "nested" Qandaentry (ones that are children
    +of Answer elements) are displayed in the TOC. Closes patch 1509018
    +(from Daniel Leidert). Currently on affects HTML output (no patch
    +for FO output provided).

    +
  • +

    Initial support of syntax highlighting of programlistings.

    +
+
+ +

Tools

+ +

The following changes have been made to the + tools code + since the 1.70.1 release.

+
  • +

    Racheted down font sizes of headings in example makefile FO output.

    +
  • +

    Added param and attribute set to example makefile, for getting
    +wrapping in verbatims in FO output.

    +
  • +

    Renamed Makefile.paramDoc to Makefile.docParam.

    +
  • +

    Added Makefile.paramDoc file, for creating versions of param.xsl
    +files with doc embedded.

    +
  • +

    Added variable to example makefile for controlling whether HTML or
    +XHTML is generated.

    +
+
+
+ +

Release: 1.70.1

+ + +

This is a stable release of the 1.70 stylesheets. It includes only a +few small changes from 1.70.0.

+ +

The following is a list of changes that have been made + since the 1.70.0 release.

+ +

FO

+ +

The following changes have been made to the + fo code + since the 1.70.0 release.

+
  • +

    Added three new attribute sets (revhistory.title.properties, revhistory.table.properties and revhistory.table.cell.properties) for controlling appearance of revhistory in FO output.

    +

    Modified: fo/block.xsl,1.34; fo/param.ent,1.101; fo/param.xweb,1.114; fo/titlepage.xsl,1.41; params/revhistory.table.cell.properties.xml,1.1; params/revhistory.table.properties.xml,1.1; params/revhistory.title.properties.xml,1.1 - Jirka Kosek

    +
  • +

    Support DBv5 revisions with full author name (not only authorinitials)

    +

    Modified: fo/block.xsl,1.33; fo/titlepage.xsl,1.40 - Jirka Kosek

    +
+
+ +

HTML

+ +

The following changes have been made to the + html code + since the 1.70.0 release.

+
  • +

    Support DBv5 revisions with full author name (not only authorinitials)

    +

    Modified: html/block.xsl,1.23; html/titlepage.xsl,1.34 - Jirka Kosek

    +
+
+ +

HTMLHelp

+ +

The following changes have been made to the + htmlhelp code + since the 1.70.0 release.

+
  • +

    htmlhelp.generate.index is now param, not variable. This means that you can override its setting from outside. This is useful when you generate indexterms on the fly (see http://www.xml.com/pub/a/2004/07/14/dbndx.html?page=3).

    +

    Modified: htmlhelp/htmlhelp-common.xsl,1.38 - Jirka Kosek

    +
  • +

    Support chunk.tocs.and.lots in HTML Help

    +

    Modified: htmlhelp/htmlhelp-common.xsl,1.37 - Jirka Kosek

    +
+
+ +

Params

+ +

The following changes have been made to the + params code + since the 1.70.0 release.

+
  • +

    Added three new attribute sets (revhistory.title.properties, revhistory.table.properties and revhistory.table.cell.properties) for controlling appearance of revhistory in FO output.

    +

    Modified: fo/block.xsl,1.34; fo/param.ent,1.101; fo/param.xweb,1.114; fo/titlepage.xsl,1.41; params/revhistory.table.cell.properties.xml,1.1; params/revhistory.table.properties.xml,1.1; params/revhistory.title.properties.xml,1.1 - Jirka Kosek

    +
+
+ +
+ +

Release: 1.70.0

+ +

As with all DocBook Project dot-zero +releases, this is an experimental release. It will be followed shortly +by a stable release.

+ +

This release adds a number of new features, +including:

+ +
  • +

    support for selecting alternative index-collation methods + (in particular, support for using a collation library developed by + Eliot Kimber)

    +
  • +

    improved handling of DocBook 5 document instances (through a + namespace-stripping mechanism)

    +
  • +

    full support for CALS and HTML tables in manpages + output

    +
  • +

    a mechanism for preserving relative URIs in documents that + make use of XInclude

    +
  • +

    support for the "new" .90 version of + FOP

    +
  • +

    enhanced capabilities for controlling formatting of lists in HTML + and FO output

    +
  • +

    autogeneration of AUTHOR and COPYRIGHT sections in manpages + output

    +
  • +

    support for generating crop marks in FO/PDF output

    +
  • +

    support for qandaset as a root element in FO output

    +
  • +

    support for floatstyle and orient on all table types

    +
  • +

    support for floatstyle in figure, and example

    +
  • +

    pgwide.properties attribute-set supports extending figure, + example and table into the left indent area instead of spanning + multiple columns.

    +
+

The following is a detailed list of enhancements and API + changes that have been made since the 1.69.1 release.

+ +

Common

+ +

The following changes have been made to the + common code + since the 1.69.1 release.

+
  • +

    Add the xsl:key for the kimber +indexing method.

    +

    Modified: common/autoidx-ng.xsl,1.2 - Robert +Stayton

    +
  • +

    Add support for +qandaset.

    +

    Modified: common/labels.xsl,1.37; +common/subtitles.xsl,1.7; common/titles.xsl,1.35 - Robert +Stayton

    +
  • +

    Support dbhtml/dbfo start PI for +orderedlist numbering in both HTML and +FO

    +

    Modified: common/common.xsl,1.61; html/lists.xsl,1.50 - Norman +Walsh

    +
  • +

    Added CVS +header.

    +

    Modified: common/stripns.xsl,1.12 - Robert +Stayton

    +
  • +

    Changed content model of text +element to ANY rather than #PCDATA because they could contain +markup.

    +

    Modified: common/targetdatabase.dtd,1.7 - Robert +Stayton

    +
  • +

    Added +refentry.meta.get.quietly param.

    +

    If zero (the +default), notes and warnings about "missing" markup are generated +during gathering of refentry metadata. If +non-zero, the metadata is gathered "quietly" -- that is, the +notes and warnings are suppressed.

    +

    NOTE: If you are +processing a large amount of refentry content, you +may be able to speed up processing significantly by setting a +non-zero value for +refentry.meta.get.quietly.

    +

    Modified: common/refentry.xsl,1.17; +manpages/param.ent,1.15; manpages/param.xweb,1.17; +params/refentry.meta.get.quietly.xml,1.1 - Michael(tm) +Smith

    +
  • +

    After namespace stripping, the +source document is the temporary tree created by the stripping +process and it has the wrong base URI for relative +references. Earlier versions of this code used to try to fix that +by patching the elements with relative @fileref attributes. That +was inadequate because it calculated an absolute base URI +without considering that there might be xml:base attributes +already in effect. It seems obvious now that the right thing to +do is simply to put the xml:base on the root of the document. And +that seems to work.

    +

    Modified: common/stripns.xsl,1.7 - Norman +Walsh

    +
  • +

    Added support for "software" and +"sectdesc" class values on refmiscinfo; "software" is +treated identically to "source", and "setdesc" is treated +identically to "manual".

    +

    Modified: common/refentry.xsl,1.10; +params/man.th.extra2.max.length.xml,1.3; +params/refentry.source.name.profile.xml,1.4 - Michael(tm) +Smith

    +
  • +

    Added support for DocBook 5 +namespace-stripping in manpages stylesheet. Closes request +#1210692.

    +

    Modified: common/common.xsl,1.56; manpages/docbook.xsl,1.57 - +Michael(tm) Smith

    +
  • +

    Added <xsl:template +match="/"> to make stripns.xsl usable as a standalone +stylesheet for stripping out DocBook 5/NG to DocBook 4. Note that +DocBook XSLT drivers that include this stylesheet all override +the match="/" template.

    +

    Modified: common/stripns.xsl,1.4 - Michael(tm) +Smith

    +
  • +

    Number figures, examples, and +tables from book if there is no prefix (i.e. if +chapter.autolabel is set to 0). This avoids +having the list of figures where the figures mysteriously restart +their numeration periodically when +chapter.autolabel is set to +0.

    +

    Modified: common/labels.xsl,1.36 - David Cramer

    +
  • +

    Add task template in +title.markup mode.

    +

    Modified: common/titles.xsl,1.34 - Robert +Stayton

    +
  • +

    Add children (with ids) of formal +objects to target data.

    +

    Modified: common/targets.xsl,1.10 - Robert +Stayton

    +
  • +

    Added support for case when +personname doesn't contain specific name markup (as allowed +in DocBook 5.0)

    +

    Modified: common/common.xsl,1.54 - Jirka +Kosek

    +
+
+ +

Extensions

+ +

The following changes have been made to the + extensions code + since the 1.69.1 release.

+
  • +

    Support Xalan +2.7

    +

    Modified: extensions/xalan27/.cvsignore,1.1; +extensions/xalan27/build.xml,1.1; +extensions/xalan27/nbproject/.cvsignore,1.1; +extensions/xalan27/nbproject/build-impl.xml,1.1; +extensions/xalan27/nbproject/genfiles.properties,1.1; +extensions/xalan27/nbproject/project.properties,1.1; +extensions/xalan27/nbproject/project.xml,1.1; +extensions/xalan27/src/com/nwalsh/xalan/CVS.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/Callout.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/FormatCallout.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/FormatDingbatCallout.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/FormatGraphicCallout.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/FormatTextCallout.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/FormatUnicodeCallout.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/Func.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/ImageIntrinsics.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/Params.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/Table.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/Text.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/Verbatim.java,1.1 - Norman +Walsh

    +
  • +

    Handle the case where the imageFn +is actually a URI. This still needs +work.

    +

    Modified: extensions/saxon643/com/nwalsh/saxon/ImageIntrinsics.java,1.4 +- Norman Walsh

    +
+
+ +

FO

+ +

The following changes have been made to the + fo code + since the 1.69.1 release.

+
  • +

    Adapted to the new indexing +code. Now works just like a wrapper that calls kosek indexing method, +originally implemented here.

    +

    Modified: fo/autoidx-ng.xsl,1.5 - Jirka +Kosek

    +
  • +

    Added parameters for header/footer +table minimum height.

    +

    Modified: fo/pagesetup.xsl,1.60; +fo/param.ent,1.100; fo/param.xweb,1.113 - Robert +Stayton

    +
  • +

    Add the index.method +parameter.

    +

    Modified: fo/param.ent,1.99; fo/param.xweb,1.112 - Robert +Stayton

    +
  • +

    Integrate support for three +indexing methods: - the original English-only method. - +Jirka Kosek's method using EXSLT extensions. - Eliot Kimber's +method using Saxon extensions. Use the 'index.method' +parameter to select.

    +

    Modified: fo/autoidx.xsl,1.38 - Robert +Stayton

    +
  • +

    Add support for TOC for +qandaset in fo output.

    +

    Modified: fo/autotoc.xsl,1.30; +fo/qandaset.xsl,1.20 - Robert Stayton

    +
  • +

    Added parameter +ulink.hyphenate.chars. Added parameter +insert.link.page.number.

    +

    Modified: fo/param.ent,1.98; +fo/param.xweb,1.111 - Robert Stayton

    +
  • +

    Implemented feature request +#942524 to add insert.link.page.number to allow link +element cross references to have a page number.

    +

    Modified: fo/xref.xsl,1.67 - +Robert Stayton

    +
  • +

    Add support for +ulink.hyphenate.chars so more characters +can be break points in urls.

    +

    Modified: fo/xref.xsl,1.66 - Robert +Stayton

    +
  • +

    Implemented patch #1075144 to make +the url text in a ulink in FO output an active link as +well.

    +

    Modified: fo/xref.xsl,1.65 - Robert Stayton

    +
  • +

    table footnotes now +have their own table.footnote.properties +attribute set.

    +

    Modified: fo/footnote.xsl,1.23 - Robert +Stayton

    +
  • +

    Add qandaset to +root.elements.

    +

    Modified: fo/docbook.xsl,1.41 - Robert +Stayton

    +
  • +

    Added mode="page.sequence" to make +it easier to put content into a page sequence. First used for +qandaset.

    +

    Modified: fo/component.xsl,1.37 - Robert +Stayton

    +
  • +

    Implemented feature request +#1434408 to support formatting +of biblioentry.

    +

    Modified: fo/biblio.xsl,1.35 - Robert +Stayton

    +
  • +

    Added +biblioentry.properties.

    +

    Modified: fo/param.ent,1.97; +fo/param.xweb,1.110 - Robert Stayton

    +
  • +

    Support PTC/Arbortext +bookmarks

    +

    Modified: fo/docbook.xsl,1.40; fo/ptc.xsl,1.1 - Norman +Walsh

    +
  • +

    Added +table.footnote.properties to permit +table footnotes to format differently from regular +footnotes.

    +

    Modified: fo/param.ent,1.96; fo/param.xweb,1.109 - Robert +Stayton

    +
  • +

    Refactored table +templates to unify their processing and support all options in +all types. Now table and informaltable, in +both Cals and Html markup, use the same templates where possible, +and all support pgwide, rotation, and floats. There is also a +placeholder table.container template to +support wrapping a table in a layout table, +so the XEP table title "continued" +extension can be more easily implemented.

    +

    Modified: fo/formal.xsl,1.52; +fo/htmltbl.xsl,1.9; fo/table.xsl,1.48 - Robert +Stayton

    +
  • +

    Added new attribute set +toc.line.properties for controlling appearance of lines in +ToC/LoT

    +

    Modified: fo/autotoc.xsl,1.29; fo/param.ent,1.95; +fo/param.xweb,1.108 - Jirka Kosek

    +
  • +

    Added support for float to example +and equation. Added support for pgwide to +figure, example, and equation (the latter +two via a dbfo pgwide="1" processing +instruction).

    +

    Modified: fo/formal.xsl,1.51 - Robert +Stayton

    +
  • +

    Add pgwide.properties +attribute-set.

    +

    Modified: fo/param.ent,1.94; fo/param.xweb,1.107 - Robert +Stayton

    +
  • +

    Added refclass.suppress +param.

    +

    If the value of refclass.suppress is +non-zero, then display refclass contents is suppressed +in output. Affects HTML and FO output +only.

    +

    Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90; +html/param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Improved support for +task subelements

    +

    Modified: fo/task.xsl,1.3; html/task.xsl,1.3 - +Jirka Kosek

    +
  • +

    Adjusted spacing around +K&R-formatted Funcdef and Paramdef +output such that it can more easily be discerned where one ends +and the other begins. Closes #1213264.

    +

    Modified: fo/synop.xsl,1.18 - +Michael(tm) Smith

    +
  • +

    Made handling of +paramdef/parameter in FO output consistent with that in HTML and +manpages output. Closes #1213259.

    +

    Modified: fo/synop.xsl,1.17 - Michael(tm) +Smith

    +
  • +

    Made handling of +Refnamediv consistent with formatting in HTML +and manpages output; specifically, changed so that +Refname (comma-separated list of multiple instances +found) is used (instead of Refentrytitle as +previously), then em-dash, then the Refpurpose. Closes +#1212562.

    +

    Modified: fo/refentry.xsl,1.30 - Michael(tm) +Smith

    +
  • +

    Added output of +Releaseinfo to recto titlepage ("copyright" +page) for Book in FO output. This makes it consistent +with HTML output. Closes #1327034. Thanks to Paul DuBois for +reporting.

    +

    Modified: fo/titlepage.templates.xml,1.28 - Michael(tm) +Smith

    +
  • +

    Added condition for setting +block-progression-dimension.minimum on table-row, instead of +height, when fop1.extensions is +non-zero. For an explanation of the reason for the change, +see: http://wiki.apache.org/xmlgraphics-fop/Troubleshooting/CommonLogMessages

    +

    Modified: fo/pagesetup.xsl,1.59 +- Michael(tm) Smith

    +
  • +

    Added new +refclass.suppress param for suppressing display +of Refclass in HTML and FO output. Did not add it to +manpages because manpages stylesheet is currently just silently +ignoring Refclass anyway. Closes request +#1461065. Thanks to Davor Ocelic (docelic) for +reporting.

    +

    Modified: fo/refentry.xsl,1.29; html/refentry.xsl,1.23 - +Michael(tm) Smith

    +
  • +

    Add support for keep-together PI +to informal objects.

    +

    Modified: fo/formal.xsl,1.50 - Robert +Stayton

    +
  • +

    Add support for +fop1.extensions.

    +

    Modified: fo/formal.xsl,1.49; +fo/graphics.xsl,1.44; fo/table.xsl,1.47 - Robert +Stayton

    +
  • +

    Add support for fop1 +bookmarks.

    +

    Modified: fo/docbook.xsl,1.39 - Robert +Stayton

    +
  • +

    Add fop1.extentions parameter to +add support for fop development version.

    +

    Modified: fo/param.ent,1.92; +fo/param.xweb,1.105 - Robert Stayton

    +
  • +

    Start supporting fop development +version, which will become fop version 1.

    +

    Modified: fo/fop1.xsl,1.1 - +Robert Stayton

    +
  • +

    Add template for task +in mode="xref-to".

    +

    Modified: fo/xref.xsl,1.63; html/xref.xsl,1.57 - Robert +Stayton

    +
  • +

    table footnotes now +also get footnote.properties +attribute-set.

    +

    Modified: fo/footnote.xsl,1.22 - Robert +Stayton

    +
  • +

    Added index.separator +named template to compute the separator punctuation based on +locale.

    +

    Modified: fo/autoidx.xsl,1.36 - Robert Stayton

    +
  • +

    Added support for link, +olink, and xref within OO +Classsynopsis and children. (Because DocBook NG/5 +allows it).

    +

    Modified: fo/synop.xsl,1.15; html/synop.xsl,1.19 - Michael(tm) +Smith

    +
  • +

    Support date as an +inline

    +

    Modified: fo/inline.xsl,1.43; html/inline.xsl,1.46 - Norman +Walsh

    +
  • +

    Added new parameter +keep.relative.image.uris

    +

    Modified: fo/param.ent,1.91; +fo/param.xweb,1.104; html/param.ent,1.87; html/param.xweb,1.96; +params/keep.relative.image.uris.xml,1.1 - Norman +Walsh

    +
  • +

    Map Unicode space characters +U+2000-U+200A to fo:leaders.

    +

    Modified: fo/docbook.xsl,1.38; +fo/passivetex.xsl,1.4; fo/spaces.xsl,1.1 - Jirka +Kosek

    +
  • +

    Output a real em dash for em-dash +dingbat (instead of two hypens).

    +

    Modified: fo/fo.xsl,1.7 - Michael(tm) +Smith

    +
  • +

    Support default label +width parameters for itemized and ordered lists

    +

    Modified: fo/lists.xsl,1.64; +fo/param.ent,1.90; fo/param.xweb,1.103; +params/itemizedlist.label.width.xml,1.1; +params/orderedlist.label.width.xml,1.1 - Norman +Walsh

    +
  • +

    Generate localized +title for Refsynopsisdiv if no +appropriate Title descendant found in source. Closes +#1212398. This change makes behavior for the Synopsis +title consistent with the behavior of HTML and +manpages output.

    +

    Also, added +xsl:use-attribute-sets="normal.para.spacing" to +block generated for Cmdsynopsis output. Previously, +that block had no spacing at all specified, which resulted it +being crammed up to closely to the Synopsis +head.

    +

    Modified: fo/refentry.xsl,1.28; fo/synop.xsl,1.13 - Michael(tm) +Smith

    +
  • +

    Added parameters to support +localization of index +item punctuation.

    +

    Modified: fo/autoidx.xsl,1.35 - Robert +Stayton

    +
  • +

    Added +index.number.separator, +index.range.separator, +and index.term.separator parameters to +support localization of punctuation in index +entries.

    +

    Modified: fo/param.ent,1.89; fo/param.xweb,1.102 - Robert +Stayton

    +
  • +

    Added "Cross References" +section in HTML doc (for consistency with the FO +doc). Also, moved the existing FO "Cross +References" section to follow the "Linking" +section.

    +

    Modified: fo/param.xweb,1.101; html/param.xweb,1.95 - +Michael(tm) Smith

    +
  • +

    Added ID attribues to all +Reference elements (e.g., id="tables" for the doc for +section on Table params). So pages for +all subsections of ref docs now have stable filenames instead +of arbitrary generated filenames.

    +

    Modified: fo/param.xweb,1.100; +html/param.xweb,1.94 - Michael(tm) Smith

    +
  • +

    Added two new parameters for +handling of multi-term +varlistentry elements:

    +

    variablelist.term.break.after: +When the variablelist.term.break.after is +non-zero, it will generate a line break after each +term multi-term +varlistentry.

    +

    variablelist.term.separator: +When a varlistentry contains multiple term +elements, the string specified in the value of the +variablelist.term.separator parameter is +placed after each term except the last. The default +is ", " (a comma followed by a space). To suppress rendering of +the separator, set the value of +variablelist.term.separator to the empty +string ("").

    +

    These parameters are primarily intended to be +useful if you have multi-term varlistentries that have long +terms.

    +

    Closes #1306676. Thanks to Sam Steingold for +providing an example "lots of long terms" doc that demonstrated +the value of having these options.

    +

    Also, added +normalize-space() call to processing of each +term.

    +

    This change affects all output formats +(HTML, PDF, manpages). The default behavior should pretty much +remain the same as before, but it is possible (as always) that +the change may introduce some +new bugginess.

    +

    Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; +fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86; +html/param.xweb,1.93; manpages/lists.xsl,1.22; +manpages/param.ent,1.14; manpages/param.xweb,1.16; +params/variablelist.term.break.after.xml,1.1; +params/variablelist.term.separator.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Add sidebar titlepage +placeholder attset for styles.

    +

    Modified: fo/titlepage.xsl,1.37 - Robert +Stayton

    +
  • +

    Add titlepage for +sidebar.

    +

    Modified: fo/titlepage.templates.xml,1.27 - Robert +Stayton

    +
  • +

    Implemented RFE +#1292615.

    +

    Added bunch of new parameters (attribute sets) +that affect list presentation: list.block.properties, +itemizedlist.properties, orderedlist.properties, +itemizedlist.label.properties and +orderedlist.label.properties. Default behaviour +of stylesheets has not been changed but further customizations will be +much more easier.

    +

    Modified: fo/lists.xsl,1.61; fo/param.ent,1.87; +fo/param.xweb,1.98; params/itemizedlist.label.properties.xml,1.1; +params/itemizedlist.properties.xml,1.1; +params/list.block.properties.xml,1.1; +params/orderedlist.label.properties.xml,1.1; +params/orderedlist.properties.xml,1.1 - Jirka +Kosek

    +
  • +

    Implemented RFE +#1242092.

    +

    You can enable crop marks in your document by +setting crop.marks=1 and xep.extensions=1. Appearance of crop +marks can be controlled by parameters +crop.mark.bleed (6pt), +crop.mark.offset (24pt) and +crop.mark.width (0.5pt).

    +

    Also there +is new named template called user-xep-pis. You can overwrite it in +order to produce some PIs that can control XEP as described in +http://www.renderx.com/reference.html#Output_Formats

    +

    Modified: fo/docbook.xsl,1.36; +fo/param.ent,1.86; fo/param.xweb,1.97; fo/xep.xsl,1.23; +params/crop.mark.bleed.xml,1.1; params/crop.mark.offset.xml,1.1; +params/crop.mark.width.xml,1.1; params/crop.marks.xml,1.1 - Jirka +Kosek

    +
+
+ +

HTML

+ +

The following changes have been made to the + html code + since the 1.69.1 release.

+
  • +

    implemented +index.method parameter and three +methods.

    +

    Modified: html/autoidx.xsl,1.28 - Robert +Stayton

    +
  • +

    added index.method +parameter to support 3 indexing methods.

    +

    Modified: html/param.ent,1.94; +html/param.xweb,1.103 - Robert Stayton

    +
  • +

    Implemented feature request +#1072510 as a processing instruction to permit including external +HTML content into HTML output.

    +

    Modified: html/pi.xsl,1.9 - Robert +Stayton

    +
  • +

    Added new parameter +chunk.tocs.and.lots.has.title which +controls presence of title in a separate chunk with +ToC/LoT. Disabling title can be very useful if you are +generating frameset output (well, yes those frames, but some customers +really want them ;-).

    +

    Modified: html/chunk-code.xsl,1.15; +html/param.ent,1.93; html/param.xweb,1.102; +params/chunk.tocs.and.lots.has.title.xml,1.1 - Jirka +Kosek

    +
  • +

    Support dbhtml/dbfo start PI for +orderedlist numbering in both HTML and +FO

    +

    Modified: common/common.xsl,1.61; html/lists.xsl,1.50 - Norman +Walsh

    +
  • +

    Allow ToC without +title also for set and +book.

    +

    Modified: html/autotoc.xsl,1.37; html/division.xsl,1.12 - +Jirka Kosek

    +
  • +

    Implemented floats uniformly for +figure, example, equation +and informalfigure, informalexample, and +informalequation.

    +

    Modified: html/formal.xsl,1.22 - Robert +Stayton

    +
  • +

    Added the +autotoc.label.in.hyperlink param.

    +

    If the value +of autotoc.label.in.hyperlink is non-zero, labels +are included in hyperlinked titles in the TOC. If it +is instead zero, labels are still displayed prior to the +hyperlinked titles, but are not hyperlinked along with the +titles.

    +

    Closes patch #1065868. Thanks to anatoly techtonik +for the patch.

    +

    Modified: html/autotoc.xsl,1.36; html/param.ent,1.92; +html/param.xweb,1.101; params/autotoc.label.in.hyperlink.xml,1.1 - +Michael(tm) Smith

    +
  • +

    Added two new params: +html.head.legalnotice.link.types +and html.head.legalnotice.link.multiple.

    +

    If +the value of the generate.legalnotice.link is +non-zero, then the stylesheet generates (in the head +section of the HTML source) either a single HTML +link element or, if the value of +the html.head.legalnotice.link.multiple is +non-zero, one link element for each link +type specified. Each link has the +following attributes:

    +

    - a rel attribute whose value +is derived from the value of +html.head.legalnotice.link.types

    +

    - +an href attribute whose value is set to the URL of the file +containing the legalnotice

    +

    - a title +attribute whose value is set to the title of the +corresponding legalnotice (or a title +programatically determined by the stylesheet)

    +

    For +example:

    +

    <link rel="copyright" +href="ln-id2524073.html" title="Legal Notice">

    +

    Closes +#1476450. Thanks to Sam Steingold.

    +

    Modified: html/chunk-common.xsl,1.45; +html/param.ent,1.91; html/param.xweb,1.100; +params/generate.legalnotice.link.xml,1.4; +params/html.head.legalnotice.link.multiple.xml,1.1; +params/html.head.legalnotice.link.types.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Added refclass.suppress +param.

    +

    If the value of refclass.suppress is +non-zero, then display refclass contents is suppressed +in output. Affects HTML and FO output +only.

    +

    Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90; +html/param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Improved support for +task subelements

    +

    Modified: fo/task.xsl,1.3; html/task.xsl,1.3 - +Jirka Kosek

    +
  • +

    Added new +refclass.suppress param for suppressing display +of Refclass in HTML and FO output. Did not add it to +manpages because manpages stylesheet is currently just silently +ignoring Refclass anyway. Closes request +#1461065. Thanks to Davor Ocelic (docelic) for +reporting.

    +

    Modified: fo/refentry.xsl,1.29; html/refentry.xsl,1.23 - +Michael(tm) Smith

    +
  • +

    Process alt text with +normalize-space(). Replace tab indents with +spaces.

    +

    Modified: html/graphics.xsl,1.57 - Robert +Stayton

    +
  • +

    Content of citation +element is automatically linked to the bibliographic entry +with the corresponding abbrev.

    +

    Modified: html/biblio.xsl,1.26; +html/inline.xsl,1.47; html/xref.xsl,1.58 - Jirka +Kosek

    +
  • +

    Add template for task +in mode="xref-to".

    +

    Modified: fo/xref.xsl,1.63; html/xref.xsl,1.57 - Robert +Stayton

    +
  • +

    Suppress ID warnings if the +.warnings parameter is 0

    +

    Modified: html/html.xsl,1.17 - Norman +Walsh

    +
  • +

    Add support for floatstyle to +figure.

    +

    Modified: html/formal.xsl,1.21 - Robert +Stayton

    +
  • +

    Handling of xref to +area/areaset need support in extensions code also. I currently have no +time to touch extensions code, so code is here to be enabled when +extension is fixed also.

    +

    Modified: html/xref.xsl,1.56 - Jirka +Kosek

    +
  • +

    Added 3 parameters for overriding +gentext for index +punctuation.

    +

    Modified: html/param.ent,1.89; html/param.xweb,1.98 - Robert +Stayton

    +
  • +

    Added parameters to support +localization of index item punctuation. Added +index.separator named template to compute +the separator punctuation based on +locale.

    +

    Modified: html/autoidx.xsl,1.27 - Robert +Stayton

    +
  • +

    Added a <div +class="{$class}-contents"> wrapper around output of contents +of all formal objects. Also, added an optional <br +class="{class}-break"/> linebreak after all formal +objects.

    +

    WARNING: Because this change places an additional +DIV between the DIV wrapper for the equation and the +equation contents, it may break some existing CSS +stylesheets that have been created with the assumption that there +would never be an intervening DIV there.

    +

    The following is +an example of what Equation output looks like as a +result of the changes described above.

    +

    <div +class="equation"> <a name="three" +id="three"></a>

    +

    <p +class="title"><b>(1.3)</b></p>

    +

    +<div class="equation-contents"> <span +class="mathphrase">1+1=3</span> +</div> </div><br +class="equation-break">

    +

    Rationale: These changes allow +CSS control of the placement of the formal-object +title relative to the formal-object +contents. For example, using the CSS "float" property +enables the title and contents to be rendered on the +same line. Example stylesheet:

    +

    .equation +{ margin-top: 20px; margin-bottom: 20px; } +.equation-contents { float: left; }

    +

    +.equation .title { margin-top: 0; +float: right; margin-right: 200px; }

    +

    +.equation .title b { font-weight: +normal; }

    +

    .equation-break { clear: both; +}

    +

    Note that the purpose of the ".equation-break" class is +to provide a way to clear off the floats.

    +

    If you want +to instead have the equation title rendered to +the left of the equation contents, you can do +something like this:

    +

    .equation { +margin-top: 20px; width: 300px; margin-bottom: 20px; +} .equation-contents { float: right; }

    +

    +.equation .title { margin-top: 0; +float: left; margin-right: 200px; }

    +

    +.equation .title b { font-weight: +normal; }

    +

    .equation-break { clear: both; +}

    +

    Modified: html/formal.xsl,1.20 - Michael(tm) Smith

    +
  • +

    Added a chunker.output.quiet +top-level parameter so that the chunker can be made quiet by +default

    +

    Modified: html/chunker.xsl,1.26 - Norman Walsh

    +
  • +

    Added support for link, +olink, and xref within OO +Classsynopsis and children. (Because DocBook NG/5 +allows it).

    +

    Modified: fo/synop.xsl,1.15; html/synop.xsl,1.19 - Michael(tm) +Smith

    +
  • +

    New parameter: +id.warnings. If non-zero, warnings are +generated for titled objects that don't have titles. True by default; +I wonder if this will be too aggressive?

    +

    Modified: html/biblio.xsl,1.25; +html/component.xsl,1.27; html/division.xsl,1.11; html/formal.xsl,1.19; +html/glossary.xsl,1.20; html/html.xsl,1.13; html/index.xsl,1.16; +html/param.ent,1.88; html/param.xweb,1.97; html/refentry.xsl,1.22; +html/sections.xsl,1.30; params/id.warnings.xml,1.1 - Norman +Walsh

    +
  • +

    If the +keep.relative.image.uris parameter is true, +don't use the absolute URI (as calculated from xml:base) in +the img src attribute, us the value the author +specified. Note that we still have to calculate the absolute +filename for use in the image intrinsics +extension.

    +

    Modified: html/graphics.xsl,1.56 - Norman +Walsh

    +
  • +

    Support date as an +inline

    +

    Modified: fo/inline.xsl,1.43; html/inline.xsl,1.46 - Norman +Walsh

    +
  • +

    Added new parameter +keep.relative.image.uris

    +

    Modified: fo/param.ent,1.91; +fo/param.xweb,1.104; html/param.ent,1.87; html/param.xweb,1.96; +params/keep.relative.image.uris.xml,1.1 - Norman +Walsh

    +
  • +

    Added two new parameters for +handling of multi-term +varlistentry elements:

    +

    variablelist.term.break.after: +When the variablelist.term.break.after is +non-zero, it will generate a line break after each +term multi-term +varlistentry.

    +

    variablelist.term.separator: +When a varlistentry contains multiple term +elements, the string specified in the value of the +variablelist.term.separator parameter is +placed after each term except the last. The default +is ", " (a comma followed by a space). To suppress rendering of +the separator, set the value of +variablelist.term.separator to the empty +string ("").

    +

    These parameters are primarily intended to be +useful if you have multi-term varlistentries that have long +terms.

    +

    Closes #1306676. Thanks to Sam Steingold for +providing an example "lots of long terms" doc that demonstrated +the value of having these options.

    +

    Also, added +normalize-space() call to processing of each +term.

    +

    This change affects all output formats +(HTML, PDF, manpages). The default behavior should pretty much +remain the same as before, but it is possible (as always) that +the change may introduce some +new bugginess.

    +

    Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; +fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86; +html/param.xweb,1.93; manpages/lists.xsl,1.22; +manpages/param.ent,1.14; manpages/param.xweb,1.16; +params/variablelist.term.break.after.xml,1.1; +params/variablelist.term.separator.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Added "wrapper-name" param to +inline.charseq named template, enabling it to output inlines +other than just "span". Acronym and Abbrev +templates now use inline.charseq to output HTML +"acronym" and "abbr" elements (instead of +"span"). Closes #1305468. Thanks to Sam Steingold for suggesting +the change.

    +

    Modified: html/inline.xsl,1.45 - Michael(tm) +Smith

    +
+
+ +

Manpages

+ +

The following changes have been made to the + manpages code + since the 1.69.1 release.

+
  • +

    Added the following +params:

    +

    - man.indent.width (string-valued) - +man.indent.refsect (boolean) - man.indent.blurbs (boolean) +- man.indent.lists (boolean) - man.indent.verbatims +(boolean)

    +

    Note that in earlier snapshots, man.indent.width +was named man.indentation.default.value and the boolean params +had names like man.indentation.*.adjust. Also the +man.indent.blurbs param was called man.indentation.authors.adjust +(or something).

    +

    The behavior now is: If the value of a +particular man.indent.* boolean param is non-zero, the +corresponding contents (refsect*, list items, +authorblurb/personblurb, vervatims) are displayed with a left +margin indented by a width equal to the value +of man.indent.width.

    +

    Modified: params/man.indent.blurbs.xml,1.1; +manpages/docbook.xsl,1.74; manpages/info.xsl,1.20; +manpages/lists.xsl,1.30; manpages/other.xsl,1.20; +manpages/param.ent,1.22; manpages/param.xweb,1.24; +manpages/refentry.xsl,1.14; params/man.indent.lists.xml,1.1; +params/man.indent.refsect.xml,1.1; +params/man.indent.verbatims.xml,1.1; params/man.indent.width.xml,1.1 - +Michael(tm) Smith

    +
  • +

    Added +man.table.footnotes.divider param.

    +

    In each +table that contains footenotes, the string specified +by the man.table.footnotes.divider parameter is output +before the list of footnotes for the +table.

    +

    Modified: manpages/docbook.xsl,1.73; +manpages/links.xsl,1.6; manpages/param.ent,1.21; +manpages/param.xweb,1.23; params/man.table.footnotes.divider.xml,1.1 - +Michael(tm) Smith

    +
  • +

    Added the +man.output.in.separate.dir, +man.output.base.dir, +and man.output.subdirs.enabled parameters.

    +

    The +man.output.base.dir parameter specifies the +base directory into which man-page files are +output. The man.output.subdirs.enabled parameter controls whether +the files are output in subdirectories within the base +directory.

    +

    The values of the +man.output.base.dir +and man.output.subdirs.enabled parameters are used only if the +value of man.output.in.separate.dir parameter is non-zero. If the +value of man.output.in.separate.dir is zero, man-page files are +not output in a separate +directory.

    +

    Modified: manpages/docbook.xsl,1.72; manpages/param.ent,1.20; +manpages/param.xweb,1.22; params/man.output.base.dir.xml,1.1; +params/man.output.in.separate.dir.xml,1.1; +params/man.output.subdirs.enabled.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Added +man.font.table.headings and +man.font.table.title params, for +controlling font in table headings and +titles.

    +

    Modified: manpages/docbook.xsl,1.71; manpages/param.ent,1.19; +manpages/param.xweb,1.21; params/man.font.table.headings.xml,1.1; +params/man.font.table.title.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Added +man.font.funcsynopsisinfo and +man.font.funcprototype params, for specifying the roff +font (for example, BI, B, I) for funcsynopsisinfo and +funcprototype output.

    +

    Modified: manpages/block.xsl,1.19; +manpages/docbook.xsl,1.69; manpages/param.ent,1.18; +manpages/param.xweb,1.20; manpages/synop.xsl,1.29; +manpages/table.xsl,1.21; params/man.font.funcprototype.xml,1.1; +params/man.font.funcsynopsisinfo.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Added +man.segtitle.suppress param.

    +

    If the value of +man.segtitle.suppress is non-zero, then display +of segtitle contents is suppressed in +output.

    +

    Modified: manpages/docbook.xsl,1.68; manpages/param.ent,1.17; +manpages/param.xweb,1.19; params/man.segtitle.suppress.xml,1.1 - +Michael(tm) Smith

    +
  • +

    Added +man.output.manifest.enabled and +man.output.manifest.filename params.

    +

    If +man.output.manifest.enabled is non-zero, a list +of filenames for man pages generated by the stylesheet +transformation is written to the file named by +man.output.manifest.filename

    +

    Modified: manpages/docbook.xsl,1.67; +manpages/other.xsl,1.19; manpages/param.ent,1.16; +manpages/param.xweb,1.18; params/man.output.manifest.enabled.xml,1.1; +params/man.output.manifest.filename.xml,1.1; +tools/make/Makefile.DocBook,1.4 - Michael(tm) +Smith

    +
  • +

    Added +refentry.meta.get.quietly param.

    +

    If zero (the +default), notes and warnings about "missing" markup are generated +during gathering of refentry metadata. If +non-zero, the metadata is gathered "quietly" -- that is, the +notes and warnings are suppressed.

    +

    NOTE: If you are +processing a large amount of refentry content, you +may be able to speed up processing significantly by setting a +non-zero value for +refentry.meta.get.quietly.

    +

    Modified: common/refentry.xsl,1.17; +manpages/param.ent,1.15; manpages/param.xweb,1.17; +params/refentry.meta.get.quietly.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Changed names of all boolean +indentation params to man.indent.* Also discarded individual +man.indent.*.value params and switched to just using a common +man.indent.width param (3n by default).

    +

    Modified: manpages/docbook.xsl,1.66; +manpages/info.xsl,1.19; manpages/lists.xsl,1.29; +manpages/other.xsl,1.18; manpages/refentry.xsl,1.13 - Michael(tm) +Smith

    +
  • +

    Added boolean +man.output.in.separate.dir param, to control whether or not man +files are output in separate directory.

    +

    Modified: manpages/docbook.xsl,1.65; +manpages/utility.xsl,1.14 - Michael(tm) Smith

    +
  • +

    Added options for controlling +indentation of verbatim output. Controlled through the +man.indentation.verbatims.adjust +and man.indentation.verbatims.value params. Closes +#1242997

    +

    Modified: manpages/block.xsl,1.15; manpages/docbook.xsl,1.64 - +Michael(tm) Smith

    +
  • +

    Added options for controlling +indentation in lists and in *blurb output in the AUTHORS +section. Controlled through +the man.indentation.lists.adjust, +man.indentation.lists.value, man.indentation.authors.adjust, and +man.indentation.authors.value parameters. Default is 3 characters +(instead of the roff default of 8 characters). Closes +#1449369.

    +

    Also, removed the indent that was being set on +informalexample outuput. I will instead add an option +for indenting verbatims, which I think is what the +informalexample indent was intended +for originally.

    +

    Modified: manpages/block.xsl,1.14; +manpages/docbook.xsl,1.63; manpages/info.xsl,1.18; +manpages/lists.xsl,1.28 - Michael(tm) Smith

    +
  • +

    Changed line-spacing call before +synopfragment to use ".sp -1n" ("n" units specified) +instead of plain ".sp -1"

    +

    Modified: manpages/synop.xsl,1.28 - Michael(tm) +Smith

    +
  • +

    Added support for writing man +files into a specific output directory and into appropriate +subdirectories within that output directory. Controlled through +the man.base.dir parameter (similar to the +base.dir support in the HTML stylesheet) and +the man.subdirs.enabled parameter, which automatically determines +the name of an appropriate subdir (for example, man/man7, +man/man1, etc.) based on the section number/manvolnum +of the source Refentry.

    +

    Closes #1255036 and +#1170317. Thanks to Denis Bradford for the original feature +request, and to Costin Stroie for submitting a patch that was +very helpful in implementing the +support.

    +

    Modified: manpages/docbook.xsl,1.62; manpages/utility.xsl,1.13 - +Michael(tm) Smith

    +
  • +

    Refined XPath statements and +notification messages for refentry metadata +handling.

    +

    Modified: common/common.xsl,1.59; common/refentry.xsl,1.14; +manpages/docbook.xsl,1.61; manpages/other.xsl,1.17 - Michael(tm) +Smith

    +
  • +

    Added support for +copyright and legalnotice. The manpages +stylesheets now output a COPYRIGHT section, +after the AUTHORS section, if a copyright +or legalnotice is found in the source. The +section contains the copyright contents followed +by the legalnotice contents. Closes +#1450209.

    +

    Modified: manpages/docbook.xsl,1.59; manpages/info.xsl,1.17 - +Michael(tm) Smith

    +
  • +

    Drastically reworked all of the +XPath expressions used in refentry metadata gathering +-- completely removed $parentinfo and turned $info into a set of +nodes that includes the *info contents of the Refentry +plus the *info contents all all of its ancestor elements. The +basic XPath expression now used throughout is (using the example +of checking for a date):

    +

    +(($info[//date])[last()]/date)[1].

    +

    That selects the "last" +*info/date date in document order -- that is, the one +eitther on the Refentry itself or on the +closest ancestor to the Refentry.

    +

    It's +likely this change may break some things; may need to pick up +some pieces later.

    +

    Also, changed the default value for the +man.th.extra2.max.length from 40 to +30.

    +

    Modified: common/common.xsl,1.58; common/refentry.xsl,1.7; +params/man.th.extra2.max.length.xml,1.2; +params/refentry.date.profile.xml,1.2; +params/refentry.manual.profile.xml,1.2; +params/refentry.source.name.profile.xml,1.2; +params/refentry.version.profile.xml,1.2; manpages/docbook.xsl,1.58; +manpages/other.xsl,1.15 - Michael(tm) Smith

    +
  • +

    Added support for DocBook 5 +namespace-stripping in manpages stylesheet. Closes request +#1210692.

    +

    Modified: common/common.xsl,1.56; manpages/docbook.xsl,1.57 - +Michael(tm) Smith

    +
  • +

    Fixed handling of table +footnotes. With this checkin, the table support in the +manpages stylesheet is now basically feature complete. So this +change closes request #619532, "No support for tables" -- the +oldest currently open manpages feature request, submitted by Ben +Secrest (blsecres) on 2002-10-07. Congratulations to me [patting +myself on the back].

    +

    Modified: manpages/block.xsl,1.11; +manpages/docbook.xsl,1.55; manpages/table.xsl,1.15 - Michael(tm) +Smith

    +
  • +

    Added handling for +table titles. Also fixed handling of nested tables; +nest tables are now "extracted" and displayed just after their +parent tables.

    +

    Modified: manpages/docbook.xsl,1.54; manpages/table.xsl,1.14 +- Michael(tm) Smith

    +
  • +

    Added option for turning off bold +formatting in Funcsynopsis. Boldface formatting in +function synopsis is mandated in the +man(7) man page and is used almost universally in existing man +pages. Despite that, it really does look like crap to have an +entire Funcsynopsis output in bold, so I added params +for turning off the bold formatting and/or replacing it with a +different roff special font (e.g., "RI" for alternating +roman/italic instead of the default "BI" for alternating +bold/italic). The new params +are "man.funcprototype.font" and +"man.funcsynopsisinfo.font". To be documented +later.

    +

    Closes #1452247. Thanks to Joe Orton for the feature +request.

    +

    Modified: params/man.string.subst.map.xml,1.16; +manpages/block.xsl,1.10; manpages/docbook.xsl,1.51; +manpages/inline.xsl,1.16; manpages/synop.xsl,1.27 - Michael(tm) +Smith

    +
  • +

    Use AUTHORS instead of +AUTHOR if we have multiple people to attribute. Also, +fixed checking such that we generate +author section even if we don't have an +author (as long as there is at least one other +person/entity we can put in the +section). Also adjusted assembly of content for +Author metainfo field such that we now not only use +author, but try to find a "best match" if we can't +find an author name to put there.

    +

    Closes +#1233592. Thanks to Sam Steingold for the +request.

    +

    Modified: manpages/info.xsl,1.12 - Michael(tm) +Smith

    +
  • +

    Changes for request #1243027, +"Impove handling of AUTHOR section." This +adds support for Collab, Corpauthor, Corpcredt, +Orgname, Publishername, and +Publisher. Also adds support for output +of Affiliation and its children, and support for using +gentext strings for auto-attributing roles (Author, +Editor, Publisher, Translator, etc.). Also +did a lot of code cleanup and modularization of all the +AUTHOR handling code. And fixed a bug that was causing +Author info to not be picked up correctly +for metainfo comment we embed in man-page +source.

    +

    Modified: manpages/info.xsl,1.11 - Michael(tm) +Smith

    +
  • +

    Support bold output for +"emphasis remap='B'". (because Eric Raymond's +doclifter(1) tool converts groff source marked up with ".B" +request or "\fB" escapes to DocBook "emphasis +remap='B'".)

    +

    Modified: manpages/inline.xsl,1.14 - Michael(tm) +Smith

    +
  • +

    Added support for +Segmentedlist. Details: Output is tabular, with no +option for "list" type output. Output for Segtitle +elements can be supressed by +setting man.segtitle.suppress. If Segtitle +content is output, it is rendered in italic type (not bold +because not all terminals support bold and so italic ensures the +stand out on those terminals). Extra space (.sp line) at end of +table code ensures that it gets handled correctly in +the case where its source is the child of a Para. +Closes feature-request #1400097. Thanks to Daniel Leidert for the +patch and push, and to Alastair Rankine for filing the original +feature request.

    +

    Modified: manpages/lists.xsl,1.23; +manpages/utility.xsl,1.10 - Michael(tm) Smith

    +
  • +

    Improved handling or +Author/Editor/Othercredit.

    +

    Reworked content of +(non-visible) comment added at top of each page (metadata +stuff).

    +

    Added support for generating a +manifest file (useful for cleaning up +after builds, etc.)

    +

    Modified: manpages/docbook.xsl,1.46; +manpages/info.xsl,1.9; manpages/other.xsl,1.12; +manpages/utility.xsl,1.6 - Michael(tm) Smith

    +
  • +

    Added two new parameters for +handling of multi-term +varlistentry elements:

    +

    variablelist.term.break.after: +When the variablelist.term.break.after is +non-zero, it will generate a line break after each +term multi-term +varlistentry.

    +

    variablelist.term.separator: +When a varlistentry contains multiple term +elements, the string specified in the value of the +variablelist.term.separator parameter is +placed after each term except the last. The default +is ", " (a comma followed by a space). To suppress rendering of +the separator, set the value of +variablelist.term.separator to the empty +string ("").

    +

    These parameters are primarily intended to be +useful if you have multi-term varlistentries that have long +terms.

    +

    Closes #1306676. Thanks to Sam Steingold for +providing an example "lots of long terms" doc that demonstrated +the value of having these options.

    +

    Also, added +normalize-space() call to processing of each +term.

    +

    This change affects all output formats +(HTML, PDF, manpages). The default behavior should pretty much +remain the same as before, but it is possible (as always) that +the change may introduce some +new bugginess.

    +

    Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; +fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86; +html/param.xweb,1.93; manpages/lists.xsl,1.22; +manpages/param.ent,1.14; manpages/param.xweb,1.16; +params/variablelist.term.break.after.xml,1.1; +params/variablelist.term.separator.xml,1.1 - Michael(tm) +Smith

    +
+
+ +

Params

+ +

The following changes have been made to the + params code + since the 1.69.1 release.

+
  • +

    New parameters to set +header/footer table minimum +height.

    +

    Modified: params/footer.table.height.xml,1.1; +params/header.table.height.xml,1.1 - Robert +Stayton

    +
  • +

    Support multiple indexing methods +for different languages.

    +

    Modified: params/index.method.xml,1.1 - Robert +Stayton

    +
  • +

    Remove qandaset and +qandadiv from generate.toc for fo +output because formerly it wasn't working, but now it is and +the default behavior should stay the +same.

    +

    Modified: params/generate.toc.xml,1.8 - Robert +Stayton

    +
  • +

    add support for page number +references to link element +too.

    +

    Modified: params/insert.link.page.number.xml,1.1 - Robert +Stayton

    +
  • +

    Add support for more characters to +hyphen on when ulink.hyphenate is turned +on.

    +

    Modified: params/ulink.hyphenate.chars.xml,1.1; +params/ulink.hyphenate.xml,1.3 - Robert Stayton

    +
  • +

    New attribute-set to format +biblioentry and +bibliomixed.

    +

    Modified: params/biblioentry.properties.xml,1.1 - +Robert Stayton

    +
  • +

    Added new parameter +chunk.tocs.and.lots.has.title which +controls presence of title in a separate chunk with +ToC/LoT. Disabling title can be very useful if you are +generating frameset output (well, yes those frames, but some customers +really want them ;-).

    +

    Modified: html/chunk-code.xsl,1.15; +html/param.ent,1.93; html/param.xweb,1.102; +params/chunk.tocs.and.lots.has.title.xml,1.1 - Jirka +Kosek

    +
  • +

    Added new attribute set +toc.line.properties for controlling appearance of lines in +ToC/LoT

    +

    Modified: params/toc.line.properties.xml,1.1 - Jirka +Kosek

    +
  • +

    Allow table footnotes +to have different properties from regular +footnotes.

    +

    Modified: params/table.footnote.properties.xml,1.1 - Robert +Stayton

    +
  • +

    Set properties for pgwide="1" +objects.

    +

    Modified: params/pgwide.properties.xml,1.1 - Robert +Stayton

    +
  • +

    Added the +autotoc.label.in.hyperlink param.

    +

    If the value +of autotoc.label.in.hyperlink is non-zero, labels +are included in hyperlinked titles in the TOC. If it +is instead zero, labels are still displayed prior to the +hyperlinked titles, but are not hyperlinked along with the +titles.

    +

    Closes patch #1065868. Thanks to anatoly techtonik +for the patch.

    +

    Modified: html/autotoc.xsl,1.36; html/param.ent,1.92; +html/param.xweb,1.101; params/autotoc.label.in.hyperlink.xml,1.1 - +Michael(tm) Smith

    +
  • +

    Added two new params: +html.head.legalnotice.link.types +and html.head.legalnotice.link.multiple.

    +

    If +the value of the generate.legalnotice.link is +non-zero, then the stylesheet generates (in the head +section of the HTML source) either a single HTML +link element or, if the value of +the html.head.legalnotice.link.multiple is +non-zero, one link element for each link +type specified. Each link has the +following attributes:

    +

    - a rel attribute whose value +is derived from the value of +html.head.legalnotice.link.types

    +

    - +an href attribute whose value is set to the URL of the file +containing the legalnotice

    +

    - a title +attribute whose value is set to the title of the +corresponding legalnotice (or a title +programatically determined by the stylesheet)

    +

    For +example:

    +

    <link rel="copyright" +href="ln-id2524073.html" title="Legal Notice">

    +

    Closes +#1476450. Thanks to Sam Steingold.

    +

    Modified: html/chunk-common.xsl,1.45; +html/param.ent,1.91; html/param.xweb,1.100; +params/generate.legalnotice.link.xml,1.4; +params/html.head.legalnotice.link.multiple.xml,1.1; +params/html.head.legalnotice.link.types.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Added the following +params:

    +

    - man.indent.width (string-valued) - +man.indent.refsect (boolean) - man.indent.blurbs (boolean) +- man.indent.lists (boolean) - man.indent.verbatims +(boolean)

    +

    Note that in earlier snapshots, man.indent.width +was named man.indentation.default.value and the boolean params +had names like man.indentation.*.adjust. Also the +man.indent.blurbs param was called man.indentation.authors.adjust +(or something).

    +

    The behavior now is: If the value of a +particular man.indent.* boolean param is non-zero, the +corresponding contents (refsect*, list items, +authorblurb/personblurb, vervatims) are displayed with a left +margin indented by a width equal to the value +of man.indent.width.

    +

    Modified: params/man.indent.blurbs.xml,1.1; +manpages/docbook.xsl,1.74; manpages/info.xsl,1.20; +manpages/lists.xsl,1.30; manpages/other.xsl,1.20; +manpages/param.ent,1.22; manpages/param.xweb,1.24; +manpages/refentry.xsl,1.14; params/man.indent.lists.xml,1.1; +params/man.indent.refsect.xml,1.1; +params/man.indent.verbatims.xml,1.1; params/man.indent.width.xml,1.1 - +Michael(tm) Smith

    +
  • +

    Added +man.table.footnotes.divider param.

    +

    In each +table that contains footenotes, the string specified +by the man.table.footnotes.divider parameter is output +before the list of footnotes for the +table.

    +

    Modified: manpages/docbook.xsl,1.73; +manpages/links.xsl,1.6; manpages/param.ent,1.21; +manpages/param.xweb,1.23; params/man.table.footnotes.divider.xml,1.1 - +Michael(tm) Smith

    +
  • +

    Added the +man.output.in.separate.dir, +man.output.base.dir, +and man.output.subdirs.enabled parameters.

    +

    The +man.output.base.dir parameter specifies the +base directory into which man-page files are +output. The man.output.subdirs.enabled parameter controls whether +the files are output in subdirectories within the base +directory.

    +

    The values of the +man.output.base.dir +and man.output.subdirs.enabled parameters are used only if the +value of man.output.in.separate.dir parameter is non-zero. If the +value of man.output.in.separate.dir is zero, man-page files are +not output in a separate +directory.

    +

    Modified: manpages/docbook.xsl,1.72; manpages/param.ent,1.20; +manpages/param.xweb,1.22; params/man.output.base.dir.xml,1.1; +params/man.output.in.separate.dir.xml,1.1; +params/man.output.subdirs.enabled.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Added +man.font.table.headings and +man.font.table.title params, for +controlling font in table headings and +titles.

    +

    Modified: manpages/docbook.xsl,1.71; manpages/param.ent,1.19; +manpages/param.xweb,1.21; params/man.font.table.headings.xml,1.1; +params/man.font.table.title.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Added +man.font.funcsynopsisinfo and +man.font.funcprototype params, for specifying the roff +font (for example, BI, B, I) for funcsynopsisinfo and +funcprototype output.

    +

    Modified: manpages/block.xsl,1.19; +manpages/docbook.xsl,1.69; manpages/param.ent,1.18; +manpages/param.xweb,1.20; manpages/synop.xsl,1.29; +manpages/table.xsl,1.21; params/man.font.funcprototype.xml,1.1; +params/man.font.funcsynopsisinfo.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Changed to select="0" in +refclass.suppress (instead of +..>0</..)

    +

    Modified: params/refclass.suppress.xml,1.3 - Michael(tm) +Smith

    +
  • +

    Added +man.segtitle.suppress param.

    +

    If the value of +man.segtitle.suppress is non-zero, then display +of segtitle contents is suppressed in +output.

    +

    Modified: manpages/docbook.xsl,1.68; manpages/param.ent,1.17; +manpages/param.xweb,1.19; params/man.segtitle.suppress.xml,1.1 - +Michael(tm) Smith

    +
  • +

    Added +man.output.manifest.enabled and +man.output.manifest.filename params.

    +

    If +man.output.manifest.enabled is non-zero, a list +of filenames for man pages generated by the stylesheet +transformation is written to the file named by +man.output.manifest.filename

    +

    Modified: manpages/docbook.xsl,1.67; +manpages/other.xsl,1.19; manpages/param.ent,1.16; +manpages/param.xweb,1.18; params/man.output.manifest.enabled.xml,1.1; +params/man.output.manifest.filename.xml,1.1; +tools/make/Makefile.DocBook,1.4 - Michael(tm) +Smith

    +
  • +

    Added refclass.suppress +param.

    +

    If the value of refclass.suppress is +non-zero, then display refclass contents is suppressed +in output. Affects HTML and FO output +only.

    +

    Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90; +html/param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Added +refentry.meta.get.quietly param.

    +

    If zero (the +default), notes and warnings about "missing" markup are generated +during gathering of refentry metadata. If +non-zero, the metadata is gathered "quietly" -- that is, the +notes and warnings are suppressed.

    +

    NOTE: If you are +processing a large amount of refentry content, you +may be able to speed up processing significantly by setting a +non-zero value for +refentry.meta.get.quietly.

    +

    Modified: common/refentry.xsl,1.17; +manpages/param.ent,1.15; manpages/param.xweb,1.17; +params/refentry.meta.get.quietly.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Added support for "software" and +"sectdesc" class values on refmiscinfo; "software" is +treated identically to "source", and "setdesc" is treated +identically to "manual".

    +

    Modified: common/refentry.xsl,1.10; +params/man.th.extra2.max.length.xml,1.3; +params/refentry.source.name.profile.xml,1.4 - Michael(tm) +Smith

    +
  • +

    Drastically reworked all of the +XPath expressions used in refentry metadata gathering +-- completely removed $parentinfo and turned $info into a set of +nodes that includes the *info contents of the Refentry +plus the *info contents all all of its ancestor elements. The +basic XPath expression now used throughout is (using the example +of checking for a date):

    +

    +(($info[//date])[last()]/date)[1].

    +

    That selects the "last" +*info/date date in document order -- that is, the one +eitther on the Refentry itself or on the +closest ancestor to the Refentry.

    +

    It's +likely this change may break some things; may need to pick up +some pieces later.

    +

    Also, changed the default value for the +man.th.extra2.max.length from 40 to +30.

    +

    Modified: common/common.xsl,1.58; common/refentry.xsl,1.7; +params/man.th.extra2.max.length.xml,1.2; +params/refentry.date.profile.xml,1.2; +params/refentry.manual.profile.xml,1.2; +params/refentry.source.name.profile.xml,1.2; +params/refentry.version.profile.xml,1.2; manpages/docbook.xsl,1.58; +manpages/other.xsl,1.15 - Michael(tm) Smith

    +
  • +

    Added option for turning off bold +formatting in Funcsynopsis. Boldface formatting in +function synopsis is mandated in the +man(7) man page and is used almost universally in existing man +pages. Despite that, it really does look like crap to have an +entire Funcsynopsis output in bold, so I added params +for turning off the bold formatting and/or replacing it with a +different roff special font (e.g., "RI" for alternating +roman/italic instead of the default "BI" for alternating +bold/italic). The new params +are "man.funcprototype.font" and +"man.funcsynopsisinfo.font". To be documented +later.

    +

    Closes #1452247. Thanks to Joe Orton for the feature +request.

    +

    Modified: params/man.string.subst.map.xml,1.16; +manpages/block.xsl,1.10; manpages/docbook.xsl,1.51; +manpages/inline.xsl,1.16; manpages/synop.xsl,1.27 - Michael(tm) +Smith

    +
  • +

    fop.extensions now only +for FOP version 0.20.5 and earlier.

    +

    Modified: params/fop.extensions.xml,1.4 +- Robert Stayton

    +
  • +

    Support for fop1 different from +fop 0.20.5 and earlier.

    +

    Modified: params/fop1.extensions.xml,1.1 - Robert +Stayton

    +
  • +

    Reset default value to empty +string so template uses gentext first, then the parameter value +if not empty.

    +

    Modified: params/index.number.separator.xml,1.2; +params/index.range.separator.xml,1.2; +params/index.term.separator.xml,1.2 - Robert +Stayton

    +
  • +

    New parameter: +id.warnings. If non-zero, warnings are +generated for titled objects that don't have titles. True by default; +I wonder if this will be too aggressive?

    +

    Modified: html/biblio.xsl,1.25; +html/component.xsl,1.27; html/division.xsl,1.11; html/formal.xsl,1.19; +html/glossary.xsl,1.20; html/html.xsl,1.13; html/index.xsl,1.16; +html/param.ent,1.88; html/param.xweb,1.97; html/refentry.xsl,1.22; +html/sections.xsl,1.30; params/id.warnings.xml,1.1 - Norman +Walsh

    +
  • +

    Added new parameter +keep.relative.image.uris

    +

    Modified: fo/param.ent,1.91; +fo/param.xweb,1.104; html/param.ent,1.87; html/param.xweb,1.96; +params/keep.relative.image.uris.xml,1.1 - Norman +Walsh

    +
  • +

    Support default label +width parameters for itemized and ordered lists

    +

    Modified: fo/lists.xsl,1.64; +fo/param.ent,1.90; fo/param.xweb,1.103; +params/itemizedlist.label.width.xml,1.1; +params/orderedlist.label.width.xml,1.1 - Norman +Walsh

    +
  • +

    Added parameters to localize +punctuation in indexes.

    +

    Modified: params/index.number.separator.xml,1.1; +params/index.range.separator.xml,1.1; +params/index.term.separator.xml,1.1 - Robert +Stayton

    +
  • +

    Added two new parameters for +handling of multi-term +varlistentry elements:

    +

    variablelist.term.break.after: +When the variablelist.term.break.after is +non-zero, it will generate a line break after each +term multi-term +varlistentry.

    +

    variablelist.term.separator: +When a varlistentry contains multiple term +elements, the string specified in the value of the +variablelist.term.separator parameter is +placed after each term except the last. The default +is ", " (a comma followed by a space). To suppress rendering of +the separator, set the value of +variablelist.term.separator to the empty +string ("").

    +

    These parameters are primarily intended to be +useful if you have multi-term varlistentries that have long +terms.

    +

    Closes #1306676. Thanks to Sam Steingold for +providing an example "lots of long terms" doc that demonstrated +the value of having these options.

    +

    Also, added +normalize-space() call to processing of each +term.

    +

    This change affects all output formats +(HTML, PDF, manpages). The default behavior should pretty much +remain the same as before, but it is possible (as always) that +the change may introduce some +new bugginess.

    +

    Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; +fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86; +html/param.xweb,1.93; manpages/lists.xsl,1.22; +manpages/param.ent,1.14; manpages/param.xweb,1.16; +params/variablelist.term.break.after.xml,1.1; +params/variablelist.term.separator.xml,1.1 - Michael(tm) +Smith

    +
  • +

    Convert 'no' to string in default +value.

    +

    Modified: params/olink.doctitle.xml,1.4 - Robert +Stayton

    +
  • +

    Implemented RFE +#1292615.

    +

    Added bunch of new parameters (attribute sets) +that affect list presentation: list.block.properties, +itemizedlist.properties, orderedlist.properties, +itemizedlist.label.properties and +orderedlist.label.properties. Default behaviour +of stylesheets has not been changed but further customizations will be +much more easier.

    +

    Modified: fo/lists.xsl,1.61; fo/param.ent,1.87; +fo/param.xweb,1.98; params/itemizedlist.label.properties.xml,1.1; +params/itemizedlist.properties.xml,1.1; +params/list.block.properties.xml,1.1; +params/orderedlist.label.properties.xml,1.1; +params/orderedlist.properties.xml,1.1 - Jirka +Kosek

    +
  • +

    Implemented RFE +#1242092.

    +

    You can enable crop marks in your document by +setting crop.marks=1 and xep.extensions=1. Appearance of crop +marks can be controlled by parameters +crop.mark.bleed (6pt), +crop.mark.offset (24pt) and +crop.mark.width (0.5pt).

    +

    Also there +is new named template called user-xep-pis. You can overwrite it in +order to produce some PIs that can control XEP as described in +http://www.renderx.com/reference.html#Output_Formats

    +

    Modified: fo/docbook.xsl,1.36; +fo/param.ent,1.86; fo/param.xweb,1.97; fo/xep.xsl,1.23; +params/crop.mark.bleed.xml,1.1; params/crop.mark.offset.xml,1.1; +params/crop.mark.width.xml,1.1; params/crop.marks.xml,1.1 - Jirka +Kosek

    +
  • +

    Changed short descriptions in doc +for *autolabel* params to match new autolabel +behavior.

    +

    Modified: params/appendix.autolabel.xml,1.5; +params/chapter.autolabel.xml,1.4; params/part.autolabel.xml,1.5; +params/preface.autolabel.xml,1.4 - Michael(tm) +Smith

    +
+
+ +

Profiling

+ +

The following changes have been made to the + profiling code + since the 1.69.1 release.

+
  • +

    Profiling now works together with +namespace stripping (V5 documents). Namespace striping should work +with all stylesheets named profile-, even if they are not supporting +namespace stripping in a non-profiling +variant.

    +

    Modified: profiling/profile-mode.xsl,1.4; +profiling/xsl2profile.xsl,1.7 - Jirka Kosek

    +
  • +

    Moved profiling stage out of +templates. This make possible to reuse profiled content by several +templates and still maintaing node indentity (needed for example for +HTML Help where content is processed multiple times).

    +

    I +don't know why this was not on the top level before. Maybe some XSLT +processors choked on it. I hope this will be OK +now.

    +

    Modified: profiling/xsl2profile.xsl,1.5 - Jirka +Kosek

    +
+
+ +

Tools

+ +

The following changes have been made to the + tools code + since the 1.69.1 release.

+
  • +

    Moved Makefile.DocBook from +contrib module to xsl +module.

    +

    Modified: tools/make/Makefile.DocBook,1.1 - Michael(tm) +Smith

    +
+
+ +

WordML

+ +

The following changes have been made to the + wordml code + since the 1.69.1 release.

+
  • +

    added contrib element, +better handling of default paragraph +style

    +

    Modified: wordml/pages-normalise.xsl,1.6; wordml/supported.xml,1.2; +wordml/wordml-final.xsl,1.14 - Steve Ball

    +
  • +

    added +bridgehead

    +

    Modified: wordml/docbook-pages.xsl,1.6; +wordml/docbook.xsl,1.17; wordml/pages-normalise.xsl,1.5; +wordml/template-pages.xml,1.7; wordml/template.dot,1.4; +wordml/template.xml,1.14; wordml/wordml-final.xsl,1.13 - Steve +Ball

    +
  • +

    added blocks stylesheet to support +bibliographies, glossaries and qandasets

    +

    Modified: wordml/Makefile,1.4; +wordml/README,1.3; wordml/blocks-spec.xml,1.1; +wordml/docbook-pages.xsl,1.5; wordml/docbook.xsl,1.16; +wordml/pages-normalise.xsl,1.4; wordml/sections-spec.xml,1.3; +wordml/specifications.xml,1.13; wordml/template-pages.xml,1.6; +wordml/template.dot,1.3; wordml/template.xml,1.13; +wordml/wordml-blocks.xsl,1.1; wordml/wordml-final.xsl,1.12; +wordml/wordml-sections.xsl,1.3 - Steve Ball

    +
  • +

    added mediaobject +caption

    +

    Modified: wordml/docbook-pages.xsl,1.4; +wordml/docbook.xsl,1.15; wordml/specifications.xml,1.12; +wordml/template-pages.xml,1.5; wordml/template.dot,1.2; +wordml/template.xml,1.12; wordml/wordml-final.xsl,1.11 - Steve +Ball

    +
  • +

    added +callouts

    +

    Modified: wordml/docbook-pages.xsl,1.3; wordml/docbook.xsl,1.14; +wordml/pages-normalise.xsl,1.3; wordml/specifications.xml,1.11; +wordml/template-pages.xml,1.4; wordml/wordml-final.xsl,1.10 - Steve +Ball

    +
  • +

    added Word template +file

    +

    Modified: wordml/template.dot,1.1 - Steve Ball

    +
  • +

    added abstract, fixed +itemizedlist, ulink

    +

    Modified: wordml/specifications.xml,1.10; +wordml/wordml-final.xsl,1.9 - Steve Ball

    +
  • +

    fixed Makefile added many +features to Pages support added revhistory, inlines, +highlights, abstract

    +

    Modified: wordml/Makefile,1.2; +wordml/docbook-pages.xsl,1.2; wordml/pages-normalise.xsl,1.2; +wordml/sections-spec.xml,1.2; wordml/specifications.xml,1.9; +wordml/template-pages.xml,1.3; wordml/template.xml,1.11; +wordml/wordml-final.xsl,1.8; wordml/wordml-sections.xsl,1.2 - Steve +Ball

    +
  • +

    fixed handling linebreaks when +generating WordML added Apple Pages +support

    +

    Modified: wordml/docbook.xsl,1.13; wordml/template-pages.xml,1.2 - +Steve Ball

    +
+
+
+ +

Release 1.69.1

+ +

This release is a minor bug-fix update to the 1.69.0 + release. Along with bug fixes, it includes one + configuration-parameter change: The default value of the + annotation.support parameter is now + 0 (off). The reason for that change is that + there have been reports that annotation handling is + causing a significant performance degradation in processing of + large documents with xsltproc.

+
+ + +

Release 1.69.0

+ +

The release includes major feature changes, + particularly in the manpages + stylesheets, as well as a large number of bug fixes.

+ +

As with all DocBook Project dot zero releases, this is an + experimental release .

+ +

Common

+ +
  • +

    This release adds localizations for the following + languages: + Albanian, Amharic, Azerbaijani, Hindi, Irish (Gaelic), Gujarati, Kannada, Mongolian, Oriya, Punjabi, Tagalog, Tamil, and Welsh.

    +
  • +

    Added support for specifying number format for auto + labels for chapter, appendix, + part, and preface. Contolled with the + appendix.autolabel, + chapter.autolabel, + part.autolabel, and + preface.autolabel parameters.

    +
  • +

    Added basic support for biblioref cross + referencing.

    +
  • +

    Added support for align + on caption in mediaobject.

    +
  • +

    Added support for processing documents that use the + DocBook V5 namespace.

    +
  • +

    Added support for termdef and + mathphrase.

    +
  • +

    EXPERIMENTAL: Incorporated the Slides and Website + stylesheets into the DocBook XSL stylesheets package. So, + for example, Website documents can now be processed using + the following URI for the driver Website + tabular.xsl file:

    http://docbook.sourceforge.net/release/xsl/current/website/tabular.xsl
    +
  • +

    A procedure without a title is + now treated as an informal procedure (meaning + that it is not added to any generated list of + procedures and has no affect on numbering of + generated labels for other procedures).

    +
  • +

    docname is no longer added to + olink when pointing to a root element.

    +
  • +

    Added support for generation of choice separator in + inline simplelist. This enables auto-generation of an + appropriate localized choice separator (for + example, and or or) before the + final item in an inline simplelist.

    +

    To indicate that you want a choice separator + generated for a particular list, you need to put a processing + instruction (PI) of the form + <?dbchoice choice="foo"?> as a + child of the list. For example: +

      <para>Choose from
    +  ONE and ONLY ONE of the following: 
    +  <simplelist type="inline">
    +  <?dbchoice choice="or" ?>
    +  <member>A</member>
    +  <member>B</member>
    +  <member>C</member>.</simplelist></para>

    + + Output (for English): +

    +

    Choose from ONE and only ONE of the + following choices: A, B, or C.

    +

    + As a temporary workaround for the fact that most of the + DocBook non-English locale files don't have a localization for + the word or, you can put in a literal string to + be used; example for French: <?dbchoice choice="ou">. That is, use + ou instead of or.

    +
+
+

FO

+ +
  • +

    Added content-type property to + external-graphic element, based on + imagedata format + attribute.

    +
  • +

    Added support for generating + <rx:meta-field creator="$VERSION"/> + field for XEP output. This makes the DocBook XSL + stylesheet version information available through the + Document Properties menu in Acrobat + Reader and other PDF viewers.

    +
  • +

    Trademark symbol handling made consistent with + handling of same in HTML stylesheets. Prior to this change, + if you processed a document that contained no value for the + class attribute on the + trademark element, the HTML stylesheets would + default to rendering a superscript TM + symbol after the trademark contents, + but the FO stylesheets would render nothing.

    +
  • +

    Added support for generating XEP bookmarks for + refentry.

    +
  • +

    Added support for HTML markup table border attribute, applied to each + table cell.

    +
  • +

    The table.width template can now + sum column specs if none use % or + *.

    +
  • +

    Added fox:destination extension + inside fox:outline to support linking to + internal destinations.

    +
  • +

    Added support for customizing + abstract with property sets. Controlled + with the abstract.properties and + abstract.title.properties + parameters.

    +
  • +

    Add footnotes in table title to + table footnote set, and add support for table footnotes to + HTML table markup.

    +
  • +

    Added support for title in + glosslist.

    +
  • +

    Added support for itemizedlist symbol + none.

    +
  • +

    Implemented the new + graphical.admonition.properties and + nongraphical.admonition.properties + attribute sets.

    +
  • +

    Added id to + formalpara and some other blocks that were + missing it.

    +
  • +

    Changed the anchor template to output + fo:inline instead of + fo:wrapper.

    +
  • +

    Added support for toc.max.depth + parameter.

    +
+
+ +

Help

+ +
  • +

    Eclipse Help: Added support for generating olink + database.

    +
+
+ +

HTML

+ +
+
+

man

+ +

This release closes out 44 manpages stylesheet bug reports + and feature requests. It adds more than 35 new configuration + parameters for controlling aspects of man-page output -- + including hyphenation and justification, handling of links, + conversion of Unicode characters, and contents of man-page + headers and footers.

+
  • +

    New options for globally disabling/enabling + hyphenation and justification: + man.justify and + man.hyphenate.

    +

    Note that the default + for the both of those is zero (off), because justified text + looks good only when it is also hyphenated; to quote the + Hyphenation node from the groff info page: +

    +

    Since the odds are not great for finding a + set of words, for every output line, which fit nicely on a + line without inserting excessive amounts of space between + words, `gtroff' hyphenates words so that it can justify + lines without inserting too much space between + words.

    +

    + The problem is that groff can end up hyphenating a lot of + things that you don't want hyphenated (variable names and + command names, for example). Keeping both justification and + hyphenation disabled ensures that hyphens won't get inserted + where you don't want to them, and you don't end up with + lines containing excessive amounts of space between + words. These default settings run counter to how most + existing man pages are formatted. But there are some notable + exceptions, such as the perl man pages.

    +
  • +

    Added parameters for controlling hyphenation of + computer inlines, filenames, and URLs. By default, even when + hyphenation is enabled (globally), hyphenation is now + suppressed for "computer inlines" (currently, just + classname, constant, envar, + errorcode, option, + replaceable, userinput, + type, and varname, and for + filenames, and for URLs from link. It + can be (re)enabled using the + man.hyphenate.computer.inlines, + man.hyphenate.filenames, and + man.hyphenate.urls parameters.

    +
  • +

    Implemented a new system for replacing Unicode + characters. There are two parts to the new system: a + string substitution map for doing + essential replacements, and a + character map that can optionally be disabled + and enabled.

    +

    The new system fixes all open bugs that had to do with + literal Unicode numbered entities such as &#8220; and + &#8221; showing up in output, and greatly expands the + ability of the stylesheets to generate good roff + equivalents for Unicode symbols and special + characters.

    +

    Here are some details...

    +

    The previous manpages mechanism for replacing Unicode + symbols and special characters with roff equivalents (the + replace-entities template) was not + scalable and not complete. The mechanism handled a somewhat + arbitrary selection of less than 20 or so Unicode + characters. But there are potentially more than + 800 Unicode special characters that + have some groff equivalent they can be mapped to. And there + are about 34 symbols in the Latin-1 (ISO-8859-1) block + alone. Users might reasonably expect that if they include + any of those Latin-1 characters in their DocBook source + documents, they will get correctly converted to known roff + equivalents in output.

    +

    In addition to those common symbols, certain users may + have a need to use symbols from other Unicode blocks. Say, + somebody who is documenting an application related to math + might need to use a bunch of symbols from the + Mathematical Operators Unicode block (there + are about 65 characters in that block that have reasonable + roff equivalents). Or somebody else might really like + Dingbats -- such as the checkmark character -- and so might + use a bunch of things from the Dingbat block + (141 characters in that that have roff equivalents or that + can at least be degraded somewhat gracefully + into roff).

    +

    So, the old replace-entities + mechanism was replaced with a completely different mechanism + that is based on use of two maps: a + substitution map and a character + map (the latter in a format compliant with the XSLT + 2.0 spec and therefore completely forward + compatible with XSLT 2.0).

    +

    The substitution map is controlled through the + man.string.subst.map parameter, and + is used to replace things like the backslash character + (which needs special handling to prevent it from being + interpreted as a roff escape). The substitution map cannot + be disabled, because disabling it will cause the output to + be broken. However, you can add to it and change it if + needed.

    + +

    The character map mechanism, on the + other hand, can be completely disabled. It is enabled by + default, and, by default, does replacement of all Latin-1 + symbols, along with most special spaces, dashes, and quotes + (about 75 characters by default). Also, you can optionally + enable a full character map that provides + support for converting all 800 or so of the characters that + have some reasonable groff equivalent.

    + +

    The character-map mechanism is controlled through the + following parameters: +

    man.charmap.enabled

    turns character-map support + on/off

    man.charmap.use.subset

    specifies that a subset of the character + map is used instead of the full map

    man.charmap.subset.profile

    specifies profile of character-map + subset

    man.charmap.uri

    specifies an alternate character map to + use instead of the standard character map + provided in the distribution

    +

    +
  • +

    Implemented out-of-line handling of display of URLs + for links (currently, only for ulink). This gives + you three choices for handling of links: +

    1. +

      Number and list links. Each link is numbered + inline, with a number in square brackets preceding the + link contents, and a numbered list of all links is added + to the end of the document.

      +
    2. +

      Only list links. Links are not numbered, but an + (unnumbered) list of links is added to the end of the + document.

      +
    3. +

      Suppress links. Don't number links and don't add + any list of links to the end of the document.

      +

    + You can also choose whether links should be underlined. The + default is the works -- list, number, and + underline links. You can use the + man.links.list.enabled, + man.links.are.numbered, and + man.links.are.underlined parameters + to change the defaults. The default heading for the link + list is REFERENCES. You can be change that using the + man.links.list.heading + parameter.

    +
  • +

    Changed default output encoding to UTF-8. This does not mean that man pages are output in + raw UTF-8, because the character map is applied + before final output, causing all UTF-8 characters covered in + the map to be converted to roff equivalents.

    +
  • +

    Added support for processing refsect3 and + formalpara and nested refsection + elements, down to any arbitrary level of nesting.

    +
  • +

    Output of the NAME and + SYNOPSIS and AUTHOR + headings and the headings for admonitions (note, + caution, etc.) are no longer hard-coded for + English. Instead, headings are generated for those in the + correct locale (just as the FO and HTML stylesheets + do).

    +
  • +

    Re-worked mechanism for assembling page + headers/footers (the contents of the .TH + macro title line).

    + +

    Here are some details...

    + +

    All man pages contain a .TH roff + macro whose contents are used for rendering the title + line displayed in the header and footer of each + page. Here are a couple of examples of real-world man pages + that have useful page headers/footers:

    +  gtk-options(7)    GTK+ User's Manual   gtk-options(7) <-- header
    +  GTK+ 1.2              2003-10-20       gtk-options(7) <-- footer
    +
    +  svgalib(7)       Svgalib User Manual       svgalib(7) <-- header
    +  Svgalib 1.4.1      16 December 1999        svgalib(7) <-- footer
    + +

    And here are the terms with which the + groff_man(7) man page refers to the + various parts of the header/footer:

    +  title(section)  extra3  title(section)  <- header
    +  extra2          extra1  title(section)  <- footer
    +

    Or, using the names with which the man(7) + man page refers to those same fields:

    +  title(section)  manual  title(section)  <- page header
    +  source          date    title(section)  <- page footer
    + +

    The easiest way to control the contents of those + fields is to mark up your refentry content like + the following (note that this is a minimal + example).

    +  <refentry>
    +    <info>
    +      <date>2003-10-20</date> 1
    +    </info>
    +    <refmeta>
    +      <refentrytitle>gtk-options</refentrytitle> 2
    +      <manvolnum>7</manvolnum> 3
    +      <refmiscinfo class="source-name">GTK+</refmiscinfo> 4
    +      <refmiscinfo class="version">1.2</refmiscinfo> 5
    +      <refmiscinfo class="manual">GTK+ User's Manual</refmiscinfo> 6
    +    </refmeta>
    +    <refnamediv>
    +      <refname>gtk-options</refname>
    +      <refpurpose>Standard Command Line Options for GTK+ Programs</refpurpose>
    +    </refnamediv>
    +    <refsect1>
    +      <title>Description</title>
    +      <para>This manual page describes the command line options, which
    +      are common to all GTK+ based applications.</para>
    +    </refsect1>
    +  </refentry>

    +

    1

    +

    Sets the date part of the header/footer.

    +

    2

    +

    Sets the title part.

    +

    3

    +

    Sets the section part.

    +

    4

    +

    Sets the source name part.

    +

    5

    +

    Sets the version part.

    +

    6

    +

    Sets the manual part.

    +

    +

    +

    Below are explanations of the steps the stylesheets + take to attempt to assemble and display + good headers and footer. [In the + descriptions, note that *info + is the refentry info child + (whatever its name), and + parentinfo is the + info child of its parent (again, whatever + its name).] +

    extra1 field (date)
    +

    Content of the extra1 field is + what shows up in the center + footer position of each page. The + man(7) man page describes it as + the date of the last revision.

    +

    To provide this content, if the + refentry.date.profile.enabled + is non-zero, the stylesheets check the value of + refentry.date.profile.

    +

    Otherwise, by default, they check for a + date or pubdate not only in the + *info contents, but also in + the parentinfo + contents.

    +

    If a date cannot be found, the stylesheets now + automatically generate a localized long + format date, ensuring that this field always + has content in output.

    +

    However, if for some reason you want to suppress + this field, you can do so by setting a non-zero value + for man.th.extra1.suppress.

    +
    extra2 field (source)
    +

    On Linux systems and on systems with a modern + groff, the content of the extra2 field + are what shows up in the left + footer position of each page.

    + +

    The man(7) man page describes + this as the source of the command, and + provides the following examples: +

    • +

      For binaries, use somwething like: GNU, + NET-2, SLS Distribution, MCC Distribution.

      +
    • +

      For system calls, use the version of the + kernel that you are currently looking at: Linux + 0.99.11.

      +
    • +

      For library calls, use the source of the + function: GNU, BSD 4.3, Linux DLL 4.4.1.

      +

    +

    + +

    In practice, there are many pages that simply + have a version number in the source + field. So, it looks like what we have is a two-part + field, + Name Version, + where: +

    Name
    +

    product name (e.g., BSD) or org. name + (e.g., GNU)

    +
    Version
    +

    version name

    +

    + Each part is optional. If the + Name is a product name, + then the Version is + probably the version of the product. Or there may be + no Name, in which case, if + there is a Version, it is + probably the version of the item itself, not the + product it is part of. Or, if the + Name is an organization + name, then there probably will be no + Version. +

    +

    To provide this content, if the + refentry.source.name.profile.enabled + and + refentry.version.profile.enabled + parameter are non-zero, the stylesheets check the + value of refentry.source.name.profile + refentry.version.profile.

    + +

    Otherwise, by default, they check the following + places, in the following order: +

    1. +
      *info/productnumber
      +
    2. +
      *info/productnumber
      +
    3. +
      refmeta/refmiscinfo[@class = 'version']
      +
    4. +
      parentinfo/productnumber
      +
    5. +
      *info/productname
      +
    6. +
      parentinfo/productname
      +
    7. +
      refmeta/refmiscinfo
      +
    8. +

      [nothing found, so leave it empty]

      +

    +

    +
    extra3 field
    +

    On Linux systems and on systems with a modern + groff, the content of the extra3 field + are what shows up in the center + header position of each page. Some man + pages have extra2 content, some + don't. If a particular man page has it, it is most + often context data about some larger + system the documented item belongs to (for example, + the name or description of a group of related + applications). The stylesheets now check the following + places, in the following order, to look for content to + add to the extra3 field.

    +
    1. +
      parentinfo/title
      +
    2. +
      parent's title
      +
    3. +
      refmeta/refmiscinfo
      +
    4. +

      [nothing found, so leave it empty]

      +
    +

    +

    +
  • +

    Reworked *info gathering. For + each refentry found, the stylesheets now cache its + *info content, then check for any + valid parent of it that might have metainfo content and cache + that, if found; they then then do all further matches against + those node-sets (rather than re-selecting the original + *info nodes each time they are + needed).

    +
  • +

    New option for breaking strings after forward + slashes. This enables long URLs and pathnames to be broken + across lines. Controlled through + man.break.after.slash parameter.

    +
  • +

    Output for servicemark and trademark are now + (SM) and (TM). There is + a groff "\(tm" escape, but output from that + is not acceptable.

    +
  • +

    New option for controlling the length of the title + part of the .TH title line. Controlled + through the man.th.title.max.length + parameter.

    +
  • +

    New option for specifying output encoding of each man + page; controlled with + man.output.encoding (similar to the + HTML chunker.output.encoding + parameter).

    +
  • +

    New option for suppressing filename messages when + generating output; controlled with + man.output.quietly (similar to the HTML + chunk.quietly parameter).

    +
  • +

    The text of cross-references to first-level + refentry (refsect1, top-level + refsection, refnamediv, and + refsynopsisdiv) are now capitalized.

    +
  • +

    Cross-references to refnamediv now use the + localized NAME title instead of using the + first refname child. This makes the output + inconsistent with HTML and FO output, but for man-page output, + it seems to make better sense to have the + NAME. (It may actually make better sense to + do it that way in HTML and FO output as well...)

    +
  • +

    Added support for processing funcparams.

    +
  • +

    Removed the space that was being output between + funcdef and paramdef; example: was: + float rand (void); now: + float rand(void)

    +
  • +

    Turned off bold formatting for the type + element when it occurs within a funcdef or + paramdef

    +
  • +

    Corrected rendering of simplelist. Any + <simplelist type="inline" instance + is now rendered as a comma-separated list (also with an + optional localized and or or before the last item -- see + description elsewhere in these release notes). Any simplelist + instance whose type is not + inline is rendered as a one-column vertical + list (ignoring the values of the type and columns attributes if present)

    +
  • +

    Comment added at top of roff source for each page now + includes DocBook XSL stylesheets version number (as in the + HTML stylesheets)

    +
  • +

    Made change to prevent sticky fonts + changes. Now, when the manpages stylesheets encounter node + sets that need to be boldfaced or italicized, they put the + \fBfoo\fR and \fIbar\fR + groff bold/italic instructions separately around each node in + the set.

    +
  • +

    synop.xsl: Boldface everything in + funcsynopsis output except parameters (which are in + ital). The man(7) man page says: +

    +

    For functions, the arguments are always specified + using italics, even in the SYNOPSIS section, where the rest + of the function is specified in bold.

    +

    + A look through the contents of the + man/man2 directory shows that most + (all) existing pages do follow this everything in + funcsynopsis bold rule. That means the + type content and any punctuation (parens, + semicolons, varargs) also must be bolded.

    +
  • +

    Removed code for adding backslashes before periods/dots + in roff source, because backslashes in front of periods/dots + in roff source are needed only in the very rare case where a + period is the very first character in a line, without any + space in front of it. A better way to deal with that rare case + is for you to add a zero-width space in front of the offending + dot(s) in your source

    +
  • +

    Removed special handling of the quote + element. That was hard-coded to cause anything marked up with + the quote element to be output preceded by two + backticks and followed by two apostrophes -- that is, that + old-school kludge for generating curly quotes in Emacs and + in X-Windows fonts. While Emacs still seems to support that, I + don't think X-Windows has for a long time now. And, anyway, it + looks (and has always looked) like crap when viewed on a + normal tty/console. In addition, it breaks localiztion of + quote. By default, quote content is + output with localized quotation marks, which, depending on the + locale, may or may not be left and right double quotation + marks.

    +
  • +

    Changed mappings for left and right single quotation + marks. Those had previously been incorrectly mapped to the + backtick (&#96;) and apostrophe (&39;) characters (for + kludgy reasons -- see above). They are now correctly mapped to + the \(oq and \(cq roff + escapes. If you want the old (broken) behavior, you need to + manually change the mappings for those in the value of the + man.string.subst.map parameter.

    +
  • +

    Removed xref.xsl file. Now, of the + various cross-reference elements, only the ulink + element is handled differently; the rest are handled exactly + as the HTML stylesheets handle them, except that no hypertext + links are generated. (Because there is no equivalent hypertext + mechanism is man pages.)

    +
  • +

    New option for making subheading dividers in generated + roff source. The dividers are not visible in the rendered man + page; they are just there to make the source + readable. Controlled using + man.subheading.divider.

    +
  • +

    Fixed many places where too much space was being added + between lines.

    +
+ +
+
+ + +

Release 1.68.1

+ +

The release adds localization support for Farsi (thanks to + Sina Heshmati) and improved support for the XLink-based DocBook NG + db:link element. Other than that, it is a minor + bug-fix update to the 1.68.0 release. The main thing it fixes is a + build error that caused the XSLT Java extensions to be jarred up + with the wrong package structure. Thanks to Jens Stavnstrup for + quickly reporting the problem, and to Mauritz Jeanson for + investigating and finding the cause.

+
+ + +

Release 1.68.0

+ +

This release includes some features changes, particularly + for FO/PDF output, and a number of bug fixes. +

FO

  • +

    Moved footnote properties to attribute-sets.

    +
  • +

    Added support for side floats, margin notes, and + custom floats.

    +
  • +

    Added new parameters + body.start.indent and + body.end.indent to the + set.flow.properties template.

    +
  • +

    Added support for xml:id

    +
  • +

    Added support for + refdescriptor.

    +
  • +

    Added support for multiple refnamedivs.

    +
  • +

    Added index.entry.properties + attribute-set to support customization of index + entries.

    +
  • +

    Added set.flow.properties + template call to each fo:flow + to support customizations entry point.

    +
  • +

    Add support for @floatstyle in + figure

    +
  • +

    Moved hardcoded properties for index division titles + to the index.div.title.properties + attribute-set.

    +
  • +

    Added support for + table-layout="auto" for XEP.

    +
  • +

    Added index.div.title.properties + attribute-set.

    +
  • +

    $verbose parameter is now + passed to most elements.

    +
  • +

    Added refentry to + toc in part, as it is + permitted by the DocBook schema/DTD.

    +
  • +

    Added backmatter elements and + article to toc in + part, since they are permitted by the + DocBook schema/DTD.

    +
  • +

    Added mode="toc" for + simplesect, since it is now permitted in + the toc if + simplesect.in.toc is set.

    +
  • +

    Moved hard-coded properties to + nongraphical.admonintion.properties + and graphical.admonition.properties + attribute sets.

    +
  • +

    Added support for sidebar-width and + float-type processing instructions in + sidebar.

    +
  • +

    For tables with HTML markup elements, added support + for dbfo bgcolor PI, the attribute-sets + named table.properties, + informaltable.properties, + table.table.properties, and + table.cell.padding. Also added + support for the templates named + table.cell.properties and + table.cell.block.properties so that + tabstyles can be implemented. Also added support for tables + containing only tr instead of + tbody with tr.

    +
  • +

    Added new paramater + hyphenate.verbatim.characters which + can specify characters after which a line break can occur in + verbatim environments. This parameter can be used to extend + the initial set of characters which contain only space and + non-breakable space.

    +
  • +

    Added itemizedlist.label.markup to enable + selection of different bullet symbol. Also added several + potential bullet characters, commented out by default.

    +
  • +

    Enabled all id's in XEP output for external olinking.

    +

+ +

HTML

+

Images

  • +

    Added new SVG admonition graphics and navigation images.

    +

+

+
+ + +

Release 1.67.2

+ +

This release fixes a table bug introduced in the 1.67.1 + release.

+
+

Release 1.67.1

+ +

This release includes a number of bug fixes.

+

The following lists provide details about API and feature changes. +

FO

  • +

    Tables: Inherited cell properties are now passed to the + table.cell.properties template so they can + be overridden by a customization.

    +
  • +

    Tables: Added support for bgcolor PI on table row + element.

    +
  • +

    TOCs: Added new parameter + simplesect.in.toc; default value of + 0 causes simplesect to be omitted from TOCs; to + cause simplesect to be included in TOCs, you + must set the value of simplesect.in.toc to + 1.Comment from Norm: + +

    +

    Simplesect elements aren't supposed to + appear in the ToC at all... The use case for simplesect + is when, for example, every chapter in a book ends with + "Exercises" or "For More Information" sections and you + don't want those to appear in the ToC.

    +

    +

    +
  • +

    Sections: Reverted change that caused a variable reference + to be used in a template match and rewrote code to preserve + intended semantics.

    +
  • +

    Lists: Added workaround to prevent "* 0.60 + 1em" garbage in + list output from PassiveTeX

    +
  • +

    Moved the literal attributes from + component.title to the + component.title.properties attribute-set so + they can be customized.

    +
  • +

    Lists: Added glossdef's first + para to special handling in + fo:list-item-body.

    +

+ +

HTML

+

HTML Help

  • +

    Added support for generating windows-1252-encoded + output using Saxon; for more details, see the list of XSL Java extensions changes for this release.

    +

+

man pages

  • +

    Replaced named/numeric character-entity references for + non-breaking space with groff equivalent (backslash-tilde).

    +

+

XSL Java extensions

  • +

    Saxon extensions: Added the + Windows1252 class. It extends Saxon + 6.5.x with the windows-1252 character set, which is + particularly useful when generating HTML Help for Western + European Languages (code from + Pontus Haglund and contributed to the + DocBook community by Sectra AB, Sweden).

    +

    To use: +

    1. +

      Make sure that the Saxon 6.5.x jar file and the jar file for + the DocBook XSL Java extensions are in your CLASSPATH

      +
    2. +

      Create a DocBook XSL customization layer -- a file named + mystylesheet.xsl or whatever -- that, at a + minimum, contains the following: +

        <xsl:stylesheet
      +    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      +    version='1.0'>
      +    <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/htmlhelp/htmlhelp.xsl"/>
      +    <xsl:output method="html" encoding="WINDOWS-1252" indent="no"/>
      +    <xsl:param name="htmlhelp.encoding" select="'WINDOWS-1252'"></xsl:param>
      +    <xsl:param name="chunker.output.encoding" select="'WINDOWS-1252'"></xsl:param>
      +    <xsl:param name="saxon.character.representation" select="'native'"></xsl:param>
      +  </xsl:stylesheet>

      +

      +

      Invoke Saxon with the + encoding.windows-1252 Java system property set + to com.nwalsh.saxon.Windows1252; for example +

        java \
      +    -Dencoding.windows-1252=com.nwalsh.saxon.Windows1252 \
      +  com.icl.saxon.StyleSheet \
      +  mydoc.xml mystylesheet.xsl

      + + Or, for a more complete "real world" case showing other + options you'll typically want to use: +

        java \
      +    -Dencoding.windows-1252=com.nwalsh.saxon.Windows1252 \
      +    -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl \
      +    -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl \
      +    -Djavax.xml.transform.TransformerFactory=com.icl.saxon.TransformerFactoryImpl \
      +  com.icl.saxon.StyleSheet \
      +    -x org.apache.xml.resolver.tools.ResolvingXMLReader \
      +    -y org.apache.xml.resolver.tools.ResolvingXMLReader \
      +    -r org.apache.xml.resolver.tools.CatalogResolver \
      +  mydoc.xml mystylesheet.xsl

      + + In both cases, the "mystylesheet.xsl" file should be a + DocBook customization layer containing the parameters + show in step 2.

      +

    +

    +
  • +

    Saxon extensions: Removed Saxon 8 extensions from release package

    +

+

+
+

Release 1.67.0

+ +
  • +

    A number of important bug fixes.

    +
  • +

    Added Saxon8 extensions

    +
  • +

    Enabled dbfo table-width on + entrytbl in FO output

    +
  • +

    Added support for role=strong on + emphasis in FO output

    +
  • +

    Added new FO parameter + hyphenate.verbatim that can be used to turn + on "intelligent" wrapping of verbatim environments.

    +
  • +

    Replaced all <tt></tt> output with + <code></code>

    +
  • +

    Changed admon.graphic.width template to a + mode so that different admonitions can have different graphical + widths.

    +
  • +

    Deprecated the HTML shade.verbatim + parameter (use CSS instead)

    +
  • +

    Wrapped ToC + refentrytitle/refname and + refpurpose in span with class values. This + makes it possible to style them using a CSS stylesheet.

    +
  • +

    Use strong/em instead of + b/i in HTML output

    +
  • +

    Added support for converting Emphasis to + groff italic and Emphasis role='bold' to + bold. Controlled by + emphasis.propagates.style param, but not + documented yet using litprog system. Will do that next (planning + to add some other parameter-controllable options for hyphenation + and handling of line spacing).

    +
  • +

    callout.graphics.number.limit.xml + param: Changed the default from 10 to + 15.

    +
  • +

    verbatim.properties: Added + hyphenate=false

    +
  • +

    Saxon and Xalan Text.java extensions: Added support for + URIResolver() on insertfile href's

    +
  • +

    Added generated RELEASE-NOTES.txt + file.

    +
  • +

    Added INSTALL file (executable file for + generating catalog.xml)

    +
  • +

    Removed obsolete tools directory from + package

    +
+
+

Release 1.66.1

+ +
  • +

    A number of important bug fixes. +

    +
  • +

    +Now xml:base attributes that are generated by an +XInclude processor are resolved for image files. +

    +
  • +

    +Rewrote olink templates to support several new features. +

    +
    +
  • +

    +Added index.on.type parameter for new type +attribute introduced in DocBook 4.3 for indexterms and index. +This allows you to create multiple indices containing +different categories of entries. +For users of 4.2 and earlier, you can use the new parameter index.on.role +instead. +

    +
  • +

    +Added new +section.autolabel.max.depth parameter to turn off section numbering +below a certain depth. +This permits you to number major section levels and leave minor +section levels unnumbered.

    +
  • +

    +Added footnote.sep.leader.properties attribute set to format +the line separating footnotes in printed output. +

    +
  • +

    +Added parameter img.src.path as a prefix to HTML img src +attributes. +The prefix is added to whatever path is already generated by the +stylesheet for each image file.

    +
  • +

    +Added new attribute-sets +informalequation.properties, +informalexample.properties, +informalfigure.properties, and informaltable.properties, +so each such element type can be formatted +individually if needed. +

    +
  • +

    +Add component.label.includes.part.label +parameter to add any part number to chapter, appendix +and other component labels when +the label.from.part parameter is nonzero. +This permits you to distinguish multiple chapters with the same +chapter number in cross references and the TOC.

    +
  • +

    +Added chunk.separate.lots parameter for HTML output. +This parameter lets you generate separate chunk files for each LOT +(list of tables, list of figures, etc.).

    +
  • +

    Added several table features:

    +
    • +

      +Added table.table.properties attribute set to add +properties to the fo:table element. +

      +
    • +

      +Added placeholder templates named table.cell.properties +and table.cell.block.properties to enable adding properties +to any fo:table-cell or the cell's fo:block, respectively. + These templates are a start for implementing table styles.

      +
    +
  • +

    +Added new attribute +set component.title.properties for easy modifications of +component's title formatting in FO output. +

    +
  • +

    +Added Saxon support for an encoding attribute on the textdata element. Added new parameter +textdata.default.encoding which specifies encoding when +encoding attribute on +textdata is missing. +

    +
  • +

    +Template label.this.section now controls whole +section label, not only sub-label which corresponds to +particular label. Former behaviour was IMHO bug as it was +not usable. +

    +
  • +

    +Formatting in titleabbrev for TOC and headers +is preserved when there are no hotlink elements in the title. Formerly the title showed only the text of the title, no font changes or other markup. +

    +
  • +

    +Added intial.page.number template to set the initial-page-number +property for page sequences in print output. +Customizing this template lets you change when page numbering restarts. This is similar to the format.page.number template that lets you change how the page number formatting changes in the output. +

    +
  • +

    +Added force.page.count template to set the force-page-count +property for page sequences in print output. +This is similar to the format.page.number template. +

    +
  • +

    +Sort language for localized index sorting in autoidx-ng.xsl is now taken from document +lang, not from system environment. +

    +
  • +

    +Numbering and formatting of normal +and ulink footnotes (if turned on) has been unified. +Now ulink footnotes are mixed in with any other footnotes.

    +
  • +

    +Added support for renderas attribute in section and +sect1 et al. +This permits you to render a given section title as if it were a different level.

    +
  • +

    +Added support for label attribute in footnote to manually +supply the footnote mark. +

    +
  • +

    +Added support for DocBook 4.3 corpcredit element. +

    +
  • +

    +Added support for a dbfo keep-together PI for +formal objects (table, figure, example, equation, programlisting). That permits a formal object to be kept together if it is not already, or to be broken if it +is very long and the +default keep-together is not appropriate. +

    +
  • +

    +For graphics files, made file extension matching case +insensitive, and updated the list of graphics extensions. +

    +
  • +

    +Allow calloutlist to have block content before +the first callout +

    +
  • +

    +Added dbfo-need processing instruction to provide +soft page breaks. +

    +
  • +

    +Added implementation of existing but unused +default.image.width parameter for graphics. +

    +
  • +

    +Support DocBook NG tag inline element. +

    +
  • +

    +It appears that XEP now supports Unicode characters in +bookmarks. There is no further need to strip accents from +characters. +

    +
  • +

    +Make segmentedlist HTML markup +more semantic and available to CSS styles. +

    +
  • +

    +Added user.preroot placeholder template to +permit xsl-stylesheet and other PIs and comments to be +output before the HTML root element. +

    +
  • +

    +Non-chunked legalnotice now gets an <a +name="id"> element in HTML output +so it can be referenced with xref or link. +

    +
  • +

    +In chunked HTML output, changed link rel="home" to rel="start", +and link rel="previous" to rel="prev", per W3C HTML 4.01 +spec. +

    +
  • +

    +Added several patches to htmlhelp from W. Borgert +

    +
  • +

    +Added Bosnian locale file as common/bs.xml. +

    +
+
+

Release 1.65.0

+ +
  • +

    A number of important bug fixes. +

    +
  • +

    Added a workaround to allow these stylesheets to process DocBook NG +documents. (It’s a hack that pre-processes the document to strip off the +namespace and then uses exsl:node-set to process +the result.) +

    +
  • +

    Added alternative indexing mechanism which has better +internationalization support. New indexing method allows grouping of +accented letters like e, é, ë into the same group under letter "e". It +can also treat special letters (e.g. "ch") as one character and place +them in the correct position (e.g. between "h" and "i" in Czech +language).

    +

    In order to use this mechanism you must create customization +layer which imports some base stylesheet (like +fo/docbook.xsl, +html/chunk.xsl) and then includes appropriate +stylesheet with new indexing code +(fo/autoidx-ng.xsl or +html/autoidx-ng.xsl). For example:

    +
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    +                version="1.0">
    +
    +<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/>
    +<xsl:include href="http://docbook.sourceforge.net/release/xsl/current/fo/autoidx-ng.xsl"/>
    +
    +</xsl:stylesheet>
    +

    New method is known to work with Saxon and it should also work +with xsltproc 1.1.1 and later. Currently supported languages are +English, Czech, German, French, Spanish and Danish.

    +
+
+

Release 1.64.1

+ +

General bug fixes and improvements. Sorry about the failure to produce +an updated release notes file for 1.62.0—1.63.2

  • +

    In the course of fixing bug #849787, wrapping Unicode callouts +with an appropriate font change in the Xalan extensions, I discovered +that the Xalan APIs have changed a bit. So xalan2.jar +will work with older Xalan 2 implementations, xalan25.jar +works with Xalan 2.5.

    +
+
+

Release 1.61.0

+ +

Lots of bug fixes and improvements.

  • +

    Initial support for timestamp PI. From now you + can use <?dbtimestamp format="Y-m-d H:M:S"?> to get current + datetime in your document. Added localization support for datetime PI +

    +
  • +

    Added level 6 to test for section depth in +section.level template so that +section.title.level6.properties will be used for sections +that are 6 deep or deeper. This should also cause a h6 to be +created in html output. +

    +
  • +

    Don't use SVG graphics if use.svg=0 +

    +
  • +

    Now uses number-and-title-template for sections + only if section.autolabel is not zero. +

    +
  • +

    Added missing 'english-language-name' attribute to +the l10n element, and the missing 'style' attribute to the +template element so the current gentext documents will +validate. +

    +
  • +

    Corrected several references to parameter + qanda.defaultlabel that were missing the "$". +

    +
  • +

    Now accepts admon.textlabel parameter to turn off + Note, Warning, etc. label. +

    +
  • +

    FeatReq #684561: support more XEP metadata +

    +
  • +

    Added hyphenation support. Added support for coref. +Added beginpage support. (does nothing; see TDG). +

    +
  • +

    Added support for +hyphenation-character, hyphenation-push-character-count, and +hyphenation-remain-character-count +

    +
  • +

    Added root.properties, +ebnf.assignment, +and ebnf.statement.terminator +

    +
  • +

    Support bgcolor PI in table cells; make sure +rowsep and colsep don't have any effect on the last row or +column +

    +
  • +

    Handle othercredit on titlepage a little +better +

    +
  • +

    Applied fix from Jeff Beal that fixed the bug +that put secondary page numbers on primary entries. Same +with tertiary page numbers on secondary entries. +

    +
  • +

    Added definition of missing variable +collection. +

    +
  • +

    Make footnote formatting 'normal' even when it +occurs in a context that has special formatting +

    +
  • +

    Added warning when glossary.collection is not +blank, but it cannot open the specified file. +

    +
  • +

    Pick up the frame attribute on table and +informaltable. +

    +
  • +

    indexdiv/title +in non-autogenerated indexes are +now picked up. +

    +
  • +

    Removed (unused) +component.title.properties +

    +
  • +

    Move IDs from +page-sequences down to titlepage blocks +

    +
  • +

    Use +proportional-column-width(1) on more tables. +

    +

    Use proportional-column-width() for +header/footer tables; suppress relative-align when when +using FOP +

    +
  • +

    Check for glossterm.auto.link when linking +firstterms; don't output gl. prefix on glossterm links +

    +
  • +

    Generate Part ToCs +

    +
  • +

    Support glossary, bibliography, +and index in component ToCs. +

    +
  • +

    Refactored chunking code so that +customization of chunk algorithm and chunk elements is more +practical +

    +
  • +

    Support textobject/phrase +on inlinemediaobject. +

    +
  • +

    Support 'start' PI on ordered lists +

    +
  • +

    Fixed test of $toc PI to turn on qandaset TOC. +

    +
  • +

    Added process.chunk.footnotes to sect2 through +5 to fix bug of missing footnotes when chunk level greater +than 1. +

    +
  • +

    Added +paramater toc.max.depth which controls maximal depth of ToC +as requested by PHP-DOC group. +

    +
  • +

    Exempted titleabbrev from preamble processing in +lists, and fixed variablelist preamble code to use the same +syntax as the other lists. +

    +
  • +

    Added support for elements between variablelist +and first varlistentry since DocBook 4.2 supports that now. +

    +
+
+

Release 1.60.1

+ +

Lots of bug fixes.

  • +

    The format of the titlepage.templates.xml files and +the stylesheet that transforms them have been significantly changed. All of the +attributes used to control the templates are now namespace qualified. So what +used to be:

    +
    <t:titlepage element="article" wrapper="fo:block">
    +

    is now:

    +
    <t:titlepage t:element="article" t:wrapper="fo:block">
    +

    Attributes from other namespaces (including those that are unqualified) are +now copied directly through. In practice, this means that the names that used +to be fo: qualified:

    +
    <title named-template="component.title"
    +       param:node="ancestor-or-self::article[1]"
    +       fo:text-align="center"
    +       fo:keep-with-next="always"
    +       fo:font-size="&hsize5;"
    +       fo:font-weight="bold"
    +       fo:font-family="{$title.font.family}"/>
    +

    are now unqualified:

    +
    <title t:named-template="component.title"
    +       param:node="ancestor-or-self::article[1]"
    +       text-align="center"
    +       keep-with-next="always"
    +       font-size="&hsize5;"
    +       font-weight="bold"
    +       font-family="{$title.font.family}"/>
    +

    The t:titlepage and t:titlepage-content +elements both generate wrappers now. And unqualified attributes on those elements +are passed through. This means that you can now make the title font apply to +ane entire titlepage and make the entire recto +titlepage centered by specifying the font and alignment on the those elements:

    +
    <t:titlepage t:element="article" t:wrapper="fo:block"
    +             font-family="{$title.font.family}">
    +
    +  <t:titlepage-content t:side="recto"
    +             text-align="center">
    + + + + + +
  • +

    Support use of titleabbrev in running +headers and footers. +

    +
  • +

    Added (experimental) xref.with.number.and.title +parameter to enable number/title cross references even when the +default would +be just the number. +

    +
  • +

    Generate part ToCs if they're requested. +

    +
  • +

    Use proportional-column-width() in header/footer tables. +

    +
  • +

    Handle alignment correctly when screenshot +wraps a graphic in a figure. +

    +
  • +

    Format chapter and appendix +cross references consistently. +

    +
  • +

    Attempt to support tables with multiple tgroups +in FO. +

    +
  • +

    Output fo:table-columns in +simplelist tables. +

    +
  • +

    Use titlepage.templates.xml for +indexdiv and glossdiv formatting. +

    +
  • +

    Improve support for new bibliography elements. +

    +
  • +

    Added +footnote.number.format, +table.footnote.number.format, +footnote.number.symbols, and +table.footnote.number.symbols for better control of +footnote markers. +

    +
  • +

    Added glossentry.show.acronyms. +

    +
  • +

    Suppress the draft-mode page masters when +draft-mode is no. +

    +
  • +

    Make blank pages verso not recto. D'Oh! +

    +
  • +

    Improved formatting of ulink footnotes. +

    +
  • +

    Fixed bugs in graphic width/height calculations. +

    +
  • +

    Added class attributes to inline elements. +

    +
  • +

    Don't add .html to the filenames identified +with the dbhtml PI. +

    +
  • +

    Don't force a ToC when sections contain refentrys. +

    +
  • +

    Make section title sizes a function of the +body.master.size. +

    +
+
+

Release 1.59.2

+ +

The 1.59.2 fixes an FO bug in the page masters that causes FOP to fail. +

  • +

    Removed the region-name from the region-body of blank pages. There's +no reason to give the body of blank pages a unique name and doing so causes +a mismatch that FOP detects. +

    +
  • +

    Output IDs for the first paragraphs in listitems. +

    +
  • +

    Fixed some small bugs in the handling of page numbers in double-sided mode. +

    +
  • +

    Attempt to prevent duplicated IDs from being produced when +endterm on xref points +to something with nested structure. +

    +
  • +

    Fix aligment problems in equations. +

    +
  • +

    Output the type attribute on unordered lists (UL) in HTML only if +the css.decoration parameter is true. +

    +
  • +

    Calculate the font size in formal.title.properties so that it's 1.2 times +the base font size, not a fixed "12pt". +

    +
+
+

Release 1.59.1

+ +

The 1.59.1 fixes a few bugs. +

  • +

    Added Bulgarian localization. +

    +
  • +

    Indexing improvements; localize book indexes to books but allow setindex +to index an entire set. +

    +
  • +

    The default value for rowsep and colsep is now "1" as per CALS. +

    +
  • +

    Added support for titleabbrev (use them for cross +references). +

    +
  • +

    Improvements to mediaobject for selecting print vs. online +images. +

    +
  • +

    Added seperate property sets for figures, +examples, equations, tabless, +and procedures. +

    +
  • +

    Make lineannotations italic. +

    +
  • +

    Support xrefstyle attribute. +

    +
  • +

    Make endterm on +xref higher priority than +xreflabel target. +

    +
  • +

    Glossary formatting improvements. +

    +
+
+

Release 1.58.0

+ +

The 1.58.0 adds some initial support for extensions in xsltproc, adds +a few features, and fixes bugs. +

  • +

    This release contains the first attempt at extension support for xsltproc. +The only extension available to date is the one that adjusts table column widths. +Run extensions/xsltproc/python/xslt.py. +

    +
  • +

    Fixed bugs in calculation of adjusted column widths to correct for rounding +errors. +

    +
  • +

    Support nested refsection elements correctly. +

    +
  • +

    Reworked gentext.template to take context into consideration. +The name of elements in localization files is now an xpath-like context list, not +just a simple name. +

    +
  • +

    Made some improvements to bibliography formatting. +

    +
  • +

    Improved graphical formatting of admonitions. +

    +
  • +

    Added support for entrytbl. +

    +
  • +

    Support spanning index terms. +

    +
  • +

    Support bibliosource. +

    +
+
+

Release 1.57.0

+ +
  • +

    The 1.57.0 release wasn't documented here. Oops. +

    +
+
+

Release 1.56.0

+ +

The 1.56.0 release fixes bugs. +

  • +

    Reworked chunking. This will break all existing customizations +layers that change the chunking algorithm. If you're customizing chunking, +look at the new content parameter that's passed to +process-chunk-element and friends. +

    +
  • +

    Support continued and inherited numeration in orderedlist +formatting for FOs. +

    +
  • +

    Added Thai localization. +

    +
  • +

    Tweaked stylesheet documentation stylesheets to link to TDG and +the parameter references. +

    +
  • +

    Allow title on tables of contents ("Table of Contents") to be optional. +Added new keyword to generate.toc. +Support tables of contents on sections. +

    +
  • +

    Made separate parameters for table borders and table cell borders: +table.frame.border.color, +table.frame.border.style, +table.frame.border.thickness, +table.cell.border.color, +table.cell.border.style, and +table.cell.border.thickness. +

    +
  • +

    Suppress formatting of endofrange indexterms. +This is only half-right. They should generate a range, but I haven't figured out how +to do that yet. +

    +
  • +

    Support revdescription. (Bug #582192) +

    +
  • +

    Added default.float.class and fixed figure +floats. (Bug #497603) +

    +
  • +

    Fixed formatting of sbr in FOs. +

    +
  • +

    Added context to the missing template error message. +

    +
  • +

    Process arg correctly in a group. +(Bug #605150) +

    +
  • +

    Removed 'keep-with-next' from formal.title.properties +attribute set now that the stylesheets support the option of putting +such titles below the object. Now the $placement value determines if +'keep-with-next' or 'keep-with-previous' is used in the title block. +

    +
  • +

    Wrap url() around external-destinations when appropriate. +

    +
  • +

    Fixed typo in compact list spacing. (Bug #615464) +

    +
  • +

    Removed spurious hash in anchor name. (Bug #617717) +

    +
  • +

    Address is now displayed verbatim on title pages. (Bug #618600) +

    +
  • +

    The bridgehead.in.toc parameter is now properly +supported. +

    +
  • +

    Improved effectiveness of HTML cleanup by increasing the number +of places where it is used. Improve use of HTML cleanup in XHTML stylesheets. +

    +
  • +

    Support table of contents for appendix in +article. (Bug #596599) +

    +
  • +

    Don't duplicate footnotes in bibliographys and +glossarys. (Bug #583282) +

    +
  • +

    Added default.image.width. (Bug #516859) +

    +
  • +

    Totally reworked funcsynopsis code; it now +supports a 'tabular' presentation style for 'wide' prototypes; see +funcsynopsis.tabular.threshold. (HTML only +right now, I think, FO support, uh, real soon now.) +

    +
  • +

    Reworked support for difference marking; toned down the colors a bit +and added a system.head.content template so that the diff CSS +wasn't overriding user.head.content. (Bug #610660) +

    +
  • +

    Added call to the *.head.content elements when writing +out long description chunks. +

    +
  • +

    Make sure legalnotice link is correct even when +chunking to a different base.dir. +

    +
  • +

    Use CSS to set viewport characteristics if +css.decoration is non-zero, use div instead of p for making +graphic a block element; make figure titles the +default alt +text for images in a figure.

    +
  • +

    Added space-after to list.block.spacing. +

    +
  • +

    Reworked section.level template to give correct answer +instead of being off by one. +

    +
  • +

    When processing tables, use the tabstyle +attribute as the division class. +

    +
  • +

    Fixed bug in html2xhtml.xsl that was causing the +XHTML chunker to output HTML instead of XHTML. +

    +
+
+

Older releases

+ +

To view the release notes for older releases, see http://cvs.sourceforge.net/viewcvs.py/docbook/xsl/RELEASE-NOTES.xml. Be + aware that there were no release notes for releases prior to the + 1.50.0 release.

+
+

About dot-zero releases

+ +

DocBook Project “dot zero” releases should be + considered experimental and are always + followed by stable “dot one plus” releases, usually within + two or three weeks. Please help to ensure the stability of + “dot one plus” releases by carefully testing each + “dot zero” release and reporting back about any + problems you find.

+

It is not recommended that you use a “dot zero” + release in a production system. Instead, you should wait for + the “dot one” or greater versions.

+
+
+ diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.txt b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.txt new file mode 100644 index 000000000..65e1d862a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.txt @@ -0,0 +1,8575 @@ +Release Notes for the DocBook XSL Stylesheets + +$Revision: 8934 $ $Date: 2010-11-01 13:03:14 -0700 (Mon, 01 Nov 2010) $ + +2010-11-01 + +This release-notes document is available in the following formats: HTML, PDF, +plain text; it provides a per-release list of enhancements and changes to the +stylesheets’ public APIs (user-configurable parameters) and excludes +descriptions of most bug fixes. For a complete list of all changes (including +all bug fixes) that have been made since the previous release, see the separate +NEWS (plain text) or NEWS.html files. Also available: An online hyperlinked +change history (warning: big file) of all changes made over the entire history +of the codebase. + +As with all DocBook Project “dot one plus†releases, this release aspires to be +stable (in contrast to dot-zero releases, which are experimental). + +â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â” + +Table of Contents + +Release Notes: 1.76.1 + + FO + HTML + Params + +Release Notes: 1.76.0 + + Gentext + Common + FO + HTML + Manpages + Epub + Eclipse + Params + XSL-Xalan + +Release Notes: 1.75.2 + + Gentext + Common + FO + HTML + Manpages + Epub + Profiling + XSL-Saxon + XSL-Xalan + +Release Notes: 1.75.1 + + FO + HTML + Epub + Params + +Release Notes: 1.75.0 + + Gentext + Common + FO + HTML + Manpages + ePub + HTMLHelp + Params + Highlighting + XSL-Saxon + XSL-Xalan + +Release Notes: 1.74.3 +Release Notes: 1.74.2 +Release Notes: 1.74.1 + + Gentext + FO + HTML + Manpages + ePub + Roundtrip + Params + Highlighting + +Release Notes: 1.74.0 + + Gentext + Common + FO + HTML + Manpages + Epub + HTMLHelp + Eclipse + JavaHelp + Roundtrip + Slides + Website + Params + Profiling + Tools + Extensions + XSL-Saxon + XSL-Xalan + XSL-libxslt + +Release Notes: 1.73.2 +Release: 1.73.1 + + Gentext + FO + HTML + Manpages + HTMLHelp + Eclipse + JavaHelp + Roundtrip + Params + +Release: 1.73.0 + + Gentext + Common + FO + HTML + Manpages + Eclipse + JavaHelp + Roundtrip + Params + Highlighting + Profiling + Lib + Tools + XSL-Saxon + XSL-Xalan + +Release: 1.72.0 + + Common + FO + HTML + Manpages + Params + Template + Roundtrip + +Release: 1.71.1 + + Common + FO + HTML + Highlighting + Manpages + Params + Profiling + +Release: 1.71.0 + + Common + Extensions + FO + HTML + Highlighting + Manpages + Params + Tools + +Release: 1.70.1 + + FO + HTML + HTMLHelp + Params + +Release: 1.70.0 + + Common + Extensions + FO + HTML + Manpages + Params + Profiling + Tools + WordML + +Release 1.69.1 +Release 1.69.0 + + Common + FO + Help + HTML + man + +Release 1.68.1 +Release 1.68.0 +Release 1.67.2 +Release 1.67.1 +Release 1.67.0 +Release 1.66.1 +Release 1.65.0 +Release 1.64.1 +Release 1.61.0 +Release 1.60.1 +Release 1.59.2 +Release 1.59.1 +Release 1.58.0 +Release 1.57.0 +Release 1.56.0 +Older releases +About dot-zero releases + +Release Notes: 1.76.1 + +The following is a list of changes that have been made since the 1.76.0 +release. + +FO + +The following changes have been made to the fo code since the 1.76.0 release. + + â— Robert Stayton: docbook.xsl; xref.xsl; fop1.xsl + + Apply patch to support named destination in fop1.xsl, per Sourceforge + bug report #3029845. + +HTML + +The following changes have been made to the html code since the 1.76.0 release. + + â— Keith Fahlgren: highlight.xsl + + Implementing handling for and : transform to and for XHTML outputs and do not use in the highliting output (per Mauritz Jeanson) + +Params + +The following changes have been made to the params code since the 1.76.0 +release. + + â— Robert Stayton: draft.mode.xml + + Change default for draft.mode to 'no'. + +Release Notes: 1.76.0 + +This release includes important bug fixes and adds the following significant +feature changes: + +Webhelp + + A new browser-based, cross-platform help format with full-text search and + other features typically found in help systems. See webhelp/docs/content/ + ch01.html for more information and a demo. + +Gentext + + Many updates and additions to translation/locales thanks to Red Hat, the + Fedora Project, and other contributors. + +Common + + Faster localization support, as language files are loaded on demand. + +FO + + Support for SVG content in imagedata added. + +HTML + + Output improved when using 'make.clean.html' and a stock CSS file is now + provided. + +EPUB + + A number of improvements to NCX, cover and image selection, and XHTML 1.1 + element choices + +The following is a list of changes that have been made since the 1.75.2 +release. + +Gentext + +The following changes have been made to the gentext code since the 1.75.2 +release. + + â— rlandmann: locale/fa.xml + + Update to Persian translation from the Fedora Project + + + â— rlandmann: locale/nds.xml + + Locale for Low German + + + â— Mauritz Jeanson: locale/ka.xml; Makefile + + Added support for Georgian based on patch #2917147. + + + â— rlandmann: locale/nl.xml; locale/ja.xml + + Updated translations from Red Hat and the Fedora Project + + + â— rlandmann: locale/bs.xml; locale/ru.xml; locale/hr.xml + + Updated locales from Red Hat and the Fedora Project + + + â— rlandmann: locale/pt.xml; locale/cs.xml; locale/es.xml; locale/bg.xml; + locale/nl.xml; loca⋯ + + Updated translations from Red Hat and the Fedora Project + + + â— rlandmann: locale/as.xml; locale/bn_IN.xml; locale/ast.xml; locale/ml.xml; + locale/te.xml; ⋯ + + New translations from Red Hat and the Fedora Project + + + â— rlandmann: locale/pt.xml; locale/ca.xml; locale/da.xml; locale/sr.xml; + locale/ru.xml; loca⋯ + + Updated translations from Red Hat and the Fedora Project + + +Common + +The following changes have been made to the common code since the 1.75.2 +release. + + â— Mauritz Jeanson: common.xsl + + Fixed bug in output-orderedlist-starting-number template (@startingnumber did not work for FO). + + + â— Mauritz Jeanson: gentext.xsl + + Added fix to catch ID also of descendants of listitem. Closes bug #2955077. + + + â— Jirka Kosek: l10n.xsl + + Stripped down, faster version of gentext.template is used when there is no localization customization. + + + â— Mauritz Jeanson: stripns.xsl + + Added fix that preserves link/@role (makes links in the reference documentation + with @role="tcg" work). + + + â— Mauritz Jeanson: l10n.xsl + + Fixed bugs related to manpages and L10n. + + + â— Jirka Kosek: entities.ent; autoidx-kosek.xsl + + Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms. + + + â— Jirka Kosek: l10n.xsl; l10n.dtd; l10n.xml; autoidx-kosek.xsl + + Refactored localization support. Language files are loaded on demand. Speedup is about 30%. + + + â— Jirka Kosek: l10n.xsl + + Added xsl:keys for improved performance of localization texts look up. Performance gain around 15%. + + + â— Mauritz Jeanson: titles.xsl + + Fixed bug #2912677 (error with xref in title). + + + â— Robert Stayton: olink.xsl + + Fix bug in xrefstyle "title" handling introduced with + the 'insert.targetdb.data' template. + + + â— Robert Stayton: gentext.xsl + + Fix bug in xref to equation without title to use context="xref-number" instead + of "xref-number-and-title". + + + â— Robert Stayton: labels.xsl + + Number all equations in one sequence, with or without title. + + + â— Robert Stayton: entities.ent + + Fix bug #2896909 where duplicate @sortas on indexterms caused + some indexterms to drop out of index. + + + â— Robert Stayton: stripns.xsl + + Expand the "Stripping namespace ..." message to advise users to + use the namespaced stylesheets. + + + â— Robert Stayton: stripns.xsl + + need a local version of $exsl.node.set.available variable because + this module imported many places. + + + â— Mauritz Jeanson: olink.xsl + + Added /node() to the select expression that is used to compute the title text + so that no elements end up in the output. Closes bug #2830119. + + +FO + +The following changes have been made to the fo code since the 1.75.2 release. + + â— Robert Stayton: table.xsl + + Fix bug 2979166 able - Attribute @rowheader not working + + + â— Mauritz Jeanson: inline.xsl + + Improved glossterm auto-linking by using keys. The old code was inefficient when processing documents + with many inline glossterms. + + + â— Robert Stayton: titlepage.xsl + + Fix bug 2805530 author/orgname not appearing on title page. + + + â— Mauritz Jeanson: graphics.xsl + + Added support for SVG content in imagedata (inspired by patch #2909154). + + + â— Mauritz Jeanson: table.xsl + + Removed superfluous test used when computing column-width. Closes bug #3000898. + + + â— Mauritz Jeanson: inline.xsl + + Added missing . Closes bug #2998567. + + + â— Mauritz Jeanson: lists.xsl + + Added table-layout="fixed" on segmentedlist table (required by XSL spec when proportional-column-width() is used). + + + â— Jirka Kosek: autoidx-kosek.xsl + + Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms. + + + â— Jirka Kosek: index.xsl + + Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms. + + + â— Robert Stayton: xref.xsl + + Fix bug in olink template when an olink has an id. + Add warning message with id value when trying to link + to an element that has no generated text. + + + â— Mauritz Jeanson: refentry.xsl + + Fixed bug #2930968 (indexterm in refmeta not handled correctly). + + + â— Robert Stayton: block.xsl + + fix bug 2949567 title in revhistory breaks FO transform. + + + â— Robert Stayton: glossary.xsl + + Output id attributes on glossdiv blocks so they can be added to + xrefs or TOC. + + + â— Jirka Kosek: xref.xsl + + Enabled hyphenation of URLs when ulink content is the same as link target + + + â— Robert Stayton: table.xsl + + Apply patch to turn off row recursion if no @morerows attributes present. + This will enable very large tables without row spanning to + process without running into recursion limits. + + + â— Robert Stayton: formal.xsl + + Format equation without title using table layout with equation number + next to the equation. + + + â— Robert Stayton: param.xweb; param.ent + + Add equation.number.properties. + + +HTML + +The following changes have been made to the html code since the 1.75.2 release. + + â— Mauritz Jeanson: block.xsl + + Modified acknowledgements template to avoid invalid output (

in

). + + + ◠Mauritz Jeanson: titlepage.xsl + + Added default sidebar attribute-sets. + + + ◠Robert Stayton: table.xsl + + Fix bug 2979166 able - Attribute @rowheader not working + + + ◠Robert Stayton: footnote.xsl + + Fix bug 3033191 footnotes in html tables. + + + ◠Mauritz Jeanson: inline.xsl + + Improved glossterm auto-linking by using keys. The old code was inefficient when processing documents + with many inline glossterms. + + + ◠Robert Stayton: docbook.css.xml; verbatim.xsl + + Fix bug 2844927 Validity error for callout bugs. + + + ◠Robert Stayton: formal.xsl + + Convert formal.object.heading to respect make.clean.html param. + + + ◠Robert Stayton: titlepage.templates.xml; block.xsl + + Fix bug 2840768 sidebar without title inserts empty b tag. + + + ◠Mauritz Jeanson: docbook.xsl + + Moved the template that outputs so that the base URI also applies to relative CSS paths that come later. + See patch #2896121. + + + ◠Jirka Kosek: autoidx-kosek.xsl + + Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms. + + + ◠Robert Stayton: chunk-code.xsl + + fix bug 2948363 generated filename for refentry not unique, when + used in a set. + + + ◠Robert Stayton: component.xsl + + Fix missing "Chapter n" label when use chapter/info/title. + + + ◠Robert Stayton: table.xsl + + Row recursion turned off if no @morerows attributes in the table. + This will prevent failure on long table (with no @morerows) due + to excessive depth of recursion. + + + ◠Robert Stayton: autotoc.xsl; docbook.css.xml + + Support make.clean.html in autotoc.xsl. + + + ◠Robert Stayton: docbook.css.xml; block.xsl + + Add support for make.clean.html setting in block elements. + + + ◠Robert Stayton: docbook.css.xml + + Stock CSS styles for DocBook HTML output when 'make.clean.html' is non-zero. + + + ◠Robert Stayton: html.xsl + + Add templates for generating CSS files and links to them. + + + ◠Robert Stayton: param.xweb + + Fix bugs in new entity references. + + + ◠Robert Stayton: chunk-common.xsl + + List of Equations now includes on equations with titles. + + + ◠Robert Stayton: table.xsl + + If a colspec has a colname attribute, add it to the HTML col + element as a class attribute so it can be styled. + + + ◠Robert Stayton: formal.xsl + + Fix bug 2825842 where table footnotes not appearing in HTML-coded table. + + + ◠Robert Stayton: chunktoc.xsl + + Fix bug #2834826 where appendix inside part was not chunked as it should be. + + + ◠Mauritz Jeanson: chunktoc.xsl + + Added missing namespace declarations. Closes bug #2890069. + + + ◠Mauritz Jeanson: footnote.xsl + + Updated the template for footnote paras to use the 'paragraph' template. Closes bug #2803739. + + + ◠Keith Fahlgren: inline.xsl; lists.xsl + + Remove and elements "discouraged in favor of style sheets" from + XHTML, XHTML 1.1 (and therefore EPUB) outputs by changing html2xhtml.xsl. + + Fixes bug #2873153: No and tags in XHTML/EPUB + + Added regression to EPUB specs: + + + ◠Mauritz Jeanson: inline.xsl + + Fixed bug #2844916 (don't output @target if ulink.target is empty). + + + ◠Keith Fahlgren: autoidx.xsl + + Fix a bug when using index.on.type: an 'index symbols' section was created + even if that typed index didn't include any symbols (they were in the other types). + + +Manpages + +The following changes have been made to the manpages code since the 1.75.2 +release. + + ◠Mauritz Jeanson: other.xsl + + Modified the write.stubs template so that the section directory name is not output twice. Should fix bug #2831602. + Also ensured that $lang is added to the .so path (when man.output.lang.in.name.enabled=1). + + + ◠Mauritz Jeanson: docbook.xsl; other.xsl + + Fixed bug #2412738 (apostrophe escaping) by applying the submitted patch. + + + ◠Norman Walsh: block.xsl; endnotes.xsl + + Fix bug where simpara in footnote didn't work. Patch by Jonathan Nieder, jrnieder@gmail.com + + + ◠dleidert: lists.xsl + + Fix two indentation issues: In the first case there is no corresponding .RS + macro (Debian #519438, sf.net 2793873). In the second case an .RS instead of + the probably intended .sp leads to an indentation bug (Debian #527309, + sf.net #2642139). + + +Epub + +The following changes have been made to the epub code since the 1.75.2 release. + + ◠Keith Fahlgren: bin/spec/examples/AMasqueOfDays.epub; docbook.xsl; bin/spec + /epub_spec.rb + + Resolve some actual regressions in date output spotted by more recent versions of epubcheck + + + ◠Keith Fahlgren: docbook.xsl + + Updated mediaobject selection code that better uses roles (when available); based on contributons by Glenn McDonald + + + ◠Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl + + Ensure that NCX documents are always outputted with a default namespace + to prevent problems with the kindlegen machinery + + + ◠Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/ + partintro.xml; docbook.x⋯ + + Adding support for partintros with sect2s, 3s, etc + + + ◠Keith Fahlgren: docbook.xsl + + Adding param to workaround horrific ADE bug with the inability to process
+ + + ◠Keith Fahlgren: docbook.xsl + + Add support for authorgroup/author in OPF metadata (via Michael Wiedmann) + + + ◠Keith Fahlgren: bin/spec/epub_regressions_spec.rb + + Remove and elements "discouraged in favor of style sheets" from + XHTML, XHTML 1.1 (and therefore EPUB) outputs by changing html2xhtml.xsl. + + Fixes bug #2873153: No and tags in XHTML/EPUB + + Added regression to EPUB specs: + + + ◠Keith Fahlgren: bin/lib/docbook.rb; bin/spec/files/DejaVuSerif-Italic.otf; + docbook.xsl; bi⋯ + + This resolves bug #2873142, Please add support for multiple embedded fonts + + + If you navigate to a checkout of DocBook-XSL and go to: + xsl/epub/bin/spec/files + You can now run the following command: + + ../../dbtoepub -f DejaVuSerif.otf -f DejaVuSerif-Italic.otf -c test.css + -s test_cust.xsl orm.book.001.xml + + In dbtoepub, the following option can be used more than once: + -f, --font [OTF FILE] Embed OTF FILE in .epub. + + The underlying stylesheet now accepts a comma-separated list of font file + names rather than just one as the RENAMED epub.embedded.fonts ('s' added). + + The runnable EPUB spec now includes: + - should be valid .epub after including more than one embedded font + + + ◠Keith Fahlgren: docbook.xsl + + Improve the selection of cover images when working in DocBook 4.x land (work in progress) + + + ◠Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl + + Improve the quality of the OPF spine regression by ensuring that the spine + elements for deeply nested refentries are in order and adjacent to their + opening wrapper XHTML chunk. + + + ◠Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/ + files/orm.book.00⋯ + + Add more careful handling of refentries to ensure that they always appear in the opf:spine. + This was only a problem when refentries were pushed deep into the hierarchy (like inside + a sect2), but presented navigational problems for many reading systems (despite the + correct NCX references). This may *not* be the best solution, but attacking a better + chunking strategy for refentries was too big a nut to crack at this time. + + +Eclipse + +The following changes have been made to the eclipse code since the 1.75.2 +release. + + ◠Mauritz Jeanson: eclipse3.xsl + + Added a stylesheet module that generates plug-ins conforming to the standard (OSGi-based) Eclipse 3.x + architecture. The main difference to the older format is that metadata is stored in a separate + manifest file. The module imports and extends the existing eclipse.xsl module. Based on code + contributed in patch #2624668. + + +Params + +The following changes have been made to the params code since the 1.75.2 +release. + + ◠Robert Stayton: draft.watermark.image.xml + + Fix bug 2922488 draft.watermark.image pointing to web resource. + Now the value is images/draft.png, and may require customization + for local resolution. + + + ◠Mauritz Jeanson: equation.number.properties.xml + + Corrected refpurpose. + + + ◠Norman Walsh: paper.type.xml + + Added USlegal and USlegallandscape paper types. + + + ◠Jirka Kosek: highlight.xslthl.config.xml + + Added note about specifying location as URL + + + ◠Robert Stayton: docbook.css.source.xml; generate.css.header.xml; + custom.css.source.xml; ma⋯ + + Params to support generated CSS files. + + + ◠Robert Stayton: equation.number.properties.xml + + New attribute set for numbers appearing next to equations. + + +XSL-Xalan + +The following changes have been made to the xsl-xalan code since the 1.75.2 +release. + + ◠dleidert: nbproject/genfiles.properties; nbproject/build-impl.xml + + Rebuild netbeans build files after adding missing Netbeans configuration to allow easier packaging for Debian. + + +Release Notes: 1.75.2 + +The following is a list of changes that have been made since the 1.75.1 +release. + +Gentext + +The following changes have been made to the gentext code since the 1.75.1 +release. + + ◠dleidert: locale/ja.xml + + Improved Japanese translation for Note(s). Closes bug #2823965. + + ◠dleidert: locale/pl.xml + + Polish alphabet contains O with acute accent, not with grave accent. Closes bug #2823964. + + ◠Robert Stayton: locale/ja.xml + + Fix translation of "index", per bug report 2796064. + + ◠Robert Stayton: locale/is.xml + + New Icelandic locale file. + +Common + +The following changes have been made to the common code since the 1.75.1 +release. + + ◠Norman Walsh: stripns.xsl + + Support more downconvert cases + + ◠Robert Stayton: titles.xsl + + Make sure title inside info is used if no other title. + +FO + +The following changes have been made to the fo code since the 1.75.1 release. + + ◠Robert Stayton: pi.xsl + + Turn off dbfo-need for fop1.extensions also, per bug #2816141. + +HTML + +The following changes have been made to the html code since the 1.75.1 release. + + ◠Mauritz Jeanson: titlepage.xsl + + Output "Copyright" heading in XHTML too. + + ◠Mauritz Jeanson: titlepage.xsl + + Added stylesheet.result.type test for copyright. Closes bug #2813289. + + ◠Norman Walsh: htmltbl.xsl + + Remove ambiguity wrt @span, @rowspan, and @colspan + +Manpages + +The following changes have been made to the manpages code since the 1.75.1 +release. + + ◠Mauritz Jeanson: endnotes.xsl + + Added normalize-space() for ulink content. Closes bug #2793877. + + ◠Mauritz Jeanson: docbook.xsl + + Added stylesheet.result.type test for copyright. Closes bug #2813289. + +Epub + +The following changes have been made to the epub code since the 1.75.1 release. + + ◠Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb + + Corrected bugs caused by path and file assumptions were not met + + ◠Keith Fahlgren: bin/lib/docbook.rb; docbook.xsl + + Cleaning up hardcoded values into parameters and fixing Ruby library to pass them properly; all thanks to patch from Liza Daly + +Profiling + +The following changes have been made to the profiling code since the 1.75.1 +release. + + ◠Robert Stayton: profile.xsl + + Fix bug 2815493 missing exsl.node.set.available parameter. + +XSL-Saxon + +The following changes have been made to the xsl-saxon code since the 1.75.1 +release. + + ◠Mauritz Jeanson: src/com/nwalsh/saxon/ColumnUpdateEmitter.java; src/com/ + nwalsh/saxon/Colum⋯ + + Added fixes so that colgroups in the XHTML namespace are processed properly. + +XSL-Xalan + +The following changes have been made to the xsl-xalan code since the 1.75.1 +release. + + ◠Mauritz Jeanson: nbproject/project.xml + + Added missing NetBeans configuration. + +Release Notes: 1.75.1 + +This release includes bug fixes. + +The following is a list of changes that have been made since the 1.75.0 +release. + +FO + +The following changes have been made to the fo code since the 1.75.0 release. + + ◠Keith Fahlgren: block.xsl + + Switching to em dash for character before attribution in epigraph; resolves Bug #2793878 + + ◠Robert Stayton: lists.xsl + + Fixed bug 2789947, id attribute missing on simplelist fo output. + +HTML + +The following changes have been made to the html code since the 1.75.0 release. + + ◠Keith Fahlgren: block.xsl + + Switching to em dash for character before attribution in epigraph; resolves Bug #2793878 + + ◠Robert Stayton: lists.xsl + + Fixed bug 2789678: apply-templates line accidentally deleted. + +Epub + +The following changes have been made to the epub code since the 1.75.0 release. + + ◠Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl + + Added regression and fix to correct "bug" with namespace-prefixed container elements in META-INF/container.xml ; resolves Issue #2790017 + + ◠Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/ + onegraphic.xinclude.xml;⋯ + + Another attempt at flexible named entity and XInclude processing + + ◠Keith Fahlgren: bin/lib/docbook.rb + + Tweaking solution to Bug #2750442 following regression reported by Michael Wiedmann. + +Params + +The following changes have been made to the params code since the 1.75.0 +release. + + ◠Mauritz Jeanson: highlight.source.xml + + Updated documentation to reflect changes made in r8419. + +Release Notes: 1.75.0 + +This release includes important bug fixes and adds the following significant +feature changes: + +Gentext + + Modifications to translations have been made. + +Common + + Added support for some format properties on tables using HTML table markup. + + Added two new qanda.defaultlabel values so that numbered sections and + numbered questions can be distinguished. Satisfies Feature Request # + 1539045. + + Added code to handle acknowledgements in book and part. The element is + processed similarly to dedication. All acknowledgements will appear as + front matter, after any dedications. + +FO + + The inclusion of highlighting code has been simplified. + + Add support for pgwide on informal objects. + + Added a new parameter, bookmarks.collapse, that controls the initial state + of the bookmark tree. Closes FR #1792326. + + Add support for more dbfo processing instructions. + + Add new variablelist.term.properties to format terms, per request # + 1968513. + + Add support for @width on screen and programlisting, fixes bug #2012736. + + Add support for writing-mode="rl-tb" (right-to-left) in FO outputs. + + Add writing.mode param for FO output. + +HTML + + Convert all calls to class.attribute to calls to common.html.attributes to + support dir, lang, and title attributes in html output for all elements. + Fulfills feature request #1993833. + + Inclusion of highlighting code was simplified. Only one import is now + necessary. + + Add new param index.links.to.section. + + Add support for the new index.links.to.section param which permits precise + links to indexterms in HTML output rather than to the section title. + +ePub + + Slightly more nuanced handling of imageobject alternatives and better + support in dbtoepub for XIncludes and ENTITYs to resolve Issue #2750442 + reported by Raphael Hertzog. + + Added a colon after an abstract/title when mapping into the dc:description + for OPF metadata in ePub output to help the flat text have more + pseudo-semantics (sugestions from Michael Wiedmann) + + Added DocBook subjectset -> OPF dc:subject mapping and tests + + Added DocBook date -> OPF dc:date mapping and tests + + Added DocBook abstract -> OPF dc:description mapping and tests + + Added --output option to dbtoepub based on user request + +HTMLHelp + + Add support for generating olink target database for htmlhelp files. + +Params + + Add default setting for @rules attribute on HTML markup tables. + + Added a new parameter, bookmarks.collapse, that controls the initial state + of the bookmark tree. When the parameter has a non-zero value (the + default), only the top-level bookmarks are displayed initially. Otherwise, + the whole tree of bookmarks is displayed. This is implemented for FOP 0.9X. + Closes FR #1792326. + + Add new variablelist.term.properties to format terms, per request # + 1968513. + + Add two new qanda.defaultlabel values so that numbered sections and + numbered questions can be distinguished. Satisfies Feature Request # + 1539045. + + Add param to control whether an index entry links to a section title or to + the precise location of the indexterm. + + New attribute list for glossentry in glossary. + + New parameter to support @width on programlisting and screen. + + Add attribute-sets for formatting glossary terms and defs. + +Highlighting + + Inclusion of highlighting code was simplified. Only one import is now + necessary. + +The following is a list of changes that have been made since the 1.74.3 +release. + +Gentext + +The following changes have been made to the gentext code since the 1.74.3 +release. + + ◠Robert Stayton: locale/sv.xml; locale/ja.xml; locale/pl.xml + + Check in translations of Legalnotice submitted on mailing list. + + ◠Robert Stayton: locale/es.xml + + Fix spelling errors in Acknowledgements entries. + + ◠Robert Stayton: locale/es.xml + + Check in translations for 4 elements submitted through docbook-apps + message of 14 April 2009. + + ◠David Cramer: locale/zh.xml; locale/ca.xml; locale/ru.xml; locale/ga.xml; + locale/gl.xml; l⋯ + + Internationalized punctuation in glosssee and glossseealso + + ◠Robert Stayton: Makefile + + Check in fixes for DSSSL gentext targets from submitted patch #1689633. + + ◠Robert Stayton: locale/uk.xml + + Check in major update submitted with bug report #2008524. + + ◠Robert Stayton: locale/zh_tw.xml + + Check in fix to Note string submitted in bug #2441051. + + ◠Robert Stayton: locale/ru.xml + + Checkin typo fix submitted in bug #2453406. + +Common + +The following changes have been made to the common code since the 1.74.3 +release. + + ◠Robert Stayton: gentext.xsl + + Fix extra generated space when xrefstyle includes 'nopage'. + + ◠Robert Stayton: table.xsl + + Add support for some format properties on tables using + HTML table markup. These include: + - frame attribute on table (or uses $default.table.frame parameter). + - rules attribute on table (or uses $default.table.rules parameter). + - align attribute on td and th + - valign attribute on td and th + - colspan on td and th + - rowspan on td and th + - bgcolor on td and th + + ◠Robert Stayton: olink.xsl + + Add placeholder template to massage olink hot text to make + customization easier, per Feature Request 1828608. + + ◠Robert Stayton: targets.xsl + + Add support for collecting olink targets from a glossary + generated from a glossary.collection. + + ◠Robert Stayton: titles.xsl + + Handle firstterm like glossterm in mode="title.markup". + + ◠Robert Stayton: titles.xsl + + Add match on info/title in title.markup templates where missing. + + ◠Mauritz Jeanson: titles.xsl + + Changed "ancestor::title" to "(ancestor::title and (@id or @xml:id))". + This enables proper formatting of inline elements in titles in TOCs, + as long as these inlines don't have id or xml:id attributes. + + ◠Robert Stayton: labels.xsl + + Add two new qanda.defaultlabel values so that numbered sections + and numbered questions can be distinguished. Satisfies + Feature Request #1539045. + + ◠Robert Stayton: stripns.xsl; pi.xsl + + Convert function-available(exsl:node-set) to use the new param + so Xalan bug is isolated. + + ◠Mauritz Jeanson: titles.xsl + + Added fixes for bugs #2112656 and #1759205: + 1. Reverted mistaken commits r7485 and r7523. + 2. Updated the template with match="link" and mode="no.anchor.mode" so that + @endterm is used if it exists and if the link has no content. + + ◠Mauritz Jeanson: titles.xsl + + Added code to handle acknowledgements in book and part. The element is processed + similarly to dedication. All acknowledgements will appear as front matter, after + any dedications. + + ◠Robert Stayton: olink.xsl + + Fix bug #2018717 use.local.olink.style uses wrong gentext context. + + ◠Robert Stayton: olink.xsl + + Fix bug #1787167 incorrect hot text for some olinks. + + ◠Robert Stayton: common.xsl + + Fix bug #1669654 Broken output if copyright contains a range. + + ◠Robert Stayton: labels.xsl + + Fix bug in labelling figure inside appendix inside article inside book. + +FO + +The following changes have been made to the fo code since the 1.74.3 release. + + ◠Jirka Kosek: highlight.xsl + + Inclusion of highlighting code was simplified. Only one import is now necessary. + + ◠Robert Stayton: fop1.xsl + + Add the new fop extensions namespace declaration, in case FOP + extension functions are used. + + ◠Robert Stayton: formal.xsl + + Add support for pgwide on informal objects. + + ◠Robert Stayton: docbook.xsl + + Fixed spurious closing quote on line 134. + + ◠Robert Stayton: docbook.xsl; autoidx-kosek.xsl; autoidx.xsl + + Convert function-available for node-set() to use + new $exsl.node.set.available param in test. + + ◠David Cramer: xref.xsl + + Suppress extra space after xref when xrefstyle='select: label nopage' (#2740472) + + ◠Mauritz Jeanson: pi.xsl + + Fixed doc bug for row-height. + + ◠David Cramer: glossary.xsl + + Internationalized punctuation in glosssee and glossseealso + + ◠Robert Stayton: param.xweb; param.ent; htmltbl.xsl; table.xsl + + Add support for some format properties on tables using + HTML table markup. These include: + - frame attribute on table (or uses $default.table.frame parameter). + - rules attribute on table (or uses $default.table.rules parameter). + - align attribute on td and th + - valign attribute on td and th + - colspan on td and th + - rowspan on td and th + - bgcolor on td and th + + ◠Robert Stayton: table.xsl + + Add support bgcolor in td and th + elements in HTML table markup. + + ◠Robert Stayton: htmltbl.xsl + + Add support for colspan and rowspan and bgcolor in td and th + elements in HTML table markup. + + ◠Robert Stayton: param.xweb + + Fix working of page-master left and right margins. + + ◠Mauritz Jeanson: param.xweb; param.ent; fop1.xsl + + Added a new parameter, bookmarks.collapse, that controls the initial state of the bookmark tree. When the parameter has a non-zero value (the default), only the top-level bookmarks are displayed initially. Otherwise, the whole tree of bookmarks is displayed. This is implemented for FOP 0.9X. Closes FR #1792326. + + ◠Robert Stayton: table.xsl; pi.xsl + + Add support for dbfo row-height processing instruction, like that in dbhtml. + + ◠Robert Stayton: lists.xsl + + Add support for dbfo keep-together processing instruction for + entire list instances. + + ◠Robert Stayton: lists.xsl; block.xsl + + Add support fo dbfo keep-together processing instruction to + more blocks like list items and paras. + + ◠Robert Stayton: lists.xsl; param.xweb; param.ent + + Add new variablelist.term.properties to format terms, per request # 1968513. + + ◠Robert Stayton: inline.xsl + + In simple.xlink, rearrange order of processing. + + ◠Robert Stayton: xref.xsl + + Handle firstterm like glossterm in mode="xref-to". + + ◠Robert Stayton: glossary.xsl; xref.xsl; pi.xsl; footnote.xsl + + Implement simple.xlink for glosssee and glossseealso so they can use + other types of linking besides otherterm. + + ◠Robert Stayton: qandaset.xsl + + Add two new qanda.defaultlabel values so that numbered sections and numbered questions can be distinguished. Satisfies Feature Request #1539045. + + ◠Robert Stayton: titlepage.xsl + + For the book title templates, I changed info/title to book/info/title + so other element's titles will not be affected. + + ◠Robert Stayton: xref.xsl; verbatim.xsl + + Use param exsl.node.set.available to test for function. + + ◠Robert Stayton: param.xweb; param.ent; footnote.xsl + + Start using new param exsl.node.set.available to work around Xalan bug. + + ◠Robert Stayton: titlepage.templates.xml + + Add comment on use of t:predicate for editor to prevent + extra processing of multiple editors. Fixes bug 2687842. + + ◠Robert Stayton: xref.xsl; autoidx.xsl + + An indexterm primary, secondary, or tertiary element with an id or xml:id + now outputs that ID, so that index entries can be cross referenced to. + + ◠Mauritz Jeanson: synop.xsl + + Added modeless template for ooclass|oointerface|ooexception. + Closes bug #1623468. + + ◠Robert Stayton: xref.xsl + + Add template with match on indexterm in mode="xref-to" to fix bug 2102592. + + ◠Robert Stayton: xref.xsl + + Now xref to qandaentry will use the label element in a question for + the link text if it has one. + + ◠Robert Stayton: inline.xsl + + Add id if specified from @id to output for quote and phrase so + they can be xref'ed to. + + ◠Robert Stayton: xref.xsl + + Add support for xref to phrase, simpara, anchor, and quote. + This assumes the author specifies something using xrefstyle since + the elements don't have ordinary link text. + + ◠Robert Stayton: toc.xsl + + Fix bug in new toc templates. + + ◠Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; xref.xsl; + titlepage.templates⋯ + + Added code to handle acknowledgements in book and part. The element is processed + similarly to dedication. All acknowledgements will appear as front matter, after + any dedications. + + ◠Robert Stayton: toc.xsl + + Rewrite toc templates to support an empty toc or populated toc + in all permitted contexts. Same for lot elements. + This fixes bug #1595969 for FO outputs. + + ◠Robert Stayton: index.xsl + + Fix indents for seealsoie so they are consistent. + + ◠Mauritz Jeanson: param.xweb + + Removed duplicate (monospace.font.family). + + ◠Robert Stayton: param.xweb; param.ent + + Add glossentry.list.item.properties. + + ◠Robert Stayton: param.xweb; param.ent + + Add monospace.verbatim.font.width param to support @width on programlisting. + + ◠Robert Stayton: verbatim.xsl + + Put programlisting in fo:block-container with writing-mode="lr-tb" + when text direction is right to left because all program languages + are left-to-right. + + ◠Robert Stayton: verbatim.xsl + + Add support for @width on screen and programlisting, fixes bug #2012736. + + ◠Robert Stayton: xref.xsl + + Fix bug #1973585 xref to para with xrefstyle not handled correctly. + + ◠Mauritz Jeanson: block.xsl + + Added support for acknowledgements in article. + Support in book/part remains to be added. + + ◠Robert Stayton: xref.xsl + + Fix bug #1787167 incorrect hot text for some olinks. + + ◠Robert Stayton: fo.xsl + + Add writing-mode="tb-rl" as well since some XSL-FO processors support it. + + ◠Robert Stayton: autotoc.xsl; lists.xsl; glossary.xsl; fo.xsl; table.xsl; + pagesetup.xsl + + Add support for writing-mode="rl-tb" (right-to-left) in FO outputs. + Changed instances of margin-left to margin-{$direction.align.start} + and margin-right to margin-{$direction.align.end}. Those direction.align + params are computed from the writing mode value in each locale's + gentext key named 'writing-mode', introduced in 1.74.3 to add + right-to-left support to HTML outputs. + + ◠Robert Stayton: param.xweb; param.ent + + Add attribute-sets for formatting glossary terms and defs. + + ◠Robert Stayton: param.xweb; param.ent + + Add writing.mode param for FO output. + + ◠Robert Stayton: autotoc.xsl + + Fix bug 1546008: in qandaentry in a TOC, use its blockinfo/titleabbrev or blockinfo/title + instead of question, if available. For DocBook 5, use the info versions. + + ◠Keith Fahlgren: verbatim.xsl + + Add better pointer to README for XSLTHL + + ◠Keith Fahlgren: verbatim.xsl + + More tweaking the way that XSLTHL does or does not get called + + ◠Keith Fahlgren: verbatim.xsl + + Alternate attempt at sanely including/excluding XSLTHT code + +HTML + +The following changes have been made to the html code since the 1.74.3 release. + + ◠Robert Stayton: lists.xsl + + Removed redundant lang and title attributes on list element inside + div element for lists. + + ◠Robert Stayton: inline.xsl; titlepage.xsl; division.xsl; toc.xsl; + sections.xsl; table.xsl;⋯ + + Convert all calls to class.attribute to calls to common.html.attributes + to support dir, lang, and title attributes in html output for all elements. + Fulfills feature request #1993833. + + ◠Robert Stayton: chunk-common.xsl + + Fix bug #2750253 wrong links in list of figures in chunk.html + when target html is in a subdirectory and dbhtml filename used. + + ◠Jirka Kosek: highlight.xsl + + Inclusion of highlighting code was simplified. Only one import is now necessary. + + ◠Robert Stayton: chunk-common.xsl; chunktoc.xsl; docbook.xsl; + chunk-changebars.xsl; autoidx⋯ + + Convert function-available for node-set() to use + new $exsl.node.set.available param in test. + + ◠Mauritz Jeanson: pi.xsl + + Fixed doc bug for row-height. + + ◠David Cramer: glossary.xsl + + Internationalized punctuation in glosssee and glossseealso + + ◠Robert Stayton: lists.xsl; html.xsl; block.xsl + + More elements get common.html.attributes. + Added locale.html.attributes template which does the lang, + dir, and title attributes, but not the class attribute + (used on para, for example). + + ◠Robert Stayton: lists.xsl + + Replace more literal class atts with mode="class.attribute" to support + easier customization. + + ◠Robert Stayton: glossary.xsl + + Support olinking in glosssee and glossseealso. + + ◠Robert Stayton: inline.xsl + + In simple.xlink, rearrange order of processing. + + ◠Robert Stayton: xref.xsl + + Handle firstterm like glossterm in mode="xref-to". + + ◠Robert Stayton: lists.xsl; html.xsl; block.xsl + + Added template named common.html.attributes to output + class, title, lang, and dir for most elements. + Started adding it to some list and block elements. + + ◠Robert Stayton: qandaset.xsl + + Add two new qanda.defaultlabel values so that numbered sections + and numbered questions can be distinguished. Satisfies + Feature Request #1539045. + + ◠Robert Stayton: param.xweb; chunk-code.xsl; param.ent; xref.xsl; + chunkfast.xsl; verbatim.x⋯ + + Use new param exsl.node.set.available to test, handles Xalan bug. + + ◠Robert Stayton: autoidx.xsl + + Use named anchors for primary, secondary, and tertiary ids so + duplicate entries with different ids can still have an id output. + + ◠Robert Stayton: param.xweb; param.ent + + Add new param index.links.to.section. + + ◠Robert Stayton: xref.xsl; autoidx.xsl + + Pass through an id on primary, secondary, or tertiary to + the index entry, so that one could link to an index entry. + You can't link to the id on an indexterm because that is + used to place the main anchor in the text flow. + + ◠Robert Stayton: autoidx.xsl + + Add support for the new index.links.to.section param which permits + precise links to indexterms in HTML output rather than to + the section title. + + ◠Mauritz Jeanson: synop.xsl + + Added modeless template for ooclass|oointerface|ooexception. + Closes bug #1623468. + + ◠Robert Stayton: qandaset.xsl + + Make sure a qandaset has an anchor, even when it has no title, + because it may be referenced in a TOC or xref. + Before, the anchor was output by the title, but there was no + anchor if there was no title. + + ◠Robert Stayton: xref.xsl + + Add a template for indexterm with mode="xref-to" to fix bug 2102592. + + ◠Robert Stayton: xref.xsl + + Now xref to qandaentry will use the label element in a question for + the link text if it has one. + + ◠Robert Stayton: qandaset.xsl; html.xsl + + Create separate templates for computing label of question and answer + in a qandaentry, so such can be used for the alt text of an xref + to a qandaentry. + + ◠Robert Stayton: inline.xsl; xref.xsl + + Now support xref to phrase, simpara, anchor, and quote, + most useful when an xrefstyle is used. + + ◠Robert Stayton: toc.xsl + + Rewrite toc templates to support an empty toc or populated toc + in all permitted contexts. Same for lot elements. + This fixes bug #1595969 for HTML outputs. + + ◠Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; xref.xsl; + titlepage.templates⋯ + + Added code to handle acknowledgements in book and part. The element is processed + similarly to dedication. All acknowledgements will appear as front matter, after + any dedications. + + ◠Robert Stayton: index.xsl + + Rewrote primaryie, secondaryie and tertiaryie templates to handle + nesting of elements and seeie and seealsoie, as reported in + bug # 1168912. + + ◠Robert Stayton: autotoc.xsl + + Fix simplesect in toc problem. + + ◠Robert Stayton: verbatim.xsl + + Add support for @width per bug report #2012736. + + ◠Robert Stayton: formal.xsl; htmltbl.xsl + + Fix bug #1787140 HTML tables not handling attributes correctly. + + ◠Robert Stayton: param.xweb + + Move writing-mode param. + + ◠Keith Fahlgren: refentry.xsl + + Remove a nesting of

inside

for refclass (made XHTML* invalid, made HTML silly) + + ◠Robert Stayton: table.xsl + + Fix bug #1945872 to allow passthrough of colwidth values to + HTML table when no tablecolumns.extension is available and + when no instance of * appears in the table's colspecs. + + ◠Mauritz Jeanson: block.xsl + + Added support for acknowledgements in article. + Support in book/part remains to be added. + + ◠Robert Stayton: chunk-common.xsl + + Fix bug #1787167 incorrect hot text for some olinks. + + ◠Robert Stayton: qandaset.xsl + + Fix bug 1546008: in qandaentry in a TOC, use its blockinfo/titleabbrev or blockinfo/title + instead of question, if available. For DocBook 5, use the info versions. + + ◠Robert Stayton: chunktoc.xsl + + Add support for generating olink database when using chunktoc.xsl. + + ◠Keith Fahlgren: verbatim.xsl + + Add better pointer to README for XSLTHL + + ◠Keith Fahlgren: verbatim.xsl + + Another stab at fixing the stupid XSLTHT includes across processors (Saxon regression reported by Sorin Ristache) + + ◠Keith Fahlgren: verbatim.xsl + + More tweaking the way that XSLTHL does or does not get called + + ◠Keith Fahlgren: verbatim.xsl + + Alternate attempt at sanely including/excluding XSLTHT code + +Manpages + +The following changes have been made to the manpages code since the 1.74.3 +release. + + ◠Robert Stayton: table.xsl + + Convert function-available test for node-set() function to + test of $exsl.node.set.available param. + + ◠Mauritz Jeanson: lists.xsl + + Added a template for bibliolist. Closes bug #1815916. + +ePub + +The following changes have been made to the epub code since the 1.74.3 release. + + ◠Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/ + onegraphic.xinclude.xml;⋯ + + Slightly more nuanced handling of imageobject alternatives and better support in dbtoepub for XIncludes and ENTITYs to resolve Issue #2750442 reported by Raphael Hertzog. + + ◠Keith Fahlgren: docbook.xsl + + Add a colon after an abstract/title when mapping into the dc:description for OPF metadata in ePub output to help the flat text have more pseudo-semantics (sugestions from Michael Wiedmann) + + ◠Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/ + files/de.xml + + Correctly set dc:language in OPF metadata when i18nizing. Closes Bug #2755150 + + ◠Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl + + Corrected namespace declarations for literal XHTML elements to make them serialize "normally" + + ◠Keith Fahlgren: docbook.xsl + + Be a little bit more nuanced about dates + + ◠Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files + /orm.book.001.x⋯ + + Add DocBook subjectset -> OPF dc:subject mapping and tests + + ◠Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files + /orm.book.001.x⋯ + + Add DocBook date -> OPF dc:date mapping and tests + + ◠Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files + /orm.book.001.x⋯ + + Add DocBook abstract -> OPF dc:description mapping and tests + + ◠Robert Stayton: docbook.xsl + + Check in patch submitted by user to add opf:file-as attribute + to dc:creator element. + + ◠Keith Fahlgren: bin/dbtoepub + + Adding --output option to dbtoepub based on user request + + ◠Keith Fahlgren: docbook.xsl; bin/spec/epub_spec.rb + + Cleaning and regularizing the generation of namespaced nodes for OPF, NCX, XHTML and other outputted filetypes (hat tip to bobstayton for pointing out the silly, incorrect code) + + ◠Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/ + refclass.xml + + Remove a nesting of

inside

for refclass (made XHTML* invalid, made HTML silly) + + â— Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/ + blockquotepre.xml + + Added regression test and fix for XHTML validation problem with s added inside

; This potentially causes another problem (where something is referenced by has no anchor, but someone reporting that should cause the whole thing to be reconsidered with modern browsers in mind. + +HTMLHelp + +The following changes have been made to the htmlhelp code since the 1.74.3 +release. + + ◠Robert Stayton: htmlhelp-common.xsl + + Add support for generating olink target database for htmlhelp files. + +Params + +The following changes have been made to the params code since the 1.74.3 +release. + + ◠Robert Stayton: default.table.rules.xml + + Add default setting for @rules attribute on HTML markup tables. + + ◠Mauritz Jeanson: bookmarks.collapse.xml + + Added a new parameter, bookmarks.collapse, that controls the initial state + of the bookmark tree. When the parameter has a non-zero value (the default), + only the top-level bookmarks are displayed initially. Otherwise, the whole + tree of bookmarks is displayed. + + This is implemented for FOP 0.9X. Closes FR #1792326. + + ◠Robert Stayton: variablelist.term.properties.xml + + Add new variablelist.term.properties to format terms, per + request # 1968513. + + ◠Robert Stayton: qanda.defaultlabel.xml + + Add two new qanda.defaultlabel values so that numbered sections + and numbered questions can be distinguished. Satisfies + Feature Request #1539045. + + ◠Robert Stayton: index.links.to.section.xml + + Change default to 1 to match past behavior. + + ◠Robert Stayton: exsl.node.set.available.xml + + Isolate this text for Xalan bug regarding exsl:node-set available. + If it is ever fixed in Xalan, just fix it here. + + ◠Robert Stayton: index.links.to.section.xml + + Add param to control whether an index entry links to + a section title or to the precise location of the + indexterm. + + ◠Robert Stayton: glossentry.list.item.properties.xml + + New attribute list for glossentry in glossary. + + ◠Robert Stayton: monospace.verbatim.font.width.xml + + New parameter to support @width on programlisting and screen. + + ◠Mauritz Jeanson: highlight.source.xml + + Updated and reorganized the description. + + ◠Robert Stayton: page.margin.outer.xml; page.margin.inner.xml + + Add caveat about XEP bug when writing-mode is right-to-left. + + ◠Robert Stayton: article.appendix.title.properties.xml; writing.mode.xml; + body.start.indent⋯ + + Change 'left' to 'start' and 'right' to 'end' to support right-to-left + writing mode. + + ◠Robert Stayton: glossdef.block.properties.xml; + glossdef.list.properties.xml; glossterm.blo⋯ + + Add attribute-sets for formatting glossary terms and defs. + + ◠Robert Stayton: glossterm.separation.xml + + Clarify the description. + + ◠Robert Stayton: make.year.ranges.xml + + Now handles year element containing a comma or dash without error. + +Highlighting + +The following changes have been made to the highlighting code since the 1.74.3 +release. + + ◠Jirka Kosek: README + + Inclusion of highlighting code was simplified. Only one import is now necessary. + + ◠Keith Fahlgren: README + + Adding XSLTHL readme + + ◠Keith Fahlgren: common.xsl + + Alternate attempt at sanely including/excluding XSLTHT code + +XSL-Saxon + +The following changes have been made to the xsl-saxon code since the 1.74.3 +release. + + ◠Mauritz Jeanson: src/com/nwalsh/saxon/Text.java + + Added a fix that prevents output of extra blank line. + Hopefully this closes bug #894805. + +XSL-Xalan + +The following changes have been made to the xsl-xalan code since the 1.74.3 +release. + + ◠Mauritz Jeanson: src/com/nwalsh/xalan/Text.java + + Added a fix that prevents output of extra blank line. + Hopefully this closes bug #894805. + +Release Notes: 1.74.3 + +This release fixes some bugs in the 1.74.2 release. + +See highlighting/README for XSLTHL usage instructions. + +Release Notes: 1.74.2 + +This release fixes some bugs in the 1.74.1 release. + +Release Notes: 1.74.1 + +This release includes important bug fixes and adds the following significant +feature changes: + +Gentext + + Kirghiz locale added and Chinese translations have been simplified. + + Somme support for gentext and right-to-left languages has been added. + +FO + + Various bugs have been resolved. + + Support for a new processing instruction: dbfo funcsynopsis-style has been + added. + + Added new param email.mailto.enabled for FO output. Patch from Paolo + Borelli. + + Support for documented metadata in fop1 mode has been added. + +Highlighting + + Support for the latest version of XSLTHL 2.0 and some new language syntaxes + have been added to a variety of outputs. + +Manpages + + Added man.output.better.ps.enabled param (zero default). It non-zero, no + such markup is embedded in generated man pages, and no enhancements are + included in the PostScript output generated from those man pages by the man + -Tps command. + +HTML + + Support for writing.mode to set text direction and alignment based on + document locale has been added. + + Added a new top-level stylesheet module, chunk-changebars.xsl, to be used + for generating chunked output with highlighting based on change + (@revisionflag) markup. The module imports/includes the standard chunking + and changebars templates and contains additional logic for chunked output. + See FRs #1015180 and #1819915. + +ePub + + Covers now look better in Adobe Digital Editions thanks to a patch from + Paul Norton of Adobe + + Cover handling now more generic (including limited DocBook 5.0 cover + support thanks to patch contributed by Liza Daly. + + Cover markup now carries more reliably into files destined for .mobi and + the Kindle. + + dc:identifiers are now generated from more types of numbering schemes. + + Both SEO and semantic structure of chunked ePub output by ensuring that we + always send out one and only one h1 in each XHTML chunk. + + Primitive support for embedding a single font added. + + Support for embedding a CSS customizations added. + +Roundtrip + + Support for imagedata-metadata and table as images added. + + Support for imagedata-metadata and legalnotice as images added. + +Params + + man.output.better.ps.enabled added for Manpages output + + writing.mode.xml added to set text direction. + + Added new param email.mailto.enabled for FO output. Patch from Paolo + Borelli. Closes #2086321. + + highlight.source upgraded to support the latest version of XSLTHL 2.0. + +The following is a list of changes that have been made since the 1.74.0 +release. + +Gentext + +The following changes have been made to the gentext code since the 1.74.0 +release. + + ◠Michael(tm) Smith: locale/ky.xml; Makefile + + new Kirghiz locale from Ilyas Bakirov + + ◠Mauritz Jeanson: locale/en.xml + + Added "Acknowledgements". + + ◠Dongsheng Song: locale/zh_cn.xml + + Simplified Chinese translation. + + ◠Robert Stayton: locale/lv.xml; locale/ca.xml; locale/pt.xml; locale/tr.xml; + locale/af.xml;⋯ + + Add writing-mode gentext string to support right-to-left languages. + +FO + +The following changes have been made to the fo code since the 1.74.0 release. + + ◠David Cramer: footnote.xsl + + Added a check to confirm that a footnoteref's linkend points to a footnote. Stylesheets stop processing if not and provide a useful error message. + + ◠Mauritz Jeanson: spaces.xsl + + Convert spaces to fo:leader also in elements in the DB 5 namespace. + + ◠Mauritz Jeanson: pi.xsl; synop.xsl + + Added support for a new processing instruction: dbfo funcsynopsis-style. + Closes bug #1838213. + + ◠Michael(tm) Smith: inline.xsl; param.xweb; param.ent + + Added new param email.mailto.enabled for FO output. + Patch from Paolo Borelli. Closes #2086321. + + ◠Mauritz Jeanson: docbook.xsl + + Added support for document metadata for fop1 (patch #2067318). + + ◠Jirka Kosek: param.ent; param.xweb; highlight.xsl + + Upgraded to support the latest version of XSLTHL 2.0 + -- nested markup in highlited code is now processed + -- it is no longer needed to specify path XSLTHL configuration file using Java property + -- support for new languages, including Perl, Python and Ruby was added + +HTML + +The following changes have been made to the html code since the 1.74.0 release. + + ◠Robert Stayton: param.xweb; docbook.xsl; param.ent; html.xsl + + Add support for writing.mode to set text direction and alignment based on document locale. + + ◠Mauritz Jeanson: chunk-changebars.xsl + + Added a new top-level stylesheet module, chunk-changebars.xsl, to be + used for generating chunked output with highlighting based on change + (@revisionflag) markup. The module imports/includes the standard chunking + and changebars templates and contains additional logic for chunked output. + See FRs #1015180 and #1819915. + +Manpages + +The following changes have been made to the manpages code since the 1.74.0 +release. + + ◠Michael(tm) Smith: docbook.xsl + + Put the following at the top of generated roff for each page: + \" t + purpose is to explicitly tell AT&T troff that the page needs to be + pre-processed through tbl(1); groff can figure it out + automatically, but apparently AT&T troff needs to be explicitly told + +ePub + +The following changes have been made to the epub code since the 1.74.0 release. + + ◠Keith Fahlgren: docbook.xsl + + Patch from Paul Norton of Adobe to get covers to look better in Adobe Digital Editions + + ◠Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/ + v5cover.xml; bin/spec/sp⋯ + + Patch contributed by Liza Daly to make ePub cover handling more generic. Additionally + DocBook 5.0's now has some limited support: + + - should reference a cover in the OPF guide for a DocBook 5.0 test document + + ◠Keith Fahlgren: bin/spec/files/isbn.xml; bin/spec/files/issn.xml; bin/spec/ + files/biblioid.⋯ + + Liza Daly reported that the dc:identifer-generation code was garbage (she was right). + + Added new tests: + - should include at least one dc:identifier + - should include an ISBN as URN for dc:identifier if an ISBN was in the metadata + - should include an ISSN as URN for dc:identifier if an ISSN was in the metadata + - should include an biblioid as a dc:identifier if an biblioid was in the metadata + - should include a URN for a biblioid with @class attribute as a dc:identifier if an biblioid was in the metadata + + ◠Keith Fahlgren: docbook.xsl; bin/spec/epub_spec.rb + + Improve both SEO and semantic structure of chunked ePub output by ensuring that + we always send out one and only one h1 in each XHTML chunk. + + DocBook::Epub + - should include one and only one

in each HTML file in rendered ePub files + for s + - should include one and only one

in each HTML file in rendered ePub files + for s even if they do not have section markup + + â— Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files + /orm.book.001.x⋯ + + Adding better support for covers in epub files destined for .mobi and the Kindle + + â— Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb; bin/spec/files/ + DejaVuSerif.otf; docbook.⋯ + + Adding primitive support for embedding a single font + + â— Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb; bin/spec/files/ + test_cust.xsl; bin/spec/e⋯ + + Adding support for user-specified customization layers in dbtoepub + + â— Keith Fahlgren: bin/dbtoepub; bin/spec/epub_regressions_spec.rb; bin/lib/ + docbook.rb; bin/s⋯ + + Adding CSS support to .epub target & dbtoepub: + -c, --css [FILE] Use FILE for CSS on generated XHTML. + + + DocBook::Epub + ... + - should include a CSS link in HTML files when a CSS file has been provided + - should include CSS file in .epub when a CSS file has been provided + - should include a CSS link in OPF file when a CSS file has been provided + +Roundtrip + +The following changes have been made to the roundtrip code since the 1.74.0 +release. + + â— Steve Ball: blocks2dbk.xsl; template.xml; template.dot + + added support for imagedata-metadata + added support for table as images + + â— Steve Ball: blocks2dbk.xsl; normalise2sections.xsl; sections2blocks.xsl + + Improved support for personname inlines. + + â— Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; template.xml + + Added support for legalnotice. + + â— Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl + + added support for orgname in author + + â— Steve Ball: specifications.xml; supported.xml; blocks2dbk.xsl; + wordml2normalise.xsl; dbk2w⋯ + + Updated specification. + to-DocBook: add cols attribute to tgroup + from-DocBook: fix for blockquote title + +Params + +The following changes have been made to the params since the 1.74.0 release. + + â— The change was to add man.output.better.ps.enabled parameter, with its + default value set to zero. If the value of the man.output.better.ps.enabled + parameter is non-zero, certain markup is embedded in each generated man + page such that PostScript output from the man -Tps command for that page + will include a number of enhancements designed to improve the quality of + that output. If man.output.better.ps.enabled is zero (the default), no such + markup is embedded in generated man pages, and no enhancements are included + in the PostScript output generated from those man pages by the man -Tps + command. WARNING: The enhancements provided by this parameter rely on + features that are specific to groff (GNU troff) and that are not part of + "classic" AT&T troff or any of its derivatives. Therefore, any man pages + you generate with this parameter enabled will be readable only on systems + on which the groff (GNU troff) program is installed, such as GNU/Linux + systems. The pages will not not be readable on systems on with the classic + troff (AT&T troff) command is installed. NOTE: The value of this parameter + only affects PostScript output generated from the man command. It has no + effect on output generated using the FO backend. TIP: You can generate + PostScript output for any man page by running the following command: man + FOO -Tps > FOO.ps You can then generate PDF output by running the following + command: ps2pdf FOO.ps + + â— Robert Stayton: writing.mode.xml + + writing mode param used to set text direction. + + â— Michael(tm) Smith: email.mailto.enabled.xml + + Added new param email.mailto.enabled for FO output. + Patch from Paolo Borelli. Closes #2086321. + + â— Jirka Kosek: highlight.source.xml; highlight.xslthl.config.xml + + Upgraded to support the latest version of XSLTHL 2.0 + -- nested markup in highlited code is now processed + -- it is no longer needed to specify path XSLTHL configuration file using Java property + -- support for new languages, including Perl, Python and Ruby was added + +Highlighting + +The following changes have been made to the highlighting code since the 1.74.0 +release. + + â— Jirka Kosek: cpp-hl.xml; c-hl.xml; tcl-hl.xml; php-hl.xml; common.xsl; + perl-hl.xml; delphi⋯ + + Upgraded to support the latest version of XSLTHL 2.0 + -- nested markup in highlited code is now processed + -- it is no longer needed to specify path XSLTHL configuration file using Java property + -- support for new languages, including Perl, Python and Ruby was added + +Release Notes: 1.74.0 + +This release includes important bug fixes and adds the following significant +feature changes: + +.epub target + + Paul Norton (Adobe) and Keith Fahlgren(O'Reilly Media) have donated code + that generates .epub documents from DocBook input. An alpha-reference + implementation in Ruby has also been provided. + + .epub is an open standard of the The International Digital Publishing Forum + (IDPF), a the trade and standards association for the digital publishing + industry. + + Read more about this target in epub/README + +XHTML 1.1 target + + To support .epub output, a strict XHTML 1.1 target has been added. The + stylesheets for this output are generated and are quite similar to the + XHTML target. + +Gentext updates + + A number of locales have been updated. + +Roundtrip improvements + + Table, figure, template syncronization, and character style improvements + have been made for WordML & Pages. Support added for OpenOffice.org. + +First implementation of a libxslt extension + + A stylesheet extension for libxslt, written in Python, has been added. The + extension is a function for adjusting column widths in CALS tables. See + extensions/README.LIBXSLT for more information. + +The following is a list of changes that have been made since the 1.73.2 +release. + +Gentext + +The following changes have been made to the gentext code since the 1.73.2 +release. + + â— Michael(tm) Smith: locale/id.xml + + Checked in changes to Indonesion locale submitted by Euis Luhuanam a long time ago. + + â— Michael(tm) Smith: locale/lt.xml + + Added changes to Lithuanian locate submitted a long time back by Nikolajus Krauklis. + + â— Michael(tm) Smith: locale/hu.xml + + fixed error in lowercase.alpha definition in Hungarian locale + + â— Michael(tm) Smith: locale/nb.xml + + Corrected language code for nb locale, and restored missing "startquote" key. + + â— Michael(tm) Smith: locale/ja.xml + + Committed changes to ja locale file, from Akagi Kobayashi. Adds bracket quotes around many xref instances that did not have them + before. + + â— Michael(tm) Smith: Makefile + + "no" locale is now "nb" + + â— Michael(tm) Smith: locale/nb.xml + + Update Norwegian BokmÃ¥l translation. Thanks to Hans F. Nordhaug. + + â— Michael(tm) Smith: locale/no.xml; locale/nb.xml + + per message from Hans F. Nordhaug, correct identifier for + Norwegian BokmÃ¥l is "nb" (not "no") and has been for quite some + time now... + + â— Michael(tm) Smith: locale/ja.xml + + Converted ja.xml source file to use real unicode characters so + that the actual glyphs so up when you edit it in a text editor + (instead of the character references). + + â— Michael(tm) Smith: locale/ja.xml + + Checked in changes to ja.xml locale file. Thanks to Akagi Kobayashi. + + â— Michael(tm) Smith: locale/it.xml + + Changes from Federico Zenith + + â— Dongsheng Song: locale/zh_cn.xml + + Added missing translations. + +Common + +The following changes have been made to the common code since the 1.73.2 +release. + + â— Michael(tm) Smith: l10n.xsl + + Added new template "l10.language.name" for retrieving the + English-language name of the lang setting of the current document. + Closes #1916837. Thanks to Simon Kennedy. + + â— Michael(tm) Smith: refentry.xsl + + fixed syntax error + + â— Michael(tm) Smith: refentry.xsl + + fixed a couple of typos + + â— Michael(tm) Smith: refentry.xsl + + refined handling of cases where refentry "source" or "manual" + metadata is missing or when we use fallback content instead. We + now report a Warning if we use fallback content. + + â— Michael(tm) Smith: refentry.xsl + + don't use refmiscinfo@class=date value as fallback for refentry + "source" or "manual" metadata fields + + â— Michael(tm) Smith: refentry.xsl + + Made reporting of missing refentry metadata more quiet: + + - we no longer report anything if usable-but-not-preferred + metadata is found; we just quietly use whatever we manage to + find + + - we now only report missing "source" metadata if the refentry + is missing BOTH "source name" and "version" metadata; if it + has one but not the other, we use whichever one it has and + don't report anything as missing + + The above changes were made because testing with some "real world" + source reveals that some authors are intentionally choosing to use + "non preferred" markup for some metadata, and also choosing to + omit "source name" or "version" metadata in there DocBook XML. So + it does no good to give them pedantic reminders about what they + already know... + + Also, changed code to cause "fixme" text to be inserted in output + in particular cases: + + - if we can't manage to find any "source" metadata at all, we + now put fixme text into the output + + - if we can't manage to find any "manual" metadata a all, we + now put fixme text into the output + + The "source" and "manual" metadata is necessary information, so + buy putting the fixme stuff in the output, we alert users to the + need problem of it being missing. + + â— Michael(tm) Smith: refentry.xsl + + When generating manpages output, we no longer report anything if + the refentry source is missing date or pubdate content. In + practice, many users intentionally omit the date from the source + because they explicitly want it to be generated. + + â— Michael(tm) Smith: l10n.xml + + further change needed for switch from no locale to nb. + + â— Michael(tm) Smith: common.xsl + + Added support for orgname in authorgroup. Thanks to Camille + Bégnis. + + â— Michael(tm) Smith: Makefile + + "no" locale is now "nb" + + â— Mauritz Jeanson: stripns.xsl + + Removed the template matching "ng:link|db:link" (in order to make @xlink:show + work with elements). As far as I can tell, this template is no longer needed. + + â— Mauritz Jeanson: entities.ent + + Moved declaration of comment.block.parents entity to common/entities.ent. + + â— Mauritz Jeanson: titles.xsl + + Added an update the fix made in revision 7528 (handling of xref/link in no.anchor.mode mode). + Having xref in title is not a problem as long as the target is not an ancestor element. + Closes bug #1838136. + + Note that an xref that is in a title and whose target is an ancestor element is still not + rendered in the TOC. This could be considered a bug, but on the other hand I cannot really + see the point in having such an xref in a document. + + â— Mauritz Jeanson: titles.xsl + + Added a "not(ancestor::title)" test to work around "too many nested + apply-templates" problems when processing xrefs or links in no.anchor.mode mode. + Hopefully, this closes bug #1811721. + + â— Mauritz Jeanson: titles.xsl + + Removed old template matching "link" in no.anchor.mode mode. + + â— Mauritz Jeanson: titles.xsl + + Process in no.anchor.mode mode with the same template as . + Closes bug #1759205 (Empty link in no.anchor.mode mode). + + â— Mauritz Jeanson: titles.xsl + + In no.anchor.mode mode, do not output anchors for elements that are descendants + of . Previously, having inline elements with @id/@xml:id in <title>s + resulted in anchors both in the TOC and in the main flow. Closes bug #1797492. + +FO + +The following changes have been made to the fo code since the 1.73.2 release. + + â— Mauritz Jeanson: pi.xsl + + Updated documentation for keep-together. + + â— Mauritz Jeanson: task.xsl + + Enabled use of the keep-together PI on task elements. + + â— Robert Stayton: index.xsl + + FOP1 requires fo:wrapper for inline index entries, not fo:inline. + + â— Robert Stayton: index.xsl + + Fixed non-working inline.or.block template for indexterm wrappers. + Add fop1 to list of processors using inline.or.block. + + â— Mauritz Jeanson: table.xsl + + Fixed bug #1891965 (colsep in entytbl not working). + + â— Mauritz Jeanson: titlepage.xsl + + Added support for title in revhistory. Closes bug #1842847. + + â— Mauritz Jeanson: pi.xsl + + Small doc cleanup (dbfo float-type). + + â— Mauritz Jeanson: titlepage.xsl + + Insert commas between multiple copyright holders. + + â— Mauritz Jeanson: autotoc.xsl; division.xsl + + Added modifications to support nested set elements. See bug #1853172. + + â— David Cramer: glossary.xsl + + Added normalize-space to xsl:sorts to avoid missorting of glossterms due to stray leading spaces. + + â— David Cramer: glossary.xsl + + Fixed bug #1854199: glossary.xsl should use the sortas attribute on glossentry + + â— Mauritz Jeanson: inline.xsl + + Added a template for citebiblioid. The hyperlink target is the parent of the referenced biblioid, + and the "hot text" is the biblioid itself enclosed in brackets. + + â— Mauritz Jeanson: inline.xsl + + Moved declaration of comment.block.parents entity to common/entities.ent. + + â— Mauritz Jeanson: docbook.xsl + + Updated message about unmatched element. + + â— Mauritz Jeanson: param.xweb + + Added link to profiling chapter of TCG. + + â— Mauritz Jeanson: refentry.xsl + + Fixed typo (refsynopsysdiv -> refsynopsisdiv). + + â— David Cramer: fop.xsl; fop1.xsl; ptc.xsl; xep.xsl + + Added test to check generate.index param when generating pdf bookmarks + + â— Mauritz Jeanson: graphics.xsl + + Added support for MathML in imagedata. + + â— Michael(tm) Smith: math.xsl + + Removed unnecessary extra test condition in test express that + checks for passivetex. + + â— Michael(tm) Smith: math.xsl + + Don't use fo:instream-foreign-object if we are processing with + passivetex. Closes #1806899. Thanks to Justus Piater. + + â— Mauritz Jeanson: component.xsl + + Added code to output a TOC for an appendix in an article when + generate.toc='article/appendix toc'. Closes bug #1669658. + + â— Dongsheng Song: biblio-iso690.xsl + + Change encoding from "windows-1250" to "UTF-8". + + â— Mauritz Jeanson: pi.xsl + + Updated documentation for dbfo_label-width. + + â— Mauritz Jeanson: lists.xsl + + Added support for the dbfo_label-width PI in calloutlists. + + â— Robert Stayton: biblio.xsl + + Support finding glossary database entries inside bibliodivs. + + â— Robert Stayton: formal.xsl + + Complete support for <?dbfo pgwide="1"?> for informal + elements too. + + â— Mauritz Jeanson: table.xsl + + In the table.block template, added a check for the dbfo_keep-together PI, so that + a table may break (depending on the PI value) at a page break. This was needed + since the outer fo:block that surrounds fo:table has keep-together.within-column="always" + by default, which prevents the table from breaking. Closes bug #1740964 (Titled + table does not respect dbfo PI). + + â— Mauritz Jeanson: pi.xsl + + Added a few missing @role="tcg". + + â— Mauritz Jeanson: inline.xsl + + Use normalize-space() in glossterm comparisons (as in html/inline.xsl). + + â— Mauritz Jeanson: autoidx.xsl + + Removed the [&scope;] predicate from the target variable in the template with name="reference". + This filter was the cause of missing index backlinks when @zone and @type were used on indexterms, + with index.on.type=1. Closes bug #1680836. + + â— Michael(tm) Smith: inline.xsl; xref.xsl; footnote.xsl + + Added capability in FO output for displaying URLs for all + hyperlinks (elements marked up with xlink:href attributes) in the + same way as URLs for ulinks are already handled (which is to say, + either inline or as numbered footnotes). + + Background on this change: + DocBook 5 allows "ubiquitous" linking, which means you can make + any element a hyperlink just by adding an xlink:href attribute to + it, with the value set to an external URL. That's in contrast to + DocBook 4, which only allows you to use specific elements (e.g., + the link and ulink elements) to mark up hyperlinks. + + The existing FO stylesheets have a mechanism for handling display + of URLs for hyperlinks that are marked up with ulink, but they did + not handle display of URLs for elements that were marked up with + xlink:href attributes. This change adds handling for those other + elements, enabling the URLs they link to be displayed either + inline or as numbered footnotes (depending on what values the user + has the ulink.show and ulink.footnotes params set to). + + Note that this change only adds URL display support for elements + that call the simple.xlink template -- which currently is most + (but not all) inline elements. + + This change also moves the URL display handling out of the ulink + template and into a new "hyperlink.url.display" named template; + the ulink template and the simple.xlink named template now both + call the hyperlink.url.display template. + + Warning: In the stylesheet code that determines what footnote + number to assign to each footnote or external hyperlink, there is + an XPath expression for determining whether a particular + xlink:href instance is an external hyperlink; that expression is + necessarily a bit complicated and further testing may reveal that + it doesn't handle all cases as expected -- so some refinements to + it may need to be done later. + + Closes #1785519. Thanks to Ken Morse for reporting and + troubleshooting the problem. + +HTML + +The following changes have been made to the html code since the 1.73.2 release. + + â— Keith Fahlgren: inline.xsl; synop.xsl + + Work to make HTML and XHTML targets more valid + + â— Keith Fahlgren: table.xsl + + Add better handling for tables that have footnotes in the titles + + â— Keith Fahlgren: biblio.xsl + + Add anchors to bibliodivs + + â— Keith Fahlgren: formal.xsl; Makefile; htmltbl.xsl + + Initial checkin/merge of epub target from work provided by Paul Norton of Adobe + and Keith Fahlgren of O'Reilly. + + This change includes new code for generating the XHTML 1.1 target sanely. + + â— Mauritz Jeanson: biblio.xsl + + Added code for creating URLs from biblioids with @class="doi" (representing Digital + Object Identifiers). See FR #1934434 and http://doi.org. + + To do: 1) Add support for FO output. 2) Figure out how @class="doi" should be handled + for bibliorelation, bibliosource and citebiblioid. + + â— Norman Walsh: formal.xsl + + Don't use xsl:copy because it forces the resulting element to be in the same namespace as the source element; in the XHTML stylesheets, that's wrong. But the HTML-to-XHTML converter does the right thing with literal result elements, so use one of them. + + â— Michael(tm) Smith: Makefile + + Added checks and hacks to various makefiles to enable building + under Cygwin. This stuff is ugly and maybe not worth the mess and + trouble, but does seem to work as expected and not break anything + else. + + â— Michael(tm) Smith: docbook.xsl + + added "exslt" namespace binding to html/docbook.xsl file (in + addition to existing "exsl" binding. reason is because lack of it + seems to cause processing problems when using the profiled + version of the stylsheet + + â— Norman Walsh: chunk-common.xsl + + Rename link + + â— Mauritz Jeanson: table.xsl + + Added a fix to make rowsep apply to the last row of thead in entrytbl. + + â— Michael(tm) Smith: synop.xsl + + Simplified and streamlined handling of output for ANSI-style + funcprototype output, to correct a problem that was causing type + data to be lost in the output parameter definitions. For example, + for an instance like this: + <paramdef>void *<parameter>dataptr</parameter>[]</paramdef> + ... the brackets (indicating an array type) were being dropped. + + â— Michael(tm) Smith: synop.xsl + + Changed HTML handling of K&R-style paramdef output. The parameter + definitions are no longer output in a table (though the prototype + still is). The reason for the change is that the + kr-tabular-funcsynopsis-mode template was causing type data to be + lost in the output parameter definitions. For example, for an + instance like this: + <paramdef>void *<parameter>dataptr</parameter>[]</paramdef> + ... the brackets (indicating an array type) were being dropped. + The easiest way to deal with the problem is to not try to chop up + the parameter definitions and display them in table format, but to + instead just output them as-is. May not look quite as pretty, but + at least we can be sure no information is being lost... + + â— Michael(tm) Smith: pi.xsl + + updated wording of doc for funcsynopsis-style PI + + â— Michael(tm) Smith: param.xweb; param.ent; synop.xsl + + Removed the funcsynopsis.tabular.threshold param. It's no longer + being used in the code and hasn't been since mid 2006. + + â— Mauritz Jeanson: graphics.xsl + + Added support for the img.src.path parameter for SVG graphics. Closes bug #1888169. + + â— Mauritz Jeanson: chunk-common.xsl + + Added missing space. + + â— Norman Walsh: component.xsl + + Fix bug where component titles inside info elements were not handled properly + + â— Michael(tm) Smith: pi.xsl + + Moved dbhtml_stop-chunking embedded doc into alphabetical order, + fixed text of TCG section it see-also'ed. + + â— David Cramer: pi.xsl + + Added support for <?dbhtml stop-chunking?> processing instruction + + â— David Cramer: chunk-common.xsl; pi.xsl + + Added support for <?dbhtml stop-chunking?> processing instruction + + â— David Cramer: glossary.xsl + + Fixed bug #1854199: glossary.xsl should use the sortas attribute on glossentry. Also added normalize-space to avoid missorting due to stray leading spaces. + + â— Mauritz Jeanson: inline.xsl + + Added a template for citebiblioid. The hyperlink target is the parent of the referenced biblioid, + and the "hot text" is the biblioid itself enclosed in brackets. + + â— Mauritz Jeanson: inline.xsl + + Added support for @xlink:show in the simple.xlink template. The "new" and "replace" + values are supported (corresponding to values of "_blank" and "_top" for the + ulink.target parameter). I have assumed that @xlink:show should override ulink.target + for external URI links. This closes bugs #1762023 and #1727498. + + â— Mauritz Jeanson: inline.xsl + + Moved declaration of comment.block.parents entity to common/entities.ent. + + â— Mauritz Jeanson: param.xweb + + Added link to profiling chapter of TCG. + + â— Dongsheng Song: biblio-iso690.xsl + + Change encoding from "windows-1250" to "UTF-8". + + â— Robert Stayton: biblio.xsl + + Add support in biblio collection to entries in bibliodivs. + + â— Mauritz Jeanson: pi.xsl + + Added missing @role="tcg". + + â— Mauritz Jeanson: chunk-common.xsl; titlepage.xsl + + Refactored legalnotice/revhistory chunking, so that the use.id.as.filename + parameter as well as the dbhtml_filename PI are taken into account. A new named + template in titlepage.xsl is used to compute the filename. + + â— Mauritz Jeanson: chunk-common.xsl; titlepage.xsl + + An update to the fix for bug #1790495 (r7433): + The "ln-" prefix is output only when the legalnotice doesn't have an + @id/@xml:id, in which case the stylesheets generate an ID value, + resulting in a filename like "ln-7e0fwgj.html". This is useful because + without the prefix, you wouldn't know that the file contained a legalnotice. + The same logic is also applied to revhistory, using an "rh-" prefix. + + â— Mauritz Jeanson: autoidx.xsl + + Removed the [&scope;] predicate from the target variable in the template with name="reference". + This filter was the cause of missing index backlinks when @zone and @type were used on indexterms, + with index.on.type=1. Closes bug #1680836. + + â— Mauritz Jeanson: titlepage.xsl + + Added 'ln-' prefix to the name of the legalnotice chunk, in order to match the + <link href"..."> that is output by make.legalnotice.head.links (chunk-common.xsl). + Modified the href attribute on the legalnotice link. + Closes bug #1790495. + +Manpages + +The following changes have been made to the manpages code since the 1.73.2 +release. + + â— Michael(tm) Smith: other.xsl + + slightly adjusted spacing around admonition markers + + â— Michael(tm) Smith: refentry.xsl; utility.xsl + + make sure refsect3 titles are preceded by a line of space, and + make the indenting of their child content less severe + + â— Michael(tm) Smith: block.xsl + + only indent verbatim environments in TTY output, not in non-TTY/PS + + â— Michael(tm) Smith: block.xsl + + made another adjustment to correct vertical alignment of admonition marker + + â— Michael(tm) Smith: block.xsl; other.xsl + + Adjusted/corrected alignment of adominition marker in PS/non-TTY output. + + â— Michael(tm) Smith: endnotes.xsl + + For PS/non-TTY output, display footnote/endnote numbers in + superscript. + + â— Michael(tm) Smith: table.xsl; synop.xsl; utility.xsl + + Changed handling of hanging indents for cmdsynopsis, funcsynopsis, + and synopfragment such that they now look correct in non-TTY/PS + output. We now use the groff \w escape to hang by the actual width + -- in the current font -- of the command, funcdef, or + synopfragment references number (as opposed to hanging by the + number of characters). This rendering in TTY output remains the + same, since the width in monospaced TTY output is the same as the + number of characters. + + Also, created new synopsis-block-start and synopsis-block-end + templates to use for cmdsynopsis and funcsynopsis instead of the + corresponding verbatim-* templates. + + Along with those changes, also corrected a problem that caused the + content of synopfragment to be dropped, and made a + vertical-spacing change to adjust spacing around table titles and + among sibling synopfragment instances. + + â— Michael(tm) Smith: other.xsl + + use common l10.language.name template to retrieve English-language name + + â— Michael(tm) Smith: synop.xsl; inline.xsl + + added comment in code explaining why we don't put filename output + in italic (despite the fact that man guidelines say we should) + + â— Michael(tm) Smith: inline.xsl + + put filename output in monospace instead of italic + + â— Michael(tm) Smith: synop.xsl + + put cmdsynopsis in monospace + + â— Michael(tm) Smith: inline.xsl + + removed template match for literal. template matches for monospace + inlines are all imported from the HTML stylesheet + + â— Michael(tm) Smith: block.xsl + + don't indent verbatim environments that are descendants of + refsynopsisdiv, not put backgrounds behind them + + â— Michael(tm) Smith: inline.xsl + + set output of the literal element in monospace. this causes all + inline monospace instances in the git man pages to be set in + monospace (since DocBook XML source for git docs is generated with + asciidoc and asciidoc consistently outputs only <literal> for + inline monospace (not <command> or <code> or anything else). + Of course this only affects non-TTY output... + + â— Michael(tm) Smith: utility.xsl + + Added inline.monoseq named template. + + â— Michael(tm) Smith: utility.xsl + + don't bother using a custom register to store the previous + font-family value when setting blocks of text in code font; just + use \F[] .fam with no arg to switch back + + â— Michael(tm) Smith: endnotes.xsl + + put links in blue in PS output (note that this matches how groff + renders content marked up with the .URL macro) + + â— Michael(tm) Smith: endnotes.xsl; param.xweb; param.ent + + removed man.links.are.underlined and added man.font.links. Also, + changed the default font formatting for links to bold. + + â— Michael(tm) Smith: endnotes.xsl; param.xweb; param.ent + + Added new param man.base.url.for.relative.links .. specifies a + base URL for relative links (for ulink, @xlink:href, imagedata, + audiodata, videodata) shown in the generated NOTES section of + man-page output. The value of man.base.url.for.relative.links is + prepended to any relative URI that is a value of ulink url, + xlink:href, or fileref attribute. + + If you use relative URIs in link sources in your DocBook refentry + source, and you leave man.base.url.for.relative.links unset, the + relative links will appear "as is" in the NOTES section of any + man-page output generated from your source. That's probably not + what you want, because such relative links are only usable in the + context of HTML output. So, to make the links meaningful and + usable in the context of man-page output, set a value for + man.base.url.for.relative.links that points + to the online version of HTML output generated from your DocBook + refentry source. For example: + + <xsl:param name="man.base.url.for.relative.links" + >http://www.kernel.org/pub/software/scm/git/docs/</xsl:param> + + â— Michael(tm) Smith: info.xsl + + If a source refentry contains a Documentation or DOCUMENTATION + section, don't report it as having missing AUTHOR information. + Also, if missing a contrib/personblurb for a person or org, report + pointers to http://docbook.sf.net/el/personblurb and to + http://docbook.sf.net/el/contrib + + â— Michael(tm) Smith: info.xsl + + If we encounter an author|editor|othercredit instance that lacks a + personblurb or contrib, report it to the user (because that means + we have no information about that author|editor|othercredit to + display in the generated AUTHOR|AUTHORS section...) + + â— Michael(tm) Smith: info.xsl; docbook.xsl; other.xsl + + if we can't find any usable author data, emit a warning and insert + a fixme in the output + + â— Michael(tm) Smith: info.xsl + + fixed bug in indenting of output for contrib instances in AUTHORS + section. Thanks to Daniel Leidert and the fglrx docs for exposing + the bug. + + â— Michael(tm) Smith: block.xsl + + for a para or simpara that is the first child of a callout, + suppress the .sp or .PP that would normally be output (because in + those cases, the output goes into a table cell, and the .sp or .PP + markup causes a spurious linebreak before it when displayed + + â— Michael(tm) Smith: lists.xsl + + Added support for rendering co callouts and calloutlist instances. + So you can now use simple callouts -- marking up programlisting + and such with co instances -- and have the callouts displayed in + man-page output. ("simple callouts" means using co@id and + callout@arearefs pointing to co@id instances; in man/roff output, + we can't/don't support markup that uses areaset and area) + + â— Michael(tm) Smith: block.xsl + + only put a line of space after a verbatim if it's followed by a + text node or a paragraph + + â— Michael(tm) Smith: utility.xsl + + put verbatim environments in slightly smaller font in non-TTY + output + + â— Michael(tm) Smith: lists.xsl + + minor whitespace-only reformatting of lists.xsl source + + â— Michael(tm) Smith: lists.xsl + + Made refinements/fixes to output of orderedlist and itemizedlist + -- in part, to get mysql man pages to display correctly. This + change causes a "\c" continuation marker to be added between + listitem markers and contents (to ensure that the content remains + on the same line as the marker when displayed) + + â— Michael(tm) Smith: block.xsl + + put a line of vertical space after all verbatim output that has + sibling content following it (not just if that sibling content is + a text node) + + â— Michael(tm) Smith: block.xsl + + refined spacing around titles for admonitions + + â— Michael(tm) Smith: block.xsl; other.xsl + + Deal with case of verbatim environments that have a linebreak + after the opening tag. Assumption is that users generally don't + want that linebreak to appear in output, so we do some groff + hackery to mess with vertical spacing and close the space. + + â— Michael(tm) Smith: inline.xsl + + indexterm instances now produce groff comments like this: + + .\" primary: secondary: tertiary + + remark instances, if non-empty, now produce groff comments + + â— Michael(tm) Smith: charmap.groff.xsl; other.xsl + + convert no-break space character to groff "\ \&" (instead of just + "\ "). the reason is that if a space occurs at the end of a line, + our processing causes it to be eaten. a real-world case of this is + the mysql(1) man page. appending the "\&" prevents that + + â— Michael(tm) Smith: block.xsl + + output "sp" before simpara output, not after it (outputting it + after results in undesirable whitespace in particular cases; for + example, in the hg/mercurial docs + + â— Michael(tm) Smith: table.xsl; synop.xsl; utility.xsl + + renamed from title-preamble to pinch.together and replaced "sp -1" + between synopsis fragments with call to pinch.together instead + + â— Michael(tm) Smith: table.xsl + + use title-preamble template for table titles (instead of "sp -1" + hack), and "sp 1" after all tables (instead of just "sp" + + â— Michael(tm) Smith: utility.xsl + + created title-preamble template for suppressing line spacing after + headings + + â— Michael(tm) Smith: info.xsl + + further refinement of indenting in AUTHORS section + + â— Michael(tm) Smith: block.xsl; other.xsl + + refined handling of admonitions + + â— Michael(tm) Smith: lists.xsl + + Use RS/RE in another place where we had IP "" + + â— Michael(tm) Smith: info.xsl + + Replace (ab)use of IP with "sp -1" in AUTHORS section with RS/RE + instead. + + â— Michael(tm) Smith: table.xsl; synop.xsl; info.xsl + + changed all instances of ".sp -1n" to ".sp -1" + + â— Michael(tm) Smith: other.xsl + + add extra line before SH heads only in non-TTY output + + â— Michael(tm) Smith: block.xsl + + Reworked output for admonitions (caution, important, note, tip, + warning). In TTY output, admonitions now get indented. In non-TTY + output, a colored marker (yellow) is displayed next to them. + + â— Michael(tm) Smith: other.xsl + + Added BM/EM macros for putting a colored marker in margin next to + a block of text. + + â— Michael(tm) Smith: utility.xsl + + created make.bold.title template by moving title-bolding part out + from nested-section-title template. This allows the bolding to + also be used by the template for formatting admonitions + + â— Michael(tm) Smith: info.xsl + + put .br before copyright contents to prevent them from getting run in + + â— Michael(tm) Smith: refentry.xsl; other.xsl; utility.xsl + + made point size of output for Refsect2 and Refsect3 heads bigger + + â— Michael(tm) Smith: other.xsl + + put slightly more space between SH head and underline in non-TTY + output + + â— Michael(tm) Smith: param.xweb; param.ent; other.xsl + + Added the man.charmap.subset.profile.english parameter and refined + the handling of charmap subsets to differentiate between English + and non-English source. + + This way charmap subsets are now handled is this: + + If the value of the man.charmap.use.subset parameter is non-zero, + and your DocBook source is not written in English (that is, if its + lang or xml:lang attribute has a value other than en), then the + character-map subset specified by the man.charmap.subset.profile + parameter is used instead of the full roff character map. + + Otherwise, if the lang or xml:lang attribute on the root element + in your DocBook source or on the first refentry element in your + source has the value en or if it has no lang or xml:lang + attribute, then the character-map subset specified by the + man.charmap.subset.profile.english parameter is used instead of + man.charmap.subset.profile. + + The difference between the two subsets is that + man.charmap.subset.profile provides mappings for characters in + Western European languages that are not part of the Roman + (English) alphabet (ASCII character set). + + â— Michael(tm) Smith: other.xsl + + Various updates, mainly related to uppercasing SH titles: + + - added a "Language: " metadata line to the top comment area of + output man pages, to indicate the language the page is in + + - added a "toupper" macro of doing locale-aware uppercasing of + SH titles and cross-references to SH titles; the mechanism + relies on the uppercase.alpha and lowercase.alpha DocBook + gentext keys to do locale-aware uppercasing based on the + language the page is written in + + - added a "string.shuffle" template, which provides a library + function for "shuffling" two strings together into a single + string; it takes the first character for the first string, the + first character from second string, etc. The only current use + for it is to generate the argument for the groff tr request + that does string uppercasing. + + - added make.tr.uppercase.arg and make.tr.normalcase.arg named + templates for use in generating groff code for uppercasing and + "normal"-casing SH titles + + - made the BB/BE "background drawing" macros have effect only in + non-TTY output + + - output a few comments in the top part of source + + â— Michael(tm) Smith: utility.xsl + + removed some leftover kruft + + â— Michael(tm) Smith: refentry.xsl + + To create the name(s) for each man page, we now replace any spaces + in the refname(s) with underscores. This ensures that tools like + lexgrog(1) will be able to parse the name (lexgrog won't parse + names that contain spaces). + + â— Michael(tm) Smith: docbook.xsl + + Put a comment into source of man page to indicate where the main + content starts. (We now have a few of macro definitions at the + start of the source, so putting this comment in helps those that + might be viewing the source.) + + â— Michael(tm) Smith: refentry.xsl + + refined mechanism for generating SH titles + + â— Michael(tm) Smith: charmap.groff.xsl + + Added zcaron, Zcaron, scaron, and Scaron to the groff character map. + This means that generated Finnish man pages will no longer contain + any raw accented characters -- they'll instead by marked up with + groff escapes. + + â— Michael(tm) Smith: other.xsl; utility.xsl + + corrected a regression I introduced about a year ago that caused + dots to be output just as "\." -- instead needs to be "\&." (which + is what it will be now, after this change) + + â— Michael(tm) Smith: refentry.xsl + + Changed backend handling for generating titles for SH sections and + for cross-references to those sections. This should have no effect + on TTY output (behavior should remain the same hopefully) but + results in titles in normal case (instead of uppercase) in PS + output. + + â— Michael(tm) Smith: info.xsl + + use make.subheading template to make subheadings for AUTHORS and + COPYRIGHT sections (instead of harcoding roff markup) + + â— Michael(tm) Smith: block.xsl + + put code font around programlisting etc. + + â— Michael(tm) Smith: synop.xsl; docbook.xsl + + embed custom macro definitions in man pages, plus wrap synopsis in + code font + + â— Michael(tm) Smith: endnotes.xsl + + use the make.subheading template to generated SH subheading for + endnotes section. + + â— Michael(tm) Smith: lists.xsl + + Added some templates for generating if-then-else conditional + markup in groff, so let's use those instead of hard-coding it in + multiple places... + + â— Michael(tm) Smith: other.xsl; utility.xsl + + Initial checkin of some changes related to making PS/PDF output + from "man -l -Tps" look better. The current changes: + + - render synopsis and verbatim sections in a monospace/code font + + - put a light-grey background behind all programlisting, screen, + and literallayout instances + + - prevent SH heads in PS output from being rendered in uppercase + (as they are in console output) + + - also display xrefs to SH heads in PS output in normal case + (instead of uppercase) + + - draw a line under SH heads in PS output + + The changes made to the code to support the above features were: + + - added some embedded/custom macros: one for conditionally + upper-casing SH x-refs, one for redefining the SH macro + itself, with some conditional handling for PS output, and + finally a macro for putting a background/screen (filled box) + around a block of text (e.g., a program listing) in PS output + + - added utility templates for wrapping blocks of text in code + font; also templates for inline code font + + â— Robert Stayton: refentry.xsl + + refpurpose nodes now get apply-templates instead of just normalize-space(). + + â— Michael(tm) Smith: lists.xsl + + Fixed alignment of first lined of text for each listitem in + orderedlist output for TTY. Existing code seemed to have been + causing an extra undesirable space to appear. + + â— Michael(tm) Smith: lists.xsl + + Wrapped some roff conditionals around roff markup for orderedlist + and itemizedlist output, so that the lists look acceptable in PS + output as well as TTY. + + â— Michael(tm) Smith: pi.xsl; synop.xsl; param.xweb; param.ent + + Added the man.funcsynopsis.style parameter. Has the same effect in + manpages output as the funcsynopsis.style parameter has in HTML + output -- except that its default value is 'ansi' instead of 'kr'. + + â— Michael(tm) Smith: synop.xsl + + Reworked handling of K&R funcprototype output. It no longer relies + on the HTML kr-tabular templates, but instead just does direct + transformation to roff. For K&R output, it displays the paramdef + output in an indented list following the prototype. + + â— Michael(tm) Smith: synop.xsl + + Properly integrated handling for K&R output into manpages + stylesheet. The choice between K&R output and ANSI output is + currently controlled through use of the (HTML) funcsynopsis.style + parameter. Note that because the mechanism does currently rely on + funcsynopsis.style, the default in manpages output is now K&R + (because that's the default of that param). But I suppose I ought + to create a man.funcsynopsis.style and make the default for that + ANSI (to preserve the existing default behavior). + + â— Michael(tm) Smith: docbook.xsl + + added manpages/pi.xsl file + + â— Michael(tm) Smith: .cvsignore; pi.xsl + + Added "dbman funcsynopsis-style" PI and incorporated it into the + doc build. + + â— Michael(tm) Smith: refentry.xsl + + Fixed regression that caused an unescaped dash to be output + between refname and refpurpose content. Closes bug #1894244. + Thanks to Daniel Leidert. + + â— Michael(tm) Smith: other.xsl + + Fixed problem with dots being escaped in filenames of generated + man files. Closes #1827195. Thanks to Daniel Leidert. + + â— Michael(tm) Smith: inline.xsl + + Added support for processing structfield (was appearing in roff + output surrounded by HTML <em> tags; fixed so that it gets roff + ital markup). Closes bug #1858329. Thanks to Sam Varshavchik. + +Epub + +The following changes have been made to the epub code since the 1.73.2 release. + + â— Keith Fahlgren: bin/spec/README; bin/spec/epub_realbook_spec.rb + + 'Realbook' spec now passes + + â— Keith Fahlgren: bin/dbtoepub; README; bin/spec/README; bin/lib/docbook.rb; + bin/spec/epub_r⋯ + + Very primitive Windows support for dbtoepub reference implementation; README for running tests and for the .epub target in general; shorter realbook test document (still fails for now) + + â— Keith Fahlgren: bin/dbtoepub; bin/spec/epub_regressions_spec.rb; bin/lib/ + docbook.rb; bin/s⋯ + + Changes to OPF spine to not duplicate idrefs for documents with parts not at the root; regression specs for same + + â— Keith Fahlgren: docbook.xsl + + Fixing linking to cover @id, distinct from other needs of cover-image-id (again, thanks to Martin Goerner) + + â— Keith Fahlgren: docbook.xsl + + Updating the title of the toc element in the guide to be more explicit (thanks to Martin Goerner) + + â— Keith Fahlgren: bin/spec/examples/amasque_exploded/content.opf; bin/spec/ + examples/amasque_⋯ + + Initial checkin/merge of epub target from work provided by Paul Norton of Adobe + and Keith Fahlgren of O'Reilly. + + â— Keith Fahlgren: docbook.xsl + + == General epub test support + + $ spec -O ~/.spec.opts spec/epub_spec.rb + + DocBook::Epub + - should be able to be created + - should fail on a nonexistent file + - should be able to render to a file + - should create a file after rendering + - should have the correct mimetype after rendering + - should be valid .epub after rendering an article + - should be valid .epub after rendering an article without sections + - should be valid .epub after rendering a book + - should be valid .epub after rendering a book even if it has one graphic + - should be valid .epub after rendering a book even if it has many graphics + - should be valid .epub after rendering a book even if it has many duplicated graphics + - should report an empty file as invalid + - should confirm that a valid .epub file is valid + - should not include PDFs in rendered epub files as valid image inclusions + - should include a TOC link in rendered epub files for <book>s + + Finished in 20.608395 seconds + + 15 examples, 0 failures + + + == Verbose epub test coverage against _all_ of the testdocs + + Fails on only (errors truncated): + 1) + 'DocBook::Epub should be able to render a valid .epub for the test document /Users/keith/work/docbook-dev/trunk/xsl/epub/bin/spec/testdocs/calloutlist.003.xml [30]' FAILED + 'DocBook::Epub should be able to render a valid .epub for the test document /Users/keith/work/docbook-dev/trunk/xsl/epub/bin/spec/testdocs/cmdsynopsis.001.xml [35]' FAILED + .... + + Finished in 629.89194 seconds + + 224 examples, 15 failures + + 224 examples, 15 failures yields 6% failure rate + +HTMLHelp + +The following changes have been made to the htmlhelp code since the 1.73.2 +release. + + â— Mauritz Jeanson: htmlhelp-common.xsl + + Added <xsl:with-param name="quiet" select="$chunk.quietly"/> to calls to + the write.chunk, write.chunk.with.doctype, and write.text.chunk templates. + This makes chunk.quietly=1 suppress chunk filename messages also for help + support files (which seems to be what one would expect). See bug #1648360. + +Eclipse + +The following changes have been made to the eclipse code since the 1.73.2 +release. + + â— David Cramer: eclipse.xsl + + Use sortas attributes (if they exist) when sorting indexterms + + â— David Cramer: eclipse.xsl + + Added support for indexterm/see in eclipse index.xml + + â— Mauritz Jeanson: eclipse.xsl + + Added <xsl:with-param name="quiet" select="$chunk.quietly"/> + to helpidx template. + + â— David Cramer: eclipse.xsl + + Generate index.xml file and add related goo to plugin.xml file. Does not yet support see and seealso. + + â— Mauritz Jeanson: eclipse.xsl + + Added <xsl:with-param name="quiet" select="$chunk.quietly"/> to calls to + the write.chunk, write.chunk.with.doctype, and write.text.chunk templates. + This makes chunk.quietly=1 suppress chunk filename messages also for help + support files (which seems to be what one would expect). See bug #1648360. + +JavaHelp + +The following changes have been made to the javahelp code since the 1.73.2 +release. + + â— Mauritz Jeanson: javahelp.xsl + + Added <xsl:with-param name="quiet" select="$chunk.quietly"/> to calls to + the write.chunk, write.chunk.with.doctype, and write.text.chunk templates. + This makes chunk.quietly=1 suppress chunk filename messages also for help + support files (which seems to be what one would expect). See bug #1648360. + +Roundtrip + +The following changes have been made to the roundtrip code since the 1.73.2 +release. + + â— Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl + + fix table/cell borders for wordml, fix formal figure, add emphasis-strong + + â— Mauritz Jeanson: supported.xml + + Changed @cols to 5. + + â— Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; template.xml + + added pubdate, fixed metadata handling in biblioentry + + â— Steve Ball: supported.xml + + Added support for edition. + + â— Steve Ball: docbook-pages.xsl; wordml-blocks.xsl; docbook.xsl; wordml.xsl; + pages-normalise⋯ + + Removed stylesheets for old, deprecated conversion method. + + â— Steve Ball: specifications.xml; dbk2ooo.xsl; blocks2dbk.xsl; dbk2pages.xsl; + blocks2dbk.dtd⋯ + + Added support for Open Office, added edition element, improved list and table support in Word and Pages + + â— Steve Ball: normalise-common.xsl; blocks2dbk.xsl; dbk2pages.xsl; + template-pages.xml; templ⋯ + + Fixed bug in WordML table handling, improved table handling for Pages 08, synchronised WordML and Pages templates. + + â— Steve Ball: normalise-common.xsl; blocks2dbk.xsl; wordml2normalise.xsl; + dbk2wp.xsl + + fix caption, attributes + + â— Steve Ball: specifications.xml; blocks2dbk.xsl; wordml2normalise.xsl; + blocks2dbk.dtd; temp⋯ + + Fixes to table and list handling + + â— Steve Ball: blocks2dbk.xsl + + added support for explicit emphasis character styles + + â— Steve Ball: wordml2normalise.xsl + + added support for customisation in image handling + + â— Steve Ball: blocks2dbk.xsl + + Added inlinemediaobject support for metadata. + + â— Steve Ball: normalise-common.xsl; blocks2dbk.xsl; template.xml; + dbk2wordml.xsl; dbk2wp.xsl + + Added support file. Added style locking. Conversion bug fixes. + +Slides + +The following changes have been made to the slides code since the 1.73.2 +release. + + â— Michael(tm) Smith: fo/Makefile; html/Makefile + + Added checks and hacks to various makefiles to enable building + under Cygwin. This stuff is ugly and maybe not worth the mess and + trouble, but does seem to work as expected and not break anything + else. + + â— Jirka Kosek: html/plain.xsl + + Added support for showing foil number + +Website + +The following changes have been made to the website code since the 1.73.2 +release. + + â— Michael(tm) Smith: extensions/saxon64/.classes/.gitignore; extensions/ + xalan2/.classes/com/⋯ + + renamed a bunch more .cvsignore files to .gitignore (to facilitate use of git-svn) + +Params + +The following changes have been made to the params code since the 1.73.2 +release. + + â— Keith Fahlgren: epub.autolabel.xml + + New parameter for epub, epub.autolabel + + â— Mauritz Jeanson: table.frame.border.color.xml; table.cell.padding.xml; + table.cell.border.t⋯ + + Added missing refpurposes and descriptions. + + â— Keith Fahlgren: ade.extensions.xml + + Extensions to support Adobe Digital Editions extensions in .epub output. + + â— Mauritz Jeanson: fop.extensions.xml; fop1.extensions.xml + + Clarified that fop1.extensions is for FOP 0.90 and later. Version 1 is not here yet... + + â— Michael(tm) Smith: man.links.are.underlined.xml; + man.endnotes.list.enabled.xml; man.font.l⋯ + + removed man.links.are.underlined and added man.font.links. Also, + changed the default font formatting for links to bold. + + â— Michael(tm) Smith: man.base.url.for.relative.links.xml + + Added new param man.base.url.for.relative.links .. specifies a + base URL for relative links (for ulink, @xlink:href, imagedata, + audiodata, videodata) shown in the generated NOTES section of + man-page output. The value of man.base.url.for.relative.links is + prepended to any relative URI that is a value of ulink url, + xlink:href, or fileref attribute. + + If you use relative URIs in link sources in your DocBook refentry + source, and you leave man.base.url.for.relative.links unset, the + relative links will appear "as is" in the NOTES section of any + man-page output generated from your source. That's probably not + what you want, because such relative links are only usable in the + context of HTML output. So, to make the links meaningful and + usable in the context of man-page output, set a value for + man.base.url.for.relative.links that points + to the online version of HTML output generated from your DocBook + refentry source. For example: + + <xsl:param name="man.base.url.for.relative.links" + >http://www.kernel.org/pub/software/scm/git/docs/</xsl:param> + + â— Michael(tm) Smith: man.string.subst.map.xml + + squeeze .sp\n.sp into a single .sp (to prevent a extra, spurious + line of whitespace from being inserted after programlisting etc. + in certain cases) + + â— Michael(tm) Smith: refentry.manual.fallback.profile.xml; + refentry.source.fallback.profile.⋯ + + don't use refmiscinfo@class=date value as fallback for refentry + "source" or "manual" metadata fields + + â— Michael(tm) Smith: man.charmap.subset.profile.xml; man.charmap.enabled.xml; + man.charmap.su⋯ + + made some further doc tweaks related to the + man.charmap.subset.profile.english param + + â— Michael(tm) Smith: man.charmap.subset.profile.xml; man.charmap.enabled.xml; + man.charmap.su⋯ + + Added the man.charmap.subset.profile.english parameter and refined + the handling of charmap subsets to differentiate between English + and non-English source. + + This way charmap subsets are now handled is this: + + If the value of the man.charmap.use.subset parameter is non-zero, + and your DocBook source is not written in English (that is, if its + lang or xml:lang attribute has a value other than en), then the + character-map subset specified by the man.charmap.subset.profile + parameter is used instead of the full roff character map. + + Otherwise, if the lang or xml:lang attribute on the root element + in your DocBook source or on the first refentry element in your + source has the value en or if it has no lang or xml:lang + attribute, then the character-map subset specified by the + man.charmap.subset.profile.english parameter is used instead of + man.charmap.subset.profile. + + The difference between the two subsets is that + man.charmap.subset.profile provides mappings for characters in + Western European languages that are not part of the Roman + (English) alphabet (ASCII character set). + + â— Michael(tm) Smith: man.charmap.subset.profile.xml + + Added to default charmap used by manpages: + + - the "letters" part of the 'C1 Controls And Latin-1 Supplement + (Latin-1 Supplement)' Unicode block + - Latin Extended-A block (but not all of the characters from + that block have mappings in groff, so some of them are still + passed through as-is) + + The effects of this change are that in man pages generated for + most Western European languages and for Finnish, all characters + not part of the Roman alphabet are (e.g., "accented" characters) + are converted to groff escapes. + + Previously, by default we passed through those characters as is + (and users needed to use the full charmap if they wanted to have + those characters converted). + + As a result of this change, man pages generated for Western + European languages will be viewable in some environments in which + they are not viewable if the "raw" non-Roman characters are in them. + + â— Mauritz Jeanson: generate.legalnotice.link.xml; + generate.revhistory.link.xml + + Added information on how the filename is computed. + + â— Mauritz Jeanson: default.table.width.xml + + Clarified PI usage. + + â— Michael(tm) Smith: man.funcsynopsis.style.xml + + Added the man.funcsynopsis.style parameter. Has the same effect in + manpages output as the funcsynopsis.style parameter has in HTML + output -- except that its default value is 'ansi' instead of 'kr'. + + â— Michael(tm) Smith: funcsynopsis.tabular.threshold.xml + + Removed the funcsynopsis.tabular.threshold param. It's no longer + being used in the code and hasn't been since mid 2006. + + â— Mauritz Jeanson: table.properties.xml + + Set keep-together.within-column to "auto". This seems to be the most sensible + default value for tables. + + â— Mauritz Jeanson: informal.object.properties.xml; + admon.graphics.extension.xml; informalequ⋯ + + Several small documentation fixes. + + â— Mauritz Jeanson: manifest.in.base.dir.xml + + Wording fixes. + + â— Mauritz Jeanson: header.content.properties.xml; + footer.content.properties.xml + + Added refpurpose. + + â— Mauritz Jeanson: ulink.footnotes.xml; ulink.show.xml + + Updated for DocBook 5. + + â— Mauritz Jeanson: index.method.xml; glossterm.auto.link.xml + + Spelling and wording fixes. + + â— Mauritz Jeanson: callout.graphics.extension.xml + + Clarifed available graphics formats and extensions. + + â— Mauritz Jeanson: footnote.sep.leader.properties.xml + + Corrected refpurpose. + + â— Jirka Kosek: footnote.properties.xml + + Added more properties which make it possible to render correctly footnotes placed inside verbatim elements. + + â— Mauritz Jeanson: img.src.path.xml + + img.src.path works with inlinegraphic too. + + â— Mauritz Jeanson: saxon.character.representation.xml + + Added TCG link. + + â— Mauritz Jeanson: img.src.path.xml + + Updated description of img.src.path. Bug #1785224 revealed that + there was a risk of misunderstanding how it works. + +Profiling + +The following changes have been made to the profiling code since the 1.73.2 +release. + + â— Jirka Kosek: xsl2profile.xsl + + Added new rules to profile all content generated by HTML Help (including alias files) + + â— Robert Stayton: profile-mode.xsl + + use mode="profile" instead of xsl:copy-of for attributes so + they can be more easily customized. + +Tools + +The following changes have been made to the tools code since the 1.73.2 +release. + + â— Michael(tm) Smith: make/Makefile.DocBook + + various changes and additions to support making with asciidoc as + an input format + + â— Michael(tm) Smith: make/Makefile.DocBook + + make dblatex the default PDF maker for the example makefile + + â— Michael(tm) Smith: xsl/build/html2roff.xsl + + Reworked handling of K&R funcprototype output. It no longer relies + on the HTML kr-tabular templates, but instead just does direct + transformation to roff. For K&R output, it displays the paramdef + output in an indented list following the prototype. + + â— Mauritz Jeanson: xsl/build/make-xsl-params.xsl + + Made attribute-sets members of the param list. This enables links to attribute-sets in the + reference documentation. + + â— Michael(tm) Smith: xsl/build/html2roff.xsl + + use .BI handling in K&R funsynopsis output for manpages, just as + we do already of ANSI output + + â— Michael(tm) Smith: xsl/build/html2roff.xsl + + Implemented initial support for handling tabular K&R output of + funcprototype in manpages output. Accomplished by adding more + templates to the intermediate HTML-to-roff stylesheet that the + build uses to create the manpages/html-synop.xsl stylesheet. + + â— Michael(tm) Smith: xsl/build/doc-link-docbook.xsl + + Made the xsl/tools/xsl/build/doc-link-docbook.xsl stylesheet + import profile-docbook.xsl, so that we can do profiling of release + notes. Corrected some problems in the target for the release-notes + HTML build. + +Extensions + +The following changes have been made to the extensions code since the 1.73.2 +release. + + â— Keith Fahlgren: Makefile + + Use DOCBOOK_SVN variable everywhere, please; build with PDF_MAKER + + â— Michael(tm) Smith: Makefile + + moved extensions build targets from master xsl/Makefile to + xsl/extensions/Makefile + + â— Michael(tm) Smith: .cvsignore + + re-adding empty extensions subdir + +XSL-Saxon + +The following changes have been made to the xsl-saxon code since the 1.73.2 +release. + + â— Michael(tm) Smith: VERSION + + bring xsl2, xsl-saxon, and xsl-xalan VERSION files up-to-date with + recent change to snapshot build infrastructure + + â— Michael(tm) Smith: nbproject/build-impl.xml; nbproject/project.properties + + Changed hard-coded file references in "clean" target to variable + references. Closes #1792043. Thanks to Daniel Leidert. + + â— Michael(tm) Smith: VERSION; Makefile + + Did post-release wrap-up of xsl-saxon and xsl-xalan dirs + + â— Michael(tm) Smith: nbproject/build-impl.xml; VERSION; Makefile; test + + More tweaks to get release-ready + +XSL-Xalan + +The following changes have been made to the xsl-xalan code since the 1.73.2 +release. + + â— Michael(tm) Smith: VERSION + + bring xsl2, xsl-saxon, and xsl-xalan VERSION files up-to-date with + recent change to snapshot build infrastructure + + â— Michael(tm) Smith: nbproject/build-impl.xml + + Changed hard-coded file references in "clean" target to variable + references. Closes #1792043. Thanks to Daniel Leidert. + + â— Michael(tm) Smith: Makefile; VERSION + + Did post-release wrap-up of xsl-saxon and xsl-xalan dirs + + â— Michael(tm) Smith: Makefile; nbproject/build-impl.xml; VERSION + + More tweaks to get release-ready + +XSL-libxslt + +The following changes have been made to the xsl-libxslt code since the 1.73.2 +release. + + â— Mauritz Jeanson: python/xslt.py + + Print the result to stdout if no outfile has been given. + Some unnecessary semicolons removed. + + â— Mauritz Jeanson: python/xslt.py + + Added a function that quotes parameter values (to ensure that they are interpreted as strings). + Replaced deprecated functions from the string module with string methods. + + â— Michael(tm) Smith: python/README; python/README.LIBXSLT + + renamed xsl-libxslt/python/README to xsl-libxslt/python/README.LIBXSLT + + â— Mauritz Jeanson: python/README + + Tweaked the text a little. + +Release Notes: 1.73.2 + +This is solely a minor bug-fix update to the 1.73.1 release. It fixes a +packaging error in the 1.73.1 package, as well as a bug in footnote handling in +FO output. + +Release: 1.73.1 + +This is mostly a bug-fix update to the 1.73.0 release. + +Gentext + +The following changes have been made to the gentext code since the 1.73.0 +release. + + â— Mauritz Jeanson: locale/de.xml + + Applied patch #1766009. + + â— Michael(tm) Smith: locale/lv.xml + + Added localization for ProductionSet. + +FO + +The following changes have been made to the fo code since the 1.73.0 release. + + â— Mauritz Jeanson: table.xsl + + Modified the tgroup template so that, for tables with multiple tgroups, + a width attribute is output on all corresponding fo:tables. Previously, + there was a test prohibiting this (and a comment saying that outputting more + than one width attribute will cause an error). But this seems to be no longer + relevant; it is not a problem with FOP 0.93 or XEP 4.10. Closes bug #1760559. + + â— Mauritz Jeanson: graphics.xsl + + Replaced useless <a> elements with warning messages (textinsert extension). + + â— Mauritz Jeanson: admon.xsl + + Enabled generation of ids (on fo:wrapper) for indexterms in admonition titles, so that page + references in the index can be created. Closes bug #1775086. + +HTML + +The following changes have been made to the html code since the 1.73.0 release. + + â— Mauritz Jeanson: titlepage.xsl + + Added <xsl:call-template name="process.footnotes"/> to abstract template + so that footnotes in info/abstract are processed. Closes bug #1760907. + + â— Michael(tm) Smith: pi.xsl; synop.xsl + + Changed handling of HTML output for the cmdsynopsis and + funcsynopsis elements, such that a@id instances are generated for + them if they are descendants of any element containing a dbcmdlist + or dbfunclist PI. Also, update the embedded reference docs for the + dbcmdlist and dbfunclist PIs to make it clear that they can be + used within any element for which cmdsynopsis or funcsynopsis are + valid children. + + â— Michael(tm) Smith: formal.xsl + + Reverted the part of revision 6952 that caused a@id anchors to be + generated for output of informal objects. Thanks to Sam Steingold + for reporting. + + â— Robert Stayton: glossary.xsl + + Account for a glossary with no glossdiv or glossentry children. + + â— Mauritz Jeanson: titlepage.xsl + + Modified legalnotice template so that the base.name parameter is calculated + in the same way as for revhistory chunks. Using <xsl:apply-templates + mode="chunk-filename" select="."/> did not work for single-page output since + the template with that mode is in chunk-code.xsl. + + â— Mauritz Jeanson: graphics.xsl + + Updated support for SVG (must be a child of imagedata in DB 5). + Added support for MathML in imagedata. + + â— Mauritz Jeanson: pi.xsl + + Added documentation for the dbhh PI (used for context-sensitive HTML Help). + (The two templates matching 'dbhh' are still in htmlhelp-common.xsl). + +Manpages + +The following changes have been made to the manpages code since the 1.73.0 +release. + + â— Michael(tm) Smith: endnotes.xsl + + In manpages output, generate warnings about notesources with + non-para children only if the notesource is a footnote or + annotation. Thanks to Sam Steingold for reporting problems with + the existing handling. + +HTMLHelp + +The following changes have been made to the htmlhelp code since the 1.73.0 +release. + + â— Michael(tm) Smith: htmlhelp-common.xsl + + Added single-pass namespace-stripping support to the htmlhelp, + eclipse, and javahelp stylesheets. + +Eclipse + +The following changes have been made to the eclipse code since the 1.73.0 +release. + + â— Michael(tm) Smith: eclipse.xsl + + Added single-pass namespace-stripping support to the htmlhelp, + eclipse, and javahelp stylesheets. + +JavaHelp + +The following changes have been made to the javahelp code since the 1.73.0 +release. + + â— Michael(tm) Smith: javahelp.xsl + + Added single-pass namespace-stripping support to the htmlhelp, + eclipse, and javahelp stylesheets. + +Roundtrip + +The following changes have been made to the roundtrip code since the 1.73.0 +release. + + â— Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; pages2normalise.xsl + + Modularised blocks2dbk to allow customisation, + Added support for tables to pages2normalise + +Params + +The following changes have been made to the params code since the 1.73.0 +release. + + â— Robert Stayton: procedure.properties.xml + + procedure was inheriting keep-together from formal.object.properties, but + a procedure does not need to be kept together by default. + + â— Dave Pawson: title.font.family.xml; + component.label.includes.part.label.xml; table.frame.b⋯ + + Regular formatting re-org. + +Release: 1.73.0 + +This release includes important bug fixes and adds the following significant +feature changes: + +New localizations and localization updates + + We added two new localizations: Latvian and Esperanto, and made updates to + the Czech, Chinese Simplified, Mongolian, Serbian, Italian, and Ukrainian + localizations. + +ISO690 citation style for bibliography output. + + Set the bibliography.style parameter to iso690 to use ISO690 style. + +New documentation for processing instructions (PI) + + The reference documentation that ships with the release now includes + documentation on all PIs that you can use to control output from the + stylesheets. + +New profiling parameters for audience and wordsize + + You can now do profiling based on the values of the audience and wordsize + attributes. + +Changes to man-page output + + The manpages stylesheet now supports single-pass profiling and single-pass + DocBook 5 namespace stripping (just as the HTML and FO stylesheets also + do). Also, added handling for mediaobject & inlinemediaobject. (Each + imagedata, audiodata, or videodata element within a mediaobject or inline + mediaobject is now treated as a "notesource" and so handled in much the + same way as links and annotation/alt/footnote are in manpages output.) And + added the man.authors.section.enabled and man.copyright.section.enabled + parameters to enable control over whether output includes auto-generated + AUTHORS and COPYRIGHT sections. + +Highlighting support for C + + The highlighting mechanism for generating syntax-highlighted code snippets + in output now supports C code listings (along with Java, PHP, XSLT, and + others). + +Experimental docbook-xsl-update script + + We added an experimental docbook-xsl-update script, the purpose of which is + to facilitate easy sync-up to the latest docbook-xsl snapshot (by means of + rsync). + +Gentext + +The following changes have been made to the gentext code since the 1.72.0 +release. + + â— Michael(tm) Smith: locale/lv.xml; Makefile + + Added Latvian localization file, from Girts Ziemelis. + + â— Dongsheng Song: locale/zh_cn.xml + + Brought up to date with en.xml in terms of items. A few strings marked for translation. + + â— Jirka Kosek: locale/cs.xml + + Added missing translations + + â— Robert Stayton: locale/eo.xml + + New locale for Esperanto. + + â— Robert Stayton: locale/mn.xml + + Update from Ganbold Tsagaankhuu. + + â— Jirka Kosek: locale/en.xml; locale/cs.xml + + Rules for normalizing glossary entries before they are sorted can be now different for each language. + + â— Michael(tm) Smith: locale/sr_Latn.xml; locale/sr.xml + + Committed changes from MiloÅ¡ KomarÄević to Serbian files. + + â— Robert Stayton: locale/ja.xml + + Fix chapter in context xref-number-and-title + + â— Robert Stayton: locale/it.xml + + Improved version from contributor. + + â— Mauritz Jeanson: locale/uk.xml + + Applied patch 1592083. + +Common + +The following changes have been made to the common code since the 1.72.0 +release. + + â— Michael(tm) Smith: labels.xsl + + Changed handling of reference auto-labeling such that reference + (when it appears at the component level) is now affected by the + label.from.part param, just as preface, chapter, and appendix. + + â— Michael(tm) Smith: common.xsl + + Added support to the HTML stylesheets for proper processing of + orgname as a child of author. + + â— Michael(tm) Smith: refentry.xsl + + Refined logging output of refentry metadata-gathering template; + for some cases of "missing" elements (refmiscinfo stuff, etc.), + the log messages now include URL to corresponding page in the + Definitive Guide (TDG). + + â— Robert Stayton: titles.xsl + + Add refsection/info/title support. + + â— Michael(tm) Smith: titles.xsl + + Added support for correct handling of xref to elements that + contain info/title descendants but no title children. + + This should be further refined so that it handles any *info + elements. And there are probably some other places where similar + handling for *info/title should be added. + + â— Mauritz Jeanson: pi.xsl + + Modified <xsl:when> in datetime.format template to work + around Xalan bug. + +FO + +The following changes have been made to the fo code since the 1.72.0 release. + + â— Robert Stayton: component.xsl + + Add parameters to the page.sequence utility template. + + â— Mauritz Jeanson: xref.xsl + + Added template for xref to area/areaset. + Part of fix for bug #1675513 (xref to area broken). + + â— Michael(tm) Smith: inline.xsl + + Added template match for person element to fo stylesheet. + + â— Robert Stayton: lists.xsl + + Added support for spacing="compact" in variablelist, per bug report #1722540. + + â— Robert Stayton: table.xsl + + table pgwide="1" should also use pgwide.properties attribute-set. + + â— Mauritz Jeanson: inline.xsl + + Make citations numbered if bibliography.numbered != 0. + + â— Robert Stayton: param.xweb; param.ent + + Add new profiling parameters for audience and wordsize. + + â— Robert Stayton: param.xweb; param.ent + + Added callout.icon.size parameter. + + â— Robert Stayton: inline.xsl; xref.xsl + + Add support for xlink as olink. + + â— Robert Stayton: autotoc.xsl; param.xweb; param.ent + + Add support for qanda.in.toc to fo TOC. + + â— Robert Stayton: component.xsl + + Improved the page.sequence utility template for use with book. + + â— Robert Stayton: division.xsl + + Refactored the big book template into smaller pieces. + Used the "page.sequence" utility template in + component.xsl to shorten the toc piece. + Added placeholder templates for front.cover and back.cover. + + â— Robert Stayton: param.xweb; param.ent; sections.xsl + + Add section.container.element parameter to enable + pgwide spans inside sections. + + â— Robert Stayton: param.xweb; param.ent; component.xsl + + Add component.titlepage.properties attribute-set to + support span="all" and other properties. + + â— Robert Stayton: htmltbl.xsl; table.xsl + + Apply table.row.properties template to html tr rows too. + Add keep-with-next to table.row.properties when row is in thead. + + â— Robert Stayton: table.xsl + + Add support for default.table.frame parameter. + Fix bug 1575446 rowsep last check for @morerows. + + â— Robert Stayton: refentry.xsl + + Add support for info/title in refsections. + + â— David Cramer: qandaset.xsl + + Make fo questions and answers behave the same way as html + + â— Jirka Kosek: lists.xsl + + Added missing attribute set for procedure + + â— Jirka Kosek: param.xweb; biblio.xsl; docbook.xsl; param.ent; + biblio-iso690.xsl + + Added support for formatting biblioentries according to ISO690 citation style. + New bibliography style can be turned on by setting parameter bibliography.style to "iso690" + The code was provided by Jana Dvorakova + + â— Robert Stayton: param.xweb; param.ent; pagesetup.xsl + + Add header.table.properties and footer.table.properties attribute-sets. + + â— Robert Stayton: inline.xsl + + Add fop1.extensions for menuchoice arrow handling exception. + +HTML + +The following changes have been made to the html code since the 1.72.0 release. + + â— Mauritz Jeanson: param.xweb; param.ent + + Moved declaration and documentation of javahelp.encoding from javahelp.xsl to the + regular "parameter machinery". + + â— Michael(tm) Smith: admon.xsl + + Changed handling of titles for note, warning, caution, important, + tip admonitions: We now output and HTML h3 head only if + admon.textlabel is non-zero or if the admonition actually contains + a title; otherwise, we don't output an h3 head at all. + (Previously, we were outputting an empty h3 if the admon.textlabel + was zero and if the admonition had no title.) + + â— Mauritz Jeanson: xref.xsl + + Added template for xref to area/areaset. + Part of fix for bug #1675513 (xref to area broken). + + â— Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; sections.xsl + + Added fixes to avoid duplicate ids when generate.id.attributes = 1. + This (hopefully) closes bug #1671052. + + â— Michael(tm) Smith: formal.xsl; pi.xsl + + Made the dbfunclist PI work as intended. Also added doc for + dbfunclist and dbcmdlist PIs. + + â— Michael(tm) Smith: pi.xsl; synop.xsl + + Made the dbcmdlist work the way it appears to have been intended + to work. Restored dbhtml-dir template back to pi.xsl. + + â— Michael(tm) Smith: titlepage.xsl; param.xweb; param.ent + + Added new param abstract.notitle.enabled. + If non-zero, in output of the abstract element on titlepages, + display of the abstract title is suppressed. + Because sometimes you really don't want or need that title + there... + + â— Michael(tm) Smith: chunk-code.xsl; graphics.xsl + + When we are chunking long descriptions for mediaobject instances + into separate HTML output files, and use.id.as.filename is + non-zero, if a mediaobject has an ID, use that ID as the basename + for the long-description file (otherwise, we generate an ID for it + and use that ID as the basename for the file). + The parallels the recent change made to cause IDs for legalnotice + instances to be used as basenames for legalnotice chunks. + Also, made some minor refinements to the recent changes for + legalnotice chunk handling. + + â— Michael(tm) Smith: titlepage.xsl + + Added support to the HTML stylesheets for proper processing of + orgname as a child of author. + + â— Michael(tm) Smith: chunk-code.xsl + + When $generate.legalnotice.link is non-zero and + $use.id.as.filename is also non-zero, if a legalnotice has an ID, + then instead of assigning the "ln-<generatedID>" basename to the + output file for that legalnotice, just use its real ID as the + basename for the file -- as we do when chunking other elements + that have IDs. + + â— David Cramer: xref.xsl + + Handle alt text on xrefs to steps when the step doesn't have a title. + + â— David Cramer: lists.xsl + + Added <p> element around term in variablelist when formatted as table to avoid misalignment of term and listitem in xhtml (non-quirks mode) output + + â— David Cramer: qandaset.xsl + + Added <p> element around question and answer labels to avoid misalignment of label and listitem in xhtml (non-quirks mode) output + + â— David Cramer: lists.xsl + + Added <p> element around callouts to avoid misalignment of callout and listitem in xhtml (non-quirks mode) output + + â— Mauritz Jeanson: inline.xsl + + Make citations numbered if bibliography.numbered != 0. + + â— Robert Stayton: param.xweb; param.ent + + Add support for new profiling attributes audience and wordsize. + + â— Robert Stayton: inline.xsl; xref.xsl + + Add support for xlink olinks. + + â— Jirka Kosek: glossary.xsl + + Rules for normalizing glossary entries before they are sorted can be now different for each language. + + â— Robert Stayton: chunk-common.xsl; chunk-code.xsl; manifest.xsl; chunk.xsl + + Refactored the chunking modules to move all named templates to + chunk-common.xsl and all match templates to chunk-code.xsl, in + order to enable better chunk customization. + See the comments in chunk.xsl for more details. + + â— Robert Stayton: lists.xsl + + Add anchor for xml:id for listitem in varlistentry. + + â— Robert Stayton: refentry.xsl + + Add support for info/title in refsections for db5. + + â— Jirka Kosek: param.xweb; biblio.xsl; docbook.xsl; param.ent; + biblio-iso690.xsl + + Added support for formatting biblioentries according to ISO690 citation style. + New bibliography style can be turned on by setting parameter bibliography.style to "iso690" + The code was provided by Jana Dvorakova + + â— Robert Stayton: inline.xsl; xref.xsl + + Add call to class.attribute to <a> output elements so they can + have a class value too. + + â— Mauritz Jeanson: glossary.xsl + + Fixed bug #1644881: + * Added curly braces around all $language attribute values. + * Moved declaration of language variable to top level of stylesheet. + Tested with Xalan, Saxon, and xsltproc. + +Manpages + +The following changes have been made to the manpages code since the 1.72.0 +release. + + â— Michael(tm) Smith: param.xweb; docbook.xsl; param.ent + + Added the man.authors.section.enabled and + man.copyright.section.enabled parameters. Set those to zero when + you want to suppress display of the auto-generated AUTHORS and + COPYRIGHT sections. Closes request #1467806. Thanks to Daniel + Leidert. + + â— Michael(tm) Smith: docbook.xsl + + Took the test that the manpages stylesheet does to see if there + are any Refentry chilren in current doc, and made it + namespace-agnostic. Reason for that is because the test otherwise + won't work when it is copied over into the generated + profile-docbook.xsl stylesheet. + + â— Michael(tm) Smith: Makefile + + Added a manpages/profile-docbook.xsl file to enable single-pass + profiling for manpages output. + + â— Michael(tm) Smith: info.xsl + + Output copyright and legalnotice in man-page output in whatever + place they are in in document order. Closes #1690539. Thanks to + Daniel Leidert for reporting. + + â— Michael(tm) Smith: docbook.xsl + + Restored support for single-pass namespace stripping to manpages + stylesheet. + + â— Michael(tm) Smith: synop.xsl; block.xsl; info.xsl; inline.xsl; lists.xsl; + endnotes.xsl; ut⋯ + + Changed handling of bold and italic/underline output in manpages + output. Should be transparent to users, but... + + This touches handling of all bold and italic/underline output. The + exact change is that the mode="bold" and mode="italic" utility + templates were changed to named templates. (I think maybe I've + changed it back and forth from mode to named before, so this is + maybe re-reverting it yet again). + + Anyway, the reason for the change is that the templates are + sometimes call on dynamically node-sets, and using modes to format + those doesn't allow passing info about the current/real context + node from the source (not the node-set created by the stylesheet) + to that formatting stage. + + The named templates allow the context to be passed in as a + parameter, so that the bold/ital formatting template can use + context-aware condition checking. + + This was basically necessary in order to suppress bold formatting + in titles, which otherwise gets screwed up because of the numbnut + way that roff handles nested bold/ital. + + Closes #1674534). Much thanks to Daniel Leidert, whose in his + docbook-xsl bug-finding kung-fu has achieved Grand Master status. + + â— Michael(tm) Smith: block.xsl + + Fixed handling of example instances by adding the example element + to the same template we use for processing figure. Closes + #1674538. Thanks to Daniel Leidert. + + â— Michael(tm) Smith: utility.xsl + + Don't include lang in manpages filename/pathname if lang=en (that + is, only generate lang-qualified file-/pathnames for non-English). + + â— Michael(tm) Smith: endnotes.xsl + + In manpages output, emit warnings for notesources (footnote, etc.) + that have something other than para as a child. + + The numbered-with-hanging-indent formatting that's used for + rendering endnotes in the NOTES section of man pages places some + limits/assumptions on how the DocBook source is marked up; namely, + for notesources (footnote, annotation, etc.) that can contain + block-level children, if the they have a block-level child such as + a table or itemizedlist or orderedlist that is the first child of + a footnote, we have no way of rendering/indenting its content + properly in the endnotes list. + + Thus, the manpages stylesheet not emits a warning message for that + case, and suggests the "fix" (which is to wrap the table or + itemizedlist or whatever in a para that has some preferatory text. + + â— Michael(tm) Smith: utility.xsl + + Added support to mixed-block template for handling tables in + mixed-blocks (e.g., as child of para) correctly. + + â— Michael(tm) Smith: table.xsl; synop.xsl; block.xsl; info.xsl; lists.xsl; + refentry.xsl; end⋯ + + Reverted necessary escaping of backslash, dot, and dash + out of the well-intentioned (but it now appears, + misguided) "marker" mechanism (introduced in the 1.72.0 + release) -- which made use of alternative "marker" + characters as internal representations of those + characters, and then replaced them just prior to + serialization -- and back into what's basically the + system that was used prior to the 1.69.0 release; that + is, into a part of stylesheet code that gets executed + at the beginning of processing -- before any other roff + markup up is. This change obviates the need for the + marker system. It also requires a lot less RAM during + processing (for large files, the marker mechanism + ending up requiring gigabytes of memory). + + Closes bug #1661177. Thanks to Scott Smedley for + providing a test case (the fvwm man page) that exposed + the problem with the marker mechanism. + + Also moved the mechanism for converting non-breaking + spaces back into the same area of the stylesheet code. + + â— Michael(tm) Smith: lists.xsl + + Fixed problem with incorrect formatting of nested variablelist. + Closes bug #1650931. Thanks to Daniel "Eagle Eye" Leidert. + + â— Michael(tm) Smith: lists.xsl + + Make sure that all listitems in itemizedlist and orderedlist are + preceded by a blank line. This fixes a regression that occurred + when instances of the TP macro that were use in a previous + versions of the list-handling code were switched to RS/RE (because + TP doesn't support nesting). TP automatically generates a blank + line, but RS doesn't. So I added a .sp before each .RS + + â— Michael(tm) Smith: block.xsl; inline.xsl; param.xweb; docbook.xsl; + links.xsl; param.ent + + Made a number of changes related to elements with + out-of-line content: + + - Added handling for mediaobject & inlinemediaobject. + Each imagedata, audiodata, or videodata element + within a mediaobject or inline mediaobject is now + treated as a "notesource" and so handled in much the + same way as links and annotation/alt/footnotes. + + That means a numbered marker is generated inline to + mark the place in the main flow where the imagedata, + audiodata, or videodata element occurs, and a + corresponding numbered endnote for it is generated in + the endnotes list at the end of the man page; the + endnote contains the URL from the fileref attribute + of the imagedata, audiodata, or videodata element. + + For mediobject and inlinemediaobject instances that + have a textobject child, the textobject is displayed + within the main text flow. + + - Renamed several man.link.* params to man.endnotes.*, + to reflect that fact that the endnotes list now + contains more than just links. Also did similar + renaming for a number of stylesheet-internal vars. + + - Added support for xlink:href (along with existing + support for the legacy ulink element). + + - Cleaned up and streamlined the endnotes-handling + code. It's still messy and klunky and the basic + mechanism it uses is very inefficent for documents + that contain a lot of notesources, but at least it's + a bit better than it was. + +Eclipse + +The following changes have been made to the eclipse code since the 1.72.0 +release. + + â— Mauritz Jeanson: Makefile + + Fixed bug #1715093: Makefile for creating profiled version of eclipse.xsl added. + + â— David Cramer: eclipse.xsl + + Added normalize-space around to avoid leading whitespace from appearing in the output if there's extra leading whitespace (e.g. <title> Foo) in the source + +JavaHelp + +The following changes have been made to the javahelp code since the 1.72.0 +release. + + â— Mauritz Jeanson: javahelp.xsl + + Implemented FR #1230233 (sorted index in javahelp). + + â— Mauritz Jeanson: javahelp.xsl + + Added normalize-space() around titles and index entries to work around whitespace problems. + Added support for glossary and bibliography in toc and map files. + +Roundtrip + +The following changes have been made to the roundtrip code since the 1.72.0 +release. + + â— Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl; normalise2sections.xsl; + sections2blocks.⋯ + + new stylesheets for better word processor support and easier maintenance + + â— Steve Ball: template-pages.xml; dbk2wp.xsl; sections-spec.xml + + fixed bugs + +Params + +The following changes have been made to the params code since the 1.72.0 +release. + + â— Mauritz Jeanson: htmlhelp.button.back.xml; htmlhelp.button.forward.xml; + htmlhelp.button.zo⋯ + + Modified refpurpose text. + + â— Mauritz Jeanson: htmlhelp.map.file.xml; htmlhelp.force.map.and.alias.xml; + htmlhelp.alias.f⋯ + + Fixed typos, made some small changes. + + â— Mauritz Jeanson: javahelp.encoding.xml + + Moved declaration and documentation of javahelp.encoding from javahelp.xsl to the + regular "parameter machinery". + + â— Mauritz Jeanson: generate.id.attributes.xml + + Added refpurpose text. + + â— Mauritz Jeanson: annotation.js.xml; annotation.graphic.open.xml; + annotation.graphic.close.⋯ + + Added better refpurpose texts. + + â— Michael(tm) Smith: chunker.output.cdata-section-elements.xml; + chunker.output.standalone.xm⋯ + + Fixed some broken formatting in source files for chunker.* params, + as pointed out by Dave Pawson. + + â— Michael(tm) Smith: label.from.part.xml + + Changed handling of reference auto-labeling such that reference + (when it appears at the component level) is now affected by the + label.from.part param, just as preface, chapter, and appendix. + + â— Mauritz Jeanson: callout.graphics.extension.xml + + Clarified that 'extension' refers to file names. + + â— Michael(tm) Smith: abstract.notitle.enabled.xml + + Added new param abstract.notitle.enabled. + If non-zero, in output of the abstract element on titlepages, + display of the abstract title is suppressed. + Because sometimes you really don't want or need that title + there... + + â— Michael(tm) Smith: man.string.subst.map.xml + + Updated manpages string-substitute map to reflect fact that + because of another recent change to suppress bold markup in .SH + output, we no longer need to add a workaround for the accidental + uppercasing of roff escapes that occurred previously. + + â— Jirka Kosek: margin.note.float.type.xml; title.font.family.xml; + table.frame.border.color.x⋯ + + Improved parameter metadata + + â— Robert Stayton: profile.wordsize.xml; profile.audience.xml + + Add support for profiling on new attributes audience and wordsize. + + â— Robert Stayton: callout.graphics.number.limit.xml; + callout.graphics.extension.xml + + Added SVG graphics for fo output. + + â— Robert Stayton: callout.icon.size.xml + + Set size of callout graphics. + + â— Jirka Kosek: default.units.xml; chunker.output.method.xml; + toc.list.type.xml; output.inden⋯ + + Updated parameter metadata to the new format. + + â— Jirka Kosek: man.output.quietly.xml; title.font.family.xml; + footnote.sep.leader.properties⋯ + + Added type annotations into parameter definition files. + + â— Robert Stayton: section.container.element.xml + + Support spans in sections for certain processors. + + â— Robert Stayton: component.titlepage.properties.xml + + Empty attribute set for top level component titlepage block. + Allows setting a span on title info. + + â— Jirka Kosek: bibliography.style.xml + + Added link to WiKi page with description of special markup needed for ISO690 biblioentries + + â— Robert Stayton: make.year.ranges.xml + + Clarify that multiple year elements are required. + + â— Robert Stayton: id.warnings.xml + + Turn off id.warnings by default. + + â— Jirka Kosek: bibliography.style.xml + + Added support for formatting biblioentries according to ISO690 citation style. + New bibliography style can be turned on by setting parameter bibliography.style to "iso690" + The code was provided by Jana Dvorakova + + â— Robert Stayton: header.table.properties.xml; footer.table.properties.xml + + Support adding table properties to header and footer tables. + +Highlighting + +The following changes have been made to the highlighting code since the 1.72.0 +release. + + â— Jirka Kosek: c-hl.xml; xslthl-config.xml + + Added support for C language. Provided by Bruno Guegan. + +Profiling + +The following changes have been made to the profiling code since the 1.72.0 +release. + + â— Robert Stayton: profile-mode.xsl + + Add support for new profiling attributes audience and wordsize. + +Lib + +The following changes have been made to the lib code since the 1.72.0 release. + + â— Michael(tm) Smith: lib.xweb + + Changed name of prepend-pad template to pad-string and twheeked so + it can do both right/left padding. + +Tools + +The following changes have been made to the tools code since the 1.72.0 +release. + + â— Michael(tm) Smith: bin; bin/docbook-xsl-update + + Did some cleanup to the install.sh source and added a + docbook-xsl-update script to the docbook-xsl distro, the purpose + of which is to facilitate easy sync-up to the latest docbook-xsl + snapshot (by means of rsync). + +XSL-Saxon + +The following changes have been made to the xsl-saxon code since the 1.72.0 +release. + + â— Mauritz Jeanson: xalan27/src/com/nwalsh/xalan/Verbatim.java; xalan27/src/ + com/nwalsh/xalan/⋯ + + Added modifications so that the new callout.icon.size parameter is taken into account. This + parameter is used for FO output (where SVG now is the default graphics format for callouts). + + â— Mauritz Jeanson: saxon65/src/com/nwalsh/saxon/FormatCallout.java; xalan27/ + src/com/nwalsh/x⋯ + + Added code for generating id attributes on callouts in HTML and FO output. + These patches enable cross-references to callouts placed by area coordinates. + It works for graphic, unicode and text callouts. + Part of fix for bug #1675513 (xref to area broken). + + â— Michael(tm) Smith: saxon65/src/com/nwalsh/saxon/Website.java; xalan27/src/ + com/nwalsh/xalan⋯ + + Copied over Website XSL Java extensions. + +XSL-Xalan + +The following changes have been made to the xsl-xalan code since the 1.72.0 +release. + + â— Michael(tm) Smith: Makefile; xalan2 + + Turned off xalan2.jar build. This removes DocBook XSL + Java extensions support for versions of Xalan prior to + Xalan 2.7. If you are currently using the extensions + with an earlier version of Xalan, you need to upgrade + to Xalan 2.7. + + â— Mauritz Jeanson: xalan27/src/com/nwalsh/xalan/Verbatim.java; xalan27/src/ + com/nwalsh/xalan/⋯ + + Added modifications so that the new callout.icon.size parameter is taken into account. This + parameter is used for FO output (where SVG now is the default graphics format for callouts). + + â— Mauritz Jeanson: saxon65/src/com/nwalsh/saxon/FormatCallout.java; xalan27/ + src/com/nwalsh/x⋯ + + Added code for generating id attributes on callouts in HTML and FO output. + These patches enable cross-references to callouts placed by area coordinates. + It works for graphic, unicode and text callouts. + Part of fix for bug #1675513 (xref to area broken). + + â— Michael(tm) Smith: saxon65/src/com/nwalsh/saxon/Website.java; xalan27/src/ + com/nwalsh/xalan⋯ + + Copied over Website XSL Java extensions. + +Release: 1.72.0 + +This release includes important bug fixes and adds the following significant +feature changes: + +Automatic sorting of glossary entries + + The HTML and FO stylesheets now support automatic sorting of glossary + entries. To enable glossary sorting, set the value of the glossary.sort + parameter to 1 (by default, it’s value is 0). When you enable glossary + sorting, glossentry elements within a glossary, glossdiv, or glosslist are + sorted on the glossterm, using the current language setting. If you don’t + enable glossary sorting, then the order of glossentry elements is left “as + is†— that is, they are not sorted but are instead just displayed in + document order. + +WordML renamed to Roundtrip, OpenOffice support added + + Stylesheets for “roundtrip†conversion between documents in OpenOffice + format (ODF) and DocBook XML have been added to the set of stylesheets that + formerly had the collective title WordML, and that set of stylesheets has + been renamed to Roundtrip to better reflect the actual scope and purpose of + its contents. + + So the DocBook XSL Stylesheets now support roundtrip conversion (with + certain limitations) of WordML, OpenOffice, and Apple Pages documents to + and from DocBook XML. + +Including QandASet questions in TOCs + + The HTML stylesheet now provides support for including QandASet questions + in the document TOC. To enable display of questions in the document TOC, + set the value of the qanda.in.toc to 1 (by default, it’s 0). When you + enable qanda.in.toc, then the generated table of contents for a document + will include qandaset titles, qandadiv titles, and question elements. The + default value of zero excludes them from the TOC. + + Note + + The qanda.in.toc parameter does not affect any tables of contents that may + be generated within a qandaset or qandadiv (only in the document TOC). + +Language identifier in man-page filenames and pathnames + + Added new parameter man.output.lang.in.name.enabled, which controls whether + a language identifier is included in man-page filenames and pathnames. It + works like this: + + If the value of man.output.lang.in.name.enabled is non-zero, man-page files + are output with a language identifier included in their filenames or + pathnames as follows: + + â— if man.output.subdirs.enabled is non-zero, each file is output to, + e.g., a /$lang/man8/foo.8 pathname + + â— if man.output.subdirs.enabled is zero, each file is output with a + foo.$lang.8 filename + +index.page.number.properties property set + + For FO output, use the index.page.number.properties to control formatting + of page numbers in index output — to (for example) to display page numbers + in index output in a different color (to indicate that they are links). + +Crop marks in output from Antenna House XSL Formatter + + Support has been added for generating crop marks in print/PDF output + generated using Antenna House XSL Formatter + +More string-substitution hooks in manpages output + + The man.string.subst.map.local.pre and man.string.subst.map.local.post + parameters have been added to enable easier control over custom string + substitutions. + +Moved verbatim properties to attribute-set + + The hardcoded properties used in verbatim elements (literallayout, + programlisting, screen) were moved to the verbatim.properties attribute-set + so they can be more easily customized. + +enhanced simple.xlink template + + Now the simple.xlink template in inline.xsl works with cross reference + elements xref and link as well. Also, more elements call simple.xlink, + which enables DB5 xlink functionality. + +DocBook 5 compatibility + + Stylesheets now consistently support DocBook 5 attributes (such as xml:id). + Also, DocBook 5 info elements are now checked along with other *info + elements, and the use of name() function was replaced by local-name() so it + also matches on DocBook 5 elements. These changes enable reusing the + stylesheets with DocBook 5 documents with minimal fixup. + +HTML class attributes now handled in class.attribute mode + + The HTML class attributes were formerly hardcoded to the element name. Now + the class attribute is generated by applying templates in class.attribute + mode so class attribute names can be customized. The default is still the + element name. + +arabic-indic numbering enabled in autolabels + + Numbering of chapter, sections, and pages can now use arabic-indic + numbering when number format is set to 'arabicindic' or to Ù¡. + +The following is a detailed list of changes (not including bug fixes) that have +been made since the 1.71.1 release. + +Common + +The following changes have been made to the common code since the 1.71.1 +release. + + â— Add support for arabicindic numbering to autolabel.format template. + + â— Finish support for @xml:id everywhere @id is used. + + â— replace name() with local-name() in most cases. + + â— Add support for info. + + â— Add utility template tabstyle to return the tabstyle from + any table element. + +FO + +The following changes have been made to the fo code since the 1.71.1 release. + + â— Add support for sorting glossary entries + + â— Add table.row.properties template to customize table rows. + + â— Moved all properties to attribute-sets so can be customized more easily. + + â— Add index.page.number.properties attribute-set to format page numbers. + + â— xref now supports xlink:href, using simple.xlink template. + + â— Rewrote simple.xlink, and call it with all charseq templates. + + â— Add simple.xlink processing to term and member elements. + + â— Add support for crop marks in Antenna House. + +HTML + +The following changes have been made to the html code since the 1.71.1 release. + + â— Add support for sorting glossary entries + + â— Add support for qanda.in.toc to add qandaentry questions to document TOC. + + â— add simple.xlink support to variablelist term and simplelist member. + + â— *.propagates.style now handled in class.attribute mode. + + â— add class parameter to class.attribute mode to set default class. + + â— Convert all class attributes to use the class.attribute mode + so class names can be customized more easily. + + â— Add class.attribute mode to generate class attributes. + + â— Added simple.xlink to most remaining inlines. + Changed class attributes to applying class.attributes mode. + + â— Changed xref template to use simple.xlink tempalte. + + â— Improve generate.html.title to work with link targets too. + + â— Improved simple.xlink to support link and xref. + + â— Use new link.title.attribute now. + + â— Rewrote simple.xlink to handle linkend also. + Better computation of title attribute on link too. + + â— Handle Xalan quirk as special case. + + â— Add support for info. + + â— Fixed imagemaps so they work properly going from calspair coords + to HTML area coords. + +Manpages + +The following changes have been made to the manpages code since the 1.71.1 +release. + + â— Added doc for man.output.lang.in.name.enabled parameter. This + checkin completes support for writing file/pathnames for man-pages + with $lang include in the names. Closes #1585967. knightly + accolades to Daniel Leidert for providing the feature request. + + â— Added new param man.output.lang.in.name.enabled, which + controls whether $LANG value is included in manpages + filenames and pathnames. It works like this: + + If the value of man.output.lang.in.name.enabled is non-zero, + man-page files are output with the $lang value included in + their filenames or pathnames as follows; + + - if man.output.subdirs.enabled is non-zero, each file is +   output to, e.g., a /$lang/man8/foo.8 pathname + + - if man.output.subdirs.enabled is zero, each file is output +   with a foo.$lang.8 filename + + â— Use "\e" instead of "\\" for backslash output, because the + groff docs say that's the correct thing to do; also because + testing (thanks, Paul Dubois) shows that "\\" doesn't always + work as expected; for example, "\\" within a table seems to + mess things up. + + â— Added the man.string.subst.map.local.pre and + man.string.subst.map.local.post parameters. Those parameters + enable local additions and changes to string-substitution mappings + without the need to change the value of man.string.subst.map + parameter (which is for standard system mappings). Closes + #1456738. Thanks to Sam Steingold for constructing a true + stylesheet torture test (the clisp docs) that exposed the need for + these params. + + â— Added the Markup element to the list of elements that get output + in bold. Thanks to Eric S. Raymond. + + â— Replaced all dots in roff requests with U+2302 ("house" + character), and added escaping in output for all instances of dot + that are not in roff requests. This fixes the problem case where a + string beginning with a dot (for example, the string ".bashrc") + might occur at the beginning of a line in output, in which case  + would mistakenly get interpreted as a roff request. Thanks to Eric + S. Raymond for pushing to fix this. + + â— Made change to ensure that list content nested in + itemizedlist and orderedlist instances is properly indented. This + is a switch from using .TP to format those lists to using .RS/.RE + to format them instead (because .TP does not allow nesting). Closes bug # + 1602616. + Thanks to Daniel Leidert. + +Params + +The following changes have been made to the params code since the 1.71.1 +release. + + â— Added doc for man.output.lang.in.name.enabled parameter. This + checkin completes support for writing file/pathnames for man-pages + with $lang include in the names. Closes #1585967. knightly + accolades to Daniel Leidert for providing the feature request. + + â— Added new param man.output.lang.in.name.enabled, which + controls whether $LANG value is included in manpages + filenames and pathnames. It works like this: + + If the value of man.output.lang.in.name.enabled is non-zero, + man-page files are output with the $lang value included in + their filenames or pathnames as follows; + + - if man.output.subdirs.enabled is non-zero, each file is +   output to, e.g., a /$lang/man8/foo.8 pathname + + - if man.output.subdirs.enabled is zero, each file is output +   with a foo.$lang.8 filename + + â— Added the man.string.subst.map.local.pre and + man.string.subst.map.local.post parameters. Those parameters + enable local additions and changes to string-substitution mappings + without the need to change the value of man.string.subst.map + parameter (which is for standard system mappings). Closes + #1456738. Thanks to Sam Steingold for constructing a true + stylesheet torture test (the clisp docs) that exposed the need for + these params. + + â— Add index.page.number.properties by default. + + â— Added index.page.number.properties +  to allow customizations of page numbers in indexes. + + â— Move show-destination="replace" property from template to attribute-set + so it can be customized. + + â— Add support for sorting glossary entries + + â— Add option to include qanda in tables of contents. + + â— Moved all properties to attribute-sets so can be customized more easily. + +Template + +The following changes have been made to the template code since the 1.71.1 +release. + + â— Added workaround for Xalan bug: use for-each and copy instead of copy-of (# + 1604770). + +Roundtrip + +The following changes have been made to the roundtrip code since the 1.71.1 +release. + + â— rename to roundtrip, add OpenOffice support + +Release: 1.71.1 + +This is a minor update to the 1.71.0 release. Along with a number of bug fixes, +it includes two feature changes: + + â— Added support for profiling based on xml:lang and status attributes. + + â— Added initial support in manpages output for footnote, annotation, and alt + instances. Basically, they all now get handled the same way ulink instances + are. They are treated as a class as "note sources": A numbered marker is + generated at the place in the main text flow where they occur, then their + contents are displayed in an endnotes section at the end of the man page. + +Common + +The following changes have been made to the common code since the 1.71.1 +release. + + â— For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again. + + â— Add support for Xalan generating a root xml:base like saxon. + +FO + +The following changes have been made to the fo code since the 1.71.1 release. + + â— For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again. + + â— Add support for Xalan to add root node xml:base for db5 docs. + + â— Added support for profiling based on xml:lang and status attributes. + +HTML + +The following changes have been made to the html code since the 1.71.1 release. + + â— For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again. + + â— Add support for Xalan to add root node xml:base for db5 docs. + + â— Added support for profiling based on xml:lang and status attributes. + + â— Made changes in namespace declarations to prevent xmllint's + canonicalizer from treating them as relative namespace URIs. + +   - Changed xmlns:k="java:com.isogen.saxoni18n.Saxoni18nService" +     to xmlns:k="http://www.isogen.com/functions/ + com.isogen.saxoni18n.Saxoni18nService"; +     Saxon accepts either form +     (see http://www.saxonica.com/documentation/extensibility/ + functions.html); +     to Saxon, "the part of the URI before the final '/' is immaterial". + +   - Changed, e.g. xmlns:xverb="com.nwalsh.xalan.Verbatim" to +     xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim"; Xalan accepts +     either form +     (see http://xml.apache.org/xalan-j/extensions.html# + java-namespace-declare); +     just as Saxon does, it will "simply use the string to the +     right of the rightmost forward slash as the Java class name". + +   - Changed xmlns:xalanredirect="org.apache.xalan.xslt.extensions.Redirect" +     to xmlns:redirect="http://xml.apache.org/xalan/redirect", and +     adjusted associated code to make the current Xalan redirect spec. +     (see http://xml.apache.org/xalan-j/apidocs/org/apache/xalan/lib/ + Redirect.html) + + â— Added the html.append and chunk.append parameters. By default, the + value of both is empty; but the internal DocBook XSL stylesheets + build sets their value to " ", in order + to ensure that all files in the docbook-xsl-doc package end in a + newline character. (Because diff and some other tools may emit + error messages and/or not behave as expected when processing + files that are not newline-terminated.) + +Highlighting + +The following changes have been made to the highlighting code since the 1.71.1 +release. + + â— Added license information + +Manpages + +The following changes have been made to the manpages code since the 1.71.1 +release. + + â— Added initial support in manpages output for footnote, annotation, + and alt instances. Basically, they all now get handled the same + way ulink instances are. They are treated as a class as "note + sources": A numbered marker is generated at the place in the main + text flow where they occur, then their contents are displayed in + an endnotes section at the end of the man page (currently titled + REFERENCES, for English output, but will be changed to NOTES). + + This support is not yet complete. It works for most "normal" + cases, but probably mishandles a good number of cases. More + testing will be needed to expose the problems. It may well also + introduce some bugs and regressions in other areas, including + basic paragraph handling, handling of "mixed block" content, + handling of other indented content, and handling of authorblurb + and personblurb in the AUTHORS section. + +Params + +The following changes have been made to the params code since the 1.71.1 +release. + + â— Added support for profiling based on xml:lang and status attributes. + + â— Added the html.append and chunk.append parameters. By default, the + value of both is empty; but the internal DocBook XSL stylesheets + build sets their value to " ", in order + to ensure that all files in the docbook-xsl-doc package end in a + newline character. (Because diff and some other tools may emit + error messages and/or not behave as expected when processing + files that are not newline-terminated.) + +Profiling + +The following changes have been made to the profiling code since the 1.71.1 +release. + + â— Added support for profiling based on xml:lang and status attributes. + +Release: 1.71.0 + +This is mainly a bug fix release, but it also includes two significant feature +changes: + +Highlighting support added + + The stylesheets now include support for source-code highlighting in output + of programlisting instances (controlled through the highlight.source + parameter). The Java-based implementation requires Saxon and makes use of + Michal Molhanec’s XSLTHL. More details are available at Jirka Kosek’s + website: + + http://xmlguru.cz/2006/07/docbook-syntax-highlighting + + The support is currently limited to highlighting of XML, Java, PHP, Delphi, + Modula-2 sources, and INI files. + +Changes to autoindexing + + The templates that handle alternative indexing methods were reworked to + avoid errors produced by certain processors not being able to tolerate the + presence of unused functions. With this release, none of the code for the + 'kimber' or 'kosek' methods is included in the default stylesheets. In + order to use one of those methods, your customization layer must import one + of the optional stylesheet modules: + + â— html/autoidx-kosek.xsl + â— html/autoidx-kimber.xsl + â— fo/autoidx-kosek.xsl + â— fo/autoidx-kimber.xsl + + See the index.method parameter reference page for more information. + + Two other changes to note: + + â— The default indexing method now can handle accented characters in + latin-based alphabets, not just English. This means accented latin + letters will group and sort with their unaccented counterpart. + â— The default value for the index.method parameter was changed from + 'english' to 'basic' because now the default method can handle + latin-based alphabets, not just English. + +The following is a list of changes that have been made since the 1.70.1 +release. + +Common + +The following changes have been made to the common code since the 1.70.1 +release. + + â— Added reference.autolabel parameter for controlling labels on + reference output. + + â— Support rows that are *completely* overlapped by the preceding row + + â— New modules for supporting indexing extensions. + + â— Support startinglinenumber on orderedlist + +Extensions + +The following changes have been made to the extensions code since the 1.70.1 +release. + + â— Completely reworked extensions build system; now uses NetBeans and ant + +FO + +The following changes have been made to the fo code since the 1.70.1 release. + + â— xsl:sort lang attribute now uses two-char substring of lang attribute. + + â— Support titlecase "Java", "Perl", and "IDL" as values for the + language attribute on classsynopsis, etc. (instead of just + lowercase "java", "perl", and "idl"). Also support "c++" and "C++" + (instead of just "cpp"). + + Affects HTML, FO, and manpages output. Closes bug 1552332. Thanks + to "Brian A. Vanderburg II". + + â— Added support for the reference.autolabel param in (X)HTML and FO + output. + + â— Support rows that are *completely* overlapped by the preceding row + + â— Rearranged templates for the 3 indexing methods + and changed method named 'english' to 'basic'. + + â— New modules for supporting indexing extensions. + + â— Turn off blank-body for fop1.extensions too since fop 0.92 + does not support it either. + + â— Add Xalan variant to test for exslt:node-set function. + Xalan can use function named node-set(), but doesn't + recognize it using function-available(). + + â— Added support to FO stylesheets for handling instances of Org + where it occurs outside of *info content. In HTML stylesheets, + moved handling of Org out of info.xsl and into inline.xsl. In both + FO and HTML stylesheets, added support for correctly processing + Affiliation and Jobtitle. + + â— Don't output punctuation between Refname and Refpurpose if + Refpurpose is empty. Also corrected handling of Refsect2/title + instances, and removed some debugging stuff that was generated in + manpages output to mark the ends of sections. + + â— Added new email.delimiters.enabled param. If non-zero (the + default), delimiters are generated around e-mail addresses (output + of the email element). If zero, the delimiters are suppressed. + + â— Initial support of syntax highlighting of programlistings. + + â— Chapter after preface should restart numbering of pages. + +HTML + +The following changes have been made to the html code since the 1.70.1 release. + + â— xsl:sort lang attribute now uses two-char substring of lang attribute. + + â— Support titlecase "Java", "Perl", and "IDL" as values for the + language attribute on classsynopsis, etc. (instead of just + lowercase "java", "perl", and "idl"). Also support "c++" and "C++" + (instead of just "cpp"). + + Affects HTML, FO, and manpages output. Closes bug 1552332. Thanks + to "Brian A. Vanderburg II". + + â— Added support for the reference.autolabel param in (X)HTML and FO + output. + + â— Support rows that are *completely* overlapped by the preceding row + + â— Rearranged templates for the 3 indexing methods + and changed method named 'english' to 'basic'. + + â— New modules for supporting indexing extensions. + + â— Added several new HTML parameters for controlling appearance of + content on HTML title pages: + + contrib.inline.enabled: +   If non-zero (the default), output of the contrib element is +   displayed as inline content rather than as block content. + + othercredit.like.author.enabled: +   If non-zero, output of the othercredit element on titlepages is +   displayed in the same style as author and editor output. If zero +   (the default), othercredit output is displayed using a style +   different than that of author and editor. + + blurb.on.titlepage.enabled: +   If non-zero, output from authorblurb and personblurb elements is +   displayed on title pages. If zero (the default), output from +   those elements is suppressed on title pages (unless you are +   using a titlepage customization that causes them to be included). + + editedby.enabled +   If non-zero (the default), a localized Edited by heading is +   displayed above editor names in output of the editor element. + + â— Add Xalan variant to test for exslt:node-set function. + Xalan can use function named node-set(), but doesn't + recognize it using function-available(). + + â— Added support to FO stylesheets for handling instances of Org + where it occurs outside of *info content. In HTML stylesheets, + moved handling of Org out of info.xsl and into inline.xsl. In both + FO and HTML stylesheets, added support for correctly processing + Affiliation and Jobtitle. + + â— Don't output punctuation between Refname and Refpurpose if + Refpurpose is empty. Also corrected handling of Refsect2/title + instances, and removed some debugging stuff that was generated in + manpages output to mark the ends of sections. + + â— Added new email.delimiters.enabled param. If non-zero (the + default), delimiters are generated around e-mail addresses (output + of the email element). If zero, the delimiters are suppressed. + + â— Added qanda.nested.in.toc param. Default value is zero. If + non-zero, instances of "nested" Qandaentry (ones that are children + of Answer elements) are displayed in the TOC. Closes patch 1509018 + (from Daniel Leidert). Currently on affects HTML output (no patch + for FO output provided). + + â— Improved handling of relative locations generated files + + â— Initial support of syntax highlighting of programlistings. + + â— Support org + + â— Support person + + â— Support $keep.relative.image.uris also when chunking + +Highlighting + +The following changes have been made to the highlighting code since the 1.70.1 +release. + + â— Initial support of syntax highlighting of programlistings. + +Manpages + +The following changes have been made to the manpages code since the 1.70.1 +release. + + â— Suppress footnote markers and output warning that footnotes are + not yet supported. + + â— Handle instances of address/otheraddr/ulink in author et al in the + same way as email instances; that is, display them on the same + linke as the author, editor, etc., name. + + â— Don't number or link-list any Ulink instance whose string value is + identical to the value of its url attribute. Just display it inline. + + â— Don't output punctuation between Refname and Refpurpose if + Refpurpose is empty. Also corrected handling of Refsect2/title + instances, and removed some debugging stuff that was generated in + manpages output to mark the ends of sections. + + â— Added new email.delimiters.enabled param. If non-zero (the + default), delimiters are generated around e-mail addresses (output + of the email element). If zero, the delimiters are suppressed. + + â— In manpages output, if the last/nearest *info element for + particular Refentry has multiple Copyright and/or Legalnotice + children, process them all (not just the first ones). Closes bug + 1524576. Thanks to Sam Steingold for the report and to Daniel + Leidert for providing a patch. + +Params + +The following changes have been made to the params code since the 1.70.1 +release. + + â— Added reference.autolabel parameter for controlling labels on + reference output. + + â— Added namespace declarations to document elements for all param files. + + â— Updated index.method doc to describe revised setup for importing index +  extensions. + + â— Added several new HTML parameters for controlling appearance of + content on HTML title pages: + + contrib.inline.enabled: +   If non-zero (the default), output of the contrib element is +   displayed as inline content rather than as block content. + + othercredit.like.author.enabled: +   If non-zero, output of the othercredit element on titlepages is +   displayed in the same style as author and editor output. If zero +   (the default), othercredit output is displayed using a style +   different than that of author and editor. + + blurb.on.titlepage.enabled: +   If non-zero, output from authorblurb and personblurb elements is +   displayed on title pages. If zero (the default), output from +   those elements is suppressed on title pages (unless you are +   using a titlepage customization that causes them to be included). + + editedby.enabled +   If non-zero (the default), a localized Edited by heading is +   displayed above editor names in output of the editor element. + + â— Added new email.delimiters.enabled param. If non-zero (the + default), delimiters are generated around e-mail addresses (output + of the email element). If zero, the delimiters are suppressed. + + â— Added qanda.nested.in.toc param. Default value is zero. If + non-zero, instances of "nested" Qandaentry (ones that are children + of Answer elements) are displayed in the TOC. Closes patch 1509018 + (from Daniel Leidert). Currently on affects HTML output (no patch + for FO output provided). + + â— Initial support of syntax highlighting of programlistings. + +Tools + +The following changes have been made to the tools code since the 1.70.1 +release. + + â— Racheted down font sizes of headings in example makefile FO output. + + â— Added param and attribute set to example makefile, for getting + wrapping in verbatims in FO output. + + â— Renamed Makefile.paramDoc to Makefile.docParam. + + â— Added Makefile.paramDoc file, for creating versions of param.xsl + files with doc embedded. + + â— Added variable to example makefile for controlling whether HTML or + XHTML is generated. + +Release: 1.70.1 + +This is a stable release of the 1.70 stylesheets. It includes only a few small +changes from 1.70.0. + +The following is a list of changes that have been made since the 1.70.0 +release. + +FO + +The following changes have been made to the fo code since the 1.70.0 release. + + â— Added three new attribute sets (revhistory.title.properties, + revhistory.table.properties and revhistory.table.cell.properties) for + controlling appearance of revhistory in FO output. + + Modified: fo/block.xsl,1.34; fo/param.ent,1.101; fo/param.xweb,1.114; fo/ + titlepage.xsl,1.41; params/revhistory.table.cell.properties.xml,1.1; params + /revhistory.table.properties.xml,1.1; params/ + revhistory.title.properties.xml,1.1 - Jirka Kosek + + â— Support DBv5 revisions with full author name (not only authorinitials) + + Modified: fo/block.xsl,1.33; fo/titlepage.xsl,1.40 - Jirka Kosek + +HTML + +The following changes have been made to the html code since the 1.70.0 release. + + â— Support DBv5 revisions with full author name (not only authorinitials) + + Modified: html/block.xsl,1.23; html/titlepage.xsl,1.34 - Jirka Kosek + +HTMLHelp + +The following changes have been made to the htmlhelp code since the 1.70.0 +release. + + â— htmlhelp.generate.index is now param, not variable. This means that you can + override its setting from outside. This is useful when you generate + indexterms on the fly (see http://www.xml.com/pub/a/2004/07/14/dbndx.html? + page=3). + + Modified: htmlhelp/htmlhelp-common.xsl,1.38 - Jirka Kosek + + â— Support chunk.tocs.and.lots in HTML Help + + Modified: htmlhelp/htmlhelp-common.xsl,1.37 - Jirka Kosek + +Params + +The following changes have been made to the params code since the 1.70.0 +release. + + â— Added three new attribute sets (revhistory.title.properties, + revhistory.table.properties and revhistory.table.cell.properties) for + controlling appearance of revhistory in FO output. + + Modified: fo/block.xsl,1.34; fo/param.ent,1.101; fo/param.xweb,1.114; fo/ + titlepage.xsl,1.41; params/revhistory.table.cell.properties.xml,1.1; params + /revhistory.table.properties.xml,1.1; params/ + revhistory.title.properties.xml,1.1 - Jirka Kosek + +Release: 1.70.0 + +As with all DocBook Project dot-zero releases, this is an experimental release. +It will be followed shortly by a stable release. + +This release adds a number of new features, including: + + â— support for selecting alternative index-collation methods (in particular, + support for using a collation library developed by Eliot Kimber) + + â— improved handling of DocBook 5 document instances (through a + namespace-stripping mechanism) + + â— full support for CALS and HTML tables in manpages output + + â— a mechanism for preserving relative URIs in documents that make use of + XInclude + + â— support for the "new" .90 version of FOP + + â— enhanced capabilities for controlling formatting of lists in HTML and FO + output + + â— autogeneration of AUTHOR and COPYRIGHT sections in manpages output + + â— support for generating crop marks in FO/PDF output + + â— support for qandaset as a root element in FO output + + â— support for floatstyle and orient on all table types + + â— support for floatstyle in figure, and example + + â— pgwide.properties attribute-set supports extending figure, example and + table into the left indent area instead of spanning multiple columns. + +The following is a detailed list of enhancements and API changes that have been +made since the 1.69.1 release. + +Common + +The following changes have been made to the common code since the 1.69.1 +release. + + â— Add the xsl:key for the kimber indexing method. + + Modified: common/autoidx-ng.xsl,1.2 - Robert Stayton + + â— Add support for qandaset. + + Modified: common/labels.xsl,1.37; common/subtitles.xsl,1.7; common/ + titles.xsl,1.35 - Robert Stayton + + â— Support dbhtml/dbfo start PI for orderedlist numbering in both HTML and FO + + Modified: common/common.xsl,1.61; html/lists.xsl,1.50 - Norman Walsh + + â— Added CVS header. + + Modified: common/stripns.xsl,1.12 - Robert Stayton + + â— Changed content model of text element to ANY rather than #PCDATA because + they could contain markup. + + Modified: common/targetdatabase.dtd,1.7 - Robert Stayton + + â— Added refentry.meta.get.quietly param. + + If zero (the default), notes and warnings about "missing" markup are + generated during gathering of refentry metadata. If non-zero, the metadata + is gathered "quietly" -- that is, the notes and warnings are suppressed. + + NOTE: If you are processing a large amount of refentry content, you may be + able to speed up processing significantly by setting a non-zero value for + refentry.meta.get.quietly. + + Modified: common/refentry.xsl,1.17; manpages/param.ent,1.15; manpages/ + param.xweb,1.17; params/refentry.meta.get.quietly.xml,1.1 - Michael(tm) + Smith + + â— After namespace stripping, the source document is the temporary tree + created by the stripping process and it has the wrong base URI for relative + references. Earlier versions of this code used to try to fix that by + patching the elements with relative @fileref attributes. That was + inadequate because it calculated an absolute base URI without considering + that there might be xml:base attributes already in effect. It seems obvious + now that the right thing to do is simply to put the xml:base on the root of + the document. And that seems to work. + + Modified: common/stripns.xsl,1.7 - Norman Walsh + + â— Added support for "software" and "sectdesc" class values on refmiscinfo; + "software" is treated identically to "source", and "setdesc" is treated + identically to "manual". + + Modified: common/refentry.xsl,1.10; params/ + man.th.extra2.max.length.xml,1.3; params/ + refentry.source.name.profile.xml,1.4 - Michael(tm) Smith + + â— Added support for DocBook 5 namespace-stripping in manpages stylesheet. + Closes request #1210692. + + Modified: common/common.xsl,1.56; manpages/docbook.xsl,1.57 - Michael(tm) + Smith + + â— Added to make stripns.xsl usable as a standalone + stylesheet for stripping out DocBook 5/NG to DocBook 4. Note that DocBook + XSLT drivers that include this stylesheet all override the match="/" + template. + + Modified: common/stripns.xsl,1.4 - Michael(tm) Smith + + â— Number figures, examples, and tables from book if there is no prefix (i.e. + if chapter.autolabel is set to 0). This avoids having the list of figures + where the figures mysteriously restart their numeration periodically when + chapter.autolabel is set to 0. + + Modified: common/labels.xsl,1.36 - David Cramer + + â— Add task template in title.markup mode. + + Modified: common/titles.xsl,1.34 - Robert Stayton + + â— Add children (with ids) of formal objects to target data. + + Modified: common/targets.xsl,1.10 - Robert Stayton + + â— Added support for case when personname doesn't contain specific name markup + (as allowed in DocBook 5.0) + + Modified: common/common.xsl,1.54 - Jirka Kosek + +Extensions + +The following changes have been made to the extensions code since the 1.69.1 +release. + + â— Support Xalan 2.7 + + Modified: extensions/xalan27/.cvsignore,1.1; extensions/xalan27/ + build.xml,1.1; extensions/xalan27/nbproject/.cvsignore,1.1; extensions/ + xalan27/nbproject/build-impl.xml,1.1; extensions/xalan27/nbproject/ + genfiles.properties,1.1; extensions/xalan27/nbproject/ + project.properties,1.1; extensions/xalan27/nbproject/project.xml,1.1; + extensions/xalan27/src/com/nwalsh/xalan/CVS.java,1.1; extensions/xalan27/ + src/com/nwalsh/xalan/Callout.java,1.1; extensions/xalan27/src/com/nwalsh/ + xalan/FormatCallout.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/ + FormatDingbatCallout.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/ + FormatGraphicCallout.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/ + FormatTextCallout.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/ + FormatUnicodeCallout.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/ + Func.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/ + ImageIntrinsics.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/ + Params.java,1.1; extensions/xalan27/src/com/nwalsh/xalan/Table.java,1.1; + extensions/xalan27/src/com/nwalsh/xalan/Text.java,1.1; extensions/xalan27/ + src/com/nwalsh/xalan/Verbatim.java,1.1 - Norman Walsh + + â— Handle the case where the imageFn is actually a URI. This still needs work. + + Modified: extensions/saxon643/com/nwalsh/saxon/ImageIntrinsics.java,1.4 - + Norman Walsh + +FO + +The following changes have been made to the fo code since the 1.69.1 release. + + â— Adapted to the new indexing code. Now works just like a wrapper that calls + kosek indexing method, originally implemented here. + + Modified: fo/autoidx-ng.xsl,1.5 - Jirka Kosek + + â— Added parameters for header/footer table minimum height. + + Modified: fo/pagesetup.xsl,1.60; fo/param.ent,1.100; fo/param.xweb,1.113 - + Robert Stayton + + â— Add the index.method parameter. + + Modified: fo/param.ent,1.99; fo/param.xweb,1.112 - Robert Stayton + + â— Integrate support for three indexing methods: - the original English-only + method. - Jirka Kosek's method using EXSLT extensions. - Eliot Kimber's + method using Saxon extensions. Use the 'index.method' parameter to select. + + Modified: fo/autoidx.xsl,1.38 - Robert Stayton + + â— Add support for TOC for qandaset in fo output. + + Modified: fo/autotoc.xsl,1.30; fo/qandaset.xsl,1.20 - Robert Stayton + + â— Added parameter ulink.hyphenate.chars. Added parameter insert.link + .page.number. + + Modified: fo/param.ent,1.98; fo/param.xweb,1.111 - Robert Stayton + + â— Implemented feature request #942524 to add insert.link.page.number to allow + link element cross references to have a page number. + + Modified: fo/xref.xsl,1.67 - Robert Stayton + + â— Add support for ulink.hyphenate.chars so more characters can be break + points in urls. + + Modified: fo/xref.xsl,1.66 - Robert Stayton + + â— Implemented patch #1075144 to make the url text in a ulink in FO output an + active link as well. + + Modified: fo/xref.xsl,1.65 - Robert Stayton + + â— table footnotes now have their own table.footnote.properties attribute set. + + Modified: fo/footnote.xsl,1.23 - Robert Stayton + + â— Add qandaset to root.elements. + + Modified: fo/docbook.xsl,1.41 - Robert Stayton + + â— Added mode="page.sequence" to make it easier to put content into a page + sequence. First used for qandaset. + + Modified: fo/component.xsl,1.37 - Robert Stayton + + â— Implemented feature request #1434408 to support formatting of biblioentry. + + Modified: fo/biblio.xsl,1.35 - Robert Stayton + + â— Added biblioentry.properties. + + Modified: fo/param.ent,1.97; fo/param.xweb,1.110 - Robert Stayton + + â— Support PTC/Arbortext bookmarks + + Modified: fo/docbook.xsl,1.40; fo/ptc.xsl,1.1 - Norman Walsh + + â— Added table.footnote.properties to permit table footnotes to format + differently from regular footnotes. + + Modified: fo/param.ent,1.96; fo/param.xweb,1.109 - Robert Stayton + + â— Refactored table templates to unify their processing and support all + options in all types. Now table and informaltable, in both Cals and Html + markup, use the same templates where possible, and all support pgwide, + rotation, and floats. There is also a placeholder table.container template + to support wrapping a table in a layout table, so the XEP table title + "continued" extension can be more easily implemented. + + Modified: fo/formal.xsl,1.52; fo/htmltbl.xsl,1.9; fo/table.xsl,1.48 - + Robert Stayton + + â— Added new attribute set toc.line.properties for controlling appearance of + lines in ToC/LoT + + Modified: fo/autotoc.xsl,1.29; fo/param.ent,1.95; fo/param.xweb,1.108 - + Jirka Kosek + + â— Added support for float to example and equation. Added support for pgwide + to figure, example, and equation (the latter two via a dbfo pgwide="1" + processing instruction). + + Modified: fo/formal.xsl,1.51 - Robert Stayton + + â— Add pgwide.properties attribute-set. + + Modified: fo/param.ent,1.94; fo/param.xweb,1.107 - Robert Stayton + + â— Added refclass.suppress param. + + If the value of refclass.suppress is non-zero, then display refclass + contents is suppressed in output. Affects HTML and FO output only. + + Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90; html + /param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm) Smith + + â— Improved support for task subelements + + Modified: fo/task.xsl,1.3; html/task.xsl,1.3 - Jirka Kosek + + â— Adjusted spacing around K&R-formatted Funcdef and Paramdef output such that + it can more easily be discerned where one ends and the other begins. Closes + #1213264. + + Modified: fo/synop.xsl,1.18 - Michael(tm) Smith + + â— Made handling of paramdef/parameter in FO output consistent with that in + HTML and manpages output. Closes #1213259. + + Modified: fo/synop.xsl,1.17 - Michael(tm) Smith + + â— Made handling of Refnamediv consistent with formatting in HTML and manpages + output; specifically, changed so that Refname (comma-separated list of + multiple instances found) is used (instead of Refentrytitle as previously), + then em-dash, then the Refpurpose. Closes #1212562. + + Modified: fo/refentry.xsl,1.30 - Michael(tm) Smith + + â— Added output of Releaseinfo to recto titlepage ("copyright" page) for Book + in FO output. This makes it consistent with HTML output. Closes #1327034. + Thanks to Paul DuBois for reporting. + + Modified: fo/titlepage.templates.xml,1.28 - Michael(tm) Smith + + â— Added condition for setting block-progression-dimension.minimum on + table-row, instead of height, when fop1.extensions is non-zero. For an + explanation of the reason for the change, see: http://wiki.apache.org/ + xmlgraphics-fop/Troubleshooting/CommonLogMessages + + Modified: fo/pagesetup.xsl,1.59 - Michael(tm) Smith + + â— Added new refclass.suppress param for suppressing display of Refclass in + HTML and FO output. Did not add it to manpages because manpages stylesheet + is currently just silently ignoring Refclass anyway. Closes request # + 1461065. Thanks to Davor Ocelic (docelic) for reporting. + + Modified: fo/refentry.xsl,1.29; html/refentry.xsl,1.23 - Michael(tm) Smith + + â— Add support for keep-together PI to informal objects. + + Modified: fo/formal.xsl,1.50 - Robert Stayton + + â— Add support for fop1.extensions. + + Modified: fo/formal.xsl,1.49; fo/graphics.xsl,1.44; fo/table.xsl,1.47 - + Robert Stayton + + â— Add support for fop1 bookmarks. + + Modified: fo/docbook.xsl,1.39 - Robert Stayton + + â— Add fop1.extentions parameter to add support for fop development version. + + Modified: fo/param.ent,1.92; fo/param.xweb,1.105 - Robert Stayton + + â— Start supporting fop development version, which will become fop version 1. + + Modified: fo/fop1.xsl,1.1 - Robert Stayton + + â— Add template for task in mode="xref-to". + + Modified: fo/xref.xsl,1.63; html/xref.xsl,1.57 - Robert Stayton + + â— table footnotes now also get footnote.properties attribute-set. + + Modified: fo/footnote.xsl,1.22 - Robert Stayton + + â— Added index.separator named template to compute the separator punctuation + based on locale. + + Modified: fo/autoidx.xsl,1.36 - Robert Stayton + + â— Added support for link, olink, and xref within OO Classsynopsis and + children. (Because DocBook NG/5 allows it). + + Modified: fo/synop.xsl,1.15; html/synop.xsl,1.19 - Michael(tm) Smith + + â— Support date as an inline + + Modified: fo/inline.xsl,1.43; html/inline.xsl,1.46 - Norman Walsh + + â— Added new parameter keep.relative.image.uris + + Modified: fo/param.ent,1.91; fo/param.xweb,1.104; html/param.ent,1.87; html + /param.xweb,1.96; params/keep.relative.image.uris.xml,1.1 - Norman Walsh + + â— Map Unicode space characters U+2000-U+200A to fo:leaders. + + Modified: fo/docbook.xsl,1.38; fo/passivetex.xsl,1.4; fo/spaces.xsl,1.1 - + Jirka Kosek + + â— Output a real em dash for em-dash dingbat (instead of two hypens). + + Modified: fo/fo.xsl,1.7 - Michael(tm) Smith + + â— Support default label width parameters for itemized and ordered lists + + Modified: fo/lists.xsl,1.64; fo/param.ent,1.90; fo/param.xweb,1.103; params + /itemizedlist.label.width.xml,1.1; params/orderedlist.label.width.xml,1.1 - + Norman Walsh + + â— Generate localized title for Refsynopsisdiv if no appropriate Title + descendant found in source. Closes #1212398. This change makes behavior for + the Synopsis title consistent with the behavior of HTML and manpages + output. + + Also, added xsl:use-attribute-sets="normal.para.spacing" to block generated + for Cmdsynopsis output. Previously, that block had no spacing at all + specified, which resulted it being crammed up to closely to the Synopsis + head. + + Modified: fo/refentry.xsl,1.28; fo/synop.xsl,1.13 - Michael(tm) Smith + + â— Added parameters to support localization of index item punctuation. + + Modified: fo/autoidx.xsl,1.35 - Robert Stayton + + â— Added index.number.separator, index.range.separator, and + index.term.separator parameters to support localization of punctuation in + index entries. + + Modified: fo/param.ent,1.89; fo/param.xweb,1.102 - Robert Stayton + + â— Added "Cross References" section in HTML doc (for consistency with the FO + doc). Also, moved the existing FO "Cross References" section to follow the + "Linking" section. + + Modified: fo/param.xweb,1.101; html/param.xweb,1.95 - Michael(tm) Smith + + â— Added ID attribues to all Reference elements (e.g., id="tables" for the doc + for section on Table params). So pages for all subsections of ref docs now + have stable filenames instead of arbitrary generated filenames. + + Modified: fo/param.xweb,1.100; html/param.xweb,1.94 - Michael(tm) Smith + + â— Added two new parameters for handling of multi-term varlistentry elements: + + variablelist.term.break.after: When the variablelist.term.break.after is + non-zero, it will generate a line break after each term multi-term + varlistentry. + + variablelist.term.separator: When a varlistentry contains multiple term + elements, the string specified in the value of the + variablelist.term.separator parameter is placed after each term except the + last. The default is ", " (a comma followed by a space). To suppress + rendering of the separator, set the value of variablelist.term.separator to + the empty string (""). + + These parameters are primarily intended to be useful if you have multi-term + varlistentries that have long terms. + + Closes #1306676. Thanks to Sam Steingold for providing an example "lots of + long terms" doc that demonstrated the value of having these options. + + Also, added normalize-space() call to processing of each term. + + This change affects all output formats (HTML, PDF, manpages). The default + behavior should pretty much remain the same as before, but it is possible + (as always) that the change may introduce some new bugginess. + + Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; fo/param.xweb,1.99; html/ + lists.xsl,1.48; html/param.ent,1.86; html/param.xweb,1.93; manpages/ + lists.xsl,1.22; manpages/param.ent,1.14; manpages/param.xweb,1.16; params/ + variablelist.term.break.after.xml,1.1; params/ + variablelist.term.separator.xml,1.1 - Michael(tm) Smith + + â— Add sidebar titlepage placeholder attset for styles. + + Modified: fo/titlepage.xsl,1.37 - Robert Stayton + + â— Add titlepage for sidebar. + + Modified: fo/titlepage.templates.xml,1.27 - Robert Stayton + + â— Implemented RFE #1292615. + + Added bunch of new parameters (attribute sets) that affect list + presentation: list.block.properties, itemizedlist.properties, orderedlist + .properties, itemizedlist.label.properties and orderedlist.label + .properties. Default behaviour of stylesheets has not been changed but + further customizations will be much more easier. + + Modified: fo/lists.xsl,1.61; fo/param.ent,1.87; fo/param.xweb,1.98; params/ + itemizedlist.label.properties.xml,1.1; params/ + itemizedlist.properties.xml,1.1; params/list.block.properties.xml,1.1; + params/orderedlist.label.properties.xml,1.1; params/ + orderedlist.properties.xml,1.1 - Jirka Kosek + + â— Implemented RFE #1242092. + + You can enable crop marks in your document by setting crop.marks=1 and + xep.extensions=1. Appearance of crop marks can be controlled by parameters + crop.mark.bleed (6pt), crop.mark.offset (24pt) and crop.mark.width (0.5pt). + + Also there is new named template called user-xep-pis. You can overwrite it + in order to produce some PIs that can control XEP as described in http:// + www.renderx.com/reference.html#Output_Formats + + Modified: fo/docbook.xsl,1.36; fo/param.ent,1.86; fo/param.xweb,1.97; fo/ + xep.xsl,1.23; params/crop.mark.bleed.xml,1.1; params/ + crop.mark.offset.xml,1.1; params/crop.mark.width.xml,1.1; params/ + crop.marks.xml,1.1 - Jirka Kosek + +HTML + +The following changes have been made to the html code since the 1.69.1 release. + + â— implemented index.method parameter and three methods. + + Modified: html/autoidx.xsl,1.28 - Robert Stayton + + â— added index.method parameter to support 3 indexing methods. + + Modified: html/param.ent,1.94; html/param.xweb,1.103 - Robert Stayton + + â— Implemented feature request #1072510 as a processing instruction to permit + including external HTML content into HTML output. + + Modified: html/pi.xsl,1.9 - Robert Stayton + + â— Added new parameter chunk.tocs.and.lots.has.title which controls presence + of title in a separate chunk with ToC/LoT. Disabling title can be very + useful if you are generating frameset output (well, yes those frames, but + some customers really want them ;-). + + Modified: html/chunk-code.xsl,1.15; html/param.ent,1.93; html/ + param.xweb,1.102; params/chunk.tocs.and.lots.has.title.xml,1.1 - Jirka + Kosek + + â— Support dbhtml/dbfo start PI for orderedlist numbering in both HTML and FO + + Modified: common/common.xsl,1.61; html/lists.xsl,1.50 - Norman Walsh + + â— Allow ToC without title also for set and book. + + Modified: html/autotoc.xsl,1.37; html/division.xsl,1.12 - Jirka Kosek + + â— Implemented floats uniformly for figure, example, equation and + informalfigure, informalexample, and informalequation. + + Modified: html/formal.xsl,1.22 - Robert Stayton + + â— Added the autotoc.label.in.hyperlink param. + + If the value of autotoc.label.in.hyperlink is non-zero, labels are included + in hyperlinked titles in the TOC. If it is instead zero, labels are still + displayed prior to the hyperlinked titles, but are not hyperlinked along + with the titles. + + Closes patch #1065868. Thanks to anatoly techtonik for the patch. + + Modified: html/autotoc.xsl,1.36; html/param.ent,1.92; html/ + param.xweb,1.101; params/autotoc.label.in.hyperlink.xml,1.1 - Michael(tm) + Smith + + â— Added two new params: html.head.legalnotice.link.types and html.head. + legalnotice.link.multiple. + + If the value of the generate.legalnotice.link is non-zero, then the + stylesheet generates (in the head section of the HTML source) either a + single HTML link element or, if the value of the html.head.legalnotice.link + .multiple is non-zero, one link element for each link type specified. Each + link has the following attributes: + + - a rel attribute whose value is derived from the value of html.head. + legalnotice.link.types + + - an href attribute whose value is set to the URL of the file containing + the legalnotice + + - a title attribute whose value is set to the title of the corresponding + legalnotice (or a title programatically determined by the stylesheet) + + For example: + + + + Closes #1476450. Thanks to Sam Steingold. + + Modified: html/chunk-common.xsl,1.45; html/param.ent,1.91; html/ + param.xweb,1.100; params/generate.legalnotice.link.xml,1.4; params/ + html.head.legalnotice.link.multiple.xml,1.1; params/ + html.head.legalnotice.link.types.xml,1.1 - Michael(tm) Smith + + â— Added refclass.suppress param. + + If the value of refclass.suppress is non-zero, then display refclass + contents is suppressed in output. Affects HTML and FO output only. + + Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90; html + /param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm) Smith + + â— Improved support for task subelements + + Modified: fo/task.xsl,1.3; html/task.xsl,1.3 - Jirka Kosek + + â— Added new refclass.suppress param for suppressing display of Refclass in + HTML and FO output. Did not add it to manpages because manpages stylesheet + is currently just silently ignoring Refclass anyway. Closes request # + 1461065. Thanks to Davor Ocelic (docelic) for reporting. + + Modified: fo/refentry.xsl,1.29; html/refentry.xsl,1.23 - Michael(tm) Smith + + â— Process alt text with normalize-space(). Replace tab indents with spaces. + + Modified: html/graphics.xsl,1.57 - Robert Stayton + + â— Content of citation element is automatically linked to the bibliographic + entry with the corresponding abbrev. + + Modified: html/biblio.xsl,1.26; html/inline.xsl,1.47; html/xref.xsl,1.58 - + Jirka Kosek + + â— Add template for task in mode="xref-to". + + Modified: fo/xref.xsl,1.63; html/xref.xsl,1.57 - Robert Stayton + + â— Suppress ID warnings if the .warnings parameter is 0 + + Modified: html/html.xsl,1.17 - Norman Walsh + + â— Add support for floatstyle to figure. + + Modified: html/formal.xsl,1.21 - Robert Stayton + + â— Handling of xref to area/areaset need support in extensions code also. I + currently have no time to touch extensions code, so code is here to be + enabled when extension is fixed also. + + Modified: html/xref.xsl,1.56 - Jirka Kosek + + â— Added 3 parameters for overriding gentext for index punctuation. + + Modified: html/param.ent,1.89; html/param.xweb,1.98 - Robert Stayton + + â— Added parameters to support localization of index item punctuation. Added + index.separator named template to compute the separator punctuation based + on locale. + + Modified: html/autoidx.xsl,1.27 - Robert Stayton + + â— Added a
wrapper around output of contents + of all formal objects. Also, added an optional
+ linebreak after all formal objects. + + WARNING: Because this change places an additional DIV between the DIV + wrapper for the equation and the equation contents, it may break some + existing CSS stylesheets that have been created with the assumption that + there would never be an intervening DIV there. + + The following is an example of what Equation output looks like as a result + of the changes described above. + +
+ +

(1.3)

+ +
1+1=3

+ + Rationale: These changes allow CSS control of the placement of the + formal-object title relative to the formal-object contents. For example, + using the CSS "float" property enables the title and contents to be + rendered on the same line. Example stylesheet: + + .equation { margin-top: 20px; margin-bottom: 20px; } .equation-contents { + float: left; } + + .equation .title { margin-top: 0; float: right; margin-right: 200px; } + + .equation .title b { font-weight: normal; } + + .equation-break { clear: both; } + + Note that the purpose of the ".equation-break" class is to provide a way to + clear off the floats. + + If you want to instead have the equation title rendered to the left of the + equation contents, you can do something like this: + + .equation { margin-top: 20px; width: 300px; margin-bottom: 20px; } + .equation-contents { float: right; } + + .equation .title { margin-top: 0; float: left; margin-right: 200px; } + + .equation .title b { font-weight: normal; } + + .equation-break { clear: both; } + + Modified: html/formal.xsl,1.20 - Michael(tm) Smith + + â— Added a chunker.output.quiet top-level parameter so that the chunker can be + made quiet by default + + Modified: html/chunker.xsl,1.26 - Norman Walsh + + â— Added support for link, olink, and xref within OO Classsynopsis and + children. (Because DocBook NG/5 allows it). + + Modified: fo/synop.xsl,1.15; html/synop.xsl,1.19 - Michael(tm) Smith + + â— New parameter: id.warnings. If non-zero, warnings are generated for titled + objects that don't have titles. True by default; I wonder if this will be + too aggressive? + + Modified: html/biblio.xsl,1.25; html/component.xsl,1.27; html/ + division.xsl,1.11; html/formal.xsl,1.19; html/glossary.xsl,1.20; html/ + html.xsl,1.13; html/index.xsl,1.16; html/param.ent,1.88; html/ + param.xweb,1.97; html/refentry.xsl,1.22; html/sections.xsl,1.30; params/ + id.warnings.xml,1.1 - Norman Walsh + + â— If the keep.relative.image.uris parameter is true, don't use the absolute + URI (as calculated from xml:base) in the img src attribute, us the value + the author specified. Note that we still have to calculate the absolute + filename for use in the image intrinsics extension. + + Modified: html/graphics.xsl,1.56 - Norman Walsh + + â— Support date as an inline + + Modified: fo/inline.xsl,1.43; html/inline.xsl,1.46 - Norman Walsh + + â— Added new parameter keep.relative.image.uris + + Modified: fo/param.ent,1.91; fo/param.xweb,1.104; html/param.ent,1.87; html + /param.xweb,1.96; params/keep.relative.image.uris.xml,1.1 - Norman Walsh + + â— Added two new parameters for handling of multi-term varlistentry elements: + + variablelist.term.break.after: When the variablelist.term.break.after is + non-zero, it will generate a line break after each term multi-term + varlistentry. + + variablelist.term.separator: When a varlistentry contains multiple term + elements, the string specified in the value of the + variablelist.term.separator parameter is placed after each term except the + last. The default is ", " (a comma followed by a space). To suppress + rendering of the separator, set the value of variablelist.term.separator to + the empty string (""). + + These parameters are primarily intended to be useful if you have multi-term + varlistentries that have long terms. + + Closes #1306676. Thanks to Sam Steingold for providing an example "lots of + long terms" doc that demonstrated the value of having these options. + + Also, added normalize-space() call to processing of each term. + + This change affects all output formats (HTML, PDF, manpages). The default + behavior should pretty much remain the same as before, but it is possible + (as always) that the change may introduce some new bugginess. + + Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; fo/param.xweb,1.99; html/ + lists.xsl,1.48; html/param.ent,1.86; html/param.xweb,1.93; manpages/ + lists.xsl,1.22; manpages/param.ent,1.14; manpages/param.xweb,1.16; params/ + variablelist.term.break.after.xml,1.1; params/ + variablelist.term.separator.xml,1.1 - Michael(tm) Smith + + â— Added "wrapper-name" param to inline.charseq named template, enabling it to + output inlines other than just "span". Acronym and Abbrev templates now use + inline.charseq to output HTML "acronym" and "abbr" elements (instead of + "span"). Closes #1305468. Thanks to Sam Steingold for suggesting the + change. + + Modified: html/inline.xsl,1.45 - Michael(tm) Smith + +Manpages + +The following changes have been made to the manpages code since the 1.69.1 +release. + + â— Added the following params: + + - man.indent.width (string-valued) - man.indent.refsect (boolean) - + man.indent.blurbs (boolean) - man.indent.lists (boolean) - + man.indent.verbatims (boolean) + + Note that in earlier snapshots, man.indent.width was named + man.indentation.default.value and the boolean params had names like + man.indentation.*.adjust. Also the man.indent.blurbs param was called + man.indentation.authors.adjust (or something). + + The behavior now is: If the value of a particular man.indent.* boolean + param is non-zero, the corresponding contents (refsect*, list items, + authorblurb/personblurb, vervatims) are displayed with a left margin + indented by a width equal to the value of man.indent.width. + + Modified: params/man.indent.blurbs.xml,1.1; manpages/docbook.xsl,1.74; + manpages/info.xsl,1.20; manpages/lists.xsl,1.30; manpages/other.xsl,1.20; + manpages/param.ent,1.22; manpages/param.xweb,1.24; manpages/ + refentry.xsl,1.14; params/man.indent.lists.xml,1.1; params/ + man.indent.refsect.xml,1.1; params/man.indent.verbatims.xml,1.1; params/ + man.indent.width.xml,1.1 - Michael(tm) Smith + + â— Added man.table.footnotes.divider param. + + In each table that contains footenotes, the string specified by the man. + table.footnotes.divider parameter is output before the list of footnotes + for the table. + + Modified: manpages/docbook.xsl,1.73; manpages/links.xsl,1.6; manpages/ + param.ent,1.21; manpages/param.xweb,1.23; params/ + man.table.footnotes.divider.xml,1.1 - Michael(tm) Smith + + â— Added the man.output.in.separate.dir, man.output.base.dir, and + man.output.subdirs.enabled parameters. + + The man.output.base.dir parameter specifies the base directory into which + man-page files are output. The man.output.subdirs.enabled parameter + controls whether the files are output in subdirectories within the base + directory. + + The values of the man.output.base.dir and man.output.subdirs.enabled + parameters are used only if the value of man.output.in.separate.dir + parameter is non-zero. If the value of man.output.in.separate.dir is zero, + man-page files are not output in a separate directory. + + Modified: manpages/docbook.xsl,1.72; manpages/param.ent,1.20; manpages/ + param.xweb,1.22; params/man.output.base.dir.xml,1.1; params/ + man.output.in.separate.dir.xml,1.1; params/ + man.output.subdirs.enabled.xml,1.1 - Michael(tm) Smith + + â— Added man.font.table.headings and man.font.table.title params, for + controlling font in table headings and titles. + + Modified: manpages/docbook.xsl,1.71; manpages/param.ent,1.19; manpages/ + param.xweb,1.21; params/man.font.table.headings.xml,1.1; params/ + man.font.table.title.xml,1.1 - Michael(tm) Smith + + â— Added man.font.funcsynopsisinfo and man.font.funcprototype params, for + specifying the roff font (for example, BI, B, I) for funcsynopsisinfo and + funcprototype output. + + Modified: manpages/block.xsl,1.19; manpages/docbook.xsl,1.69; manpages/ + param.ent,1.18; manpages/param.xweb,1.20; manpages/synop.xsl,1.29; manpages + /table.xsl,1.21; params/man.font.funcprototype.xml,1.1; params/ + man.font.funcsynopsisinfo.xml,1.1 - Michael(tm) Smith + + â— Added man.segtitle.suppress param. + + If the value of man.segtitle.suppress is non-zero, then display of segtitle + contents is suppressed in output. + + Modified: manpages/docbook.xsl,1.68; manpages/param.ent,1.17; manpages/ + param.xweb,1.19; params/man.segtitle.suppress.xml,1.1 - Michael(tm) Smith + + â— Added man.output.manifest.enabled and man.output.manifest.filename params. + + If man.output.manifest.enabled is non-zero, a list of filenames for man + pages generated by the stylesheet transformation is written to the file + named by man.output.manifest.filename + + Modified: manpages/docbook.xsl,1.67; manpages/other.xsl,1.19; manpages/ + param.ent,1.16; manpages/param.xweb,1.18; params/ + man.output.manifest.enabled.xml,1.1; params/ + man.output.manifest.filename.xml,1.1; tools/make/Makefile.DocBook,1.4 - + Michael(tm) Smith + + â— Added refentry.meta.get.quietly param. + + If zero (the default), notes and warnings about "missing" markup are + generated during gathering of refentry metadata. If non-zero, the metadata + is gathered "quietly" -- that is, the notes and warnings are suppressed. + + NOTE: If you are processing a large amount of refentry content, you may be + able to speed up processing significantly by setting a non-zero value for + refentry.meta.get.quietly. + + Modified: common/refentry.xsl,1.17; manpages/param.ent,1.15; manpages/ + param.xweb,1.17; params/refentry.meta.get.quietly.xml,1.1 - Michael(tm) + Smith + + â— Changed names of all boolean indentation params to man.indent.* Also + discarded individual man.indent.*.value params and switched to just using a + common man.indent.width param (3n by default). + + Modified: manpages/docbook.xsl,1.66; manpages/info.xsl,1.19; manpages/ + lists.xsl,1.29; manpages/other.xsl,1.18; manpages/refentry.xsl,1.13 - + Michael(tm) Smith + + â— Added boolean man.output.in.separate.dir param, to control whether or not + man files are output in separate directory. + + Modified: manpages/docbook.xsl,1.65; manpages/utility.xsl,1.14 - Michael + (tm) Smith + + â— Added options for controlling indentation of verbatim output. Controlled + through the man.indentation.verbatims.adjust and + man.indentation.verbatims.value params. Closes #1242997 + + Modified: manpages/block.xsl,1.15; manpages/docbook.xsl,1.64 - Michael(tm) + Smith + + â— Added options for controlling indentation in lists and in *blurb output in + the AUTHORS section. Controlled through the man.indentation.lists.adjust, + man.indentation.lists.value, man.indentation.authors.adjust, and + man.indentation.authors.value parameters. Default is 3 characters (instead + of the roff default of 8 characters). Closes #1449369. + + Also, removed the indent that was being set on informalexample outuput. I + will instead add an option for indenting verbatims, which I think is what + the informalexample indent was intended for originally. + + Modified: manpages/block.xsl,1.14; manpages/docbook.xsl,1.63; manpages/ + info.xsl,1.18; manpages/lists.xsl,1.28 - Michael(tm) Smith + + â— Changed line-spacing call before synopfragment to use ".sp -1n" ("n" units + specified) instead of plain ".sp -1" + + Modified: manpages/synop.xsl,1.28 - Michael(tm) Smith + + â— Added support for writing man files into a specific output directory and + into appropriate subdirectories within that output directory. Controlled + through the man.base.dir parameter (similar to the base.dir support in the + HTML stylesheet) and the man.subdirs.enabled parameter, which automatically + determines the name of an appropriate subdir (for example, man/man7, man/ + man1, etc.) based on the section number/manvolnum of the source Refentry. + + Closes #1255036 and #1170317. Thanks to Denis Bradford for the original + feature request, and to Costin Stroie for submitting a patch that was very + helpful in implementing the support. + + Modified: manpages/docbook.xsl,1.62; manpages/utility.xsl,1.13 - Michael + (tm) Smith + + â— Refined XPath statements and notification messages for refentry metadata + handling. + + Modified: common/common.xsl,1.59; common/refentry.xsl,1.14; manpages/ + docbook.xsl,1.61; manpages/other.xsl,1.17 - Michael(tm) Smith + + â— Added support for copyright and legalnotice. The manpages stylesheets now + output a COPYRIGHT section, after the AUTHORS section, if a copyright or + legalnotice is found in the source. The section contains the copyright + contents followed by the legalnotice contents. Closes #1450209. + + Modified: manpages/docbook.xsl,1.59; manpages/info.xsl,1.17 - Michael(tm) + Smith + + â— Drastically reworked all of the XPath expressions used in refentry metadata + gathering -- completely removed $parentinfo and turned $info into a set of + nodes that includes the *info contents of the Refentry plus the *info + contents all all of its ancestor elements. The basic XPath expression now + used throughout is (using the example of checking for a date): + + (($info[//date])[last()]/date)[1]. + + That selects the "last" *info/date date in document order -- that is, the + one eitther on the Refentry itself or on the closest ancestor to the + Refentry. + + It's likely this change may break some things; may need to pick up some + pieces later. + + Also, changed the default value for the man.th.extra2.max.length from 40 to + 30. + + Modified: common/common.xsl,1.58; common/refentry.xsl,1.7; params/ + man.th.extra2.max.length.xml,1.2; params/refentry.date.profile.xml,1.2; + params/refentry.manual.profile.xml,1.2; params/ + refentry.source.name.profile.xml,1.2; params/ + refentry.version.profile.xml,1.2; manpages/docbook.xsl,1.58; manpages/ + other.xsl,1.15 - Michael(tm) Smith + + â— Added support for DocBook 5 namespace-stripping in manpages stylesheet. + Closes request #1210692. + + Modified: common/common.xsl,1.56; manpages/docbook.xsl,1.57 - Michael(tm) + Smith + + â— Fixed handling of table footnotes. With this checkin, the table support in + the manpages stylesheet is now basically feature complete. So this change + closes request #619532, "No support for tables" -- the oldest currently + open manpages feature request, submitted by Ben Secrest (blsecres) on + 2002-10-07. Congratulations to me [patting myself on the back]. + + Modified: manpages/block.xsl,1.11; manpages/docbook.xsl,1.55; manpages/ + table.xsl,1.15 - Michael(tm) Smith + + â— Added handling for table titles. Also fixed handling of nested tables; nest + tables are now "extracted" and displayed just after their parent tables. + + Modified: manpages/docbook.xsl,1.54; manpages/table.xsl,1.14 - Michael(tm) + Smith + + â— Added option for turning off bold formatting in Funcsynopsis. Boldface + formatting in function synopsis is mandated in the man(7) man page and is + used almost universally in existing man pages. Despite that, it really does + look like crap to have an entire Funcsynopsis output in bold, so I added + params for turning off the bold formatting and/or replacing it with a + different roff special font (e.g., "RI" for alternating roman/italic + instead of the default "BI" for alternating bold/italic). The new params + are "man.funcprototype.font" and "man.funcsynopsisinfo.font". To be + documented later. + + Closes #1452247. Thanks to Joe Orton for the feature request. + + Modified: params/man.string.subst.map.xml,1.16; manpages/block.xsl,1.10; + manpages/docbook.xsl,1.51; manpages/inline.xsl,1.16; manpages/ + synop.xsl,1.27 - Michael(tm) Smith + + â— Use AUTHORS instead of AUTHOR if we have multiple people to attribute. + Also, fixed checking such that we generate author section even if we don't + have an author (as long as there is at least one other person/entity we can + put in the section). Also adjusted assembly of content for Author metainfo + field such that we now not only use author, but try to find a "best match" + if we can't find an author name to put there. + + Closes #1233592. Thanks to Sam Steingold for the request. + + Modified: manpages/info.xsl,1.12 - Michael(tm) Smith + + â— Changes for request #1243027, "Impove handling of AUTHOR section." This + adds support for Collab, Corpauthor, Corpcredt, Orgname, Publishername, and + Publisher. Also adds support for output of Affiliation and its children, + and support for using gentext strings for auto-attributing roles (Author, + Editor, Publisher, Translator, etc.). Also did a lot of code cleanup and + modularization of all the AUTHOR handling code. And fixed a bug that was + causing Author info to not be picked up correctly for metainfo comment we + embed in man-page source. + + Modified: manpages/info.xsl,1.11 - Michael(tm) Smith + + â— Support bold output for "emphasis remap='B'". (because Eric Raymond's + doclifter(1) tool converts groff source marked up with ".B" request or "\ + fB" escapes to DocBook "emphasis remap='B'".) + + Modified: manpages/inline.xsl,1.14 - Michael(tm) Smith + + â— Added support for Segmentedlist. Details: Output is tabular, with no option + for "list" type output. Output for Segtitle elements can be supressed by + setting man.segtitle.suppress. If Segtitle content is output, it is + rendered in italic type (not bold because not all terminals support bold + and so italic ensures the stand out on those terminals). Extra space (.sp + line) at end of table code ensures that it gets handled correctly in the + case where its source is the child of a Para. Closes feature-request # + 1400097. Thanks to Daniel Leidert for the patch and push, and to Alastair + Rankine for filing the original feature request. + + Modified: manpages/lists.xsl,1.23; manpages/utility.xsl,1.10 - Michael(tm) + Smith + + â— Improved handling or Author/Editor/Othercredit. + + Reworked content of (non-visible) comment added at top of each page + (metadata stuff). + + Added support for generating a manifest file (useful for cleaning up after + builds, etc.) + + Modified: manpages/docbook.xsl,1.46; manpages/info.xsl,1.9; manpages/ + other.xsl,1.12; manpages/utility.xsl,1.6 - Michael(tm) Smith + + â— Added two new parameters for handling of multi-term varlistentry elements: + + variablelist.term.break.after: When the variablelist.term.break.after is + non-zero, it will generate a line break after each term multi-term + varlistentry. + + variablelist.term.separator: When a varlistentry contains multiple term + elements, the string specified in the value of the + variablelist.term.separator parameter is placed after each term except the + last. The default is ", " (a comma followed by a space). To suppress + rendering of the separator, set the value of variablelist.term.separator to + the empty string (""). + + These parameters are primarily intended to be useful if you have multi-term + varlistentries that have long terms. + + Closes #1306676. Thanks to Sam Steingold for providing an example "lots of + long terms" doc that demonstrated the value of having these options. + + Also, added normalize-space() call to processing of each term. + + This change affects all output formats (HTML, PDF, manpages). The default + behavior should pretty much remain the same as before, but it is possible + (as always) that the change may introduce some new bugginess. + + Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; fo/param.xweb,1.99; html/ + lists.xsl,1.48; html/param.ent,1.86; html/param.xweb,1.93; manpages/ + lists.xsl,1.22; manpages/param.ent,1.14; manpages/param.xweb,1.16; params/ + variablelist.term.break.after.xml,1.1; params/ + variablelist.term.separator.xml,1.1 - Michael(tm) Smith + +Params + +The following changes have been made to the params code since the 1.69.1 +release. + + â— New parameters to set header/footer table minimum height. + + Modified: params/footer.table.height.xml,1.1; params/ + header.table.height.xml,1.1 - Robert Stayton + + â— Support multiple indexing methods for different languages. + + Modified: params/index.method.xml,1.1 - Robert Stayton + + â— Remove qandaset and qandadiv from generate.toc for fo output because + formerly it wasn't working, but now it is and the default behavior should + stay the same. + + Modified: params/generate.toc.xml,1.8 - Robert Stayton + + â— add support for page number references to link element too. + + Modified: params/insert.link.page.number.xml,1.1 - Robert Stayton + + â— Add support for more characters to hyphen on when ulink.hyphenate is turned + on. + + Modified: params/ulink.hyphenate.chars.xml,1.1; params/ + ulink.hyphenate.xml,1.3 - Robert Stayton + + â— New attribute-set to format biblioentry and bibliomixed. + + Modified: params/biblioentry.properties.xml,1.1 - Robert Stayton + + â— Added new parameter chunk.tocs.and.lots.has.title which controls presence + of title in a separate chunk with ToC/LoT. Disabling title can be very + useful if you are generating frameset output (well, yes those frames, but + some customers really want them ;-). + + Modified: html/chunk-code.xsl,1.15; html/param.ent,1.93; html/ + param.xweb,1.102; params/chunk.tocs.and.lots.has.title.xml,1.1 - Jirka + Kosek + + â— Added new attribute set toc.line.properties for controlling appearance of + lines in ToC/LoT + + Modified: params/toc.line.properties.xml,1.1 - Jirka Kosek + + â— Allow table footnotes to have different properties from regular footnotes. + + Modified: params/table.footnote.properties.xml,1.1 - Robert Stayton + + â— Set properties for pgwide="1" objects. + + Modified: params/pgwide.properties.xml,1.1 - Robert Stayton + + â— Added the autotoc.label.in.hyperlink param. + + If the value of autotoc.label.in.hyperlink is non-zero, labels are included + in hyperlinked titles in the TOC. If it is instead zero, labels are still + displayed prior to the hyperlinked titles, but are not hyperlinked along + with the titles. + + Closes patch #1065868. Thanks to anatoly techtonik for the patch. + + Modified: html/autotoc.xsl,1.36; html/param.ent,1.92; html/ + param.xweb,1.101; params/autotoc.label.in.hyperlink.xml,1.1 - Michael(tm) + Smith + + â— Added two new params: html.head.legalnotice.link.types and html.head. + legalnotice.link.multiple. + + If the value of the generate.legalnotice.link is non-zero, then the + stylesheet generates (in the head section of the HTML source) either a + single HTML link element or, if the value of the html.head.legalnotice.link + .multiple is non-zero, one link element for each link type specified. Each + link has the following attributes: + + - a rel attribute whose value is derived from the value of html.head. + legalnotice.link.types + + - an href attribute whose value is set to the URL of the file containing + the legalnotice + + - a title attribute whose value is set to the title of the corresponding + legalnotice (or a title programatically determined by the stylesheet) + + For example: + + + + Closes #1476450. Thanks to Sam Steingold. + + Modified: html/chunk-common.xsl,1.45; html/param.ent,1.91; html/ + param.xweb,1.100; params/generate.legalnotice.link.xml,1.4; params/ + html.head.legalnotice.link.multiple.xml,1.1; params/ + html.head.legalnotice.link.types.xml,1.1 - Michael(tm) Smith + + â— Added the following params: + + - man.indent.width (string-valued) - man.indent.refsect (boolean) - + man.indent.blurbs (boolean) - man.indent.lists (boolean) - + man.indent.verbatims (boolean) + + Note that in earlier snapshots, man.indent.width was named + man.indentation.default.value and the boolean params had names like + man.indentation.*.adjust. Also the man.indent.blurbs param was called + man.indentation.authors.adjust (or something). + + The behavior now is: If the value of a particular man.indent.* boolean + param is non-zero, the corresponding contents (refsect*, list items, + authorblurb/personblurb, vervatims) are displayed with a left margin + indented by a width equal to the value of man.indent.width. + + Modified: params/man.indent.blurbs.xml,1.1; manpages/docbook.xsl,1.74; + manpages/info.xsl,1.20; manpages/lists.xsl,1.30; manpages/other.xsl,1.20; + manpages/param.ent,1.22; manpages/param.xweb,1.24; manpages/ + refentry.xsl,1.14; params/man.indent.lists.xml,1.1; params/ + man.indent.refsect.xml,1.1; params/man.indent.verbatims.xml,1.1; params/ + man.indent.width.xml,1.1 - Michael(tm) Smith + + â— Added man.table.footnotes.divider param. + + In each table that contains footenotes, the string specified by the man. + table.footnotes.divider parameter is output before the list of footnotes + for the table. + + Modified: manpages/docbook.xsl,1.73; manpages/links.xsl,1.6; manpages/ + param.ent,1.21; manpages/param.xweb,1.23; params/ + man.table.footnotes.divider.xml,1.1 - Michael(tm) Smith + + â— Added the man.output.in.separate.dir, man.output.base.dir, and + man.output.subdirs.enabled parameters. + + The man.output.base.dir parameter specifies the base directory into which + man-page files are output. The man.output.subdirs.enabled parameter + controls whether the files are output in subdirectories within the base + directory. + + The values of the man.output.base.dir and man.output.subdirs.enabled + parameters are used only if the value of man.output.in.separate.dir + parameter is non-zero. If the value of man.output.in.separate.dir is zero, + man-page files are not output in a separate directory. + + Modified: manpages/docbook.xsl,1.72; manpages/param.ent,1.20; manpages/ + param.xweb,1.22; params/man.output.base.dir.xml,1.1; params/ + man.output.in.separate.dir.xml,1.1; params/ + man.output.subdirs.enabled.xml,1.1 - Michael(tm) Smith + + â— Added man.font.table.headings and man.font.table.title params, for + controlling font in table headings and titles. + + Modified: manpages/docbook.xsl,1.71; manpages/param.ent,1.19; manpages/ + param.xweb,1.21; params/man.font.table.headings.xml,1.1; params/ + man.font.table.title.xml,1.1 - Michael(tm) Smith + + â— Added man.font.funcsynopsisinfo and man.font.funcprototype params, for + specifying the roff font (for example, BI, B, I) for funcsynopsisinfo and + funcprototype output. + + Modified: manpages/block.xsl,1.19; manpages/docbook.xsl,1.69; manpages/ + param.ent,1.18; manpages/param.xweb,1.20; manpages/synop.xsl,1.29; manpages + /table.xsl,1.21; params/man.font.funcprototype.xml,1.1; params/ + man.font.funcsynopsisinfo.xml,1.1 - Michael(tm) Smith + + â— Changed to select="0" in refclass.suppress (instead of ..>0 as a child of the list. For example: + + Choose from + ONE and ONLY ONE of the following: + + + A + B + C. + + Output (for English): + + Choose from ONE and only ONE of the following choices: A, B, or C. + + As a temporary workaround for the fact that most of the DocBook non-English + locale files don't have a localization for the word “orâ€, you can put in a + literal string to be used; example for French: . + That is, use “ou†instead of “orâ€. + +FO + + â— Added content-type property to external-graphic element, based on imagedata + format attribute. + + â— Added support for generating field for + XEP output. This makes the DocBook XSL stylesheet version information + available through the Document Properties menu in Acrobat Reader and other + PDF viewers. + + â— Trademark symbol handling made consistent with handling of same in HTML + stylesheets. Prior to this change, if you processed a document that + contained no value for the class attribute on the trademark element, the + HTML stylesheets would default to rendering a superscript TM symbol after + the trademark contents, but the FO stylesheets would render nothing. + + â— Added support for generating XEP bookmarks for refentry. + + â— Added support for HTML markup table border attribute, applied to each table + cell. + + â— The table.width template can now sum column specs if none use % or *. + + â— Added fox:destination extension inside fox:outline to support linking to + internal destinations. + + â— Added support for customizing abstract with property sets. Controlled with + the abstract.properties and abstract.title.properties parameters. + + â— Add footnotes in table title to table footnote set, and add support for + table footnotes to HTML table markup. + + â— Added support for title in glosslist. + + â— Added support for itemizedlist symbol none. + + â— Implemented the new graphical.admonition.properties and + nongraphical.admonition.properties attribute sets. + + â— Added id to formalpara and some other blocks that were missing it. + + â— Changed the anchor template to output fo:inline instead of fo:wrapper. + + â— Added support for toc.max.depth parameter. + +Help + + â— Eclipse Help: Added support for generating olink database. + +HTML + + â— Added a first cut at support in HTML output for DocBook 5 style annotation + s. Controlled using the annotation.support parameter, and implemented using + JavaScript and CSS styling. For more details, see the documentation for the + annotation.js, annotation.css, annotation.graphic.open, and + annotation.graphic.close parameters. + + â— Generate client-side image map for imageobjectco with areas using calspair + units + + â— Added support for PI. + + â— Added support for passing img.src.path to DocBook Java XSLT image + extensions when appropriate. Controlled using the + graphicsize.use.img.src.path parameter. + + â— Added support for (not valid for DocBook 4) xlink:href on area and (not + valid for DocBook 4) alt in area. + + â— Added new parameter default.table.frame to control table framing if there + is no frame attribute on a table. + + â— Added initial, experimental support for generating content for the HTML + title attribute from content of the alt element. This change adds support + for the following inline elements only (none of them are block elements): + abbrev, accel, acronym, action, application, authorinitials, beginpage, + citation, citerefentry, citetitle, city, classname, code, command, + computeroutput, constant, country, database, email, envar, errorcode, + errorname, errortext, errortype, exceptionname, fax, filename, firstname, + firstterm, foreignphrase, function, glossterm, guibutton, guiicon, guilabel + , guimenu, guimenuitem, guisubmenu, hardware, honorific, interface, + interfacename, keycap, keycode, keysym, lineage, lineannotation, literal, + markup, medialabel, methodname, mousebutton, option, optional, otheraddr, + othername, package, parameter, personname, phone, pob, postcode, + productname, productnumber, prompt, property, quote, refentrytitle, remark, + replaceable, returnvalue, tag, shortcut, state, street, structfield, + structname, subscript, superscript, surname, symbol, systemitem, tag, + termdef, token, trademark, type, uri, userinput, varname, and wordasword + + â— Added support for chunking revhistory into separate file (similar to the + support for doing same with legalnotice). Patch from Thomas Schraitle. + Controlled through new generate.revhistory.link parameter. + + â— l10n.xsl: Made language codes RFC compliant. Added a new boolean config + parameter, l10n.lang.value.rfc.compliant. If it is non-zero (the default), + any underscore in a language code will be converted to a hyphen in HTML + output. If it is zero, the language code will be left as-is. + +man + +This release closes out 44 manpages stylesheet bug reports and feature +requests. It adds more than 35 new configuration parameters for controlling +aspects of man-page output -- including hyphenation and justification, handling +of links, conversion of Unicode characters, and contents of man-page headers +and footers. + + â— New options for globally disabling/enabling hyphenation and justification: + man.justify and man.hyphenate. + + Note that the default for the both of those is zero (off), because + justified text looks good only when it is also hyphenated; to quote the + “Hyphenation†node from the groff info page: + + Since the odds are not great for finding a set of words, for every + output line, which fit nicely on a line without inserting excessive + amounts of space between words, `gtroff' hyphenates words so that it + can justify lines without inserting too much space between words. + + The problem is that groff can end up hyphenating a lot of things that you + don't want hyphenated (variable names and command names, for example). + Keeping both justification and hyphenation disabled ensures that hyphens + won't get inserted where you don't want to them, and you don't end up with + lines containing excessive amounts of space between words. These default + settings run counter to how most existing man pages are formatted. But + there are some notable exceptions, such as the perl man pages. + + â— Added parameters for controlling hyphenation of computer inlines, + filenames, and URLs. By default, even when hyphenation is enabled + (globally), hyphenation is now suppressed for "computer inlines" + (currently, just classname, constant, envar, errorcode, option, replaceable + , userinput, type, and varname, and for filenames, and for URLs from link. + It can be (re)enabled using the man.hyphenate.computer.inlines, + man.hyphenate.filenames, and man.hyphenate.urls parameters. + + â— Implemented a new system for replacing Unicode characters. There are two + parts to the new system: a “string substitution map†for doing “essential†+ replacements, and a “character map†that can optionally be disabled and + enabled. + + The new system fixes all open bugs that had to do with literal Unicode + numbered entities such as “ and ” showing up in output, and + greatly expands the ability of the stylesheets to generate “good†roff + equivalents for Unicode symbols and special characters. + + Here are some details... + + The previous manpages mechanism for replacing Unicode symbols and special + characters with roff equivalents (the replace-entities template) was not + scalable and not complete. The mechanism handled a somewhat arbitrary + selection of less than 20 or so Unicode characters. But there are + potentially more than 800 Unicode special characters that have some groff + equivalent they can be mapped to. And there are about 34 symbols in the + Latin-1 (ISO-8859-1) block alone. Users might reasonably expect that if + they include any of those Latin-1 characters in their DocBook source + documents, they will get correctly converted to known roff equivalents in + output. + + In addition to those common symbols, certain users may have a need to use + symbols from other Unicode blocks. Say, somebody who is documenting an + application related to math might need to use a bunch of symbols from the + “Mathematical Operators†Unicode block (there are about 65 characters in + that block that have reasonable roff equivalents). Or somebody else might + really like Dingbats -- such as the checkmark character -- and so might use + a bunch of things from the “Dingbat†block (141 characters in that that + have roff equivalents or that can at least be “degraded†somewhat + gracefully into roff). + + So, the old replace-entities mechanism was replaced with a completely + different mechanism that is based on use of two “mapsâ€: a “substitution + map†and a “character map†(the latter in a format compliant with the XSLT + 2.0 spec and therefore completely “forward compatible†with XSLT 2.0). + + The substitution map is controlled through the man.string.subst.map + parameter, and is used to replace things like the backslash character + (which needs special handling to prevent it from being interpreted as a + roff escape). The substitution map cannot be disabled, because disabling it + will cause the output to be broken. However, you can add to it and change + it if needed. + + The “character map†mechanism, on the other hand, can be completely + disabled. It is enabled by default, and, by default, does replacement of + all Latin-1 symbols, along with most special spaces, dashes, and quotes + (about 75 characters by default). Also, you can optionally enable a “full†+ character map that provides support for converting all 800 or so of the + characters that have some reasonable groff equivalent. + + The character-map mechanism is controlled through the following parameters: + + man.charmap.enabled + + turns character-map support on/off + + man.charmap.use.subset + + specifies that a subset of the character map is used instead of the + full map + + man.charmap.subset.profile + + specifies profile of character-map subset + + man.charmap.uri + + specifies an alternate character map to use instead of the “standard†+ character map provided in the distribution + + â— Implemented out-of-line handling of display of URLs for links (currently, + only for ulink). This gives you three choices for handling of links: + + 1. Number and list links. Each link is numbered inline, with a number in + square brackets preceding the link contents, and a numbered list of all + links is added to the end of the document. + + 2. Only list links. Links are not numbered, but an (unnumbered) list of + links is added to the end of the document. + + 3. Suppress links. Don't number links and don't add any list of links to + the end of the document. + + You can also choose whether links should be underlined. The default is “the + works†-- list, number, and underline links. You can use the + man.links.list.enabled, man.links.are.numbered, and + man.links.are.underlined parameters to change the defaults. The default + heading for the link list is REFERENCES. You can be change that using the + man.links.list.heading parameter. + + â— Changed default output encoding to UTF-8. This does not mean that man pages + are output in raw UTF-8, because the character map is applied before final + output, causing all UTF-8 characters covered in the map to be converted to + roff equivalents. + + â— Added support for processing refsect3 and formalpara and nested refsection + elements, down to any arbitrary level of nesting. + + â— Output of the NAME and SYNOPSIS and AUTHOR headings and the headings for + admonitions (note, caution, etc.) are no longer hard-coded for English. + Instead, headings are generated for those in the correct locale (just as + the FO and HTML stylesheets do). + + â— Re-worked mechanism for assembling page headers/footers (the contents of + the .TH macro “title lineâ€). + + Here are some details... + + All man pages contain a .TH roff macro whose contents are used for + rendering the “title line†displayed in the header and footer of each page. + Here are a couple of examples of real-world man pages that have useful page + headers/footers: + + gtk-options(7) GTK+ User's Manual gtk-options(7) <-- header + GTK+ 1.2 2003-10-20 gtk-options(7) <-- footer + + svgalib(7) Svgalib User Manual svgalib(7) <-- header + Svgalib 1.4.1 16 December 1999 svgalib(7) <-- footer + + And here are the terms with which the groff_man(7) man page refers to the + various parts of the header/footer: + + title(section) extra3 title(section) <- header + extra2 extra1 title(section) <- footer + + Or, using the names with which the man(7) man page refers to those same + fields: + + title(section) manual title(section) <- page header + source date title(section) <- page footer + + The easiest way to control the contents of those fields is to mark up your + refentry content like the following (note that this is a “minimal†+ example). + + + + 2003-10-20 1 + + + gtk-options 2 + 7 3 + GTK+ 4 + 1.2 5 + GTK+ User's Manual 6 + + + gtk-options + Standard Command Line Options for GTK+ Programs + + + Description + This manual page describes the command line options, which + are common to all GTK+ based applications. + + + + 1 Sets the “date†part of the header/footer. + + 2 Sets the “title†part. + + 3 Sets the “section†part. + + 4 Sets the “source name†part. + + 5 Sets the “version†part. + + 6 Sets the “manual†part. + + Below are explanations of the steps the stylesheets take to attempt to + assemble and display “good†headers and footer. [In the descriptions, note + that *info is the refentry “info†child (whatever its name), and parentinfo + is the “info†child of its parent (again, whatever its name).] + + extra1 field (date) + + Content of the “extra1†field is what shows up in the center footer + position of each page. The man(7) man page describes it as “the date of + the last revisionâ€. + + To provide this content, if the refentry.date.profile.enabled is + non-zero, the stylesheets check the value of refentry.date.profile. + + Otherwise, by default, they check for a date or pubdate not only in the + *info contents, but also in the parentinfo contents. + + If a date cannot be found, the stylesheets now automatically generate a + localized “long format†date, ensuring that this field always has + content in output. + + However, if for some reason you want to suppress this field, you can do + so by setting a non-zero value for man.th.extra1.suppress. + + extra2 field (source) + + On Linux systems and on systems with a modern groff, the content of the + “extra2†field are what shows up in the left footer position of each + page. + + The man(7) man page describes this as “the source of the commandâ€, and + provides the following examples: + + â—‹ For binaries, use somwething like: GNU, NET-2, SLS Distribution, + MCC Distribution. + + â—‹ For system calls, use the version of the kernel that you are + currently looking at: Linux 0.99.11. + + â—‹ For library calls, use the source of the function: GNU, BSD 4.3, + Linux DLL 4.4.1. + + In practice, there are many pages that simply have a version number in + the “source†field. So, it looks like what we have is a two-part field, + Name Version, where: + + Name + + product name (e.g., BSD) or org. name (e.g., GNU) + + Version + + version name + + Each part is optional. If the Name is a product name, then the Version + is probably the version of the product. Or there may be no Name, in + which case, if there is a Version, it is probably the version of the + item itself, not the product it is part of. Or, if the Name is an + organization name, then there probably will be no Version. + + To provide this content, if the refentry.source.name.profile.enabled + and refentry.version.profile.enabled parameter are non-zero, the + stylesheets check the value of refentry.source.name.profile + refentry.version.profile. + + Otherwise, by default, they check the following places, in the + following order: + + 1. *info/productnumber + + 2. *info/productnumber + + 3. refmeta/refmiscinfo[@class = 'version'] + + 4. parentinfo/productnumber + + 5. *info/productname + + 6. parentinfo/productname + + 7. refmeta/refmiscinfo + + 8. [nothing found, so leave it empty] + + extra3 field + + On Linux systems and on systems with a modern groff, the content of the + “extra3†field are what shows up in the center header position of each + page. Some man pages have “extra2†content, some don't. If a particular + man page has it, it is most often “context†data about some larger + system the documented item belongs to (for example, the name or + description of a group of related applications). The stylesheets now + check the following places, in the following order, to look for content + to add to the “extra3†field. + + 1. parentinfo/title + + 2. parent's title + + 3. refmeta/refmiscinfo + + 4. [nothing found, so leave it empty] + + â— Reworked *info gathering. For each refentry found, the stylesheets now + cache its *info content, then check for any valid parent of it that might + have metainfo content and cache that, if found; they then then do all + further matches against those node-sets (rather than re-selecting the + original *info nodes each time they are needed). + + â— New option for breaking strings after forward slashes. This enables long + URLs and pathnames to be broken across lines. Controlled through + man.break.after.slash parameter. + + â— Output for servicemark and trademark are now (SM) and (TM). There is a + groff "\(tm" escape, but output from that is not acceptable. + + â— New option for controlling the length of the title part of the .TH title + line. Controlled through the man.th.title.max.length parameter. + + â— New option for specifying output encoding of each man page; controlled with + man.output.encoding (similar to the HTML chunker.output.encoding + parameter). + + â— New option for suppressing filename messages when generating output; + controlled with man.output.quietly (similar to the HTML chunk.quietly + parameter). + + â— The text of cross-references to first-level refentry (refsect1, top-level + refsection, refnamediv, and refsynopsisdiv) are now capitalized. + + â— Cross-references to refnamediv now use the localized NAME title instead of + using the first refname child. This makes the output inconsistent with HTML + and FO output, but for man-page output, it seems to make better sense to + have the NAME. (It may actually make better sense to do it that way in HTML + and FO output as well...) + + â— Added support for processing funcparams. + + â— Removed the space that was being output between funcdef and paramdef; + example: was: float rand (void); now: float rand(void) + + â— Turned off bold formatting for the type element when it occurs within a + funcdef or paramdef + + â— Corrected rendering of simplelist. Any + + + + + + + + Invoke Saxon with the encoding.windows-1252 Java system property set to + com.nwalsh.saxon.Windows1252; for example + + java \ + -Dencoding.windows-1252=com.nwalsh.saxon.Windows1252 \ + com.icl.saxon.StyleSheet \ + mydoc.xml mystylesheet.xsl + + Or, for a more complete "real world" case showing other options you'll + typically want to use: + + java \ + -Dencoding.windows-1252=com.nwalsh.saxon.Windows1252 \ + -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl \ + -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl \ + -Djavax.xml.transform.TransformerFactory=com.icl.saxon.TransformerFactoryImpl \ + com.icl.saxon.StyleSheet \ + -x org.apache.xml.resolver.tools.ResolvingXMLReader \ + -y org.apache.xml.resolver.tools.ResolvingXMLReader \ + -r org.apache.xml.resolver.tools.CatalogResolver \ + mydoc.xml mystylesheet.xsl + + In both cases, the "mystylesheet.xsl" file should be a DocBook + customization layer containing the parameters show in step 2. + + â— Saxon extensions: Removed Saxon 8 extensions from release package + +Release 1.67.0 + + â— A number of important bug fixes. + + â— Added Saxon8 extensions + + â— Enabled dbfo table-width on entrytbl in FO output + + â— Added support for role=strong on emphasis in FO output + + â— Added new FO parameter hyphenate.verbatim that can be used to turn on + "intelligent" wrapping of verbatim environments. + + â— Replaced all output with + + â— Changed admon.graphic.width template to a mode so that different + admonitions can have different graphical widths. + + â— Deprecated the HTML shade.verbatim parameter (use CSS instead) + + â— Wrapped ToC refentrytitle/refname and refpurpose in span with class values. + This makes it possible to style them using a CSS stylesheet. + + â— Use strong/em instead of b/i in HTML output + + â— Added support for converting Emphasis to groff italic and Emphasis role= + 'bold' to bold. Controlled by emphasis.propagates.style param, but not + documented yet using litprog system. Will do that next (planning to add + some other parameter-controllable options for hyphenation and handling of + line spacing). + + â— callout.graphics.number.limit.xml param: Changed the default from 10 to 15. + + â— verbatim.properties: Added hyphenate=false + + â— Saxon and Xalan Text.java extensions: Added support for URIResolver() on + insertfile href's + + â— Added generated RELEASE-NOTES.txt file. + + â— Added INSTALL file (executable file for generating catalog.xml) + + â— Removed obsolete tools directory from package + +Release 1.66.1 + + â— A number of important bug fixes. + + â— Now xml:base attributes that are generated by an XInclude processor are + resolved for image files. + + â— Rewrote olink templates to support several new features. + + â—‹ Extended full olink support to FO output. + + â—‹ Add support for xrefstyle attribute in olinks. + + â—‹ New parameters to support new olink features: insert.olink.page.number, + insert.olink.pdf.frag, olink.debug, olink.lang.fallback.sequence, + olink.properties, prefer.internal.olink. See the reference page for + each parameter for more information. + + â— Added index.on.type parameter for new type attribute introduced in DocBook + 4.3 for indexterms and index. This allows you to create multiple indices + containing different categories of entries. For users of 4.2 and earlier, + you can use the new parameter index.on.role instead. + + â— Added new section.autolabel.max.depth parameter to turn off section + numbering below a certain depth. This permits you to number major section + levels and leave minor section levels unnumbered. + + â— Added footnote.sep.leader.properties attribute set to format the line + separating footnotes in printed output. + + â— Added parameter img.src.path as a prefix to HTML img src attributes. The + prefix is added to whatever path is already generated by the stylesheet for + each image file. + + â— Added new attribute-sets informalequation.properties, + informalexample.properties, informalfigure.properties, and + informaltable.properties, so each such element type can be formatted + individually if needed. + + â— Add component.label.includes.part.label parameter to add any part number to + chapter, appendix and other component labels when the label.from.part + parameter is nonzero. This permits you to distinguish multiple chapters + with the same chapter number in cross references and the TOC. + + â— Added chunk.separate.lots parameter for HTML output. This parameter lets + you generate separate chunk files for each LOT (list of tables, list of + figures, etc.). + + â— Added several table features: + + â—‹ Added table.table.properties attribute set to add properties to the + fo:table element. + + â—‹ Added placeholder templates named table.cell.properties and + table.cell.block.properties to enable adding properties to any + fo:table-cell or the cell's fo:block, respectively. These templates are + a start for implementing table styles. + + â— Added new attribute set component.title.properties for easy modifications + of component's title formatting in FO output. + + â— Added Saxon support for an encoding attribute on the textdata element. + Added new parameter textdata.default.encoding which specifies encoding when + encoding attribute on textdata is missing. + + â— Template label.this.section now controls whole section label, not only + sub-label which corresponds to particular label. Former behaviour was IMHO + bug as it was not usable. + + â— Formatting in titleabbrev for TOC and headers is preserved when there are + no hotlink elements in the title. Formerly the title showed only the text + of the title, no font changes or other markup. + + â— Added intial.page.number template to set the initial-page-number property + for page sequences in print output. Customizing this template lets you + change when page numbering restarts. This is similar to the + format.page.number template that lets you change how the page number + formatting changes in the output. + + â— Added force.page.count template to set the force-page-count property for + page sequences in print output. This is similar to the format.page.number + template. + + â— Sort language for localized index sorting in autoidx-ng.xsl is now taken + from document lang, not from system environment. + + â— Numbering and formatting of normal and ulink footnotes (if turned on) has + been unified. Now ulink footnotes are mixed in with any other footnotes. + + â— Added support for renderas attribute in section and sect1 et al. This + permits you to render a given section title as if it were a different + level. + + â— Added support for label attribute in footnote to manually supply the + footnote mark. + + â— Added support for DocBook 4.3 corpcredit element. + + â— Added support for a dbfo keep-together PI for formal objects (table, + figure, example, equation, programlisting). That permits a formal object to + be kept together if it is not already, or to be broken if it is very long + and the default keep-together is not appropriate. + + â— For graphics files, made file extension matching case insensitive, and + updated the list of graphics extensions. + + â— Allow calloutlist to have block content before the first callout + + â— Added dbfo-need processing instruction to provide soft page breaks. + + â— Added implementation of existing but unused default.image.width parameter + for graphics. + + â— Support DocBook NG tag inline element. + + â— It appears that XEP now supports Unicode characters in bookmarks. There is + no further need to strip accents from characters. + + â— Make segmentedlist HTML markup more semantic and available to CSS styles. + + â— Added user.preroot placeholder template to permit xsl-stylesheet and other + PIs and comments to be output before the HTML root element. + + â— Non-chunked legalnotice now gets an element in HTML output so + it can be referenced with xref or link. + + â— In chunked HTML output, changed link rel="home" to rel="start", and link + rel="previous" to rel="prev", per W3C HTML 4.01 spec. + + â— Added several patches to htmlhelp from W. Borgert + + â— Added Bosnian locale file as common/bs.xml. + +Release 1.65.0 + + â— A number of important bug fixes. + + â— Added a workaround to allow these stylesheets to process DocBook NG + documents. (It’s a hack that pre-processes the document to strip off the + namespace and then uses exsl:node-set to process the result.) + + â— Added alternative indexing mechanism which has better internationalization + support. New indexing method allows grouping of accented letters like e, é, + ë into the same group under letter "e". It can also treat special letters + (e.g. "ch") as one character and place them in the correct position (e.g. + between "h" and "i" in Czech language). + + In order to use this mechanism you must create customization layer which + imports some base stylesheet (like fo/docbook.xsl, html/chunk.xsl) and then + includes appropriate stylesheet with new indexing code (fo/autoidx-ng.xsl + or html/autoidx-ng.xsl). For example: + + + + + + + + + New method is known to work with Saxon and it should also work with + xsltproc 1.1.1 and later. Currently supported languages are English, Czech, + German, French, Spanish and Danish. + +Release 1.64.1 + +General bug fixes and improvements. Sorry about the failure to produce an +updated release notes file for 1.62.0—1.63.2 + + â— In the course of fixing bug #849787, wrapping Unicode callouts with an + appropriate font change in the Xalan extensions, I discovered that the + Xalan APIs have changed a bit. So xalan2.jar will work with older Xalan 2 + implementations, xalan25.jar works with Xalan 2.5. + +Release 1.61.0 + +Lots of bug fixes and improvements. + + â— Initial support for timestamp PI. From now you can use to get current datetime in your document. Added + localization support for datetime PI + + â— Added level 6 to test for section depth in section.level template so that + section.title.level6.properties will be used for sections that are 6 deep + or deeper. This should also cause a h6 to be created in html output. + + â— Don't use SVG graphics if use.svg=0 + + â— Now uses number-and-title-template for sections only if section.autolabel + is not zero. + + â— Added missing 'english-language-name' attribute to the l10n element, and + the missing 'style' attribute to the template element so the current + gentext documents will validate. + + â— Corrected several references to parameter qanda.defaultlabel that were + missing the "$". + + â— Now accepts admon.textlabel parameter to turn off Note, Warning, etc. + label. + + â— FeatReq #684561: support more XEP metadata + + â— Added hyphenation support. Added support for coref. Added beginpage + support. (does nothing; see TDG). + + â— Added support for hyphenation-character, hyphenation-push-character-count, + and hyphenation-remain-character-count + + â— Added root.properties, ebnf.assignment, and ebnf.statement.terminator + + â— Support bgcolor PI in table cells; make sure rowsep and colsep don't have + any effect on the last row or column + + â— Handle othercredit on titlepage a little better + + â— Applied fix from Jeff Beal that fixed the bug that put secondary page + numbers on primary entries. Same with tertiary page numbers on secondary + entries. + + â— Added definition of missing variable collection. + + â— Make footnote formatting 'normal' even when it occurs in a context that has + special formatting + + â— Added warning when glossary.collection is not blank, but it cannot open the + specified file. + + â— Pick up the frame attribute on table and informaltable. + + â— indexdiv/title in non-autogenerated indexes are now picked up. + + â— Removed (unused) component.title.properties + + â— Move IDs from page-sequences down to titlepage blocks + + â— Use proportional-column-width(1) on more tables. + + Use proportional-column-width() for header/footer tables; suppress + relative-align when when using FOP + + â— Check for glossterm.auto.link when linking firstterms; don't output gl. + prefix on glossterm links + + â— Generate Part ToCs + + â— Support glossary, bibliography, and index in component ToCs. + + â— Refactored chunking code so that customization of chunk algorithm and chunk + elements is more practical + + â— Support textobject/phrase on inlinemediaobject. + + â— Support 'start' PI on ordered lists + + â— Fixed test of $toc PI to turn on qandaset TOC. + + â— Added process.chunk.footnotes to sect2 through 5 to fix bug of missing + footnotes when chunk level greater than 1. + + â— Added paramater toc.max.depth which controls maximal depth of ToC as + requested by PHP-DOC group. + + â— Exempted titleabbrev from preamble processing in lists, and fixed + variablelist preamble code to use the same syntax as the other lists. + + â— Added support for elements between variablelist and first varlistentry + since DocBook 4.2 supports that now. + +Release 1.60.1 + +Lots of bug fixes. + + â— The format of the titlepage.templates.xml files and the stylesheet that + transforms them have been significantly changed. All of the attributes used + to control the templates are now namespace qualified. So what used to be: + + + + is now: + + + + Attributes from other namespaces (including those that are unqualified) are + now copied directly through. In practice, this means that the names that + used to be “fo:†qualified: + + + + are now unqualified: + + <title t:named-template="component.title" + param:node="ancestor-or-self::article[1]" + text-align="center" + keep-with-next="always" + font-size="&hsize5;" + font-weight="bold" + font-family="{$title.font.family}"/> + + The t:titlepage and t:titlepage-content elements both generate wrappers + now. And unqualified attributes on those elements are passed through. This + means that you can now make the title font apply to ane entire titlepage + and make the entire “recto†titlepage centered by specifying the font and + alignment on the those elements: + + <t:titlepage t:element="article" t:wrapper="fo:block" + font-family="{$title.font.family}"> + + <t:titlepage-content t:side="recto" + text-align="center"> + + â— Support use of titleabbrev in running headers and footers. + + â— Added (experimental) xref.with.number.and.title parameter to enable number/ + title cross references even when the default would be just the number. + + â— Generate part ToCs if they're requested. + + â— Use proportional-column-width() in header/footer tables. + + â— Handle alignment correctly when screenshot wraps a graphic in a figure. + + â— Format chapter and appendix cross references consistently. + + â— Attempt to support tables with multiple tgroups in FO. + + â— Output fo:table-columns in simplelist tables. + + â— Use titlepage.templates.xml for indexdiv and glossdiv formatting. + + â— Improve support for new bibliography elements. + + â— Added footnote.number.format, table.footnote.number.format, + footnote.number.symbols, and table.footnote.number.symbols for better + control of footnote markers. + + â— Added glossentry.show.acronyms. + + â— Suppress the draft-mode page masters when draft-mode is “noâ€. + + â— Make blank pages verso not recto. D'Oh! + + â— Improved formatting of ulink footnotes. + + â— Fixed bugs in graphic width/height calculations. + + â— Added class attributes to inline elements. + + â— Don't add “.html†to the filenames identified with the “dbhtml†PI. + + â— Don't force a ToC when sections contain refentrys. + + â— Make section title sizes a function of the body.master.size. + +Release 1.59.2 + +The 1.59.2 fixes an FO bug in the page masters that causes FOP to fail. + + â— Removed the region-name from the region-body of blank pages. There's no + reason to give the body of blank pages a unique name and doing so causes a + mismatch that FOP detects. + + â— Output IDs for the first paragraphs in listitems. + + â— Fixed some small bugs in the handling of page numbers in double-sided mode. + + â— Attempt to prevent duplicated IDs from being produced when endterm on xref + points to something with nested structure. + + â— Fix aligment problems in equations. + + â— Output the type attribute on unordered lists (UL) in HTML only if the + css.decoration parameter is true. + + â— Calculate the font size in formal.title.properties so that it's 1.2 times + the base font size, not a fixed "12pt". + +Release 1.59.1 + +The 1.59.1 fixes a few bugs. + + â— Added Bulgarian localization. + + â— Indexing improvements; localize book indexes to books but allow setindex to + index an entire set. + + â— The default value for rowsep and colsep is now "1" as per CALS. + + â— Added support for titleabbrev (use them for cross references). + + â— Improvements to mediaobject for selecting print vs. online images. + + â— Added seperate property sets for figures, examples, equations, tabless, and + procedures. + + â— Make lineannotations italic. + + â— Support xrefstyle attribute. + + â— Make endterm on xref higher priority than xreflabel target. + + â— Glossary formatting improvements. + +Release 1.58.0 + +The 1.58.0 adds some initial support for extensions in xsltproc, adds a few +features, and fixes bugs. + + â— This release contains the first attempt at extension support for xsltproc. + The only extension available to date is the one that adjusts table column + widths. Run extensions/xsltproc/python/xslt.py. + + â— Fixed bugs in calculation of adjusted column widths to correct for rounding + errors. + + â— Support nested refsection elements correctly. + + â— Reworked gentext.template to take context into consideration. The name of + elements in localization files is now an xpath-like context list, not just + a simple name. + + â— Made some improvements to bibliography formatting. + + â— Improved graphical formatting of admonitions. + + â— Added support for entrytbl. + + â— Support spanning index terms. + + â— Support bibliosource. + +Release 1.57.0 + + â— The 1.57.0 release wasn't documented here. Oops. + +Release 1.56.0 + +The 1.56.0 release fixes bugs. + + â— Reworked chunking. This will break all existing customizations layers that + change the chunking algorithm. If you're customizing chunking, look at the + new “content†parameter that's passed to process-chunk-element and friends. + + â— Support continued and inherited numeration in orderedlist formatting for + FOs. + + â— Added Thai localization. + + â— Tweaked stylesheet documentation stylesheets to link to TDG and the + parameter references. + + â— Allow title on tables of contents ("Table of Contents") to be optional. + Added new keyword to generate.toc. Support tables of contents on sections. + + â— Made separate parameters for table borders and table cell borders: + table.frame.border.color, table.frame.border.style, + table.frame.border.thickness, table.cell.border.color, + table.cell.border.style, and table.cell.border.thickness. + + â— Suppress formatting of “endofrange†indexterms. This is only half-right. + They should generate a range, but I haven't figured out how to do that yet. + + â— Support revdescription. (Bug #582192) + + â— Added default.float.class and fixed figure floats. (Bug #497603) + + â— Fixed formatting of sbr in FOs. + + â— Added context to the “missing template†error message. + + â— Process arg correctly in a group. (Bug #605150) + + â— Removed 'keep-with-next' from formal.title.properties attribute set now + that the stylesheets support the option of putting such titles below the + object. Now the $placement value determines if 'keep-with-next' or + 'keep-with-previous' is used in the title block. + + â— Wrap “url()†around external-destinations when appropriate. + + â— Fixed typo in compact list spacing. (Bug #615464) + + â— Removed spurious hash in anchor name. (Bug #617717) + + â— Address is now displayed verbatim on title pages. (Bug #618600) + + â— The bridgehead.in.toc parameter is now properly supported. + + â— Improved effectiveness of HTML cleanup by increasing the number of places + where it is used. Improve use of HTML cleanup in XHTML stylesheets. + + â— Support table of contents for appendix in article. (Bug #596599) + + â— Don't duplicate footnotes in bibliographys and glossarys. (Bug #583282) + + â— Added default.image.width. (Bug #516859) + + â— Totally reworked funcsynopsis code; it now supports a 'tabular' + presentation style for 'wide' prototypes; see + funcsynopsis.tabular.threshold. (HTML only right now, I think, FO support, + uh, real soon now.) + + â— Reworked support for difference marking; toned down the colors a bit and + added a “system.head.content†template so that the diff CSS wasn't + overriding “user.head.contentâ€. (Bug #610660) + + â— Added call to the “*.head.content†elements when writing out long + description chunks. + + â— Make sure legalnotice link is correct even when chunking to a different + base.dir. + + â— Use CSS to set viewport characteristics if css.decoration is non-zero, use + div instead of p for making graphic a block element; make figure titles the + default alt text for images in a figure. + + â— Added space-after to list.block.spacing. + + â— Reworked section.level template to give “correct†answer instead of being + off by one. + + â— When processing tables, use the tabstyle attribute as the division class. + + â— Fixed bug in html2xhtml.xsl that was causing the XHTML chunker to output + HTML instead of XHTML. + +Older releases + +To view the release notes for older releases, see http://cvs.sourceforge.net/ +viewcvs.py/docbook/xsl/RELEASE-NOTES.xml. Be aware that there were no release +notes for releases prior to the 1.50.0 release. + +About dot-zero releases + +DocBook Project “dot zero†releases should be considered experimental and are +always followed by stable “dot one plus†releases, usually within two or three +weeks. Please help to ensure the stability of “dot one plus†releases by +carefully testing each “dot zero†release and reporting back about any problems +you find. + +It is not recommended that you use a “dot zero†release in a production system. +Instead, you should wait for the “dot one†or greater versions. + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.xml new file mode 100644 index 000000000..9c50d9ab9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/RELEASE-NOTES.xml @@ -0,0 +1,10327 @@ +<article xmlns="http://docbook.org/ns/docbook" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:xi="http://www.w3.org/2001/XInclude" + xml:lang="en" xml:id="releasenotes" + version="5.0"> + +<info> + <title>Release Notes for the DocBook XSL Stylesheets + + $Revision: 8934 $ $Date: 2010-11-01 13:03:14 -0700 (Mon, 01 Nov 2010) $ + + +This release-notes + document is available in the following formats: + HTML, + PDF, + plain text; it provides a per-release list +of enhancements and changes to the stylesheets’ public APIs +(user-configurable parameters) and excludes descriptions of most +bug fixes. For a complete list of all changes (including all bug +fixes) that have been made since the previous release, see the +separate NEWS (plain text) or NEWS.html files. Also available: +An online hyperlinked change history (warning: big file) of all +changes made over the entire history of the codebase. +As with all DocBook Project dot-zero releases, this is an + experimental release. It will be followed shortly by a stable + release. +As with all DocBook Project “dot + one plus†releases, this release aspires to be stable (in + contrast to dot-zero releases, which + are experimental). +This is a pre-release “snapshot†of the +DocBook XSL Stylesheets. The change information in the first +section of this file +(for “â€) is +auto-generated from change descriptions stored in the project +source-code repository. +That means the first section contains +descriptions both of bug fixes and of feature changes. The +remaining sections are manually edited changelog subsets that +exclude bug-fix descriptions – that is, trimmed down to just those +those descriptions that document enhancements and changes to the +public APIs (user-configurable parameters). + + + + + + + +Release Notes: 1.76.1 +The following is a list of changes that have been made + since the 1.76.0 release. + + +FO +The following changes have been made to the + fo code + since the 1.76.0 release. + + +Robert Stayton: docbook.xsl; xref.xsl; fop1.xslApply patch to support named destination in fop1.xsl, per Sourceforge +bug report #3029845. + + + + + +HTML +The following changes have been made to the html code since the 1.76.0 release. + + +Keith Fahlgren: highlight.xslImplementing handling for <b> and <i>: transform to <strong> and <em> for XHTML outputs and do not use in the highliting output (per Mauritz Jeanson) + + + + + +Params +The following changes have been made to the + params code + since the 1.76.0 release. + + +Robert Stayton: draft.mode.xmlChange default for draft.mode to 'no'. + + + + + + + + Release Notes: 1.76.0 +This release includes important bug fixes and adds the following +significant feature changes: + + +Webhelp +A new browser-based, cross-platform help format with full-text search and other features typically found in help systems. See webhelp/docs/content/ch01.html for more information and a demo. + + + + +Gentext +Many updates and additions to translation/locales thanks to Red Hat, the Fedora Project, and other contributors. + + +Common +Faster localization support, as language files are loaded on demand. + + + + FO + Support for SVG content in imagedata added. + + + HTML + Output improved when using 'make.clean.html' and a stock CSS file is now provided. + + +EPUB +A number of improvements to NCX, cover and image selection, and XHTML 1.1 element choices + + + + + The following is a list of changes that have been made since the 1.75.2 release. + + Gentext + The following changes have been made to the gentext code since the 1.75.2 release. + + + + rlandmann: locale/fa.xml + + + Update to Persian translation from the Fedora Project + + + + + rlandmann: locale/nds.xml + + + Locale for Low German + + + + + Mauritz Jeanson: locale/ka.xml; Makefile + + + Added support for Georgian based on patch #2917147. + + + + + rlandmann: locale/nl.xml; locale/ja.xml + + + Updated translations from Red Hat and the Fedora Project + + + + + rlandmann: locale/bs.xml; locale/ru.xml; locale/hr.xml + + + Updated locales from Red Hat and the Fedora Project + + + + + rlandmann: locale/pt.xml; locale/cs.xml; locale/es.xml; locale/bg.xml; locale/nl.xml; loca⋯ + + + Updated translations from Red Hat and the Fedora Project + + + + + rlandmann: locale/as.xml; locale/bn_IN.xml; locale/ast.xml; locale/ml.xml; locale/te.xml; ⋯ + + + New translations from Red Hat and the Fedora Project + + + + + rlandmann: locale/pt.xml; locale/ca.xml; locale/da.xml; locale/sr.xml; locale/ru.xml; loca⋯ + + + Updated translations from Red Hat and the Fedora Project + + + + + + + Common + The following changes have been made to the common code since the 1.75.2 release. + + + + Mauritz Jeanson: common.xsl + + + Fixed bug in output-orderedlist-starting-number template (@startingnumber did not work for FO). + + + + + Mauritz Jeanson: gentext.xsl + + + Added fix to catch ID also of descendants of listitem. Closes bug #2955077. + + + + + Jirka Kosek: l10n.xsl + + + Stripped down, faster version of gentext.template is used when there is no localization customization. + + + + + Mauritz Jeanson: stripns.xsl + + + Added fix that preserves link/@role (makes links in the reference documentation +with @role="tcg" work). + + + + + Mauritz Jeanson: l10n.xsl + + + Fixed bugs related to manpages and L10n. + + + + + Jirka Kosek: entities.ent; autoidx-kosek.xsl + + + Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms. + + + + + Jirka Kosek: l10n.xsl; l10n.dtd; l10n.xml; autoidx-kosek.xsl + + + Refactored localization support. Language files are loaded on demand. Speedup is about 30%. + + + + + Jirka Kosek: l10n.xsl + + + Added xsl:keys for improved performance of localization texts look up. Performance gain around 15%. + + + + + Mauritz Jeanson: titles.xsl + + + Fixed bug #2912677 (error with xref in title). + + + + + Robert Stayton: olink.xsl + + + Fix bug in xrefstyle "title" handling introduced with +the 'insert.targetdb.data' template. + + + + + Robert Stayton: gentext.xsl + + + Fix bug in xref to equation without title to use context="xref-number" instead +of "xref-number-and-title". + + + + + Robert Stayton: labels.xsl + + + Number all equations in one sequence, with or without title. + + + + + Robert Stayton: entities.ent + + + Fix bug #2896909 where duplicate @sortas on indexterms caused +some indexterms to drop out of index. + + + + + Robert Stayton: stripns.xsl + + + Expand the "Stripping namespace ..." message to advise users to +use the namespaced stylesheets. + + + + + Robert Stayton: stripns.xsl + + + need a local version of $exsl.node.set.available variable because +this module imported many places. + + + + + Mauritz Jeanson: olink.xsl + + + Added /node() to the select expression that is used to compute the title text +so that no <ttl> elements end up in the output. Closes bug #2830119. + + + + + + + FO + The following changes have been made to the + fo code + since the 1.75.2 release. + + + + Robert Stayton: table.xsl + + + Fix bug 2979166 able - Attribute @rowheader not working + + + + + Mauritz Jeanson: inline.xsl + + + Improved glossterm auto-linking by using keys. The old code was inefficient when processing documents +with many inline glossterms. + + + + + Robert Stayton: titlepage.xsl + + + Fix bug 2805530 author/orgname not appearing on title page. + + + + + Mauritz Jeanson: graphics.xsl + + + Added support for SVG content in imagedata (inspired by patch #2909154). + + + + + Mauritz Jeanson: table.xsl + + + Removed superfluous test used when computing column-width. Closes bug #3000898. + + + + + Mauritz Jeanson: inline.xsl + + + Added missing <xsl:call-template name="anchor"/>. Closes bug #2998567. + + + + + Mauritz Jeanson: lists.xsl + + + Added table-layout="fixed" on segmentedlist table (required by XSL spec when proportional-column-width() is used). + + + + + Jirka Kosek: autoidx-kosek.xsl + + + Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms. + + + + + Jirka Kosek: index.xsl + + + Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms. + + + + + Robert Stayton: xref.xsl + + + Fix bug in olink template when an olink has an id. +Add warning message with id value when trying to link +to an element that has no generated text. + + + + + Mauritz Jeanson: refentry.xsl + + + Fixed bug #2930968 (indexterm in refmeta not handled correctly). + + + + + Robert Stayton: block.xsl + + + fix bug 2949567 title in revhistory breaks FO transform. + + + + + Robert Stayton: glossary.xsl + + + Output id attributes on glossdiv blocks so they can be added to +xrefs or TOC. + + + + + Jirka Kosek: xref.xsl + + + Enabled hyphenation of URLs when ulink content is the same as link target + + + + + Robert Stayton: table.xsl + + + Apply patch to turn off row recursion if no @morerows attributes present. +This will enable very large tables without row spanning to +process without running into recursion limits. + + + + + Robert Stayton: formal.xsl + + + Format equation without title using table layout with equation number +next to the equation. + + + + + Robert Stayton: param.xweb; param.ent + + + Add equation.number.properties. + + + + + + + HTML + The following changes have been made to the + html code + since the 1.75.2 release. + + + + Mauritz Jeanson: block.xsl + + + Modified acknowledgements template to avoid invalid output (<p> in <p>). + + + + + Mauritz Jeanson: titlepage.xsl + + + Added default sidebar attribute-sets. + + + + + Robert Stayton: table.xsl + + + Fix bug 2979166 able - Attribute @rowheader not working + + + + + Robert Stayton: footnote.xsl + + + Fix bug 3033191 footnotes in html tables. + + + + + Mauritz Jeanson: inline.xsl + + + Improved glossterm auto-linking by using keys. The old code was inefficient when processing documents +with many inline glossterms. + + + + + Robert Stayton: docbook.css.xml; verbatim.xsl + + + Fix bug 2844927 Validity error for callout bugs. + + + + + Robert Stayton: formal.xsl + + + Convert formal.object.heading to respect make.clean.html param. + + + + + Robert Stayton: titlepage.templates.xml; block.xsl + + + Fix bug 2840768 sidebar without title inserts empty b tag. + + + + + Mauritz Jeanson: docbook.xsl + + + Moved the template that outputs <base> so that the base URI also applies to relative CSS paths that come later. +See patch #2896121. + + + + + Jirka Kosek: autoidx-kosek.xsl + + + Upgraded to use common entities. Fixed bug when some code used @sortas and some not for grouping/sorting of indexterms. + + + + + Robert Stayton: chunk-code.xsl + + + fix bug 2948363 generated filename for refentry not unique, when +used in a set. + + + + + Robert Stayton: component.xsl + + + Fix missing "Chapter n" label when use chapter/info/title. + + + + + Robert Stayton: table.xsl + + + Row recursion turned off if no @morerows attributes in the table. +This will prevent failure on long table (with no @morerows) due +to excessive depth of recursion. + + + + + Robert Stayton: autotoc.xsl; docbook.css.xml + + + Support make.clean.html in autotoc.xsl. + + + + + Robert Stayton: docbook.css.xml; block.xsl + + + Add support for make.clean.html setting in block elements. + + + + + Robert Stayton: docbook.css.xml + + + Stock CSS styles for DocBook HTML output when 'make.clean.html' is non-zero. + + + + + Robert Stayton: html.xsl + + + Add templates for generating CSS files and links to them. + + + + + Robert Stayton: param.xweb + + + Fix bugs in new entity references. + + + + + Robert Stayton: chunk-common.xsl + + + List of Equations now includes on equations with titles. + + + + + Robert Stayton: table.xsl + + + If a colspec has a colname attribute, add it to the HTML col +element as a class attribute so it can be styled. + + + + + Robert Stayton: formal.xsl + + + Fix bug 2825842 where table footnotes not appearing in HTML-coded table. + + + + + Robert Stayton: chunktoc.xsl + + + Fix bug #2834826 where appendix inside part was not chunked as it should be. + + + + + Mauritz Jeanson: chunktoc.xsl + + + Added missing namespace declarations. Closes bug #2890069. + + + + + Mauritz Jeanson: footnote.xsl + + + Updated the template for footnote paras to use the 'paragraph' template. Closes bug #2803739. + + + + + Keith Fahlgren: inline.xsl; lists.xsl + + + Remove <b> and <i> elements "discouraged in favor of style sheets" from +XHTML, XHTML 1.1 (and therefore EPUB) outputs by changing html2xhtml.xsl. + +Fixes bug #2873153: No <b> and <i> tags in XHTML/EPUB + +Added regression to EPUB specs: + + + + + Mauritz Jeanson: inline.xsl + + + Fixed bug #2844916 (don't output @target if ulink.target is empty). + + + + + Keith Fahlgren: autoidx.xsl + + + Fix a bug when using index.on.type: an 'index symbols' section was created +even if that typed index didn't include any symbols (they were in the other types). + + + + + + + Manpages + The following changes have been made to the + manpages code + since the 1.75.2 release. + + + + Mauritz Jeanson: other.xsl + + + Modified the write.stubs template so that the section directory name is not output twice. Should fix bug #2831602. +Also ensured that $lang is added to the .so path (when man.output.lang.in.name.enabled=1). + + + + + Mauritz Jeanson: docbook.xsl; other.xsl + + + Fixed bug #2412738 (apostrophe escaping) by applying the submitted patch. + + + + + Norman Walsh: block.xsl; endnotes.xsl + + + Fix bug where simpara in footnote didn't work. Patch by Jonathan Nieder, jrnieder@gmail.com + + + + + dleidert: lists.xsl + + + Fix two indentation issues: In the first case there is no corresponding .RS +macro (Debian #519438, sf.net 2793873). In the second case an .RS instead of +the probably intended .sp leads to an indentation bug (Debian #527309, +sf.net #2642139). + + + + + + + Epub + The following changes have been made to the + epub code + since the 1.75.2 release. + + + + Keith Fahlgren: bin/spec/examples/AMasqueOfDays.epub; docbook.xsl; bin/spec/epub_spec.rb + + + Resolve some actual regressions in date output spotted by more recent versions of epubcheck + + + + + Keith Fahlgren: docbook.xsl + + + Updated mediaobject selection code that better uses roles (when available); based on contributons by Glenn McDonald + + + + + Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl + + + Ensure that NCX documents are always outputted with a default namespace +to prevent problems with the kindlegen machinery + + + + + Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/partintro.xml; docbook.x⋯ + + + Adding support for partintros with sect2s, 3s, etc + + + + + Keith Fahlgren: docbook.xsl + + + Adding param to workaround horrific ADE bug with the inability to process <br> + + + + + Keith Fahlgren: docbook.xsl + + + Add support for authorgroup/author in OPF metadata (via Michael Wiedmann) + + + + + Keith Fahlgren: bin/spec/epub_regressions_spec.rb + + + Remove <b> and <i> elements "discouraged in favor of style sheets" from +XHTML, XHTML 1.1 (and therefore EPUB) outputs by changing html2xhtml.xsl. + +Fixes bug #2873153: No <b> and <i> tags in XHTML/EPUB + +Added regression to EPUB specs: + + + + + Keith Fahlgren: bin/lib/docbook.rb; bin/spec/files/DejaVuSerif-Italic.otf; docbook.xsl; bi⋯ + + + This resolves bug #2873142, Please add support for multiple embedded fonts + + +If you navigate to a checkout of DocBook-XSL and go to: +xsl/epub/bin/spec/files +You can now run the following command: + +../../dbtoepub -f DejaVuSerif.otf -f DejaVuSerif-Italic.otf -c test.css +-s test_cust.xsl orm.book.001.xml + +In dbtoepub, the following option can be used more than once: +-f, --font [OTF FILE] Embed OTF FILE in .epub. + +The underlying stylesheet now accepts a comma-separated list of font file +names rather than just one as the RENAMED epub.embedded.fonts ('s' added). + +The runnable EPUB spec now includes: +- should be valid .epub after including more than one embedded font + + + + + Keith Fahlgren: docbook.xsl + + + Improve the selection of cover images when working in DocBook 4.x land (work in progress) + + + + + Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl + + + Improve the quality of the OPF spine regression by ensuring that the spine +elements for deeply nested refentries are in order and adjacent to their +opening wrapper XHTML chunk. + + + + + Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/files/orm.book.00⋯ + + + Add more careful handling of refentries to ensure that they always appear in the opf:spine. +This was only a problem when refentries were pushed deep into the hierarchy (like inside +a sect2), but presented navigational problems for many reading systems (despite the +correct NCX references). This may *not* be the best solution, but attacking a better +chunking strategy for refentries was too big a nut to crack at this time. + + + + + + + Eclipse + The following changes have been made to the + eclipse code + since the 1.75.2 release. + + + + Mauritz Jeanson: eclipse3.xsl + + + Added a stylesheet module that generates plug-ins conforming to the standard (OSGi-based) Eclipse 3.x +architecture. The main difference to the older format is that metadata is stored in a separate +manifest file. The module imports and extends the existing eclipse.xsl module. Based on code +contributed in patch #2624668. + + + + + + + Params + The following changes have been made to the + params code + since the 1.75.2 release. + + + + Robert Stayton: draft.watermark.image.xml + + + Fix bug 2922488 draft.watermark.image pointing to web resource. +Now the value is images/draft.png, and may require customization +for local resolution. + + + + + Mauritz Jeanson: equation.number.properties.xml + + + Corrected refpurpose. + + + + + Norman Walsh: paper.type.xml + + + Added USlegal and USlegallandscape paper types. + + + + + Jirka Kosek: highlight.xslthl.config.xml + + + Added note about specifying location as URL + + + + + Robert Stayton: docbook.css.source.xml; generate.css.header.xml; custom.css.source.xml; ma⋯ + + + Params to support generated CSS files. + + + + + Robert Stayton: equation.number.properties.xml + + + New attribute set for numbers appearing next to equations. + + + + + + + XSL-Xalan + The following changes have been made to the + xsl-xalan code + since the 1.75.2 release. + + + + dleidert: nbproject/genfiles.properties; nbproject/build-impl.xml + + + Rebuild netbeans build files after adding missing Netbeans configuration to allow easier packaging for Debian. + + + + + + + +Release Notes: 1.75.2 +The following is a list of changes that have been made + since the 1.75.1 release. + + +Gentext +The following changes have been made to the + gentext code + since the 1.75.1 release. + + +dleidert: locale/ja.xmlImproved Japanese translation for Note(s). Closes bug #2823965. + + +dleidert: locale/pl.xmlPolish alphabet contains O with acute accent, not with grave accent. Closes bug #2823964. + + +Robert Stayton: locale/ja.xmlFix translation of "index", per bug report 2796064. + + +Robert Stayton: locale/is.xmlNew Icelandic locale file. + + + + + +Common +The following changes have been made to the + common code + since the 1.75.1 release. + + +Norman Walsh: stripns.xslSupport more downconvert cases + + +Robert Stayton: titles.xslMake sure title inside info is used if no other title. + + + + + +FO +The following changes have been made to the + fo code + since the 1.75.1 release. + + +Robert Stayton: pi.xslTurn off dbfo-need for fop1.extensions also, per bug #2816141. + + + + + +HTML +The following changes have been made to the + html code + since the 1.75.1 release. + + +Mauritz Jeanson: titlepage.xslOutput "Copyright" heading in XHTML too. + + +Mauritz Jeanson: titlepage.xslAdded stylesheet.result.type test for copyright. Closes bug #2813289. + + +Norman Walsh: htmltbl.xslRemove ambiguity wrt @span, @rowspan, and @colspan + + + + + +Manpages +The following changes have been made to the + manpages code + since the 1.75.1 release. + + +Mauritz Jeanson: endnotes.xslAdded normalize-space() for ulink content. Closes bug #2793877. + + +Mauritz Jeanson: docbook.xslAdded stylesheet.result.type test for copyright. Closes bug #2813289. + + + + + +Epub +The following changes have been made to the + epub code + since the 1.75.1 release. + + +Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rbCorrected bugs caused by path and file assumptions were not met + + +Keith Fahlgren: bin/lib/docbook.rb; docbook.xslCleaning up hardcoded values into parameters and fixing Ruby library to pass them properly; all thanks to patch from Liza Daly + + + + + +Profiling +The following changes have been made to the + profiling code + since the 1.75.1 release. + + +Robert Stayton: profile.xslFix bug 2815493 missing exsl.node.set.available parameter. + + + + + +XSL-Saxon +The following changes have been made to the + xsl-saxon code + since the 1.75.1 release. + + +Mauritz Jeanson: src/com/nwalsh/saxon/ColumnUpdateEmitter.java; src/com/nwalsh/saxon/Colum⋯Added fixes so that colgroups in the XHTML namespace are processed properly. + + + + + +XSL-Xalan +The following changes have been made to the + xsl-xalan code + since the 1.75.1 release. + + +Mauritz Jeanson: nbproject/project.xmlAdded missing NetBeans configuration. + + + + + + + + +Release Notes: 1.75.1 +This release includes bug fixes. + +The following is a list of changes that have been made since the 1.75.0 release. + + + +FO +The following changes have been made to the fo code since the 1.75.0 release. + + +Keith Fahlgren: block.xslSwitching to em dash for character before attribution in epigraph; resolves Bug #2793878 + + +Robert Stayton: lists.xslFixed bug 2789947, id attribute missing on simplelist fo output. + + + + + +HTML +The following changes have been made to the + html code + since the 1.75.0 release. + + +Keith Fahlgren: block.xslSwitching to em dash for character before attribution in epigraph; resolves Bug #2793878 + + +Robert Stayton: lists.xslFixed bug 2789678: apply-templates line accidentally deleted. + + + + + +Epub +The following changes have been made to the + epub code + since the 1.75.0 release. + + +Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xslAdded regression and fix to correct "bug" with namespace-prefixed container elements in META-INF/container.xml ; resolves Issue #2790017 + + +Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/onegraphic.xinclude.xml;⋯Another attempt at flexible named entity and XInclude processing + + +Keith Fahlgren: bin/lib/docbook.rbTweaking solution to Bug #2750442 following regression reported by Michael Wiedmann. + + + + + +Params +The following changes have been made to the + params code + since the 1.75.0 release. + + +Mauritz Jeanson: highlight.source.xmlUpdated documentation to reflect changes made in r8419. + + + + + + + + +Release Notes: 1.75.0 +This release includes important bug fixes and adds the following +significant feature changes: + + +Gentext +Modifications to translations have been made. + + + +Common + +Added support for some format properties on tables using +HTML table markup. +Added two new qanda.defaultlabel values so that numbered sections +and numbered questions can be distinguished. Satisfies +Feature Request #1539045. +Added code to handle acknowledgements in book and part. The element is processed +similarly to dedication. All acknowledgements will appear as front matter, after +any dedications. + + + + +FO + +The inclusion of highlighting code has been simplified. +Add support for pgwide on informal objects. +Added a new parameter, bookmarks.collapse, that controls the initial state of the bookmark tree. Closes FR #1792326. +Add support for more dbfo processing instructions. +Add new variablelist.term.properties to format terms, per request # 1968513. +Add support for @width on screen and programlisting, fixes bug #2012736. +Add support for writing-mode="rl-tb" (right-to-left) in FO outputs. +Add writing.mode param for FO output. + + + +HTML + +Convert all calls to class.attribute to calls to common.html.attributes to support dir, lang, and title attributes in html output for all elements. Fulfills feature request #1993833. +Inclusion of highlighting code was simplified. Only one import is now necessary. +Add new param index.links.to.section. +Add support for the new index.links.to.section param which permits precise links to indexterms in HTML output rather than to the section title. + + + +ePub + +Slightly more nuanced handling of imageobject alternatives and better support in dbtoepub for XIncludes and ENTITYs to resolve Issue #2750442 reported by Raphael Hertzog. +Added a colon after an abstract/title when mapping into the dc:description for OPF metadata in ePub output to help the flat text have more pseudo-semantics (sugestions from Michael Wiedmann) +Added DocBook subjectset -> OPF dc:subject mapping and tests +Added DocBook date -> OPF dc:date mapping and tests +Added DocBook abstract -> OPF dc:description mapping and tests +Added --output option to dbtoepub based on user request + + + + +HTMLHelp + +Add support for generating olink target database for htmlhelp files. + + + + +Params + +Add default setting for @rules attribute on HTML markup tables. +Added a new parameter, bookmarks.collapse, that controls the initial state of the bookmark tree. When the parameter has a non-zero value (the default), only the top-level bookmarks are displayed initially. Otherwise, the whole tree of bookmarks is displayed. This is implemented for FOP 0.9X. Closes FR #1792326. +Add new variablelist.term.properties to format terms, per request # 1968513. +Add two new qanda.defaultlabel values so that numbered sections and numbered questions can be distinguished. Satisfies Feature Request #1539045. +Add param to control whether an index entry links to a section title or to the precise location of the indexterm. +New attribute list for glossentry in glossary. +New parameter to support @width on programlisting and screen. +Add attribute-sets for formatting glossary terms and defs. + + + +Highlighting + +Inclusion of highlighting code was simplified. Only one import is now necessary. + + + + + + + +The following is a list of changes that have been made + since the 1.74.3 release. + + +Gentext +The following changes have been made to the + gentext code + since the 1.74.3 release. + + +Robert Stayton: locale/sv.xml; locale/ja.xml; locale/pl.xmlCheck in translations of Legalnotice submitted on mailing list. + + +Robert Stayton: locale/es.xmlFix spelling errors in Acknowledgements entries. + + +Robert Stayton: locale/es.xmlCheck in translations for 4 elements submitted through docbook-apps +message of 14 April 2009. + + +David Cramer: locale/zh.xml; locale/ca.xml; locale/ru.xml; locale/ga.xml; locale/gl.xml; l⋯Internationalized punctuation in glosssee and glossseealso + + +Robert Stayton: MakefileCheck in fixes for DSSSL gentext targets from submitted patch #1689633. + + +Robert Stayton: locale/uk.xmlCheck in major update submitted with bug report #2008524. + + +Robert Stayton: locale/zh_tw.xmlCheck in fix to Note string submitted in bug #2441051. + + +Robert Stayton: locale/ru.xmlCheckin typo fix submitted in bug #2453406. + + + + + +Common +The following changes have been made to the + common code + since the 1.74.3 release. + + +Robert Stayton: gentext.xslFix extra generated space when xrefstyle includes 'nopage'. + + +Robert Stayton: table.xslAdd support for some format properties on tables using +HTML table markup. These include: + - frame attribute on table (or uses $default.table.frame parameter). + - rules attribute on table (or uses $default.table.rules parameter). + - align attribute on td and th + - valign attribute on td and th + - colspan on td and th + - rowspan on td and th + - bgcolor on td and th + + +Robert Stayton: olink.xslAdd placeholder template to massage olink hot text to make +customization easier, per Feature Request 1828608. + + +Robert Stayton: targets.xslAdd support for collecting olink targets from a glossary +generated from a glossary.collection. + + +Robert Stayton: titles.xslHandle firstterm like glossterm in mode="title.markup". + + +Robert Stayton: titles.xslAdd match on info/title in title.markup templates where missing. + + +Mauritz Jeanson: titles.xslChanged "ancestor::title" to "(ancestor::title and (@id or @xml:id))". +This enables proper formatting of inline elements in titles in TOCs, +as long as these inlines don't have id or xml:id attributes. + + +Robert Stayton: labels.xslAdd two new qanda.defaultlabel values so that numbered sections +and numbered questions can be distinguished. Satisfies +Feature Request #1539045. + + +Robert Stayton: stripns.xsl; pi.xslConvert function-available(exsl:node-set) to use the new param +so Xalan bug is isolated. + + +Mauritz Jeanson: titles.xslAdded fixes for bugs #2112656 and #1759205: +1. Reverted mistaken commits r7485 and r7523. +2. Updated the template with match="link" and mode="no.anchor.mode" so that +@endterm is used if it exists and if the link has no content. + + +Mauritz Jeanson: titles.xslAdded code to handle acknowledgements in book and part. The element is processed +similarly to dedication. All acknowledgements will appear as front matter, after +any dedications. + + +Robert Stayton: olink.xslFix bug #2018717 use.local.olink.style uses wrong gentext context. + + +Robert Stayton: olink.xslFix bug #1787167 incorrect hot text for some olinks. + + +Robert Stayton: common.xslFix bug #1669654 Broken output if copyright <year> contains a range. + + +Robert Stayton: labels.xslFix bug in labelling figure inside appendix inside article inside book. + + + + + +FO +The following changes have been made to the + fo code + since the 1.74.3 release. + + +Jirka Kosek: highlight.xslInclusion of highlighting code was simplified. Only one import is now necessary. + + +Robert Stayton: fop1.xslAdd the new fop extensions namespace declaration, in case FOP +extension functions are used. + + +Robert Stayton: formal.xslAdd support for pgwide on informal objects. + + +Robert Stayton: docbook.xslFixed spurious closing quote on line 134. + + +Robert Stayton: docbook.xsl; autoidx-kosek.xsl; autoidx.xslConvert function-available for node-set() to use +new $exsl.node.set.available param in test. + + +David Cramer: xref.xslSuppress extra space after xref when xrefstyle='select: label nopage' (#2740472) + + +Mauritz Jeanson: pi.xslFixed doc bug for row-height. + + +David Cramer: glossary.xslInternationalized punctuation in glosssee and glossseealso + + +Robert Stayton: param.xweb; param.ent; htmltbl.xsl; table.xslAdd support for some format properties on tables using +HTML table markup. These include: + - frame attribute on table (or uses $default.table.frame parameter). + - rules attribute on table (or uses $default.table.rules parameter). + - align attribute on td and th + - valign attribute on td and th + - colspan on td and th + - rowspan on td and th + - bgcolor on td and th + + +Robert Stayton: table.xslAdd support bgcolor in td and th +elements in HTML table markup. + + +Robert Stayton: htmltbl.xslAdd support for colspan and rowspan and bgcolor in td and th +elements in HTML table markup. + + +Robert Stayton: param.xwebFix working of page-master left and right margins. + + +Mauritz Jeanson: param.xweb; param.ent; fop1.xslAdded a new parameter, bookmarks.collapse, that controls the initial state of the bookmark tree. When the parameter has a non-zero value (the default), only the top-level bookmarks are displayed initially. Otherwise, the whole tree of bookmarks is displayed. This is implemented for FOP 0.9X. Closes FR #1792326. + + +Robert Stayton: table.xsl; pi.xslAdd support for dbfo row-height processing instruction, like that in dbhtml. + + +Robert Stayton: lists.xslAdd support for dbfo keep-together processing instruction for +entire list instances. + + +Robert Stayton: lists.xsl; block.xslAdd support fo dbfo keep-together processing instruction to +more blocks like list items and paras. + + +Robert Stayton: lists.xsl; param.xweb; param.entAdd new variablelist.term.properties to format terms, per request # 1968513. + + +Robert Stayton: inline.xslIn simple.xlink, rearrange order of processing. + + +Robert Stayton: xref.xslHandle firstterm like glossterm in mode="xref-to". + + +Robert Stayton: glossary.xsl; xref.xsl; pi.xsl; footnote.xslImplement simple.xlink for glosssee and glossseealso so they can use +other types of linking besides otherterm. + + +Robert Stayton: qandaset.xslAdd two new qanda.defaultlabel values so that numbered sections and numbered questions can be distinguished. Satisfies Feature Request #1539045. + + +Robert Stayton: titlepage.xslFor the book title templates, I changed info/title to book/info/title +so other element's titles will not be affected. + + +Robert Stayton: xref.xsl; verbatim.xslUse param exsl.node.set.available to test for function. + + +Robert Stayton: param.xweb; param.ent; footnote.xslStart using new param exsl.node.set.available to work around Xalan bug. + + +Robert Stayton: titlepage.templates.xmlAdd comment on use of t:predicate for editor to prevent +extra processing of multiple editors. Fixes bug 2687842. + + +Robert Stayton: xref.xsl; autoidx.xslAn indexterm primary, secondary, or tertiary element with an id or xml:id +now outputs that ID, so that index entries can be cross referenced to. + + +Mauritz Jeanson: synop.xslAdded modeless template for ooclass|oointerface|ooexception. +Closes bug #1623468. + + +Robert Stayton: xref.xslAdd template with match on indexterm in mode="xref-to" to fix bug 2102592. + + +Robert Stayton: xref.xslNow xref to qandaentry will use the label element in a question for +the link text if it has one. + + +Robert Stayton: inline.xslAdd id if specified from @id to output for quote and phrase so +they can be xref'ed to. + + +Robert Stayton: xref.xslAdd support for xref to phrase, simpara, anchor, and quote. +This assumes the author specifies something using xrefstyle since +the elements don't have ordinary link text. + + +Robert Stayton: toc.xslFix bug in new toc templates. + + +Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; xref.xsl; titlepage.templates⋯Added code to handle acknowledgements in book and part. The element is processed +similarly to dedication. All acknowledgements will appear as front matter, after +any dedications. + + +Robert Stayton: toc.xslRewrite toc templates to support an empty toc or populated toc +in all permitted contexts. Same for lot elements. +This fixes bug #1595969 for FO outputs. + + +Robert Stayton: index.xslFix indents for seealsoie so they are consistent. + + +Mauritz Jeanson: param.xwebRemoved duplicate (monospace.font.family). + + +Robert Stayton: param.xweb; param.entAdd glossentry.list.item.properties. + + +Robert Stayton: param.xweb; param.entAdd monospace.verbatim.font.width param to support @width on programlisting. + + +Robert Stayton: verbatim.xslPut programlisting in fo:block-container with writing-mode="lr-tb" +when text direction is right to left because all program languages +are left-to-right. + + +Robert Stayton: verbatim.xslAdd support for @width on screen and programlisting, fixes bug #2012736. + + +Robert Stayton: xref.xslFix bug #1973585 xref to para with xrefstyle not handled correctly. + + +Mauritz Jeanson: block.xslAdded support for acknowledgements in article. +Support in book/part remains to be added. + + +Robert Stayton: xref.xslFix bug #1787167 incorrect hot text for some olinks. + + +Robert Stayton: fo.xslAdd writing-mode="tb-rl" as well since some XSL-FO processors support it. + + +Robert Stayton: autotoc.xsl; lists.xsl; glossary.xsl; fo.xsl; table.xsl; pagesetup.xslAdd support for writing-mode="rl-tb" (right-to-left) in FO outputs. +Changed instances of margin-left to margin-{$direction.align.start} +and margin-right to margin-{$direction.align.end}. Those direction.align +params are computed from the writing mode value in each locale's +gentext key named 'writing-mode', introduced in 1.74.3 to add +right-to-left support to HTML outputs. + + +Robert Stayton: param.xweb; param.entAdd attribute-sets for formatting glossary terms and defs. + + +Robert Stayton: param.xweb; param.entAdd writing.mode param for FO output. + + +Robert Stayton: autotoc.xslFix bug 1546008: in qandaentry in a TOC, use its blockinfo/titleabbrev or blockinfo/title +instead of question, if available. For DocBook 5, use the info versions. + + +Keith Fahlgren: verbatim.xslAdd better pointer to README for XSLTHL + + +Keith Fahlgren: verbatim.xslMore tweaking the way that XSLTHL does or does not get called + + +Keith Fahlgren: verbatim.xslAlternate attempt at sanely including/excluding XSLTHT code + + + + + +HTML +The following changes have been made to the + html code + since the 1.74.3 release. + + +Robert Stayton: lists.xslRemoved redundant lang and title attributes on list element inside +div element for lists. + + +Robert Stayton: inline.xsl; titlepage.xsl; division.xsl; toc.xsl; sections.xsl; table.xsl;⋯Convert all calls to class.attribute to calls to common.html.attributes +to support dir, lang, and title attributes in html output for all elements. +Fulfills feature request #1993833. + + +Robert Stayton: chunk-common.xslFix bug #2750253 wrong links in list of figures in chunk.html +when target html is in a subdirectory and dbhtml filename used. + + +Jirka Kosek: highlight.xslInclusion of highlighting code was simplified. Only one import is now necessary. + + +Robert Stayton: chunk-common.xsl; chunktoc.xsl; docbook.xsl; chunk-changebars.xsl; autoidx⋯Convert function-available for node-set() to use +new $exsl.node.set.available param in test. + + +Mauritz Jeanson: pi.xslFixed doc bug for row-height. + + +David Cramer: glossary.xslInternationalized punctuation in glosssee and glossseealso + + +Robert Stayton: lists.xsl; html.xsl; block.xslMore elements get common.html.attributes. +Added locale.html.attributes template which does the lang, +dir, and title attributes, but not the class attribute +(used on para, for example). + + +Robert Stayton: lists.xslReplace more literal class atts with mode="class.attribute" to support +easier customization. + + +Robert Stayton: glossary.xslSupport olinking in glosssee and glossseealso. + + +Robert Stayton: inline.xslIn simple.xlink, rearrange order of processing. + + +Robert Stayton: xref.xslHandle firstterm like glossterm in mode="xref-to". + + +Robert Stayton: lists.xsl; html.xsl; block.xslAdded template named common.html.attributes to output +class, title, lang, and dir for most elements. +Started adding it to some list and block elements. + + +Robert Stayton: qandaset.xslAdd two new qanda.defaultlabel values so that numbered sections +and numbered questions can be distinguished. Satisfies +Feature Request #1539045. + + +Robert Stayton: param.xweb; chunk-code.xsl; param.ent; xref.xsl; chunkfast.xsl; verbatim.x⋯Use new param exsl.node.set.available to test, handles Xalan bug. + + +Robert Stayton: autoidx.xslUse named anchors for primary, secondary, and tertiary ids so +duplicate entries with different ids can still have an id output. + + +Robert Stayton: param.xweb; param.entAdd new param index.links.to.section. + + +Robert Stayton: xref.xsl; autoidx.xslPass through an id on primary, secondary, or tertiary to +the index entry, so that one could link to an index entry. +You can't link to the id on an indexterm because that is +used to place the main anchor in the text flow. + + +Robert Stayton: autoidx.xslAdd support for the new index.links.to.section param which permits +precise links to indexterms in HTML output rather than to +the section title. + + +Mauritz Jeanson: synop.xslAdded modeless template for ooclass|oointerface|ooexception. +Closes bug #1623468. + + +Robert Stayton: qandaset.xslMake sure a qandaset has an anchor, even when it has no title, +because it may be referenced in a TOC or xref. +Before, the anchor was output by the title, but there was no +anchor if there was no title. + + +Robert Stayton: xref.xslAdd a template for indexterm with mode="xref-to" to fix bug 2102592. + + +Robert Stayton: xref.xslNow xref to qandaentry will use the label element in a question for +the link text if it has one. + + +Robert Stayton: qandaset.xsl; html.xslCreate separate templates for computing label of question and answer +in a qandaentry, so such can be used for the alt text of an xref +to a qandaentry. + + +Robert Stayton: inline.xsl; xref.xslNow support xref to phrase, simpara, anchor, and quote, +most useful when an xrefstyle is used. + + +Robert Stayton: toc.xslRewrite toc templates to support an empty toc or populated toc +in all permitted contexts. Same for lot elements. +This fixes bug #1595969 for HTML outputs. + + +Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; xref.xsl; titlepage.templates⋯Added code to handle acknowledgements in book and part. The element is processed +similarly to dedication. All acknowledgements will appear as front matter, after +any dedications. + + +Robert Stayton: index.xslRewrote primaryie, secondaryie and tertiaryie templates to handle +nesting of elements and seeie and seealsoie, as reported in +bug # 1168912. + + +Robert Stayton: autotoc.xslFix simplesect in toc problem. + + +Robert Stayton: verbatim.xslAdd support for @width per bug report #2012736. + + +Robert Stayton: formal.xsl; htmltbl.xslFix bug #1787140 HTML tables not handling attributes correctly. + + +Robert Stayton: param.xwebMove writing-mode param. + + +Keith Fahlgren: refentry.xslRemove a nesting of <p> inside <p> for refclass (made XHTML* invalid, made HTML silly) + + +Robert Stayton: table.xslFix bug #1945872 to allow passthrough of colwidth values to +HTML table when no tablecolumns.extension is available and +when no instance of * appears in the table's colspecs. + + +Mauritz Jeanson: block.xslAdded support for acknowledgements in article. +Support in book/part remains to be added. + + +Robert Stayton: chunk-common.xslFix bug #1787167 incorrect hot text for some olinks. + + +Robert Stayton: qandaset.xslFix bug 1546008: in qandaentry in a TOC, use its blockinfo/titleabbrev or blockinfo/title +instead of question, if available. For DocBook 5, use the info versions. + + +Robert Stayton: chunktoc.xslAdd support for generating olink database when using chunktoc.xsl. + + +Keith Fahlgren: verbatim.xslAdd better pointer to README for XSLTHL + + +Keith Fahlgren: verbatim.xslAnother stab at fixing the stupid XSLTHT includes across processors (Saxon regression reported by Sorin Ristache) + + +Keith Fahlgren: verbatim.xslMore tweaking the way that XSLTHL does or does not get called + + +Keith Fahlgren: verbatim.xslAlternate attempt at sanely including/excluding XSLTHT code + + + + + +Manpages +The following changes have been made to the + manpages code + since the 1.74.3 release. + + +Robert Stayton: table.xslConvert function-available test for node-set() function to +test of $exsl.node.set.available param. + + +Mauritz Jeanson: lists.xslAdded a template for bibliolist. Closes bug #1815916. + + + + + +ePub +The following changes have been made to the + epub code + since the 1.74.3 release. + + +Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/onegraphic.xinclude.xml;⋯Slightly more nuanced handling of imageobject alternatives and better support in dbtoepub for XIncludes and ENTITYs to resolve Issue #2750442 reported by Raphael Hertzog. + + +Keith Fahlgren: docbook.xslAdd a colon after an abstract/title when mapping into the dc:description for OPF metadata in ePub output to help the flat text have more pseudo-semantics (sugestions from Michael Wiedmann) + + +Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xsl; bin/spec/files/de.xmlCorrectly set dc:language in OPF metadata when i18nizing. Closes Bug #2755150 + + +Keith Fahlgren: bin/spec/epub_regressions_spec.rb; docbook.xslCorrected namespace declarations for literal XHTML elements to make them serialize "normally" + + +Keith Fahlgren: docbook.xslBe a little bit more nuanced about dates + + +Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x⋯Add DocBook subjectset -> OPF dc:subject mapping and tests + + +Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x⋯Add DocBook date -> OPF dc:date mapping and tests + + +Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x⋯Add DocBook abstract -> OPF dc:description mapping and tests + + +Robert Stayton: docbook.xslCheck in patch submitted by user to add opf:file-as attribute +to dc:creator element. + + +Keith Fahlgren: bin/dbtoepubAdding --output option to dbtoepub based on user request + + +Keith Fahlgren: docbook.xsl; bin/spec/epub_spec.rbCleaning and regularizing the generation of namespaced nodes for OPF, NCX, XHTML and other outputted filetypes (hat tip to bobstayton for pointing out the silly, incorrect code) + + +Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/refclass.xmlRemove a nesting of <p> inside <p> for refclass (made XHTML* invalid, made HTML silly) + + +Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/blockquotepre.xmlAdded regression test and fix for XHTML validation problem with <a>s added inside <blockquote>; This potentially causes another problem (where something is referenced by has no anchor, but someone reporting that should cause the whole <a id='thing'/> thing to be reconsidered with modern browsers in mind. + + + + + +HTMLHelp +The following changes have been made to the + htmlhelp code + since the 1.74.3 release. + + +Robert Stayton: htmlhelp-common.xslAdd support for generating olink target database for htmlhelp files. + + + + + + +Params +The following changes have been made to the + params code + since the 1.74.3 release. + + +Robert Stayton: default.table.rules.xmlAdd default setting for @rules attribute on HTML markup tables. + + +Mauritz Jeanson: bookmarks.collapse.xmlAdded a new parameter, bookmarks.collapse, that controls the initial state +of the bookmark tree. When the parameter has a non-zero value (the default), +only the top-level bookmarks are displayed initially. Otherwise, the whole +tree of bookmarks is displayed. + +This is implemented for FOP 0.9X. Closes FR #1792326. + + +Robert Stayton: variablelist.term.properties.xmlAdd new variablelist.term.properties to format terms, per +request # 1968513. + + +Robert Stayton: qanda.defaultlabel.xmlAdd two new qanda.defaultlabel values so that numbered sections +and numbered questions can be distinguished. Satisfies +Feature Request #1539045. + + +Robert Stayton: index.links.to.section.xmlChange default to 1 to match past behavior. + + +Robert Stayton: exsl.node.set.available.xmlIsolate this text for Xalan bug regarding exsl:node-set available. +If it is ever fixed in Xalan, just fix it here. + + +Robert Stayton: index.links.to.section.xmlAdd param to control whether an index entry links to +a section title or to the precise location of the +indexterm. + + +Robert Stayton: glossentry.list.item.properties.xmlNew attribute list for glossentry in glossary. + + +Robert Stayton: monospace.verbatim.font.width.xmlNew parameter to support @width on programlisting and screen. + + +Mauritz Jeanson: highlight.source.xmlUpdated and reorganized the description. + + +Robert Stayton: page.margin.outer.xml; page.margin.inner.xmlAdd caveat about XEP bug when writing-mode is right-to-left. + + +Robert Stayton: article.appendix.title.properties.xml; writing.mode.xml; body.start.indent⋯Change 'left' to 'start' and 'right' to 'end' to support right-to-left +writing mode. + + +Robert Stayton: glossdef.block.properties.xml; glossdef.list.properties.xml; glossterm.blo⋯Add attribute-sets for formatting glossary terms and defs. + + +Robert Stayton: glossterm.separation.xmlClarify the description. + + +Robert Stayton: make.year.ranges.xmlNow handles year element containing a comma or dash without error. + + + + + +Highlighting +The following changes have been made to the + highlighting code + since the 1.74.3 release. + + +Jirka Kosek: READMEInclusion of highlighting code was simplified. Only one import is now necessary. + + +Keith Fahlgren: READMEAdding XSLTHL readme + + +Keith Fahlgren: common.xslAlternate attempt at sanely including/excluding XSLTHT code + + + + + +XSL-Saxon +The following changes have been made to the + xsl-saxon code + since the 1.74.3 release. + + +Mauritz Jeanson: src/com/nwalsh/saxon/Text.javaAdded a fix that prevents output of extra blank line. +Hopefully this closes bug #894805. + + + + + +XSL-Xalan +The following changes have been made to the + xsl-xalan code + since the 1.74.3 release. + + +Mauritz Jeanson: src/com/nwalsh/xalan/Text.javaAdded a fix that prevents output of extra blank line. +Hopefully this closes bug #894805. + + + + + + + + +Release Notes: 1.74.3 +This release fixes some bugs in the 1.74.2 release. +See highlighting/README for XSLTHL usage instructions. + + +Release Notes: 1.74.2 +This release fixes some bugs in the 1.74.1 release. + + + +Release Notes: 1.74.1 +This release includes important bug fixes and adds the following +significant feature changes: + + +Gentext +Kirghiz locale added and Chinese translations have been simplified. +Somme support for gentext and right-to-left languages has been added. + + +FO +Various bugs have been resolved. +Support for a new processing instruction: dbfo funcsynopsis-style has been added. +Added new param email.mailto.enabled for FO output. Patch from Paolo Borelli. + +Support for documented metadata in fop1 mode has been added. + + + + +Highlighting +Support for the latest version of XSLTHL 2.0 and some new language syntaxes have been added to a variety of outputs. + + + + +Manpages +Added man.output.better.ps.enabled param (zero default). It non-zero, no such +markup is embedded in generated man pages, and no enhancements are +included in the PostScript output generated from those man pages +by the man -Tps command. + + + + + +HTML +Support for writing.mode to set text direction and alignment based on document locale has been added. + +Added a new top-level stylesheet module, chunk-changebars.xsl, to be +used for generating chunked output with highlighting based on change +(@revisionflag) markup. The module imports/includes the standard chunking +and changebars templates and contains additional logic for chunked output. +See FRs #1015180 and #1819915. + + + + +ePub + +Covers now look better in Adobe Digital Editions thanks to a patch from Paul Norton of Adobe + +Cover handling now more generic (including limited DocBook 5.0 cover support thanks to patch contributed by Liza Daly. +Cover markup now carries more reliably into files destined for .mobi and the Kindle. +dc:identifiers are now generated from more types of numbering schemes. +Both SEO and semantic structure of chunked ePub output by ensuring that we always send out one and only one h1 in each XHTML chunk. + +Primitive support for embedding a single font added. + + +Support for embedding a CSS customizations added. + + + + + +Roundtrip + + +Support for imagedata-metadata and table as images added. + + +Support for imagedata-metadata and legalnotice as images added. + + + + +Params +man.output.better.ps.enabled added for Manpages output + +writing.mode.xml added to set text direction. + + +Added new param email.mailto.enabled for FO output. +Patch from Paolo Borelli. Closes #2086321. + + +highlight.source upgraded to support the latest version of XSLTHL 2.0. + + + + + + + + +The following is a list of changes that have been made since the 1.74.0 release. + + + +Gentext +The following changes have been made to the gentext code since the 1.74.0 release. + + +Michael(tm) Smith: locale/ky.xml; Makefilenew Kirghiz locale from Ilyas Bakirov + + +Mauritz Jeanson: locale/en.xmlAdded "Acknowledgements". + + +Dongsheng Song: locale/zh_cn.xmlSimplified Chinese translation. + + +Robert Stayton: locale/lv.xml; locale/ca.xml; locale/pt.xml; locale/tr.xml; locale/af.xml;⋯Add writing-mode gentext string to support right-to-left languages. + + + + + +FO +The following changes have been made to the fo code since the 1.74.0 release. + + +David Cramer: footnote.xslAdded a check to confirm that a footnoteref's linkend points to a footnote. Stylesheets stop processing if not and provide a useful error message. + + +Mauritz Jeanson: spaces.xslConvert spaces to fo:leader also in elements in the DB 5 namespace. + + +Mauritz Jeanson: pi.xsl; synop.xslAdded support for a new processing instruction: dbfo funcsynopsis-style. +Closes bug #1838213. + + +Michael(tm) Smith: inline.xsl; param.xweb; param.entAdded new param email.mailto.enabled for FO output. +Patch from Paolo Borelli. Closes #2086321. + + +Mauritz Jeanson: docbook.xslAdded support for document metadata for fop1 (patch #2067318). + + +Jirka Kosek: param.ent; param.xweb; highlight.xslUpgraded to support the latest version of XSLTHL 2.0 + -- nested markup in highlited code is now processed + -- it is no longer needed to specify path XSLTHL configuration file using Java property + -- support for new languages, including Perl, Python and Ruby was added + + + + + +HTML +The following changes have been made to the html code since the 1.74.0 release. + + +Robert Stayton: param.xweb; docbook.xsl; param.ent; html.xslAdd support for writing.mode to set text direction and alignment based on document locale. + + +Mauritz Jeanson: chunk-changebars.xslAdded a new top-level stylesheet module, chunk-changebars.xsl, to be +used for generating chunked output with highlighting based on change +(@revisionflag) markup. The module imports/includes the standard chunking +and changebars templates and contains additional logic for chunked output. +See FRs #1015180 and #1819915. + + + + + +Manpages +The following changes have been made to the manpages code since the 1.74.0 release. + + +Michael(tm) Smith: docbook.xslPut the following at the top of generated roff for each page: + \" t +purpose is to explicitly tell AT&T troff that the page needs to be +pre-processed through tbl(1); groff can figure it out +automatically, but apparently AT&T troff needs to be explicitly told + + + + + +ePub +The following changes have been made to the epub code since the 1.74.0 release. + + +Keith Fahlgren: docbook.xslPatch from Paul Norton of Adobe to get covers to look better in Adobe Digital Editions + + +Keith Fahlgren: bin/spec/epub_regressions_spec.rb; bin/spec/files/v5cover.xml; bin/spec/sp⋯Patch contributed by Liza Daly to make ePub cover handling more generic. Additionally +DocBook 5.0's <cover> now has some limited support: + +- should reference a cover in the OPF guide for a DocBook 5.0 test document + + +Keith Fahlgren: bin/spec/files/isbn.xml; bin/spec/files/issn.xml; bin/spec/files/biblioid.⋯Liza Daly reported that the dc:identifer-generation code was garbage (she was right). + +Added new tests: +- should include at least one dc:identifier +- should include an ISBN as URN for dc:identifier if an ISBN was in the metadata +- should include an ISSN as URN for dc:identifier if an ISSN was in the metadata +- should include an biblioid as a dc:identifier if an biblioid was in the metadata +- should include a URN for a biblioid with @class attribute as a dc:identifier if an biblioid was in the metadata + + +Keith Fahlgren: docbook.xsl; bin/spec/epub_spec.rbImprove both SEO and semantic structure of chunked ePub output by ensuring that +we always send out one and only one h1 in each XHTML chunk. + +DocBook::Epub +- should include one and only one <h1> in each HTML file in rendered ePub files +for <book>s +- should include one and only one <h1> in each HTML file in rendered ePub files +for <book>s even if they do not have section markup + + +Keith Fahlgren: docbook.xsl; bin/spec/epub_realbook_spec.rb; bin/spec/files/orm.book.001.x⋯Adding better support for covers in epub files destined for .mobi and the Kindle + + +Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb; bin/spec/files/DejaVuSerif.otf; docbook.⋯Adding primitive support for embedding a single font + + +Keith Fahlgren: bin/dbtoepub; bin/lib/docbook.rb; bin/spec/files/test_cust.xsl; bin/spec/e⋯Adding support for user-specified customization layers in dbtoepub + + +Keith Fahlgren: bin/dbtoepub; bin/spec/epub_regressions_spec.rb; bin/lib/docbook.rb; bin/s⋯Adding CSS support to .epub target & dbtoepub: + -c, --css [FILE] Use FILE for CSS on generated XHTML. + + +DocBook::Epub +... +- should include a CSS link in HTML files when a CSS file has been provided +- should include CSS file in .epub when a CSS file has been provided +- should include a CSS link in OPF file when a CSS file has been provided + + + + + +Roundtrip +The following changes have been made to the + roundtrip code + since the 1.74.0 release. + + +Steve Ball: blocks2dbk.xsl; template.xml; template.dotadded support for imagedata-metadata +added support for table as images + + +Steve Ball: blocks2dbk.xsl; normalise2sections.xsl; sections2blocks.xslImproved support for personname inlines. + + +Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; template.xmlAdded support for legalnotice. + + +Steve Ball: blocks2dbk.xsl; wordml2normalise.xsladded support for orgname in author + + +Steve Ball: specifications.xml; supported.xml; blocks2dbk.xsl; wordml2normalise.xsl; dbk2w⋯Updated specification. +to-DocBook: add cols attribute to tgroup +from-DocBook: fix for blockquote title + + + + + +Params +The following changes have been made to the params since the 1.74.0 release. + + +The change was to add man.output.better.ps.enabled parameter, with +its default value set to zero. + +If the value of the man.output.better.ps.enabled parameter is +non-zero, certain markup is embedded in each generated man page +such that PostScript output from the man -Tps command for that +page will include a number of enhancements designed to improve the +quality of that output. + +If man.output.better.ps.enabled is zero (the default), no such +markup is embedded in generated man pages, and no enhancements are +included in the PostScript output generated from those man pages +by the man -Tps command. + +WARNING: The enhancements provided by this parameter rely on +features that are specific to groff (GNU troff) and that are not +part of "classic" AT&T troff or any of its derivatives. Therefore, +any man pages you generate with this parameter enabled will be +readable only on systems on which the groff (GNU troff) program is +installed, such as GNU/Linux systems. The pages will not not be +readable on systems on with the classic troff (AT&T troff) command +is installed. + +NOTE: The value of this parameter only affects PostScript output +generated from the man command. It has no effect on output +generated using the FO backend. + +TIP: You can generate PostScript output for any man page by +running the following command: + +man FOO -Tps > FOO.ps + +You can then generate PDF output by running the following command: + +ps2pdf FOO.ps + + +Robert Stayton: writing.mode.xmlwriting mode param used to set text direction. + + +Michael(tm) Smith: email.mailto.enabled.xmlAdded new param email.mailto.enabled for FO output. +Patch from Paolo Borelli. Closes #2086321. + + +Jirka Kosek: highlight.source.xml; highlight.xslthl.config.xmlUpgraded to support the latest version of XSLTHL 2.0 + -- nested markup in highlited code is now processed + -- it is no longer needed to specify path XSLTHL configuration file using Java property + -- support for new languages, including Perl, Python and Ruby was added + + + + + +Highlighting +The following changes have been made to the + highlighting code + since the 1.74.0 release. + + +Jirka Kosek: cpp-hl.xml; c-hl.xml; tcl-hl.xml; php-hl.xml; common.xsl; perl-hl.xml; delphi⋯Upgraded to support the latest version of XSLTHL 2.0 + -- nested markup in highlited code is now processed + -- it is no longer needed to specify path XSLTHL configuration file using Java property + -- support for new languages, including Perl, Python and Ruby was added + + + + + + + + +Release Notes: 1.74.0 +This release includes important bug fixes and adds the following +significant feature changes: + + +.epub target +Paul Norton (Adobe) and Keith Fahlgren(O'Reilly Media) have donated code that generates .epub documents from +DocBook input. An alpha-reference implementation in Ruby has also been provided. +.epub is an open standard of the The International Digital Publishing Forum (IDPF), +a the trade and standards association for the digital publishing industry. +Read more about this target in epub/README + + + + +XHTML 1.1 target +To support .epub output, a strict XHTML 1.1 target has been added. The stylesheets for this output are +generated and are quite similar to the XHTML target. + + +Gentext updates +A number of locales have been updated. + + +Roundtrip improvements +Table, figure, template syncronization, and character style improvements have been made for WordML & Pages. Support added for OpenOffice.org. + + + + + First implementation of a libxslt extension + + A stylesheet extension for libxslt, written in Python, has been added. + The extension is a function for adjusting column widths in CALS tables. See + extensions/README.LIBXSLT for more information. + + + + + +The following is a list of changes that have been made + since the 1.73.2 release. + + +Gentext +The following changes have been made to the + gentext code + since the 1.73.2 release. + + +Michael(tm) Smith: locale/id.xmlChecked in changes to Indonesion locale submitted by Euis Luhuanam a long time ago. + + +Michael(tm) Smith: locale/lt.xmlAdded changes to Lithuanian locate submitted a long time back by Nikolajus Krauklis. + + +Michael(tm) Smith: locale/hu.xmlfixed error in lowercase.alpha definition in Hungarian locale + + +Michael(tm) Smith: locale/nb.xmlCorrected language code for nb locale, and restored missing "startquote" key. + + +Michael(tm) Smith: locale/ja.xmlCommitted changes to ja locale file, from Akagi Kobayashi. Adds bracket quotes around many xref instances that did not have them +before. + + +Michael(tm) Smith: Makefile"no" locale is now "nb" + + +Michael(tm) Smith: locale/nb.xmlUpdate Norwegian BokmÃ¥l translation. Thanks to Hans F. Nordhaug. + + +Michael(tm) Smith: locale/no.xml; locale/nb.xmlper message from Hans F. Nordhaug, correct identifier for +Norwegian BokmÃ¥l is "nb" (not "no") and has been for quite some +time now... + + +Michael(tm) Smith: locale/ja.xmlConverted ja.xml source file to use real unicode characters so +that the actual glyphs so up when you edit it in a text editor +(instead of the character references). + + +Michael(tm) Smith: locale/ja.xmlChecked in changes to ja.xml locale file. Thanks to Akagi Kobayashi. + + +Michael(tm) Smith: locale/it.xmlChanges from Federico Zenith + + +Dongsheng Song: locale/zh_cn.xmlAdded missing translations. + + + + + +Common +The following changes have been made to the + common code + since the 1.73.2 release. + + +Michael(tm) Smith: l10n.xslAdded new template "l10.language.name" for retrieving the +English-language name of the lang setting of the current document. +Closes #1916837. Thanks to Simon Kennedy. + + +Michael(tm) Smith: refentry.xslfixed syntax error + + +Michael(tm) Smith: refentry.xslfixed a couple of typos + + +Michael(tm) Smith: refentry.xslrefined handling of cases where refentry "source" or "manual" +metadata is missing or when we use fallback content instead. We +now report a Warning if we use fallback content. + + +Michael(tm) Smith: refentry.xsldon't use refmiscinfo@class=date value as fallback for refentry +"source" or "manual" metadata fields + + +Michael(tm) Smith: refentry.xslMade reporting of missing refentry metadata more quiet: + + - we no longer report anything if usable-but-not-preferred + metadata is found; we just quietly use whatever we manage to + find + + - we now only report missing "source" metadata if the refentry + is missing BOTH "source name" and "version" metadata; if it + has one but not the other, we use whichever one it has and + don't report anything as missing + +The above changes were made because testing with some "real world" +source reveals that some authors are intentionally choosing to use +"non preferred" markup for some metadata, and also choosing to +omit "source name" or "version" metadata in there DocBook XML. So +it does no good to give them pedantic reminders about what they +already know... + +Also, changed code to cause "fixme" text to be inserted in output +in particular cases: + + - if we can't manage to find any "source" metadata at all, we + now put fixme text into the output + + - if we can't manage to find any "manual" metadata a all, we + now put fixme text into the output + +The "source" and "manual" metadata is necessary information, so +buy putting the fixme stuff in the output, we alert users to the +need problem of it being missing. + + +Michael(tm) Smith: refentry.xslWhen generating manpages output, we no longer report anything if +the refentry source is missing date or pubdate content. In +practice, many users intentionally omit the date from the source +because they explicitly want it to be generated. + + +Michael(tm) Smith: l10n.xmlfurther change needed for switch from no locale to nb. + + +Michael(tm) Smith: common.xslAdded support for orgname in authorgroup. Thanks to Camille +Bégnis. + + +Michael(tm) Smith: Makefile"no" locale is now "nb" + + +Mauritz Jeanson: stripns.xslRemoved the template matching "ng:link|db:link" (in order to make @xlink:show +work with <link> elements). As far as I can tell, this template is no longer needed. + + +Mauritz Jeanson: entities.entMoved declaration of comment.block.parents entity to common/entities.ent. + + +Mauritz Jeanson: titles.xslAdded an update the fix made in revision 7528 (handling of xref/link in no.anchor.mode mode). +Having xref in title is not a problem as long as the target is not an ancestor element. +Closes bug #1838136. + +Note that an xref that is in a title and whose target is an ancestor element is still not +rendered in the TOC. This could be considered a bug, but on the other hand I cannot really +see the point in having such an xref in a document. + + +Mauritz Jeanson: titles.xslAdded a "not(ancestor::title)" test to work around "too many nested +apply-templates" problems when processing xrefs or links in no.anchor.mode mode. +Hopefully, this closes bug #1811721. + + +Mauritz Jeanson: titles.xslRemoved old template matching "link" in no.anchor.mode mode. + + +Mauritz Jeanson: titles.xslProcess <link> in no.anchor.mode mode with the same template as <xref>. +Closes bug #1759205 (Empty link in no.anchor.mode mode). + + +Mauritz Jeanson: titles.xslIn no.anchor.mode mode, do not output anchors for elements that are descendants +of <title>. Previously, having inline elements with @id/@xml:id in <title>s +resulted in anchors both in the TOC and in the main flow. Closes bug #1797492. + + + + + +FO +The following changes have been made to the + fo code + since the 1.73.2 release. + + Mauritz Jeanson: pi.xslUpdated documentation for keep-together. + Mauritz Jeanson: task.xslEnabled use of the keep-together PI on task elements. + +Robert Stayton: index.xslFOP1 requires fo:wrapper for inline index entries, not fo:inline. + + +Robert Stayton: index.xslFixed non-working inline.or.block template for indexterm wrappers. +Add fop1 to list of processors using inline.or.block. + + +Mauritz Jeanson: table.xslFixed bug #1891965 (colsep in entytbl not working). + + +Mauritz Jeanson: titlepage.xslAdded support for title in revhistory. Closes bug #1842847. + + +Mauritz Jeanson: pi.xslSmall doc cleanup (dbfo float-type). + + +Mauritz Jeanson: titlepage.xslInsert commas between multiple copyright holders. + + +Mauritz Jeanson: autotoc.xsl; division.xslAdded modifications to support nested set elements. See bug #1853172. + + +David Cramer: glossary.xslAdded normalize-space to xsl:sorts to avoid missorting of glossterms due to stray leading spaces. + + +David Cramer: glossary.xslFixed bug #1854199: glossary.xsl should use the sortas attribute on glossentry + + +Mauritz Jeanson: inline.xslAdded a template for citebiblioid. The hyperlink target is the parent of the referenced biblioid, +and the "hot text" is the biblioid itself enclosed in brackets. + + +Mauritz Jeanson: inline.xslMoved declaration of comment.block.parents entity to common/entities.ent. + + +Mauritz Jeanson: docbook.xslUpdated message about unmatched element. + + +Mauritz Jeanson: param.xwebAdded link to profiling chapter of TCG. + + +Mauritz Jeanson: refentry.xslFixed typo (refsynopsysdiv -> refsynopsisdiv). + + +David Cramer: fop.xsl; fop1.xsl; ptc.xsl; xep.xslAdded test to check generate.index param when generating pdf bookmarks + + +Mauritz Jeanson: graphics.xslAdded support for MathML in imagedata. + + +Michael(tm) Smith: math.xslRemoved unnecessary extra test condition in test express that +checks for passivetex. + + +Michael(tm) Smith: math.xslDon't use fo:instream-foreign-object if we are processing with +passivetex. Closes #1806899. Thanks to Justus Piater. + + +Mauritz Jeanson: component.xslAdded code to output a TOC for an appendix in an article when +generate.toc='article/appendix toc'. Closes bug #1669658. + + +Dongsheng Song: biblio-iso690.xslChange encoding from "windows-1250" to "UTF-8". + + +Mauritz Jeanson: pi.xslUpdated documentation for dbfo_label-width. + + +Mauritz Jeanson: lists.xslAdded support for the dbfo_label-width PI in calloutlists. + + +Robert Stayton: biblio.xslSupport finding glossary database entries inside bibliodivs. + + +Robert Stayton: formal.xslComplete support for <?dbfo pgwide="1"?> for informal +elements too. + + +Mauritz Jeanson: table.xslIn the table.block template, added a check for the dbfo_keep-together PI, so that +a table may break (depending on the PI value) at a page break. This was needed +since the outer fo:block that surrounds fo:table has keep-together.within-column="always" +by default, which prevents the table from breaking. Closes bug #1740964 (Titled +table does not respect dbfo PI). + + +Mauritz Jeanson: pi.xslAdded a few missing @role="tcg". + + +Mauritz Jeanson: inline.xslUse normalize-space() in glossterm comparisons (as in html/inline.xsl). + + +Mauritz Jeanson: autoidx.xslRemoved the [&scope;] predicate from the target variable in the template with name="reference". +This filter was the cause of missing index backlinks when @zone and @type were used on indexterms, +with index.on.type=1. Closes bug #1680836. + + +Michael(tm) Smith: inline.xsl; xref.xsl; footnote.xslAdded capability in FO output for displaying URLs for all +hyperlinks (elements marked up with xlink:href attributes) in the +same way as URLs for ulinks are already handled (which is to say, +either inline or as numbered footnotes). + +Background on this change: +DocBook 5 allows "ubiquitous" linking, which means you can make +any element a hyperlink just by adding an xlink:href attribute to +it, with the value set to an external URL. That's in contrast to +DocBook 4, which only allows you to use specific elements (e.g., +the link and ulink elements) to mark up hyperlinks. + +The existing FO stylesheets have a mechanism for handling display +of URLs for hyperlinks that are marked up with ulink, but they did +not handle display of URLs for elements that were marked up with +xlink:href attributes. This change adds handling for those other +elements, enabling the URLs they link to be displayed either +inline or as numbered footnotes (depending on what values the user +has the ulink.show and ulink.footnotes params set to). + +Note that this change only adds URL display support for elements +that call the simple.xlink template -- which currently is most +(but not all) inline elements. + +This change also moves the URL display handling out of the ulink +template and into a new "hyperlink.url.display" named template; +the ulink template and the simple.xlink named template now both +call the hyperlink.url.display template. + +Warning: In the stylesheet code that determines what footnote +number to assign to each footnote or external hyperlink, there is +an XPath expression for determining whether a particular +xlink:href instance is an external hyperlink; that expression is +necessarily a bit complicated and further testing may reveal that +it doesn't handle all cases as expected -- so some refinements to +it may need to be done later. + +Closes #1785519. Thanks to Ken Morse for reporting and +troubleshooting the problem. + + + + + +HTML +The following changes have been made to the + html code + since the 1.73.2 release. + + Keith Fahlgren: inline.xsl; synop.xslWork to make HTML and XHTML targets more valid + Keith Fahlgren: table.xslAdd better handling for tables that have footnotes in the titles + Keith Fahlgren: biblio.xslAdd anchors to bibliodivs + +Keith Fahlgren: formal.xsl; Makefile; htmltbl.xslInitial checkin/merge of epub target from work provided by Paul Norton of Adobe +and Keith Fahlgren of O'Reilly. +This change includes new code for generating the XHTML 1.1 target sanely. + + +Mauritz Jeanson: biblio.xslAdded code for creating URLs from biblioids with @class="doi" (representing Digital +Object Identifiers). See FR #1934434 and http://doi.org. + +To do: 1) Add support for FO output. 2) Figure out how @class="doi" should be handled +for bibliorelation, bibliosource and citebiblioid. + + +Norman Walsh: formal.xslDon't use xsl:copy because it forces the resulting element to be in the same namespace as the source element; in the XHTML stylesheets, that's wrong. But the HTML-to-XHTML converter does the right thing with literal result elements, so use one of them. + + +Michael(tm) Smith: MakefileAdded checks and hacks to various makefiles to enable building +under Cygwin. This stuff is ugly and maybe not worth the mess and +trouble, but does seem to work as expected and not break anything +else. + + +Michael(tm) Smith: docbook.xsladded "exslt" namespace binding to html/docbook.xsl file (in +addition to existing "exsl" binding. reason is because lack of it +seems to cause processing problems when using the profiled +version of the stylsheet + + +Norman Walsh: chunk-common.xslRename link + + +Mauritz Jeanson: table.xslAdded a fix to make rowsep apply to the last row of thead in entrytbl. + + +Michael(tm) Smith: synop.xslSimplified and streamlined handling of output for ANSI-style +funcprototype output, to correct a problem that was causing type +data to be lost in the output parameter definitions. For example, +for an instance like this: + <paramdef>void *<parameter>dataptr</parameter>[]</paramdef> +... the brackets (indicating an array type) were being dropped. + + +Michael(tm) Smith: synop.xslChanged HTML handling of K&R-style paramdef output. The parameter +definitions are no longer output in a table (though the prototype +still is). The reason for the change is that the +kr-tabular-funcsynopsis-mode template was causing type data to be +lost in the output parameter definitions. For example, for an +instance like this: + <paramdef>void *<parameter>dataptr</parameter>[]</paramdef> +... the brackets (indicating an array type) were being dropped. +The easiest way to deal with the problem is to not try to chop up +the parameter definitions and display them in table format, but to +instead just output them as-is. May not look quite as pretty, but +at least we can be sure no information is being lost... + + +Michael(tm) Smith: pi.xslupdated wording of doc for funcsynopsis-style PI + + +Michael(tm) Smith: param.xweb; param.ent; synop.xslRemoved the funcsynopsis.tabular.threshold param. It's no longer +being used in the code and hasn't been since mid 2006. + + +Mauritz Jeanson: graphics.xslAdded support for the img.src.path parameter for SVG graphics. Closes bug #1888169. + + +Mauritz Jeanson: chunk-common.xslAdded missing space. + + +Norman Walsh: component.xslFix bug where component titles inside info elements were not handled properly + + +Michael(tm) Smith: pi.xslMoved dbhtml_stop-chunking embedded doc into alphabetical order, +fixed text of TCG section it see-also'ed. + + +David Cramer: pi.xslAdded support for <?dbhtml stop-chunking?> processing instruction + + +David Cramer: chunk-common.xsl; pi.xslAdded support for <?dbhtml stop-chunking?> processing instruction + + +David Cramer: glossary.xslFixed bug #1854199: glossary.xsl should use the sortas attribute on glossentry. Also added normalize-space to avoid missorting due to stray leading spaces. + + +Mauritz Jeanson: inline.xslAdded a template for citebiblioid. The hyperlink target is the parent of the referenced biblioid, +and the "hot text" is the biblioid itself enclosed in brackets. + + +Mauritz Jeanson: inline.xslAdded support for @xlink:show in the simple.xlink template. The "new" and "replace" +values are supported (corresponding to values of "_blank" and "_top" for the +ulink.target parameter). I have assumed that @xlink:show should override ulink.target +for external URI links. This closes bugs #1762023 and #1727498. + + +Mauritz Jeanson: inline.xslMoved declaration of comment.block.parents entity to common/entities.ent. + + +Mauritz Jeanson: param.xwebAdded link to profiling chapter of TCG. + + +Dongsheng Song: biblio-iso690.xslChange encoding from "windows-1250" to "UTF-8". + + +Robert Stayton: biblio.xslAdd support in biblio collection to entries in bibliodivs. + + +Mauritz Jeanson: pi.xslAdded missing @role="tcg". + + +Mauritz Jeanson: chunk-common.xsl; titlepage.xslRefactored legalnotice/revhistory chunking, so that the use.id.as.filename +parameter as well as the dbhtml_filename PI are taken into account. A new named +template in titlepage.xsl is used to compute the filename. + + +Mauritz Jeanson: chunk-common.xsl; titlepage.xslAn update to the fix for bug #1790495 (r7433): +The "ln-" prefix is output only when the legalnotice doesn't have an +@id/@xml:id, in which case the stylesheets generate an ID value, +resulting in a filename like "ln-7e0fwgj.html". This is useful because +without the prefix, you wouldn't know that the file contained a legalnotice. +The same logic is also applied to revhistory, using an "rh-" prefix. + + +Mauritz Jeanson: autoidx.xslRemoved the [&scope;] predicate from the target variable in the template with name="reference". +This filter was the cause of missing index backlinks when @zone and @type were used on indexterms, +with index.on.type=1. Closes bug #1680836. + + +Mauritz Jeanson: titlepage.xslAdded 'ln-' prefix to the name of the legalnotice chunk, in order to match the +<link href"..."> that is output by make.legalnotice.head.links (chunk-common.xsl). +Modified the href attribute on the legalnotice link. +Closes bug #1790495. + + + + + +Manpages +The following changes have been made to the + manpages code + since the 1.73.2 release. + + +Michael(tm) Smith: other.xslslightly adjusted spacing around admonition markers + + +Michael(tm) Smith: refentry.xsl; utility.xslmake sure refsect3 titles are preceded by a line of space, and +make the indenting of their child content less severe + + +Michael(tm) Smith: block.xslonly indent verbatim environments in TTY output, not in non-TTY/PS + + +Michael(tm) Smith: block.xslmade another adjustment to correct vertical alignment of admonition marker + + +Michael(tm) Smith: block.xsl; other.xslAdjusted/corrected alignment of adominition marker in PS/non-TTY output. + + +Michael(tm) Smith: endnotes.xslFor PS/non-TTY output, display footnote/endnote numbers in +superscript. + + +Michael(tm) Smith: table.xsl; synop.xsl; utility.xslChanged handling of hanging indents for cmdsynopsis, funcsynopsis, +and synopfragment such that they now look correct in non-TTY/PS +output. We now use the groff \w escape to hang by the actual width +-- in the current font -- of the command, funcdef, or +synopfragment references number (as opposed to hanging by the +number of characters). This rendering in TTY output remains the +same, since the width in monospaced TTY output is the same as the +number of characters. + +Also, created new synopsis-block-start and synopsis-block-end +templates to use for cmdsynopsis and funcsynopsis instead of the +corresponding verbatim-* templates. + +Along with those changes, also corrected a problem that caused the +content of synopfragment to be dropped, and made a +vertical-spacing change to adjust spacing around table titles and +among sibling synopfragment instances. + + +Michael(tm) Smith: other.xsluse common l10.language.name template to retrieve English-language name + + +Michael(tm) Smith: synop.xsl; inline.xsladded comment in code explaining why we don't put filename output +in italic (despite the fact that man guidelines say we should) + + +Michael(tm) Smith: inline.xslput filename output in monospace instead of italic + + +Michael(tm) Smith: synop.xslput cmdsynopsis in monospace + + +Michael(tm) Smith: inline.xslremoved template match for literal. template matches for monospace +inlines are all imported from the HTML stylesheet + + +Michael(tm) Smith: block.xsldon't indent verbatim environments that are descendants of +refsynopsisdiv, not put backgrounds behind them + + +Michael(tm) Smith: inline.xslset output of the literal element in monospace. this causes all +inline monospace instances in the git man pages to be set in +monospace (since DocBook XML source for git docs is generated with +asciidoc and asciidoc consistently outputs only <literal> for +inline monospace (not <command> or <code> or anything else). +Of course this only affects non-TTY output... + + +Michael(tm) Smith: utility.xslAdded inline.monoseq named template. + + +Michael(tm) Smith: utility.xsldon't bother using a custom register to store the previous +font-family value when setting blocks of text in code font; just +use \F[] .fam with no arg to switch back + + +Michael(tm) Smith: endnotes.xslput links in blue in PS output (note that this matches how groff +renders content marked up with the .URL macro) + + +Michael(tm) Smith: endnotes.xsl; param.xweb; param.entremoved man.links.are.underlined and added man.font.links. Also, +changed the default font formatting for links to bold. + + +Michael(tm) Smith: endnotes.xsl; param.xweb; param.entAdded new param man.base.url.for.relative.links .. specifies a +base URL for relative links (for ulink, @xlink:href, imagedata, +audiodata, videodata) shown in the generated NOTES section of +man-page output. The value of man.base.url.for.relative.links is +prepended to any relative URI that is a value of ulink url, +xlink:href, or fileref attribute. + +If you use relative URIs in link sources in your DocBook refentry +source, and you leave man.base.url.for.relative.links unset, the +relative links will appear "as is" in the NOTES section of any +man-page output generated from your source. That's probably not +what you want, because such relative links are only usable in the +context of HTML output. So, to make the links meaningful and +usable in the context of man-page output, set a value for +man.base.url.for.relative.links that points +to the online version of HTML output generated from your DocBook +refentry source. For example: + + <xsl:param name="man.base.url.for.relative.links" + >http://www.kernel.org/pub/software/scm/git/docs/</xsl:param> + + +Michael(tm) Smith: info.xslIf a source refentry contains a Documentation or DOCUMENTATION +section, don't report it as having missing AUTHOR information. +Also, if missing a contrib/personblurb for a person or org, report +pointers to http://docbook.sf.net/el/personblurb and to +http://docbook.sf.net/el/contrib + + +Michael(tm) Smith: info.xslIf we encounter an author|editor|othercredit instance that lacks a +personblurb or contrib, report it to the user (because that means +we have no information about that author|editor|othercredit to +display in the generated AUTHOR|AUTHORS section...) + + +Michael(tm) Smith: info.xsl; docbook.xsl; other.xslif we can't find any usable author data, emit a warning and insert +a fixme in the output + + +Michael(tm) Smith: info.xslfixed bug in indenting of output for contrib instances in AUTHORS +section. Thanks to Daniel Leidert and the fglrx docs for exposing +the bug. + + +Michael(tm) Smith: block.xslfor a para or simpara that is the first child of a callout, +suppress the .sp or .PP that would normally be output (because in +those cases, the output goes into a table cell, and the .sp or .PP +markup causes a spurious linebreak before it when displayed + + +Michael(tm) Smith: lists.xslAdded support for rendering co callouts and calloutlist instances. +So you can now use simple callouts -- marking up programlisting +and such with co instances -- and have the callouts displayed in +man-page output. ("simple callouts" means using co@id and +callout@arearefs pointing to co@id instances; in man/roff output, +we can't/don't support markup that uses areaset and area) + + +Michael(tm) Smith: block.xslonly put a line of space after a verbatim if it's followed by a +text node or a paragraph + + +Michael(tm) Smith: utility.xslput verbatim environments in slightly smaller font in non-TTY +output + + +Michael(tm) Smith: lists.xslminor whitespace-only reformatting of lists.xsl source + + +Michael(tm) Smith: lists.xslMade refinements/fixes to output of orderedlist and itemizedlist +-- in part, to get mysql man pages to display correctly. This +change causes a "\c" continuation marker to be added between +listitem markers and contents (to ensure that the content remains +on the same line as the marker when displayed) + + +Michael(tm) Smith: block.xslput a line of vertical space after all verbatim output that has +sibling content following it (not just if that sibling content is +a text node) + + +Michael(tm) Smith: block.xslrefined spacing around titles for admonitions + + +Michael(tm) Smith: block.xsl; other.xslDeal with case of verbatim environments that have a linebreak +after the opening tag. Assumption is that users generally don't +want that linebreak to appear in output, so we do some groff +hackery to mess with vertical spacing and close the space. + + +Michael(tm) Smith: inline.xslindexterm instances now produce groff comments like this: + + .\" primary: secondary: tertiary + +remark instances, if non-empty, now produce groff comments + + +Michael(tm) Smith: charmap.groff.xsl; other.xslconvert no-break space character to groff "\ \&" (instead of just +"\ "). the reason is that if a space occurs at the end of a line, +our processing causes it to be eaten. a real-world case of this is +the mysql(1) man page. appending the "\&" prevents that + + +Michael(tm) Smith: block.xsloutput "sp" before simpara output, not after it (outputting it +after results in undesirable whitespace in particular cases; for +example, in the hg/mercurial docs + + +Michael(tm) Smith: table.xsl; synop.xsl; utility.xslrenamed from title-preamble to pinch.together and replaced "sp -1" +between synopsis fragments with call to pinch.together instead + + +Michael(tm) Smith: table.xsluse title-preamble template for table titles (instead of "sp -1" +hack), and "sp 1" after all tables (instead of just "sp" + + +Michael(tm) Smith: utility.xslcreated title-preamble template for suppressing line spacing after +headings + + +Michael(tm) Smith: info.xslfurther refinement of indenting in AUTHORS section + + +Michael(tm) Smith: block.xsl; other.xslrefined handling of admonitions + + +Michael(tm) Smith: lists.xslUse RS/RE in another place where we had IP "" + + +Michael(tm) Smith: info.xslReplace (ab)use of IP with "sp -1" in AUTHORS section with RS/RE +instead. + + +Michael(tm) Smith: table.xsl; synop.xsl; info.xslchanged all instances of ".sp -1n" to ".sp -1" + + +Michael(tm) Smith: other.xsladd extra line before SH heads only in non-TTY output + + +Michael(tm) Smith: block.xslReworked output for admonitions (caution, important, note, tip, +warning). In TTY output, admonitions now get indented. In non-TTY +output, a colored marker (yellow) is displayed next to them. + + +Michael(tm) Smith: other.xslAdded BM/EM macros for putting a colored marker in margin next to +a block of text. + + +Michael(tm) Smith: utility.xslcreated make.bold.title template by moving title-bolding part out +from nested-section-title template. This allows the bolding to +also be used by the template for formatting admonitions + + +Michael(tm) Smith: info.xslput .br before copyright contents to prevent them from getting run in + + +Michael(tm) Smith: refentry.xsl; other.xsl; utility.xslmade point size of output for Refsect2 and Refsect3 heads bigger + + +Michael(tm) Smith: other.xslput slightly more space between SH head and underline in non-TTY +output + + +Michael(tm) Smith: param.xweb; param.ent; other.xslAdded the man.charmap.subset.profile.english parameter and refined +the handling of charmap subsets to differentiate between English +and non-English source. + +This way charmap subsets are now handled is this: + +If the value of the man.charmap.use.subset parameter is non-zero, +and your DocBook source is not written in English (that is, if its +lang or xml:lang attribute has a value other than en), then the +character-map subset specified by the man.charmap.subset.profile +parameter is used instead of the full roff character map. + +Otherwise, if the lang or xml:lang attribute on the root element +in your DocBook source or on the first refentry element in your +source has the value en or if it has no lang or xml:lang +attribute, then the character-map subset specified by the +man.charmap.subset.profile.english parameter is used instead of +man.charmap.subset.profile. + +The difference between the two subsets is that +man.charmap.subset.profile provides mappings for characters in +Western European languages that are not part of the Roman +(English) alphabet (ASCII character set). + + +Michael(tm) Smith: other.xslVarious updates, mainly related to uppercasing SH titles: + + - added a "Language: " metadata line to the top comment area of + output man pages, to indicate the language the page is in + + - added a "toupper" macro of doing locale-aware uppercasing of + SH titles and cross-references to SH titles; the mechanism + relies on the uppercase.alpha and lowercase.alpha DocBook + gentext keys to do locale-aware uppercasing based on the + language the page is written in + + - added a "string.shuffle" template, which provides a library + function for "shuffling" two strings together into a single + string; it takes the first character for the first string, the + first character from second string, etc. The only current use + for it is to generate the argument for the groff tr request + that does string uppercasing. + + - added make.tr.uppercase.arg and make.tr.normalcase.arg named + templates for use in generating groff code for uppercasing and + "normal"-casing SH titles + + - made the BB/BE "background drawing" macros have effect only in + non-TTY output + + - output a few comments in the top part of source + + +Michael(tm) Smith: utility.xslremoved some leftover kruft + + +Michael(tm) Smith: refentry.xslTo create the name(s) for each man page, we now replace any spaces +in the refname(s) with underscores. This ensures that tools like +lexgrog(1) will be able to parse the name (lexgrog won't parse +names that contain spaces). + + +Michael(tm) Smith: docbook.xslPut a comment into source of man page to indicate where the main +content starts. (We now have a few of macro definitions at the +start of the source, so putting this comment in helps those that +might be viewing the source.) + + +Michael(tm) Smith: refentry.xslrefined mechanism for generating SH titles + + +Michael(tm) Smith: charmap.groff.xslAdded zcaron, Zcaron, scaron, and Scaron to the groff character map. +This means that generated Finnish man pages will no longer contain +any raw accented characters -- they'll instead by marked up with +groff escapes. + + +Michael(tm) Smith: other.xsl; utility.xslcorrected a regression I introduced about a year ago that caused +dots to be output just as "\." -- instead needs to be "\&." (which +is what it will be now, after this change) + + +Michael(tm) Smith: refentry.xslChanged backend handling for generating titles for SH sections and +for cross-references to those sections. This should have no effect +on TTY output (behavior should remain the same hopefully) but +results in titles in normal case (instead of uppercase) in PS +output. + + +Michael(tm) Smith: info.xsluse make.subheading template to make subheadings for AUTHORS and +COPYRIGHT sections (instead of harcoding roff markup) + + +Michael(tm) Smith: block.xslput code font around programlisting etc. + + +Michael(tm) Smith: synop.xsl; docbook.xslembed custom macro definitions in man pages, plus wrap synopsis in +code font + + +Michael(tm) Smith: endnotes.xsluse the make.subheading template to generated SH subheading for +endnotes section. + + +Michael(tm) Smith: lists.xslAdded some templates for generating if-then-else conditional +markup in groff, so let's use those instead of hard-coding it in +multiple places... + + +Michael(tm) Smith: other.xsl; utility.xslInitial checkin of some changes related to making PS/PDF output +from "man -l -Tps" look better. The current changes: + + - render synopsis and verbatim sections in a monospace/code font + + - put a light-grey background behind all programlisting, screen, + and literallayout instances + + - prevent SH heads in PS output from being rendered in uppercase + (as they are in console output) + + - also display xrefs to SH heads in PS output in normal case + (instead of uppercase) + + - draw a line under SH heads in PS output + +The changes made to the code to support the above features were: + + - added some embedded/custom macros: one for conditionally + upper-casing SH x-refs, one for redefining the SH macro + itself, with some conditional handling for PS output, and + finally a macro for putting a background/screen (filled box) + around a block of text (e.g., a program listing) in PS output + + - added utility templates for wrapping blocks of text in code + font; also templates for inline code font + + +Robert Stayton: refentry.xslrefpurpose nodes now get apply-templates instead of just normalize-space(). + + +Michael(tm) Smith: lists.xslFixed alignment of first lined of text for each listitem in +orderedlist output for TTY. Existing code seemed to have been +causing an extra undesirable space to appear. + + +Michael(tm) Smith: lists.xslWrapped some roff conditionals around roff markup for orderedlist +and itemizedlist output, so that the lists look acceptable in PS +output as well as TTY. + + +Michael(tm) Smith: pi.xsl; synop.xsl; param.xweb; param.entAdded the man.funcsynopsis.style parameter. Has the same effect in +manpages output as the funcsynopsis.style parameter has in HTML +output -- except that its default value is 'ansi' instead of 'kr'. + + +Michael(tm) Smith: synop.xslReworked handling of K&R funcprototype output. It no longer relies +on the HTML kr-tabular templates, but instead just does direct +transformation to roff. For K&R output, it displays the paramdef +output in an indented list following the prototype. + + +Michael(tm) Smith: synop.xslProperly integrated handling for K&R output into manpages +stylesheet. The choice between K&R output and ANSI output is +currently controlled through use of the (HTML) funcsynopsis.style +parameter. Note that because the mechanism does currently rely on +funcsynopsis.style, the default in manpages output is now K&R +(because that's the default of that param). But I suppose I ought +to create a man.funcsynopsis.style and make the default for that +ANSI (to preserve the existing default behavior). + + +Michael(tm) Smith: docbook.xsladded manpages/pi.xsl file + + +Michael(tm) Smith: .cvsignore; pi.xslAdded "dbman funcsynopsis-style" PI and incorporated it into the +doc build. + + +Michael(tm) Smith: refentry.xslFixed regression that caused an unescaped dash to be output +between refname and refpurpose content. Closes bug #1894244. +Thanks to Daniel Leidert. + + +Michael(tm) Smith: other.xslFixed problem with dots being escaped in filenames of generated +man files. Closes #1827195. Thanks to Daniel Leidert. + + +Michael(tm) Smith: inline.xslAdded support for processing structfield (was appearing in roff +output surrounded by HTML <em> tags; fixed so that it gets roff +ital markup). Closes bug #1858329. Thanks to Sam Varshavchik. + + + + + +Epub +The following changes have been made to the + epub code + since the 1.73.2 release. + + Keith Fahlgren: bin/spec/README; bin/spec/epub_realbook_spec.rb'Realbook' spec now passes + Keith Fahlgren: bin/dbtoepub; README; bin/spec/README; bin/lib/docbook.rb; bin/spec/epub_r⋯Very primitive Windows support for dbtoepub reference implementation; README for running tests and for the .epub target in general; shorter realbook test document (still fails for now) + Keith Fahlgren: bin/dbtoepub; bin/spec/epub_regressions_spec.rb; bin/lib/docbook.rb; bin/s⋯Changes to OPF spine to not duplicate idrefs for documents with parts not at the root; regression specs for same + Keith Fahlgren: docbook.xslFixing linking to cover @id, distinct from other needs of cover-image-id (again, thanks to Martin Goerner) + Keith Fahlgren: docbook.xslUpdating the title of the toc element in the guide to be more explicit (thanks to Martin Goerner) + +Keith Fahlgren: bin/spec/examples/amasque_exploded/content.opf; bin/spec/examples/amasque_⋯Initial checkin/merge of epub target from work provided by Paul Norton of Adobe +and Keith Fahlgren of O'Reilly. + + +Keith Fahlgren: docbook.xsl== General epub test support + +$ spec -O ~/.spec.opts spec/epub_spec.rb + +DocBook::Epub +- should be able to be created +- should fail on a nonexistent file +- should be able to render to a file +- should create a file after rendering +- should have the correct mimetype after rendering +- should be valid .epub after rendering an article +- should be valid .epub after rendering an article without sections +- should be valid .epub after rendering a book +- should be valid .epub after rendering a book even if it has one graphic +- should be valid .epub after rendering a book even if it has many graphics +- should be valid .epub after rendering a book even if it has many duplicated graphics +- should report an empty file as invalid +- should confirm that a valid .epub file is valid +- should not include PDFs in rendered epub files as valid image inclusions +- should include a TOC link in rendered epub files for <book>s + +Finished in 20.608395 seconds + +15 examples, 0 failures + + +== Verbose epub test coverage against _all_ of the testdocs + +Fails on only (errors truncated): +1) +'DocBook::Epub should be able to render a valid .epub for the test document /Users/keith/work/docbook-dev/trunk/xsl/epub/bin/spec/testdocs/calloutlist.003.xml [30]' FAILED +'DocBook::Epub should be able to render a valid .epub for the test document /Users/keith/work/docbook-dev/trunk/xsl/epub/bin/spec/testdocs/cmdsynopsis.001.xml [35]' FAILED +.... + +Finished in 629.89194 seconds + +224 examples, 15 failures + +224 examples, 15 failures yields 6% failure rate + + + + + +HTMLHelp +The following changes have been made to the + htmlhelp code + since the 1.73.2 release. + + +Mauritz Jeanson: htmlhelp-common.xslAdded <xsl:with-param name="quiet" select="$chunk.quietly"/> to calls to +the write.chunk, write.chunk.with.doctype, and write.text.chunk templates. +This makes chunk.quietly=1 suppress chunk filename messages also for help +support files (which seems to be what one would expect). See bug #1648360. + + + + + +Eclipse +The following changes have been made to the + eclipse code + since the 1.73.2 release. + + +David Cramer: eclipse.xslUse sortas attributes (if they exist) when sorting indexterms + + +David Cramer: eclipse.xslAdded support for indexterm/see in eclipse index.xml + + +Mauritz Jeanson: eclipse.xslAdded <xsl:with-param name="quiet" select="$chunk.quietly"/> +to helpidx template. + + +David Cramer: eclipse.xslGenerate index.xml file and add related goo to plugin.xml file. Does not yet support see and seealso. + + +Mauritz Jeanson: eclipse.xslAdded <xsl:with-param name="quiet" select="$chunk.quietly"/> to calls to +the write.chunk, write.chunk.with.doctype, and write.text.chunk templates. +This makes chunk.quietly=1 suppress chunk filename messages also for help +support files (which seems to be what one would expect). See bug #1648360. + + + + + +JavaHelp +The following changes have been made to the + javahelp code + since the 1.73.2 release. + + +Mauritz Jeanson: javahelp.xslAdded <xsl:with-param name="quiet" select="$chunk.quietly"/> to calls to +the write.chunk, write.chunk.with.doctype, and write.text.chunk templates. +This makes chunk.quietly=1 suppress chunk filename messages also for help +support files (which seems to be what one would expect). See bug #1648360. + + + + + +Roundtrip +The following changes have been made to the + roundtrip code + since the 1.73.2 release. + + +Steve Ball: blocks2dbk.xsl; wordml2normalise.xslfix table/cell borders for wordml, fix formal figure, add emphasis-strong + + +Mauritz Jeanson: supported.xmlChanged @cols to 5. + + +Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; template.xmladded pubdate, fixed metadata handling in biblioentry + + +Steve Ball: supported.xmlAdded support for edition. + + +Steve Ball: docbook-pages.xsl; wordml-blocks.xsl; docbook.xsl; wordml.xsl; pages-normalise⋯Removed stylesheets for old, deprecated conversion method. + + +Steve Ball: specifications.xml; dbk2ooo.xsl; blocks2dbk.xsl; dbk2pages.xsl; blocks2dbk.dtd⋯Added support for Open Office, added edition element, improved list and table support in Word and Pages + + +Steve Ball: normalise-common.xsl; blocks2dbk.xsl; dbk2pages.xsl; template-pages.xml; templ⋯Fixed bug in WordML table handling, improved table handling for Pages 08, synchronised WordML and Pages templates. + + +Steve Ball: normalise-common.xsl; blocks2dbk.xsl; wordml2normalise.xsl; dbk2wp.xslfix caption, attributes + + +Steve Ball: specifications.xml; blocks2dbk.xsl; wordml2normalise.xsl; blocks2dbk.dtd; temp⋯Fixes to table and list handling + + +Steve Ball: blocks2dbk.xsladded support for explicit emphasis character styles + + +Steve Ball: wordml2normalise.xsladded support for customisation in image handling + + +Steve Ball: blocks2dbk.xslAdded inlinemediaobject support for metadata. + + +Steve Ball: normalise-common.xsl; blocks2dbk.xsl; template.xml; dbk2wordml.xsl; dbk2wp.xslAdded support file. Added style locking. Conversion bug fixes. + + + + + +Slides +The following changes have been made to the + slides code + since the 1.73.2 release. + + +Michael(tm) Smith: fo/Makefile; html/MakefileAdded checks and hacks to various makefiles to enable building +under Cygwin. This stuff is ugly and maybe not worth the mess and +trouble, but does seem to work as expected and not break anything +else. + + +Jirka Kosek: html/plain.xslAdded support for showing foil number + + + + + +Website +The following changes have been made to the + website code + since the 1.73.2 release. + + +Michael(tm) Smith: extensions/saxon64/.classes/.gitignore; extensions/xalan2/.classes/com/⋯renamed a bunch more .cvsignore files to .gitignore (to facilitate use of git-svn) + + + + + +Params +The following changes have been made to the + params code + since the 1.73.2 release. + + Keith Fahlgren: epub.autolabel.xmlNew parameter for epub, epub.autolabel + +Mauritz Jeanson: table.frame.border.color.xml; table.cell.padding.xml; table.cell.border.t⋯Added missing refpurposes and descriptions. + + +Keith Fahlgren: ade.extensions.xmlExtensions to support Adobe Digital Editions extensions in .epub output. + + +Mauritz Jeanson: fop.extensions.xml; fop1.extensions.xmlClarified that fop1.extensions is for FOP 0.90 and later. Version 1 is not here yet... + + +Michael(tm) Smith: man.links.are.underlined.xml; man.endnotes.list.enabled.xml; man.font.l⋯removed man.links.are.underlined and added man.font.links. Also, +changed the default font formatting for links to bold. + + +Michael(tm) Smith: man.base.url.for.relative.links.xmlAdded new param man.base.url.for.relative.links .. specifies a +base URL for relative links (for ulink, @xlink:href, imagedata, +audiodata, videodata) shown in the generated NOTES section of +man-page output. The value of man.base.url.for.relative.links is +prepended to any relative URI that is a value of ulink url, +xlink:href, or fileref attribute. + +If you use relative URIs in link sources in your DocBook refentry +source, and you leave man.base.url.for.relative.links unset, the +relative links will appear "as is" in the NOTES section of any +man-page output generated from your source. That's probably not +what you want, because such relative links are only usable in the +context of HTML output. So, to make the links meaningful and +usable in the context of man-page output, set a value for +man.base.url.for.relative.links that points +to the online version of HTML output generated from your DocBook +refentry source. For example: + + <xsl:param name="man.base.url.for.relative.links" + >http://www.kernel.org/pub/software/scm/git/docs/</xsl:param> + + +Michael(tm) Smith: man.string.subst.map.xmlsqueeze .sp\n.sp into a single .sp (to prevent a extra, spurious +line of whitespace from being inserted after programlisting etc. +in certain cases) + + +Michael(tm) Smith: refentry.manual.fallback.profile.xml; refentry.source.fallback.profile.⋯don't use refmiscinfo@class=date value as fallback for refentry +"source" or "manual" metadata fields + + +Michael(tm) Smith: man.charmap.subset.profile.xml; man.charmap.enabled.xml; man.charmap.su⋯made some further doc tweaks related to the +man.charmap.subset.profile.english param + + +Michael(tm) Smith: man.charmap.subset.profile.xml; man.charmap.enabled.xml; man.charmap.su⋯Added the man.charmap.subset.profile.english parameter and refined +the handling of charmap subsets to differentiate between English +and non-English source. + +This way charmap subsets are now handled is this: + +If the value of the man.charmap.use.subset parameter is non-zero, +and your DocBook source is not written in English (that is, if its +lang or xml:lang attribute has a value other than en), then the +character-map subset specified by the man.charmap.subset.profile +parameter is used instead of the full roff character map. + +Otherwise, if the lang or xml:lang attribute on the root element +in your DocBook source or on the first refentry element in your +source has the value en or if it has no lang or xml:lang +attribute, then the character-map subset specified by the +man.charmap.subset.profile.english parameter is used instead of +man.charmap.subset.profile. + +The difference between the two subsets is that +man.charmap.subset.profile provides mappings for characters in +Western European languages that are not part of the Roman +(English) alphabet (ASCII character set). + + +Michael(tm) Smith: man.charmap.subset.profile.xmlAdded to default charmap used by manpages: + + - the "letters" part of the 'C1 Controls And Latin-1 Supplement + (Latin-1 Supplement)' Unicode block + - Latin Extended-A block (but not all of the characters from + that block have mappings in groff, so some of them are still + passed through as-is) + +The effects of this change are that in man pages generated for +most Western European languages and for Finnish, all characters +not part of the Roman alphabet are (e.g., "accented" characters) +are converted to groff escapes. + +Previously, by default we passed through those characters as is +(and users needed to use the full charmap if they wanted to have +those characters converted). + +As a result of this change, man pages generated for Western +European languages will be viewable in some environments in which +they are not viewable if the "raw" non-Roman characters are in them. + + +Mauritz Jeanson: generate.legalnotice.link.xml; generate.revhistory.link.xmlAdded information on how the filename is computed. + + +Mauritz Jeanson: default.table.width.xmlClarified PI usage. + + +Michael(tm) Smith: man.funcsynopsis.style.xmlAdded the man.funcsynopsis.style parameter. Has the same effect in +manpages output as the funcsynopsis.style parameter has in HTML +output -- except that its default value is 'ansi' instead of 'kr'. + + +Michael(tm) Smith: funcsynopsis.tabular.threshold.xmlRemoved the funcsynopsis.tabular.threshold param. It's no longer +being used in the code and hasn't been since mid 2006. + + +Mauritz Jeanson: table.properties.xmlSet keep-together.within-column to "auto". This seems to be the most sensible +default value for tables. + + +Mauritz Jeanson: informal.object.properties.xml; admon.graphics.extension.xml; informalequ⋯Several small documentation fixes. + + +Mauritz Jeanson: manifest.in.base.dir.xmlWording fixes. + + +Mauritz Jeanson: header.content.properties.xml; footer.content.properties.xmlAdded refpurpose. + + +Mauritz Jeanson: ulink.footnotes.xml; ulink.show.xmlUpdated for DocBook 5. + + +Mauritz Jeanson: index.method.xml; glossterm.auto.link.xmlSpelling and wording fixes. + + +Mauritz Jeanson: callout.graphics.extension.xmlClarifed available graphics formats and extensions. + + +Mauritz Jeanson: footnote.sep.leader.properties.xmlCorrected refpurpose. + + +Jirka Kosek: footnote.properties.xmlAdded more properties which make it possible to render correctly footnotes placed inside verbatim elements. + + +Mauritz Jeanson: img.src.path.xmlimg.src.path works with inlinegraphic too. + + +Mauritz Jeanson: saxon.character.representation.xmlAdded TCG link. + + +Mauritz Jeanson: img.src.path.xmlUpdated description of img.src.path. Bug #1785224 revealed that +there was a risk of misunderstanding how it works. + + + + + +Profiling +The following changes have been made to the + profiling code + since the 1.73.2 release. + + +Jirka Kosek: xsl2profile.xslAdded new rules to profile all content generated by HTML Help (including alias files) + + +Robert Stayton: profile-mode.xsluse mode="profile" instead of xsl:copy-of for attributes so +they can be more easily customized. + + + + + + +Tools +The following changes have been made to the + tools code + since the 1.73.2 release. + + +Michael(tm) Smith: make/Makefile.DocBookvarious changes and additions to support making with asciidoc as +an input format + + +Michael(tm) Smith: make/Makefile.DocBookmake dblatex the default PDF maker for the example makefile + + +Michael(tm) Smith: xsl/build/html2roff.xslReworked handling of K&R funcprototype output. It no longer relies +on the HTML kr-tabular templates, but instead just does direct +transformation to roff. For K&R output, it displays the paramdef +output in an indented list following the prototype. + + +Mauritz Jeanson: xsl/build/make-xsl-params.xslMade attribute-sets members of the param list. This enables links to attribute-sets in the +reference documentation. + + +Michael(tm) Smith: xsl/build/html2roff.xsluse .BI handling in K&R funsynopsis output for manpages, just as +we do already of ANSI output + + +Michael(tm) Smith: xsl/build/html2roff.xslImplemented initial support for handling tabular K&R output of +funcprototype in manpages output. Accomplished by adding more +templates to the intermediate HTML-to-roff stylesheet that the +build uses to create the manpages/html-synop.xsl stylesheet. + + +Michael(tm) Smith: xsl/build/doc-link-docbook.xslMade the xsl/tools/xsl/build/doc-link-docbook.xsl stylesheet +import profile-docbook.xsl, so that we can do profiling of release +notes. Corrected some problems in the target for the release-notes +HTML build. + + + + + +Extensions +The following changes have been made to the + extensions code + since the 1.73.2 release. + + Keith Fahlgren: MakefileUse DOCBOOK_SVN variable everywhere, please; build with PDF_MAKER + +Michael(tm) Smith: Makefilemoved extensions build targets from master xsl/Makefile to +xsl/extensions/Makefile + + +Michael(tm) Smith: .cvsignorere-adding empty extensions subdir + + + + + +XSL-Saxon +The following changes have been made to the + xsl-saxon code + since the 1.73.2 release. + + +Michael(tm) Smith: VERSIONbring xsl2, xsl-saxon, and xsl-xalan VERSION files up-to-date with +recent change to snapshot build infrastructure + + +Michael(tm) Smith: nbproject/build-impl.xml; nbproject/project.propertiesChanged hard-coded file references in "clean" target to variable +references. Closes #1792043. Thanks to Daniel Leidert. + + +Michael(tm) Smith: VERSION; MakefileDid post-release wrap-up of xsl-saxon and xsl-xalan dirs + + +Michael(tm) Smith: nbproject/build-impl.xml; VERSION; Makefile; testMore tweaks to get release-ready + + + + + +XSL-Xalan +The following changes have been made to the + xsl-xalan code + since the 1.73.2 release. + + +Michael(tm) Smith: VERSIONbring xsl2, xsl-saxon, and xsl-xalan VERSION files up-to-date with +recent change to snapshot build infrastructure + + +Michael(tm) Smith: nbproject/build-impl.xmlChanged hard-coded file references in "clean" target to variable +references. Closes #1792043. Thanks to Daniel Leidert. + + +Michael(tm) Smith: Makefile; VERSIONDid post-release wrap-up of xsl-saxon and xsl-xalan dirs + + +Michael(tm) Smith: Makefile; nbproject/build-impl.xml; VERSIONMore tweaks to get release-ready + + + + + +XSL-libxslt +The following changes have been made to the + xsl-libxslt code + since the 1.73.2 release. + + +Mauritz Jeanson: python/xslt.pyPrint the result to stdout if no outfile has been given. +Some unnecessary semicolons removed. + + +Mauritz Jeanson: python/xslt.pyAdded a function that quotes parameter values (to ensure that they are interpreted as strings). +Replaced deprecated functions from the string module with string methods. + + +Michael(tm) Smith: python/README; python/README.LIBXSLTrenamed xsl-libxslt/python/README to xsl-libxslt/python/README.LIBXSLT + + +Mauritz Jeanson: python/READMETweaked the text a little. + + + + + + + +Release Notes: 1.73.2 +This is solely a minor bug-fix update to the 1.73.1 release. + It fixes a packaging error in the 1.73.1 package, as well as a + bug in footnote handling in FO output. + + + +Release: 1.73.1 +This is mostly a bug-fix update to the 1.73.0 release. + + +Gentext +The following changes have been made to the + gentext code + since the 1.73.0 release. + + +Mauritz Jeanson: locale/de.xmlApplied patch #1766009. + + +Michael(tm) Smith: locale/lv.xmlAdded localization for ProductionSet. + + + + + +FO +The following changes have been made to the + fo code + since the 1.73.0 release. + + +Mauritz Jeanson: table.xslModified the tgroup template so that, for tables with multiple tgroups, +a width attribute is output on all corresponding fo:tables. Previously, +there was a test prohibiting this (and a comment saying that outputting more +than one width attribute will cause an error). But this seems to be no longer +relevant; it is not a problem with FOP 0.93 or XEP 4.10. Closes bug #1760559. + + +Mauritz Jeanson: graphics.xslReplaced useless <a> elements with warning messages (textinsert extension). + + +Mauritz Jeanson: admon.xslEnabled generation of ids (on fo:wrapper) for indexterms in admonition titles, so that page +references in the index can be created. Closes bug #1775086. + + + + + +HTML +The following changes have been made to the + html code + since the 1.73.0 release. + + +Mauritz Jeanson: titlepage.xslAdded <xsl:call-template name="process.footnotes"/> to abstract template +so that footnotes in info/abstract are processed. Closes bug #1760907. + + +Michael(tm) Smith: pi.xsl; synop.xslChanged handling of HTML output for the cmdsynopsis and +funcsynopsis elements, such that a@id instances are generated for +them if they are descendants of any element containing a dbcmdlist +or dbfunclist PI. Also, update the embedded reference docs for the +dbcmdlist and dbfunclist PIs to make it clear that they can be +used within any element for which cmdsynopsis or funcsynopsis are +valid children. + + +Michael(tm) Smith: formal.xslReverted the part of revision 6952 that caused a@id anchors to be +generated for output of informal objects. Thanks to Sam Steingold +for reporting. + + +Robert Stayton: glossary.xslAccount for a glossary with no glossdiv or glossentry children. + + +Mauritz Jeanson: titlepage.xslModified legalnotice template so that the base.name parameter is calculated +in the same way as for revhistory chunks. Using <xsl:apply-templates +mode="chunk-filename" select="."/> did not work for single-page output since +the template with that mode is in chunk-code.xsl. + + +Mauritz Jeanson: graphics.xslUpdated support for SVG (must be a child of imagedata in DB 5). +Added support for MathML in imagedata. + + +Mauritz Jeanson: pi.xslAdded documentation for the dbhh PI (used for context-sensitive HTML Help). +(The two templates matching 'dbhh' are still in htmlhelp-common.xsl). + + + + + +Manpages +The following changes have been made to the + manpages code + since the 1.73.0 release. + + +Michael(tm) Smith: endnotes.xslIn manpages output, generate warnings about notesources with +non-para children only if the notesource is a footnote or +annotation. Thanks to Sam Steingold for reporting problems with +the existing handling. + + + + + +HTMLHelp +The following changes have been made to the + htmlhelp code + since the 1.73.0 release. + + +Michael(tm) Smith: htmlhelp-common.xslAdded single-pass namespace-stripping support to the htmlhelp, +eclipse, and javahelp stylesheets. + + + + + +Eclipse +The following changes have been made to the + eclipse code + since the 1.73.0 release. + + +Michael(tm) Smith: eclipse.xslAdded single-pass namespace-stripping support to the htmlhelp, +eclipse, and javahelp stylesheets. + + + + + +JavaHelp +The following changes have been made to the + javahelp code + since the 1.73.0 release. + + +Michael(tm) Smith: javahelp.xslAdded single-pass namespace-stripping support to the htmlhelp, +eclipse, and javahelp stylesheets. + + + + + +Roundtrip +The following changes have been made to the + roundtrip code + since the 1.73.0 release. + + +Steve Ball: blocks2dbk.xsl; blocks2dbk.dtd; pages2normalise.xslModularised blocks2dbk to allow customisation, +Added support for tables to pages2normalise + + + + + +Params +The following changes have been made to the + params code + since the 1.73.0 release. + + +Robert Stayton: procedure.properties.xmlprocedure was inheriting keep-together from formal.object.properties, but +a procedure does not need to be kept together by default. + + +Dave Pawson: title.font.family.xml; component.label.includes.part.label.xml; table.frame.b⋯Regular formatting re-org. + + + + + + +Release: 1.73.0 +This release includes important bug fixes and adds the following +significant feature changes: + + + New localizations and localization updates + + We added two new localizations: Latvian and + Esperanto, and made updates to the Czech, Chinese + Simplified, Mongolian, Serbian, Italian, and Ukrainian + localizations. + + + + ISO690 citation style for bibliography output. + + Set the + bibliography.style parameter to + iso690 to use ISO690 style. + + + + New documentation for processing instructions (PI) + + The reference documentation that ships with the + release now includes documentation on all PIs that you can use to + control output from the stylesheets. + + + + New profiling parameters for audience and wordsize + + You can now do profiling based on the values of the + audience and + wordsize attributes. + + + + Changes to man-page output + + The manpages stylesheet now supports single-pass + profiling and single-pass DocBook 5 namespace stripping + (just as the HTML and FO stylesheets also do). Also, added + handling for mediaobject & + inlinemediaobject. (Each imagedata, + audiodata, or videodata element + within a mediaobject or inline + mediaobject is now treated as a "notesource" + and so handled in much the same way as links and + annotation/alt/footnote + are in manpages output.) And added the + man.authors.section.enabled and + man.copyright.section.enabled + parameters to enable control over whether output includes + auto-generated AUTHORS and + COPYRIGHT sections. + + + + Highlighting support for C + + The highlighting mechanism for generating + syntax-highlighted code snippets in output now supports C + code listings (along with Java, PHP, XSLT, and others). + + + + Experimental docbook-xsl-update script + + We added an experimental docbook-xsl-update + script, the purpose of which is to facilitate + easy sync-up to the latest docbook-xsl snapshot (by means + of rsync). + + + + + + +Gentext +The following changes have been made to the +gentext code +since the 1.72.0 release. + + +Michael(tm) Smith: locale/lv.xml; MakefileAdded Latvian localization file, from Girts Ziemelis. + + +Dongsheng Song: locale/zh_cn.xmlBrought up to date with en.xml in terms of items. A few strings marked for translation. + + +Jirka Kosek: locale/cs.xmlAdded missing translations + + +Robert Stayton: locale/eo.xmlNew locale for Esperanto. + + +Robert Stayton: locale/mn.xmlUpdate from Ganbold Tsagaankhuu. + + +Jirka Kosek: locale/en.xml; locale/cs.xmlRules for normalizing glossary entries before they are sorted can be now different for each language. + + +Michael(tm) Smith: locale/sr_Latn.xml; locale/sr.xmlCommitted changes from MiloÅ¡ KomarÄević to Serbian files. + + +Robert Stayton: locale/ja.xmlFix chapter in context xref-number-and-title + + +Robert Stayton: locale/it.xmlImproved version from contributor. + + +Mauritz Jeanson: locale/uk.xmlApplied patch 1592083. + + + + +Common +The following changes have been made to the +common code +since the 1.72.0 release. + + +Michael(tm) Smith: labels.xslChanged handling of reference auto-labeling such that reference +(when it appears at the component level) is now affected by the +label.from.part param, just as preface, chapter, and appendix. + + +Michael(tm) Smith: common.xslAdded support to the HTML stylesheets for proper processing of +orgname as a child of author. + + +Michael(tm) Smith: refentry.xslRefined logging output of refentry metadata-gathering template; +for some cases of "missing" elements (refmiscinfo stuff, etc.), +the log messages now include URL to corresponding page in the +Definitive Guide (TDG). + + +Robert Stayton: titles.xslAdd refsection/info/title support. + + +Michael(tm) Smith: titles.xslAdded support for correct handling of xref to elements that +contain info/title descendants but no title children. + +This should be further refined so that it handles any *info +elements. And there are probably some other places where similar +handling for *info/title should be added. + + +Mauritz Jeanson: pi.xslModified <xsl:when> in datetime.format template to work +around Xalan bug. + + + + +FO +The following changes have been made to the +fo code +since the 1.72.0 release. + + +Robert Stayton: component.xslAdd parameters to the page.sequence utility template. + + +Mauritz Jeanson: xref.xslAdded template for xref to area/areaset. +Part of fix for bug #1675513 (xref to area broken). + + +Michael(tm) Smith: inline.xslAdded template match for person element to fo stylesheet. + + +Robert Stayton: lists.xslAdded support for spacing="compact" in variablelist, per bug report #1722540. + + +Robert Stayton: table.xsltable pgwide="1" should also use pgwide.properties attribute-set. + + +Mauritz Jeanson: inline.xslMake citations numbered if bibliography.numbered != 0. + + +Robert Stayton: param.xweb; param.entAdd new profiling parameters for audience and wordsize. + + +Robert Stayton: param.xweb; param.entAdded callout.icon.size parameter. + + +Robert Stayton: inline.xsl; xref.xslAdd support for xlink as olink. + + +Robert Stayton: autotoc.xsl; param.xweb; param.entAdd support for qanda.in.toc to fo TOC. + + +Robert Stayton: component.xslImproved the page.sequence utility template for use with book. + + +Robert Stayton: division.xslRefactored the big book template into smaller pieces. +Used the "page.sequence" utility template in +component.xsl to shorten the toc piece. +Added placeholder templates for front.cover and back.cover. + + +Robert Stayton: param.xweb; param.ent; sections.xslAdd section.container.element parameter to enable +pgwide spans inside sections. + + +Robert Stayton: param.xweb; param.ent; component.xslAdd component.titlepage.properties attribute-set to +support span="all" and other properties. + + +Robert Stayton: htmltbl.xsl; table.xslApply table.row.properties template to html tr rows too. +Add keep-with-next to table.row.properties when row is in thead. + + +Robert Stayton: table.xslAdd support for default.table.frame parameter. +Fix bug 1575446 rowsep last check for @morerows. + + +Robert Stayton: refentry.xslAdd support for info/title in refsections. + + +David Cramer: qandaset.xslMake fo questions and answers behave the same way as html + + +Jirka Kosek: lists.xslAdded missing attribute set for procedure + + +Jirka Kosek: param.xweb; biblio.xsl; docbook.xsl; param.ent; biblio-iso690.xslAdded support for formatting biblioentries according to ISO690 citation style. +New bibliography style can be turned on by setting parameter bibliography.style to "iso690" +The code was provided by Jana Dvorakova + + +Robert Stayton: param.xweb; param.ent; pagesetup.xslAdd header.table.properties and footer.table.properties attribute-sets. + + +Robert Stayton: inline.xslAdd fop1.extensions for menuchoice arrow handling exception. + + + + +HTML +The following changes have been made to the + html code + since the 1.72.0 release. + + +Mauritz Jeanson: param.xweb; param.entMoved declaration and documentation of javahelp.encoding from javahelp.xsl to the +regular "parameter machinery". + + +Michael(tm) Smith: admon.xslChanged handling of titles for note, warning, caution, important, +tip admonitions: We now output and HTML h3 head only if +admon.textlabel is non-zero or if the admonition actually contains +a title; otherwise, we don't output an h3 head at all. +(Previously, we were outputting an empty h3 if the admon.textlabel +was zero and if the admonition had no title.) + + +Mauritz Jeanson: xref.xslAdded template for xref to area/areaset. +Part of fix for bug #1675513 (xref to area broken). + + +Mauritz Jeanson: titlepage.xsl; component.xsl; division.xsl; sections.xslAdded fixes to avoid duplicate ids when generate.id.attributes = 1. +This (hopefully) closes bug #1671052. + + +Michael(tm) Smith: formal.xsl; pi.xslMade the dbfunclist PI work as intended. Also added doc for +dbfunclist and dbcmdlist PIs. + + +Michael(tm) Smith: pi.xsl; synop.xslMade the dbcmdlist work the way it appears to have been intended +to work. Restored dbhtml-dir template back to pi.xsl. + + +Michael(tm) Smith: titlepage.xsl; param.xweb; param.entAdded new param abstract.notitle.enabled. +If non-zero, in output of the abstract element on titlepages, +display of the abstract title is suppressed. +Because sometimes you really don't want or need that title +there... + + +Michael(tm) Smith: chunk-code.xsl; graphics.xslWhen we are chunking long descriptions for mediaobject instances +into separate HTML output files, and use.id.as.filename is +non-zero, if a mediaobject has an ID, use that ID as the basename +for the long-description file (otherwise, we generate an ID for it +and use that ID as the basename for the file). +The parallels the recent change made to cause IDs for legalnotice +instances to be used as basenames for legalnotice chunks. +Also, made some minor refinements to the recent changes for +legalnotice chunk handling. + + +Michael(tm) Smith: titlepage.xslAdded support to the HTML stylesheets for proper processing of +orgname as a child of author. + + +Michael(tm) Smith: chunk-code.xslWhen $generate.legalnotice.link is non-zero and +$use.id.as.filename is also non-zero, if a legalnotice has an ID, +then instead of assigning the "ln-<generatedID>" basename to the +output file for that legalnotice, just use its real ID as the +basename for the file -- as we do when chunking other elements +that have IDs. + + +David Cramer: xref.xslHandle alt text on xrefs to steps when the step doesn't have a title. + + +David Cramer: lists.xslAdded <p> element around term in variablelist when formatted as table to avoid misalignment of term and listitem in xhtml (non-quirks mode) output + + +David Cramer: qandaset.xslAdded <p> element around question and answer labels to avoid misalignment of label and listitem in xhtml (non-quirks mode) output + + +David Cramer: lists.xslAdded <p> element around callouts to avoid misalignment of callout and listitem in xhtml (non-quirks mode) output + + +Mauritz Jeanson: inline.xslMake citations numbered if bibliography.numbered != 0. + + +Robert Stayton: param.xweb; param.entAdd support for new profiling attributes audience and wordsize. + + +Robert Stayton: inline.xsl; xref.xslAdd support for xlink olinks. + + +Jirka Kosek: glossary.xslRules for normalizing glossary entries before they are sorted can be now different for each language. + + +Robert Stayton: chunk-common.xsl; chunk-code.xsl; manifest.xsl; chunk.xslRefactored the chunking modules to move all named templates to +chunk-common.xsl and all match templates to chunk-code.xsl, in +order to enable better chunk customization. +See the comments in chunk.xsl for more details. + + +Robert Stayton: lists.xslAdd anchor for xml:id for listitem in varlistentry. + + +Robert Stayton: refentry.xslAdd support for info/title in refsections for db5. + + +Jirka Kosek: param.xweb; biblio.xsl; docbook.xsl; param.ent; biblio-iso690.xslAdded support for formatting biblioentries according to ISO690 citation style. +New bibliography style can be turned on by setting parameter bibliography.style to "iso690" +The code was provided by Jana Dvorakova + + +Robert Stayton: inline.xsl; xref.xslAdd call to class.attribute to <a> output elements so they can +have a class value too. + + +Mauritz Jeanson: glossary.xslFixed bug #1644881: +* Added curly braces around all $language attribute values. +* Moved declaration of language variable to top level of stylesheet. +Tested with Xalan, Saxon, and xsltproc. + + + + +Manpages +The following changes have been made to the + manpages code + since the 1.72.0 release. + + +Michael(tm) Smith: param.xweb; docbook.xsl; param.entAdded the man.authors.section.enabled and +man.copyright.section.enabled parameters. Set those to zero when +you want to suppress display of the auto-generated AUTHORS and +COPYRIGHT sections. Closes request #1467806. Thanks to Daniel +Leidert. + + +Michael(tm) Smith: docbook.xslTook the test that the manpages stylesheet does to see if there +are any Refentry chilren in current doc, and made it +namespace-agnostic. Reason for that is because the test otherwise +won't work when it is copied over into the generated +profile-docbook.xsl stylesheet. + + +Michael(tm) Smith: MakefileAdded a manpages/profile-docbook.xsl file to enable single-pass +profiling for manpages output. + + +Michael(tm) Smith: info.xslOutput copyright and legalnotice in man-page output in whatever +place they are in in document order. Closes #1690539. Thanks to +Daniel Leidert for reporting. + + +Michael(tm) Smith: docbook.xslRestored support for single-pass namespace stripping to manpages +stylesheet. + + +Michael(tm) Smith: synop.xsl; block.xsl; info.xsl; inline.xsl; lists.xsl; endnotes.xsl; ut⋯Changed handling of bold and italic/underline output in manpages +output. Should be transparent to users, but... + +This touches handling of all bold and italic/underline output. The +exact change is that the mode="bold" and mode="italic" utility +templates were changed to named templates. (I think maybe I've +changed it back and forth from mode to named before, so this is +maybe re-reverting it yet again). + +Anyway, the reason for the change is that the templates are +sometimes call on dynamically node-sets, and using modes to format +those doesn't allow passing info about the current/real context +node from the source (not the node-set created by the stylesheet) +to that formatting stage. + +The named templates allow the context to be passed in as a +parameter, so that the bold/ital formatting template can use +context-aware condition checking. + +This was basically necessary in order to suppress bold formatting +in titles, which otherwise gets screwed up because of the numbnut +way that roff handles nested bold/ital. + +Closes #1674534). Much thanks to Daniel Leidert, whose in his +docbook-xsl bug-finding kung-fu has achieved Grand Master status. + + +Michael(tm) Smith: block.xslFixed handling of example instances by adding the example element +to the same template we use for processing figure. Closes +#1674538. Thanks to Daniel Leidert. + + +Michael(tm) Smith: utility.xslDon't include lang in manpages filename/pathname if lang=en (that +is, only generate lang-qualified file-/pathnames for non-English). + + +Michael(tm) Smith: endnotes.xslIn manpages output, emit warnings for notesources (footnote, etc.) +that have something other than para as a child. + +The numbered-with-hanging-indent formatting that's used for +rendering endnotes in the NOTES section of man pages places some +limits/assumptions on how the DocBook source is marked up; namely, +for notesources (footnote, annotation, etc.) that can contain +block-level children, if the they have a block-level child such as +a table or itemizedlist or orderedlist that is the first child of +a footnote, we have no way of rendering/indenting its content +properly in the endnotes list. + +Thus, the manpages stylesheet not emits a warning message for that +case, and suggests the "fix" (which is to wrap the table or +itemizedlist or whatever in a para that has some preferatory text. + + +Michael(tm) Smith: utility.xslAdded support to mixed-block template for handling tables in +mixed-blocks (e.g., as child of para) correctly. + + +Michael(tm) Smith: table.xsl; synop.xsl; block.xsl; info.xsl; lists.xsl; refentry.xsl; end⋯Reverted necessary escaping of backslash, dot, and dash +out of the well-intentioned (but it now appears, +misguided) "marker" mechanism (introduced in the 1.72.0 +release) -- which made use of alternative "marker" +characters as internal representations of those +characters, and then replaced them just prior to +serialization -- and back into what's basically the +system that was used prior to the 1.69.0 release; that +is, into a part of stylesheet code that gets executed +at the beginning of processing -- before any other roff +markup up is. This change obviates the need for the +marker system. It also requires a lot less RAM during +processing (for large files, the marker mechanism +ending up requiring gigabytes of memory). + +Closes bug #1661177. Thanks to Scott Smedley for +providing a test case (the fvwm man page) that exposed +the problem with the marker mechanism. + +Also moved the mechanism for converting non-breaking +spaces back into the same area of the stylesheet code. + + +Michael(tm) Smith: lists.xslFixed problem with incorrect formatting of nested variablelist. +Closes bug #1650931. Thanks to Daniel "Eagle Eye" Leidert. + + +Michael(tm) Smith: lists.xslMake sure that all listitems in itemizedlist and orderedlist are +preceded by a blank line. This fixes a regression that occurred +when instances of the TP macro that were use in a previous +versions of the list-handling code were switched to RS/RE (because +TP doesn't support nesting). TP automatically generates a blank +line, but RS doesn't. So I added a .sp before each .RS + + +Michael(tm) Smith: block.xsl; inline.xsl; param.xweb; docbook.xsl; links.xsl; param.entMade a number of changes related to elements with +out-of-line content: + +- Added handling for mediaobject & inlinemediaobject. + Each imagedata, audiodata, or videodata element + within a mediaobject or inline mediaobject is now + treated as a "notesource" and so handled in much the + same way as links and annotation/alt/footnotes. + + That means a numbered marker is generated inline to + mark the place in the main flow where the imagedata, + audiodata, or videodata element occurs, and a + corresponding numbered endnote for it is generated in + the endnotes list at the end of the man page; the + endnote contains the URL from the fileref attribute + of the imagedata, audiodata, or videodata element. + + For mediobject and inlinemediaobject instances that + have a textobject child, the textobject is displayed + within the main text flow. + +- Renamed several man.link.* params to man.endnotes.*, + to reflect that fact that the endnotes list now + contains more than just links. Also did similar + renaming for a number of stylesheet-internal vars. + +- Added support for xlink:href (along with existing + support for the legacy ulink element). + +- Cleaned up and streamlined the endnotes-handling + code. It's still messy and klunky and the basic + mechanism it uses is very inefficent for documents + that contain a lot of notesources, but at least it's + a bit better than it was. + + + + +Eclipse +The following changes have been made to the + eclipse code + since the 1.72.0 release. + + +Mauritz Jeanson: MakefileFixed bug #1715093: Makefile for creating profiled version of eclipse.xsl added. + + +David Cramer: eclipse.xslAdded normalize-space around to avoid leading whitespace from appearing in the output if there's extra leading whitespace (e.g. <title> Foo</title>) in the source + + + + +JavaHelp +The following changes have been made to the + javahelp code + since the 1.72.0 release. + + +Mauritz Jeanson: javahelp.xslImplemented FR #1230233 (sorted index in javahelp). + + +Mauritz Jeanson: javahelp.xslAdded normalize-space() around titles and index entries to work around whitespace problems. +Added support for glossary and bibliography in toc and map files. + + + + +Roundtrip +The following changes have been made to the + roundtrip code + since the 1.72.0 release. + + +Steve Ball: blocks2dbk.xsl; wordml2normalise.xsl; normalise2sections.xsl; sections2blocks.⋯new stylesheets for better word processor support and easier maintenance + + +Steve Ball: template-pages.xml; dbk2wp.xsl; sections-spec.xmlfixed bugs + + + + +Params +The following changes have been made to the + params code + since the 1.72.0 release. + + +Mauritz Jeanson: htmlhelp.button.back.xml; htmlhelp.button.forward.xml; htmlhelp.button.zo⋯Modified refpurpose text. + + +Mauritz Jeanson: htmlhelp.map.file.xml; htmlhelp.force.map.and.alias.xml; htmlhelp.alias.f⋯Fixed typos, made some small changes. + + +Mauritz Jeanson: javahelp.encoding.xmlMoved declaration and documentation of javahelp.encoding from javahelp.xsl to the +regular "parameter machinery". + + +Mauritz Jeanson: generate.id.attributes.xmlAdded refpurpose text. + + +Mauritz Jeanson: annotation.js.xml; annotation.graphic.open.xml; annotation.graphic.close.⋯Added better refpurpose texts. + + +Michael(tm) Smith: chunker.output.cdata-section-elements.xml; chunker.output.standalone.xm⋯Fixed some broken formatting in source files for chunker.* params, +as pointed out by Dave Pawson. + + +Michael(tm) Smith: label.from.part.xmlChanged handling of reference auto-labeling such that reference +(when it appears at the component level) is now affected by the +label.from.part param, just as preface, chapter, and appendix. + + +Mauritz Jeanson: callout.graphics.extension.xmlClarified that 'extension' refers to file names. + + +Michael(tm) Smith: abstract.notitle.enabled.xmlAdded new param abstract.notitle.enabled. +If non-zero, in output of the abstract element on titlepages, +display of the abstract title is suppressed. +Because sometimes you really don't want or need that title +there... + + +Michael(tm) Smith: man.string.subst.map.xmlUpdated manpages string-substitute map to reflect fact that +because of another recent change to suppress bold markup in .SH +output, we no longer need to add a workaround for the accidental +uppercasing of roff escapes that occurred previously. + + +Jirka Kosek: margin.note.float.type.xml; title.font.family.xml; table.frame.border.color.x⋯Improved parameter metadata + + +Robert Stayton: profile.wordsize.xml; profile.audience.xmlAdd support for profiling on new attributes audience and wordsize. + + +Robert Stayton: callout.graphics.number.limit.xml; callout.graphics.extension.xmlAdded SVG graphics for fo output. + + +Robert Stayton: callout.icon.size.xmlSet size of callout graphics. + + +Jirka Kosek: default.units.xml; chunker.output.method.xml; toc.list.type.xml; output.inden⋯Updated parameter metadata to the new format. + + +Jirka Kosek: man.output.quietly.xml; title.font.family.xml; footnote.sep.leader.properties⋯Added type annotations into parameter definition files. + + +Robert Stayton: section.container.element.xmlSupport spans in sections for certain processors. + + +Robert Stayton: component.titlepage.properties.xmlEmpty attribute set for top level component titlepage block. +Allows setting a span on title info. + + +Jirka Kosek: bibliography.style.xmlAdded link to WiKi page with description of special markup needed for ISO690 biblioentries + + +Robert Stayton: make.year.ranges.xmlClarify that multiple year elements are required. + + +Robert Stayton: id.warnings.xmlTurn off id.warnings by default. + + +Jirka Kosek: bibliography.style.xmlAdded support for formatting biblioentries according to ISO690 citation style. +New bibliography style can be turned on by setting parameter bibliography.style to "iso690" +The code was provided by Jana Dvorakova + + +Robert Stayton: header.table.properties.xml; footer.table.properties.xmlSupport adding table properties to header and footer tables. + + + + +Highlighting +The following changes have been made to the + highlighting code + since the 1.72.0 release. + + +Jirka Kosek: c-hl.xml; xslthl-config.xmlAdded support for C language. Provided by Bruno Guegan. + + + + +Profiling +The following changes have been made to the + profiling code + since the 1.72.0 release. + + +Robert Stayton: profile-mode.xslAdd support for new profiling attributes audience and wordsize. + + + + +Lib +The following changes have been made to the + lib code + since the 1.72.0 release. + + +Michael(tm) Smith: lib.xwebChanged name of prepend-pad template to pad-string and twheeked so +it can do both right/left padding. + + + + +Tools +The following changes have been made to the + tools code + since the 1.72.0 release. + + +Michael(tm) Smith: bin; bin/docbook-xsl-updateDid some cleanup to the install.sh source and added a +docbook-xsl-update script to the docbook-xsl distro, the purpose +of which is to facilitate easy sync-up to the latest docbook-xsl +snapshot (by means of rsync). + + + + +XSL-Saxon +The following changes have been made to the + xsl-saxon code + since the 1.72.0 release. + + +Mauritz Jeanson: xalan27/src/com/nwalsh/xalan/Verbatim.java; xalan27/src/com/nwalsh/xalan/⋯Added modifications so that the new callout.icon.size parameter is taken into account. This +parameter is used for FO output (where SVG now is the default graphics format for callouts). + + +Mauritz Jeanson: saxon65/src/com/nwalsh/saxon/FormatCallout.java; xalan27/src/com/nwalsh/x⋯Added code for generating id attributes on callouts in HTML and FO output. +These patches enable cross-references to callouts placed by area coordinates. +It works for graphic, unicode and text callouts. +Part of fix for bug #1675513 (xref to area broken). + + +Michael(tm) Smith: saxon65/src/com/nwalsh/saxon/Website.java; xalan27/src/com/nwalsh/xalan⋯Copied over Website XSL Java extensions. + + + + +XSL-Xalan +The following changes have been made to the + xsl-xalan code + since the 1.72.0 release. + + +Michael(tm) Smith: Makefile; xalan2Turned off xalan2.jar build. This removes DocBook XSL +Java extensions support for versions of Xalan prior to +Xalan 2.7. If you are currently using the extensions +with an earlier version of Xalan, you need to upgrade +to Xalan 2.7. + + +Mauritz Jeanson: xalan27/src/com/nwalsh/xalan/Verbatim.java; xalan27/src/com/nwalsh/xalan/⋯Added modifications so that the new callout.icon.size parameter is taken into account. This +parameter is used for FO output (where SVG now is the default graphics format for callouts). + + +Mauritz Jeanson: saxon65/src/com/nwalsh/saxon/FormatCallout.java; xalan27/src/com/nwalsh/x⋯Added code for generating id attributes on callouts in HTML and FO output. +These patches enable cross-references to callouts placed by area coordinates. +It works for graphic, unicode and text callouts. +Part of fix for bug #1675513 (xref to area broken). + + +Michael(tm) Smith: saxon65/src/com/nwalsh/saxon/Website.java; xalan27/src/com/nwalsh/xalan⋯Copied over Website XSL Java extensions. + + + + + + +Release: 1.72.0 +This release includes important bug fixes and adds the following +significant feature changes: + + + Automatic sorting of glossary entries + + The HTML and FO stylesheets now support automatic sorting + of glossary entries. To enable glossary sorting, set + the value of the glossary.sort parameter + to 1 (by default, it’s value is + 0). When you enable glossary sorting, + glossentry elements within a glossary, + glossdiv, or glosslist are sorted on the + glossterm, using the current language setting. If you + don’t enable glossary sorting, then the order of + glossentry elements is left “as is†— that is, they + are not sorted but are instead just displayed in document + order. + + + + WordML renamed to Roundtrip, OpenOffice support added + + Stylesheets for “roundtrip†conversion between documents in + OpenOffice format (ODF) and DocBook XML have been added to the set + of stylesheets that formerly had the collective title + WordML, and that set of stylesheets has + been renamed to Roundtrip to better + reflect the actual scope and purpose of its contents. + So the DocBook XSL Stylesheets now support roundtrip + conversion (with certain limitations) of WordML, OpenOffice, and + Apple Pages documents to and from DocBook XML. + + + + Including QandASet questions in TOCs + + The HTML stylesheet now provides support for including + QandASet questions in the document TOC. To + enable display of questions in the document TOC, set + the value of the qanda.in.toc to + 1 (by default, it’s 0). When you + enable qanda.in.toc, then the generated + table of contents for a document will include + qandaset titles, qandadiv titles, and + question elements. The default value of zero + excludes them from the TOC. + + The qanda.in.toc parameter does + not affect any tables of contents that may be generated + within a qandaset or + qandadiv (only in the document TOC). + + + + + + Language identifier in man-page filenames and pathnames + + Added new parameter man.output.lang.in.name.enabled, which controls whether + a language identifier is included in man-page filenames and + pathnames. It works like this: + + If the value of man.output.lang.in.name.enabled is non-zero, + man-page files are output with a language identifier included in + their filenames or pathnames as follows: + + + if + man.output.subdirs.enabled is non-zero, + each file is output to, e.g., a + /$lang/man8/foo.8 pathname + + if + man.output.subdirs.enabled is zero, + each file is output with a foo.$lang.8 + filename + + + + + + index.page.number.properties property set + + For FO output, use the + index.page.number.properties to control + formatting of page numbers in index output — to (for + example) to display page numbers in index output in a + different color (to indicate that they are links). + + + + Crop marks in output from Antenna House XSL Formatter + + Support has been added for generating crop marks in + print/PDF output generated using Antenna House XSL Formatter + + + + More string-substitution hooks in manpages output + + The man.string.subst.map.local.pre + and man.string.subst.map.local.post + parameters have been added to enable easier control over + custom string substitutions. + + + + Moved verbatim properties to attribute-set + + The hardcoded properties used in verbatim elements (literallayout, + programlisting, screen) were moved to the verbatim.properties + attribute-set so they can be more easily customized. + + + + enhanced simple.xlink template + + Now the simple.xlink template in inline.xsl works with + cross reference elements xref and link as well. Also, more elements + call simple.xlink, which enables DB5 xlink functionality. + + + + + DocBook 5 compatibility + + Stylesheets now consistently support DocBook 5 attributes + (such as xml:id). Also, DocBook 5 info elements are now checked + along with other *info elements, and the use of name() function + was replaced by local-name() so it also matches on DocBook 5 elements. + These changes enable reusing the stylesheets with DocBook 5 + documents with minimal fixup. + + + + + HTML class attributes now handled in class.attribute mode + + The HTML class attributes were formerly hardcoded to the + element name. Now the class attribute is generated by applying + templates in class.attribute mode so class attribute names + can be customized. The default is still the element name. + + + + arabic-indic numbering enabled in autolabels + + Numbering of chapter, sections, and pages can now use + arabic-indic numbering when number format is set to 'arabicindic' or + to ١. + + + +The following is a detailed list of changes (not +including bug fixes) that have been made since the 1.71.1 +release. + + +Common +The following changes have been made to the + common code + since the 1.71.1 release. + + +Add support for arabicindic numbering to autolabel.format template.M: /trunk/xsl/common/labels.xsl - Robert Stayton + + +Finish support for @xml:id everywhere @id is used.M: /trunk/xsl/common/gentext.xsl; M: /trunk/xsl/common/titles.xsl - Robert Stayton + + +replace name() with local-name() in most cases.M: /trunk/xsl/common/l10n.xsl; M: /trunk/xsl/common/olink.xsl; M: /trunk/xsl/common/subtitles.xsl; M: /trunk/xsl/common/labels.xsl; M: /trunk/xsl/common/titles.xsl; M: /trunk/xsl/common/common.xsl - Robert Stayton + + +Add support for info.M: /trunk/xsl/common/subtitles.xsl; M: /trunk/xsl/common/labels.xsl; M: /trunk/xsl/common/titles.xsl; M: /trunk/xsl/common/common.xsl; M: /trunk/xsl/common/targets.xsl - Robert Stayton + + +Add utility template tabstyle to return the tabstyle from +any table element.M: /trunk/xsl/common/table.xsl - Robert Stayton + + + + + +FO +The following changes have been made to the + fo code + since the 1.71.1 release. + + +Add support for sorting glossary entriesM: /trunk/xsl/fo/param.xweb; M: /trunk/xsl/fo/param.ent; M: /trunk/xsl/fo/glossary.xsl - Robert Stayton + + +Add table.row.properties template to customize table rows.M: /trunk/xsl/fo/table.xsl - Robert Stayton + + +Moved all properties to attribute-sets so can be customized more easily.M: /trunk/xsl/fo/verbatim.xsl - Robert Stayton + + +Add index.page.number.properties attribute-set to format page numbers.M: /trunk/xsl/fo/autoidx.xsl - Robert Stayton + + +xref now supports xlink:href, using simple.xlink template.M: /trunk/xsl/fo/xref.xsl - Robert Stayton + + +Rewrote simple.xlink, and call it with all charseq templates.M: /trunk/xsl/fo/inline.xsl - Robert Stayton + + +Add simple.xlink processing to term and member elements.M: /trunk/xsl/fo/lists.xsl - Robert Stayton + + +Add support for crop marks in Antenna House.M: /trunk/xsl/fo/axf.xsl; M: /trunk/xsl/fo/pagesetup.xsl - Robert Stayton + + + + + +HTML +The following changes have been made to the + html code + since the 1.71.1 release. + + +Add support for sorting glossary entriesM: /trunk/xsl/html/glossary.xsl - Robert Stayton + + +Add support for qanda.in.toc to add qandaentry questions to document TOC.M: /trunk/xsl/html/autotoc.xsl; M: /trunk/xsl/html/param.xweb; M: /trunk/xsl/html/param.ent - Robert Stayton + + +add simple.xlink support to variablelist term and simplelist member.M: /trunk/xsl/html/lists.xsl - Robert Stayton + + +*.propagates.style now handled in class.attribute mode.M: /trunk/xsl/html/inline.xsl; M: /trunk/xsl/html/lists.xsl; M: /trunk/xsl/html/table.xsl; M: /trunk/xsl/html/block.xsl; M: /trunk/xsl/html/footnote.xsl - Robert Stayton + + +add class parameter to class.attribute mode to set default class.M: /trunk/xsl/html/html.xsl - Robert Stayton + + +Convert all class attributes to use the class.attribute mode +so class names can be customized more easily.M: /trunk/xsl/html/titlepage.xsl; M: /trunk/xsl/html/chunk-code.xsl; M: /trunk/xsl/html/division.xsl; M: /trunk/xsl/html/sections.xsl; M: /trunk/xsl/html/math.xsl; M: /trunk/xsl/html/block.xsl; M: /trunk/xsl/html/info.xsl; M: /trunk/xsl/html/footnote.xsl; M: /trunk/xsl/html/lists.xsl; M: /trunk/xsl/html/admon.xsl; M: /trunk/xsl/html/refentry.xsl; M: /trunk/xsl/html/qandaset.xsl; M: /trunk/xsl/html/graphics.xsl; M: /trunk/xsl/html/biblio.xsl; M: /trunk/xsl/html/task.xsl; M: /trunk/xsl/html/component.xsl; M: /trunk/xsl/html/glossary.xsl; M: /trunk/xsl/html/callout.xsl; M: /trunk/xsl/html/index.xsl; M: /trunk/xsl/html/synop.xsl; M: /trunk/xsl/html/verbatim.xsl; M: /trunk/xsl/html/ebnf.xsl - Robert Stayton + + +Add class.attribute mode to generate class attributes.M: /trunk/xsl/html/html.xsl - Robert Stayton + + +Added simple.xlink to most remaining inlines. +Changed class attributes to applying class.attributes mode.M: /trunk/xsl/html/inline.xsl - Robert Stayton + + +Changed xref template to use simple.xlink tempalte.M: /trunk/xsl/html/xref.xsl - Robert Stayton + + +Improve generate.html.title to work with link targets too.M: /trunk/xsl/html/html.xsl - Robert Stayton + + +Improved simple.xlink to support link and xref.M: /trunk/xsl/html/inline.xsl - Robert Stayton + + +Use new link.title.attribute now.M: /trunk/xsl/html/xref.xsl - Robert Stayton + + +Rewrote simple.xlink to handle linkend also. +Better computation of title attribute on link too.M: /trunk/xsl/html/inline.xsl - Robert Stayton + + +Handle Xalan quirk as special case.M: /trunk/xsl/html/db5strip.xsl - Robert Stayton + + +Add support for info.M: /trunk/xsl/html/admon.xsl; M: /trunk/xsl/html/autotoc.xsl; M: /trunk/xsl/html/lists.xsl; M: /trunk/xsl/html/refentry.xsl; M: /trunk/xsl/html/biblio.xsl; M: /trunk/xsl/html/qandaset.xsl; M: /trunk/xsl/html/component.xsl; M: /trunk/xsl/html/glossary.xsl; M: /trunk/xsl/html/division.xsl; M: /trunk/xsl/html/index.xsl; M: /trunk/xsl/html/sections.xsl; M: /trunk/xsl/html/table.xsl; M: /trunk/xsl/html/block.xsl - Robert Stayton + + +Fixed imagemaps so they work properly going from calspair coords +to HTML area coords.M: /trunk/xsl/html/graphics.xsl - Robert Stayton + + + + + +Manpages +The following changes have been made to the + manpages code + since the 1.71.1 release. + + +Added doc for man.output.lang.in.name.enabled parameter. This +checkin completes support for writing file/pathnames for man-pages +with $lang include in the names. Closes #1585967. knightly +accolades to Daniel Leidert for providing the feature request.M: /trunk/xsl/manpages/param.xweb; M: /trunk/xsl/manpages/param.ent - Michael(tm) Smith + + +Added new param man.output.lang.in.name.enabled, which +controls whether $LANG value is included in manpages +filenames and pathnames. It works like this: + +If the value of man.output.lang.in.name.enabled is non-zero, +man-page files are output with the $lang value included in +their filenames or pathnames as follows; + +- if man.output.subdirs.enabled is non-zero, each file is + output to, e.g., a /$lang/man8/foo.8 pathname + +- if man.output.subdirs.enabled is zero, each file is output + with a foo.$lang.8 filenameM: /trunk/xsl/manpages/docbook.xsl; M: /trunk/xsl/manpages/other.xsl; M: /trunk/xsl/manpages/utility.xsl - Michael(tm) Smith + + +Use "\e" instead of "\\" for backslash output, because the +groff docs say that's the correct thing to do; also because +testing (thanks, Paul Dubois) shows that "\\" doesn't always +work as expected; for example, "\\" within a table seems to +mess things up.M: /trunk/xsl/manpages/charmap.groff.xsl - Michael(tm) Smith + + +Added the man.string.subst.map.local.pre and +man.string.subst.map.local.post parameters. Those parameters +enable local additions and changes to string-substitution mappings +without the need to change the value of man.string.subst.map +parameter (which is for standard system mappings). Closes +#1456738. Thanks to Sam Steingold for constructing a true +stylesheet torture test (the clisp docs) that exposed the need for +these params.M: /trunk/xsl/manpages/param.xweb; M: /trunk/xsl/manpages/param.ent; M: /trunk/xsl/manpages/other.xsl - Michael(tm) Smith + + +Added the Markup element to the list of elements that get output +in bold. Thanks to Eric S. Raymond.M: /trunk/xsl/manpages/inline.xsl - Michael(tm) Smith + + +Replaced all dots in roff requests with U+2302 ("house" +character), and added escaping in output for all instances of dot +that are not in roff requests. This fixes the problem case where a +string beginning with a dot (for example, the string ".bashrc") +might occur at the beginning of a line in output, in which case +would mistakenly get interpreted as a roff request. Thanks to Eric +S. Raymond for pushing to fix this.M: /trunk/xsl/manpages/table.xsl; M: /trunk/xsl/manpages/synop.xsl; M: /trunk/xsl/manpages/block.xsl; M: /trunk/xsl/manpages/info.xsl; M: /trunk/xsl/manpages/lists.xsl; M: /trunk/xsl/manpages/refentry.xsl; M: /trunk/xsl/manpages/links.xsl; M: /trunk/xsl/manpages/other.xsl; M: /trunk/xsl/manpages/utility.xsl - Michael(tm) Smith + + +Made change to ensure that list content nested in +itemizedlist and orderedlist instances is properly indented. This +is a switch from using .TP to format those lists to using .RS/.RE +to format them instead (because .TP does not allow nesting). Closes bug #1602616. +Thanks to Daniel Leidert.M: /trunk/xsl/manpages/lists.xsl - Michael(tm) Smith + + + + + +Params +The following changes have been made to the + params code + since the 1.71.1 release. + + +Added doc for man.output.lang.in.name.enabled parameter. This +checkin completes support for writing file/pathnames for man-pages +with $lang include in the names. Closes #1585967. knightly +accolades to Daniel Leidert for providing the feature request.A: /trunk/xsl/params/man.output.lang.in.name.enabled.xml - Michael(tm) Smith + + +Added new param man.output.lang.in.name.enabled, which +controls whether $LANG value is included in manpages +filenames and pathnames. It works like this: + +If the value of man.output.lang.in.name.enabled is non-zero, +man-page files are output with the $lang value included in +their filenames or pathnames as follows; + +- if man.output.subdirs.enabled is non-zero, each file is + output to, e.g., a /$lang/man8/foo.8 pathname + +- if man.output.subdirs.enabled is zero, each file is output + with a foo.$lang.8 filenameM: /trunk/xsl/manpages/docbook.xsl; M: /trunk/xsl/manpages/other.xsl; M: /trunk/xsl/manpages/utility.xsl - Michael(tm) Smith + + +Added the man.string.subst.map.local.pre and +man.string.subst.map.local.post parameters. Those parameters +enable local additions and changes to string-substitution mappings +without the need to change the value of man.string.subst.map +parameter (which is for standard system mappings). Closes +#1456738. Thanks to Sam Steingold for constructing a true +stylesheet torture test (the clisp docs) that exposed the need for +these params.A: /trunk/xsl/params/man.string.subst.map.local.post.xml; A: /trunk/xsl/params/man.string.subst.map.local.pre.xml; M: /trunk/xsl/params/man.string.subst.map.xml - Michael(tm) Smith + + +Add index.page.number.properties by default.M: /trunk/xsl/params/xep.index.item.properties.xml - Robert Stayton + + +Added index.page.number.properties to allow customizations of page numbers in indexes.A: /trunk/xsl/params/index.page.number.properties.xml - Robert Stayton + + +Move show-destination="replace" property from template to attribute-set +so it can be customized.M: /trunk/xsl/params/olink.properties.xml - Robert Stayton + + +Add support for sorting glossary entriesA: /trunk/xsl/params/glossary.sort.xml - Robert Stayton + + +Add option to include qanda in tables of contents.A: /trunk/xsl/params/qanda.in.toc.xml - Robert Stayton + + +Moved all properties to attribute-sets so can be customized more easily.M: /trunk/xsl/params/verbatim.properties.xml - Robert Stayton + + + + + +Template +The following changes have been made to the + template code + since the 1.71.1 release. + + +Added workaround for Xalan bug: use for-each and copy instead of copy-of (#1604770).M: /trunk/xsl/template/titlepage.xsl - Mauritz Jeanson + + + + + +Roundtrip +The following changes have been made to the + roundtrip code + since the 1.71.1 release. + + +rename to roundtrip, add OpenOffice supportM: /trunk/xsl/roundtrip/docbook-pages.xsl; M: /trunk/xsl/roundtrip/specifications.xml; A: /trunk/xsl/roundtrip/dbk2ooo.xsl; M: /trunk/xsl/roundtrip/docbook.xsl; A: /trunk/xsl/roundtrip/dbk2pages.xsl; M: /trunk/xsl/roundtrip/template.xml; A: /trunk/xsl/roundtrip/dbk2wordml.xsl; A: /trunk/xsl/roundtrip/dbk2wp.xsl; M: /trunk/xsl/roundtrip/template.dot; M: /trunk/xsl/roundtrip/wordml-final.xsl - Steve Ball + + + + + + +Release: 1.71.1 +This is a minor update to the 1.71.0 release. Along with a +number of bug fixes, it includes two feature changes: + + + + Added support for profiling based on xml:lang and status attributes. + + + Added initial support in manpages output for + footnote, annotation, and alt + instances. Basically, they all now get handled the same way + ulink instances are. They are treated as a class as + "note sources": A numbered marker is generated at the place in the + main text flow where they occur, then their contents are displayed + in an endnotes section at the end of the man page. + + + + + +Common +The following changes have been made to the + common code + since the 1.71.1 release. + + +For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.D: /trunk/xsl/common/autoidx-ng.xsl - Jirka Kosek + + +Add support for Xalan generating a root xml:base like saxon.M: /trunk/xsl/common/stripns.xsl - Robert Stayton + + + + + +FO +The following changes have been made to the + fo code + since the 1.71.1 release. + + +For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.M: /trunk/xsl/fo/autoidx-ng.xsl; M: /trunk/xsl/fo/autoidx-kosek.xsl - Jirka Kosek + + +Add support for Xalan to add root node xml:base for db5 docs.M: /trunk/xsl/fo/docbook.xsl - Robert Stayton + + +Added support for profiling based on xml:lang and status attributes.M: /trunk/xsl/fo/param.xweb; M: /trunk/xsl/fo/param.ent - Jirka Kosek + + + + + +HTML +The following changes have been made to the + html code + since the 1.71.1 release. + + +For backward compatability autoidx-ng.xsl is invoking "kosek" indexing method again.M: /trunk/xsl/html/autoidx-ng.xsl; M: /trunk/xsl/html/autoidx-kosek.xsl - Jirka Kosek + + +Add support for Xalan to add root node xml:base for db5 docs.M: /trunk/xsl/html/chunk-code.xsl; M: /trunk/xsl/html/docbook.xsl - Robert Stayton + + +Added support for profiling based on xml:lang and status attributes.M: /trunk/xsl/html/param.xweb; M: /trunk/xsl/html/param.ent - Jirka Kosek + + +Made changes in namespace declarations to prevent xmllint's +canonicalizer from treating them as relative namespace URIs. + + - Changed xmlns:k="java:com.isogen.saxoni18n.Saxoni18nService" + to xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService"; + Saxon accepts either form + (see http://www.saxonica.com/documentation/extensibility/functions.html); + to Saxon, "the part of the URI before the final '/' is immaterial". + + - Changed, e.g. xmlns:xverb="com.nwalsh.xalan.Verbatim" to + xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim"; Xalan accepts + either form + (see http://xml.apache.org/xalan-j/extensions.html#java-namespace-declare); + just as Saxon does, it will "simply use the string to the + right of the rightmost forward slash as the Java class name". + + - Changed xmlns:xalanredirect="org.apache.xalan.xslt.extensions.Redirect" + to xmlns:redirect="http://xml.apache.org/xalan/redirect", and + adjusted associated code to make the current Xalan redirect spec. + (see http://xml.apache.org/xalan-j/apidocs/org/apache/xalan/lib/Redirect.html)M: /trunk/xsl/html/oldchunker.xsl; M: /trunk/xsl/html/chunker.xsl; M: /trunk/xsl/html/graphics.xsl; M: /trunk/xsl/html/callout.xsl; M: /trunk/xsl/html/autoidx-kimber.xsl; M: /trunk/xsl/html/autoidx-kosek.xsl; M: /trunk/xsl/html/table.xsl; M: /trunk/xsl/html/verbatim.xsl - Michael(tm) Smith + + +Added the html.append and chunk.append parameters. By default, the +value of both is empty; but the internal DocBook XSL stylesheets +build sets their value to "<xsl:text>&#x0a;</xsl:text>", in order +to ensure that all files in the docbook-xsl-doc package end in a +newline character. (Because diff and some other tools may emit +error messages and/or not behave as expected when processing +files that are not newline-terminated.)M: /trunk/xsl/html/chunk-common.xsl; M: /trunk/xsl/html/titlepage.xsl; M: /trunk/xsl/html/param.xweb; M: /trunk/xsl/html/docbook.xsl; M: /trunk/xsl/html/graphics.xsl; M: /trunk/xsl/html/param.ent - Michael(tm) Smith + + + + + +Highlighting +The following changes have been made to the + highlighting code + since the 1.71.1 release. + + +Added license informationM: /trunk/xsl/highlighting/delphi-hl.xml; M: /trunk/xsl/highlighting/myxml-hl.xml; M: /trunk/xsl/highlighting/php-hl.xml; M: /trunk/xsl/highlighting/m2-hl.xml; M: /trunk/xsl/highlighting/ini-hl.xml; M: /trunk/xsl/highlighting/xslthl-config.xml; M: /trunk/xsl/highlighting/java-hl.xml - Jirka Kosek + + + + + +Manpages +The following changes have been made to the + manpages code + since the 1.71.1 release. + + +Added initial support in manpages output for footnote, annotation, +and alt instances. Basically, they all now get handled the same +way ulink instances are. They are treated as a class as "note +sources": A numbered marker is generated at the place in the main +text flow where they occur, then their contents are displayed in +an endnotes section at the end of the man page (currently titled +REFERENCES, for English output, but will be changed to NOTES). + +This support is not yet complete. It works for most "normal" +cases, but probably mishandles a good number of cases. More +testing will be needed to expose the problems. It may well also +introduce some bugs and regressions in other areas, including +basic paragraph handling, handling of "mixed block" content, +handling of other indented content, and handling of authorblurb +and personblurb in the AUTHORS section.M: /trunk/xsl/manpages/table.xsl; M: /trunk/xsl/manpages/block.xsl; M: /trunk/xsl/manpages/docbook.xsl; M: /trunk/xsl/manpages/links.xsl; M: /trunk/xsl/manpages/other.xsl; M: /trunk/xsl/manpages/utility.xsl - Michael(tm) Smith + + + + + +Params +The following changes have been made to the + params code + since the 1.71.1 release. + + +Added support for profiling based on xml:lang and status attributes.A: /trunk/xsl/params/profile.status.xml - Jirka Kosek + + +Added the html.append and chunk.append parameters. By default, the +value of both is empty; but the internal DocBook XSL stylesheets +build sets their value to "<xsl:text>&#x0a;</xsl:text>", in order +to ensure that all files in the docbook-xsl-doc package end in a +newline character. (Because diff and some other tools may emit +error messages and/or not behave as expected when processing +files that are not newline-terminated.)A: /trunk/xsl/params/html.append.xml; A: /trunk/xsl/params/chunk.append.xml - Michael(tm) Smith + + + + + +Profiling +The following changes have been made to the + profiling code + since the 1.71.1 release. + + +Added support for profiling based on xml:lang and status attributes.M: /trunk/xsl/profiling/profile.xsl; M: /trunk/xsl/profiling/profile-mode.xsl - Jirka Kosek + + + + + + + +Release: 1.71.0 +This is mainly a bug fix release, but it also includes two +significant feature changes: + + + Highlighting support added + + The stylesheets now include support for source-code + highlighting in output of programlisting instances (controlled + through the highlight.source + parameter). The Java-based implementation requires Saxon and + makes use of MichalMolhanec’s XSLTHL. More details are available at Jirka Kosek’s + website:
The support is currently limited to highlighting + of XML, Java, PHP, Delphi, Modula-2 sources, and INI + files.
+
+
+ + Changes to autoindexing + + The templates that handle alternative indexing methods + were reworked to avoid errors produced by certain processors not + being able to tolerate the presence of unused functions. With + this release, none of the code for the 'kimber' or 'kosek' + methods is included in the default stylesheets. In order to use + one of those methods, your customization layer must import one + of the optional stylesheet modules: + + + + html/autoidx-kosek.xsl + + + html/autoidx-kimber.xsl + + + fo/autoidx-kosek.xsl + + + fo/autoidx-kimber.xsl + + + See the index.method parameter + reference page for more information. + + Two other changes to note: + + + The default indexing method now can handle accented + characters in latin-based alphabets, not just English. This + means accented latin letters will group and sort with their + unaccented counterpart. + + + The default value for the + index.method parameter was changed + from 'english' to 'basic' because now the default method can + handle latin-based alphabets, not just English. + + + + + +
+The following is a list of changes that have +been made since the 1.70.1 release.
+ + +Common +The following changes have been made to the + common code + since the 1.70.1 release. + + + +Added reference.autolabel parameter for controlling labels on +reference output.M: /trunk/xsl/common/labels.xsl - Michael(tm) Smith + + +Support rows that are *completely* overlapped by the preceding rowM: /trunk/xsl/common/table.xsl - Norman Walsh + + +New modules for supporting indexing extensions.A: /trunk/xsl/common/autoidx-kimber.xsl; A: /trunk/xsl/common/autoidx-kosek.xsl - Robert Stayton + + +Support startinglinenumber on orderedlistM: /trunk/xsl/common/common.xsl - Norman Walsh + + + + + +Extensions +The following changes have been made to the + extensions code + since the 1.70.1 release. + + +Completely reworked extensions build system; now uses NetBeans and antD: /trunk/xsl/extensions/xalan27/.cvsignore; A: /trunk/xsl/extensions/saxon65/nbproject; A: /trunk/xsl/extensions/saxon65/nbproject/project.properties; D: /trunk/xsl/extensions/prj.el; A: /trunk/xsl/extensions/saxon65/src; A: /trunk/xsl/extensions/xalan2/src/com; M: /trunk/xsl/extensions/xalan2/src/com/nwalsh/xalan/Text.java; A: /trunk/xsl/extensions/saxon65/nbproject/project.xml; D: /trunk/xsl/extensions/build.xml; A: /trunk/xsl/extensions/saxon65/build.xml; A: /trunk/xsl/extensions/xalan2/nbproject/genfiles.properties; A: /trunk/xsl/extensions/saxon65; D: /trunk/xsl/extensions/xalan2/com; M: /trunk/xsl/extensions/xalan2/src/com/nwalsh/xalan/Func.java; A: /trunk/xsl/extensions/xalan2/test; A: /trunk/xsl/extensions/saxon65/src/com; A: /trunk/xsl/extensions/xalan2/nbproject/build-impl.xml; A: /trunk/xsl/extensions/xalan2/nbproject; A: /trunk/xsl/extensions/xalan2/src; A: /trunk/xsl/extensions/xalan2/nbproject/project.properties; D: /trunk/xsl/extensions/.cvsignore; M: /trunk/xsl/extensions/Makefile; D: /trunk/xsl/extensions/saxon8; A: /trunk/xsl/extensions/saxon65/nbproject/genfiles.properties; A: /trunk/xsl/extensions/xalan2/nbproject/project.xml; A: /trunk/xsl/extensions/saxon65/test; M: /trunk/xsl/extensions/xalan2/src/com/nwalsh/xalan/Verbatim.java; A: /trunk/xsl/extensions/xalan2/build.xml; M: /trunk/xsl/extensions/xalan2; D: /trunk/xsl/extensions/saxon643; A: /trunk/xsl/extensions/saxon65/nbproject/build-impl.xml - Norman Walsh + + + + + +FO +The following changes have been made to the + fo code + since the 1.70.1 release. + + + +xsl:sort lang attribute now uses two-char substring of lang attribute.M: /trunk/xsl/fo/autoidx-kimber.xsl - Robert Stayton + + + +Support titlecase "Java", "Perl", and "IDL" as values for the +language attribute on classsynopsis, etc. (instead of just +lowercase "java", "perl", and "idl"). Also support "c++" and "C++" +(instead of just "cpp"). + +Affects HTML, FO, and manpages output. Closes bug 1552332. Thanks +to "Brian A. Vanderburg II".M: /trunk/xsl/fo/synop.xsl - Michael(tm) Smith + + + +Added support for the reference.autolabel param in (X)HTML and FO +output.M: /trunk/xsl/fo/param.xweb; M: /trunk/xsl/fo/param.ent - Michael(tm) Smith + + + +Support rows that are *completely* overlapped by the preceding rowM: /trunk/xsl/fo/table.xsl - Norman Walsh + + + +Rearranged templates for the 3 indexing methods +and changed method named 'english' to 'basic'.M: /trunk/xsl/fo/autoidx.xsl - Robert Stayton + + +New modules for supporting indexing extensions.A: /trunk/xsl/fo/autoidx-kimber.xsl; A: /trunk/xsl/fo/autoidx-kosek.xsl - Robert Stayton + + + +Turn off blank-body for fop1.extensions too since fop 0.92 +does not support it either.M: /trunk/xsl/fo/pagesetup.xsl - Robert Stayton + + + +Add Xalan variant to test for exslt:node-set function. +Xalan can use function named node-set(), but doesn't +recognize it using function-available().M: /trunk/xsl/fo/autoidx.xsl - Robert Stayton + + + +Added support to FO stylesheets for handling instances of Org +where it occurs outside of *info content. In HTML stylesheets, +moved handling of Org out of info.xsl and into inline.xsl. In both +FO and HTML stylesheets, added support for correctly processing +Affiliation and Jobtitle.M: /trunk/xsl/fo/inline.xsl - Michael(tm) Smith + + +Don't output punctuation between Refname and Refpurpose if +Refpurpose is empty. Also corrected handling of Refsect2/title +instances, and removed some debugging stuff that was generated in +manpages output to mark the ends of sections.M: /trunk/xsl/fo/refentry.xsl - Michael(tm) Smith + + +Added new email.delimiters.enabled param. If non-zero (the +default), delimiters are generated around e-mail addresses (output +of the email element). If zero, the delimiters are suppressed.M: /trunk/xsl/fo/inline.xsl; M: /trunk/xsl/fo/param.xweb; M: /trunk/xsl/fo/param.ent - Michael(tm) Smith + + + +Initial support of syntax highlighting of programlistings.M: /trunk/xsl/fo/param.ent; M: /trunk/xsl/fo/param.xweb; A: /trunk/xsl/fo/highlight.xsl; M: /trunk/xsl/fo/verbatim.xsl - Jirka Kosek + + +Chapter after preface should restart numbering of pages.M: /trunk/xsl/fo/pagesetup.xsl - Jirka Kosek + + + + + +HTML +The following changes have been made to the + html code + since the 1.70.1 release. + + + +xsl:sort lang attribute now uses two-char substring of lang attribute.M: /trunk/xsl/html/autoidx-kimber.xsl - Robert Stayton + + +Support titlecase "Java", "Perl", and "IDL" as values for the +language attribute on classsynopsis, etc. (instead of just +lowercase "java", "perl", and "idl"). Also support "c++" and "C++" +(instead of just "cpp"). + +Affects HTML, FO, and manpages output. Closes bug 1552332. Thanks +to "Brian A. Vanderburg II".M: /trunk/xsl/html/synop.xsl - Michael(tm) Smith + + + +Added support for the reference.autolabel param in (X)HTML and FO +output.M: /trunk/xsl/html/param.xweb; M: /trunk/xsl/html/param.ent - Michael(tm) Smith + + +Support rows that are *completely* overlapped by the preceding rowM: /trunk/xsl/html/table.xsl - Norman Walsh + + + +Rearranged templates for the 3 indexing methods +and changed method named 'english' to 'basic'.M: /trunk/xsl/html/autoidx.xsl - Robert Stayton + + +New modules for supporting indexing extensions.A: /trunk/xsl/html/autoidx-kimber.xsl; A: /trunk/xsl/html/autoidx-kosek.xsl - Robert Stayton + + + +Added several new HTML parameters for controlling appearance of +content on HTML title pages: + +contrib.inline.enabled: + If non-zero (the default), output of the contrib element is + displayed as inline content rather than as block content. + +othercredit.like.author.enabled: + If non-zero, output of the othercredit element on titlepages is + displayed in the same style as author and editor output. If zero + (the default), othercredit output is displayed using a style + different than that of author and editor. + +blurb.on.titlepage.enabled: + If non-zero, output from authorblurb and personblurb elements is + displayed on title pages. If zero (the default), output from + those elements is suppressed on title pages (unless you are + using a titlepage customization that causes them to be included). + +editedby.enabled + If non-zero (the default), a localized Edited by heading is + displayed above editor names in output of the editor element.M: /trunk/xsl/html/titlepage.xsl; M: /trunk/xsl/html/param.xweb; M: /trunk/xsl/html/param.ent - Michael(tm) Smith + + + +Add Xalan variant to test for exslt:node-set function. +Xalan can use function named node-set(), but doesn't +recognize it using function-available().M: /trunk/xsl/html/autoidx.xsl - Robert Stayton + + + +Added support to FO stylesheets for handling instances of Org +where it occurs outside of *info content. In HTML stylesheets, +moved handling of Org out of info.xsl and into inline.xsl. In both +FO and HTML stylesheets, added support for correctly processing +Affiliation and Jobtitle.M: /trunk/xsl/html/inline.xsl; M: /trunk/xsl/html/info.xsl - Michael(tm) Smith + + +Don't output punctuation between Refname and Refpurpose if +Refpurpose is empty. Also corrected handling of Refsect2/title +instances, and removed some debugging stuff that was generated in +manpages output to mark the ends of sections.M: /trunk/xsl/html/refentry.xsl - Michael(tm) Smith + + +Added new email.delimiters.enabled param. If non-zero (the +default), delimiters are generated around e-mail addresses (output +of the email element). If zero, the delimiters are suppressed.M: /trunk/xsl/html/inline.xsl; M: /trunk/xsl/html/param.xweb; M: /trunk/xsl/html/param.ent - Michael(tm) Smith + + + +Added qanda.nested.in.toc param. Default value is zero. If +non-zero, instances of "nested" Qandaentry (ones that are children +of Answer elements) are displayed in the TOC. Closes patch 1509018 +(from Daniel Leidert). Currently on affects HTML output (no patch +for FO output provided).M: /trunk/xsl/html/param.xweb; M: /trunk/xsl/html/param.ent; M: /trunk/xsl/html/qandaset.xsl - Michael(tm) Smith + + + + +Improved handling of relative locations generated filesM: /trunk/xsl/html/html.xsl - Jirka Kosek + + + +Initial support of syntax highlighting of programlistings.M: /trunk/xsl/html/param.ent; M: /trunk/xsl/html/param.xweb; A: /trunk/xsl/html/highlight.xsl; M: /trunk/xsl/html/verbatim.xsl - Jirka Kosek + + +Support orgM: /trunk/xsl/html/info.xsl - Norman Walsh + + +Support personM: /trunk/xsl/html/inline.xsl - Norman Walsh + + +Support $keep.relative.image.uris also when chunkingM: /trunk/xsl/html/chunk-code.xsl - Jirka Kosek + + + + + +Highlighting +The following changes have been made to the + highlighting code + since the 1.70.1 release. + + + +Initial support of syntax highlighting of programlistings.A: /trunk/xsl/highlighting/php-hl.xml; A: /trunk/xsl/highlighting/common.xsl; A: /trunk/xsl/highlighting/delphi-hl.xml; A: /trunk/xsl/highlighting/myxml-hl.xml; A: /trunk/xsl/highlighting/m2-hl.xml; A: /trunk/xsl/highlighting/ini-hl.xml; A: /trunk/xsl/highlighting/xslthl-config.xml; A: /trunk/xsl/highlighting/java-hl.xml - Jirka Kosek + + + + + +Manpages +The following changes have been made to the + manpages code + since the 1.70.1 release. + + + +Suppress footnote markers and output warning that footnotes are +not yet supported.M: /trunk/xsl/manpages/docbook.xsl; M: /trunk/xsl/manpages/links.xsl; M: /trunk/xsl/manpages/other.xsl - Michael(tm) Smith + + + +Handle instances of address/otheraddr/ulink in author et al in the +same way as email instances; that is, display them on the same +linke as the author, editor, etc., name.M: /trunk/xsl/manpages/info.xsl - Michael(tm) Smith + + +Don't number or link-list any Ulink instance whose string value is +identical to the value of its url attribute. Just display it inline.M: /trunk/xsl/manpages/links.xsl - Michael(tm) Smith + + + +Don't output punctuation between Refname and Refpurpose if +Refpurpose is empty. Also corrected handling of Refsect2/title +instances, and removed some debugging stuff that was generated in +manpages output to mark the ends of sections.M: /trunk/xsl/manpages/refentry.xsl - Michael(tm) Smith + + +Added new email.delimiters.enabled param. If non-zero (the +default), delimiters are generated around e-mail addresses (output +of the email element). If zero, the delimiters are suppressed.M: /trunk/xsl/manpages/param.xweb; M: /trunk/xsl/manpages/param.ent - Michael(tm) Smith + + + +In manpages output, if the last/nearest *info element for +particular Refentry has multiple Copyright and/or Legalnotice +children, process them all (not just the first ones). Closes bug +1524576. Thanks to Sam Steingold for the report and to Daniel +Leidert for providing a patch.M: /trunk/xsl/manpages/info.xsl - Michael(tm) Smith + + + + + + +Params +The following changes have been made to the + params code + since the 1.70.1 release. + + +Added reference.autolabel parameter for controlling labels on +reference output.A: /trunk/xsl/params/reference.autolabel.xml - Michael(tm) Smith + + +Added namespace declarations to document elements for all param files.M: /trunk/xsl/params/toc.line.properties.xml; M: /trunk/xsl/params/title.font.family.xml; M: /trunk/xsl/params/component.label.includes.part.label.xml; M: /trunk/xsl/params/refentry.manual.profile.xml; M: /trunk/xsl/params/orderedlist.properties.xml; M: /trunk/xsl/params/olink.pubid.xml; M: /trunk/xsl/params/informalexample.properties.xml; M: /trunk/xsl/params/appendix.autolabel.xml; M: /trunk/xsl/params/htmlhelp.show.toolbar.text.xml; M: /trunk/xsl/params/index.on.role.xml; M: /trunk/xsl/params/htmlhelp.button.jump2.url.xml; M: /trunk/xsl/params/variablelist.term.separator.xml; M: /trunk/xsl/params/para.propagates.style.xml; M: /trunk/xsl/params/html.stylesheet.xml; M: /trunk/xsl/params/qanda.nested.in.toc.xml; M: /trunk/xsl/params/annotation.css.xml; M: /trunk/xsl/params/funcsynopsis.style.xml; M: /trunk/xsl/params/htmlhelp.encoding.xml; M: /trunk/xsl/params/footer.content.properties.xml; M: /trunk/xsl/params/verbatim.properties.xml; M: /trunk/xsl/params/autotoc.label.in.hyperlink.xml; M: /trunk/xsl/params/body.margin.top.xml; M: /trunk/xsl/params/bibliography.numbered.xml; M: /trunk/xsl/params/figure.properties.xml; M: /trunk/xsl/params/variablelist.max.termlength.xml; M: /trunk/xsl/params/table.cell.border.style.xml; M: /trunk/xsl/params/htmlhelp.button.options.xml; M: /trunk/xsl/params/preferred.mediaobject.role.xml; M: /trunk/xsl/params/htmlhelp.chm.xml; M: /trunk/xsl/params/man.charmap.subset.profile.xml; M: /trunk/xsl/params/qanda.title.level3.properties.xml; M: /trunk/xsl/params/page.width.xml; M: /trunk/xsl/params/firstterm.only.link.xml; M: /trunk/xsl/params/section.level6.properties.xml; M: /trunk/xsl/params/htmlhelp.button.locate.xml; M: /trunk/xsl/params/chunk.sections.xml; M: /trunk/xsl/params/use.local.olink.style.xml; M: /trunk/xsl/params/refentry.date.profile.enabled.xml; M: /trunk/xsl/params/refentry.version.suppress.xml; M: /trunk/xsl/params/refentry.generate.title.xml; M: /trunk/xsl/params/punct.honorific.xml; M: /trunk/xsl/params/column.gap.index.xml; M: /trunk/xsl/params/body.start.indent.xml; M: /trunk/xsl/params/crop.mark.width.xml; M: /trunk/xsl/params/refentry.version.profile.enabled.xml; M: /trunk/xsl/params/superscript.properties.xml; M: /trunk/xsl/params/chunker.output.doctype-public.xml; M: /trunk/xsl/params/saxon.character.representation.xml; M: /trunk/xsl/params/saxon.linenumbering.xml; M: /trunk/xsl/params/shade.verbatim.style.xml; M: /trunk/xsl/params/annotate.toc.xml; M: /trunk/xsl/params/profile.attribute.xml; M: /trunk/xsl/params/callout.graphics.number.limit.xml; M: /trunk/xsl/params/profile.arch.xml; M: /trunk/xsl/params/saxon.tablecolumns.xml; M: /trunk/xsl/params/glossterm.auto.link.xml; M: /trunk/xsl/params/default.units.xml; M: /trunk/xsl/params/qanda.title.level1.properties.xml; M: /trunk/xsl/params/list.block.spacing.xml; M: /trunk/xsl/params/section.level4.properties.xml; M: /trunk/xsl/params/spacing.paras.xml; M: /trunk/xsl/params/column.count.index.xml; M: /trunk/xsl/params/dingbat.font.family.xml; M: /trunk/xsl/params/citerefentry.link.xml; M: /trunk/xsl/params/keep.relative.image.uris.xml; M: /trunk/xsl/params/ulink.footnotes.xml; M: /trunk/xsl/params/prefer.internal.olink.xml; M: /trunk/xsl/params/refentry.title.properties.xml; M: /trunk/xsl/params/variablelist.term.break.after.xml; M: /trunk/xsl/params/use.id.function.xml; M: /trunk/xsl/params/callout.unicode.start.character.xml; M: /trunk/xsl/params/column.gap.titlepage.xml; M: /trunk/xsl/params/editedby.enabled.xml; M: /trunk/xsl/params/funcsynopsis.tabular.threshold.xml; M: /trunk/xsl/params/use.extensions.xml; M: /trunk/xsl/params/index.preferred.page.properties.xml; M: /trunk/xsl/params/man.th.extra3.max.length.xml; M: /trunk/xsl/params/column.gap.back.xml; M: /trunk/xsl/params/tex.math.delims.xml; M: /trunk/xsl/params/article.appendix.title.properties.xml; M: /trunk/xsl/params/ulink.target.xml; M: /trunk/xsl/params/suppress.header.navigation.xml; M: /trunk/xsl/params/olink.resolver.xml; M: /trunk/xsl/params/admon.textlabel.xml; M: /trunk/xsl/params/procedure.properties.xml; M: /trunk/xsl/params/blurb.on.titlepage.enabled.xml; M: /trunk/xsl/params/section.level2.properties.xml; M: /trunk/xsl/params/column.gap.front.xml; M: /trunk/xsl/params/margin.note.title.properties.xml; M: /trunk/xsl/params/glossary.collection.xml; M: /trunk/xsl/params/admon.graphics.xml; M: /trunk/xsl/params/current.docid.xml; M: /trunk/xsl/params/qanda.inherit.numeration.xml; M: /trunk/xsl/params/table.cell.padding.xml; M: /trunk/xsl/params/preface.autolabel.xml; M: /trunk/xsl/params/man.th.extra3.suppress.xml; M: /trunk/xsl/params/wordml.template.xml; M: /trunk/xsl/params/htmlhelp.use.hhk.xml; M: /trunk/xsl/params/textinsert.extension.xml; M: /trunk/xsl/params/ebnf.table.bgcolor.xml; M: /trunk/xsl/params/refentry.source.fallback.profile.xml; M: /trunk/xsl/params/body.font.master.xml; M: /trunk/xsl/params/l10n.gentext.default.language.xml; M: /trunk/xsl/params/list.block.properties.xml; M: /trunk/xsl/params/refentry.source.name.suppress.xml; M: /trunk/xsl/params/htmlhelp.hhp.window.xml; M: /trunk/xsl/params/sidebar.properties.xml; M: /trunk/xsl/params/tex.math.file.xml; M: /trunk/xsl/params/man.justify.xml; M: /trunk/xsl/params/subscript.properties.xml; M: /trunk/xsl/params/column.count.front.xml; M: /trunk/xsl/params/index.term.separator.xml; M: /trunk/xsl/params/biblioentry.properties.xml; M: /trunk/xsl/params/biblioentry.item.separator.xml; M: /trunk/xsl/params/htmlhelp.button.home.url.xml; M: /trunk/xsl/params/column.count.body.xml; M: /trunk/xsl/params/suppress.navigation.xml; M: /trunk/xsl/params/htmlhelp.remember.window.position.xml; M: /trunk/xsl/params/htmlhelp.hhc.section.depth.xml; M: /trunk/xsl/params/xref.with.number.and.title.xml; M: /trunk/xsl/params/make.year.ranges.xml; M: /trunk/xsl/params/region.before.extent.xml; M: /trunk/xsl/params/xref.label-page.separator.xml; M: /trunk/xsl/params/html.longdesc.link.xml; M: /trunk/xsl/params/man.subheading.divider.enabled.xml; M: /trunk/xsl/params/index.entry.properties.xml; M: /trunk/xsl/params/generate.legalnotice.link.xml; M: /trunk/xsl/params/section.autolabel.xml; M: /trunk/xsl/params/html.base.xml; M: /trunk/xsl/params/suppress.footer.navigation.xml; M: /trunk/xsl/params/nominal.image.depth.xml; M: /trunk/xsl/params/table.footnote.number.symbols.xml; M: /trunk/xsl/params/table.footnote.number.format.xml; M: /trunk/xsl/params/callout.graphics.xml; M: /trunk/xsl/params/man.break.after.slash.xml; M: /trunk/xsl/params/function.parens.xml; M: /trunk/xsl/params/part.autolabel.xml; M: /trunk/xsl/params/saxon.callouts.xml; M: /trunk/xsl/params/css.decoration.xml; M: /trunk/xsl/params/htmlhelp.button.home.xml; M: /trunk/xsl/params/email.delimiters.enabled.xml; M: /trunk/xsl/params/column.count.lot.xml; M: /trunk/xsl/params/draft.mode.xml; M: /trunk/xsl/params/use.role.for.mediaobject.xml; M: /trunk/xsl/params/refentry.separator.xml; M: /trunk/xsl/params/man.font.funcsynopsisinfo.xml; M: /trunk/xsl/params/man.output.manifest.filename.xml; M: /trunk/xsl/params/process.empty.source.toc.xml; M: /trunk/xsl/params/man.output.in.separate.dir.xml; M: /trunk/xsl/params/graphicsize.use.img.src.path.xml; M: /trunk/xsl/params/man.output.encoding.xml; M: /trunk/xsl/params/column.gap.lot.xml; M: /trunk/xsl/params/profile.role.xml; M: /trunk/xsl/params/column.count.titlepage.xml; M: /trunk/xsl/params/show.comments.xml; M: /trunk/xsl/params/informalfigure.properties.xml; M: /trunk/xsl/params/entry.propagates.style.xml; M: /trunk/xsl/params/bibliography.collection.xml; M: /trunk/xsl/params/contrib.inline.enabled.xml; M: /trunk/xsl/params/section.title.level5.properties.xml; M: /trunk/xsl/params/fop.extensions.xml; M: /trunk/xsl/params/htmlhelp.button.jump1.xml; M: /trunk/xsl/params/man.hyphenate.urls.xml; M: /trunk/xsl/params/profile.condition.xml; M: /trunk/xsl/params/header.column.widths.xml; M: /trunk/xsl/params/annotation.js.xml; M: /trunk/xsl/params/chunker.output.standalone.xml; M: /trunk/xsl/params/targets.filename.xml; M: /trunk/xsl/params/default.float.class.xml; M: /trunk/xsl/params/chapter.autolabel.xml; M: /trunk/xsl/params/sidebar.float.type.xml; M: /trunk/xsl/params/profile.separator.xml; M: /trunk/xsl/params/generate.index.xml; M: /trunk/xsl/params/nongraphical.admonition.properties.xml; M: /trunk/xsl/params/navig.graphics.xml; M: /trunk/xsl/params/htmlhelp.button.next.xml; M: /trunk/xsl/params/insert.olink.pdf.frag.xml; M: /trunk/xsl/params/htmlhelp.button.stop.xml; M: /trunk/xsl/params/footnote.font.size.xml; M: /trunk/xsl/params/profile.value.xml; M: /trunk/xsl/params/ebnf.table.border.xml; M: /trunk/xsl/params/htmlhelp.hhc.folders.instead.books.xml; M: /trunk/xsl/params/glossary.as.blocks.xml; M: /trunk/xsl/params/body.end.indent.xml; M: /trunk/xsl/params/use.role.as.xrefstyle.xml; M: /trunk/xsl/params/man.indent.blurbs.xml; M: /trunk/xsl/params/chunker.output.encoding.xml; M: /trunk/xsl/params/chunker.output.omit-xml-declaration.xml; M: /trunk/xsl/params/sans.font.family.xml; M: /trunk/xsl/params/html.cleanup.xml; M: /trunk/xsl/params/htmlhelp.hhp.xml; M: /trunk/xsl/params/htmlhelp.only.xml; M: /trunk/xsl/params/eclipse.plugin.name.xml; M: /trunk/xsl/params/section.title.level3.properties.xml; M: /trunk/xsl/params/man.th.extra1.suppress.xml; M: /trunk/xsl/params/chunk.section.depth.xml; M: /trunk/xsl/params/htmlhelp.hhp.tail.xml; M: /trunk/xsl/params/sidebar.title.properties.xml; M: /trunk/xsl/params/hyphenate.xml; M: /trunk/xsl/params/paper.type.xml; M: /trunk/xsl/params/chunk.tocs.and.lots.has.title.xml; M: /trunk/xsl/params/symbol.font.family.xml; M: /trunk/xsl/params/page.margin.bottom.xml; M: /trunk/xsl/params/callout.unicode.number.limit.xml; M: /trunk/xsl/params/itemizedlist.properties.xml; M: /trunk/xsl/params/root.filename.xml; M: /trunk/xsl/params/tablecolumns.extension.xml; M: /trunk/xsl/params/htmlhelp.show.favorities.xml; M: /trunk/xsl/params/informaltable.properties.xml; M: /trunk/xsl/params/revhistory.table.cell.properties.xml; M: /trunk/xsl/params/htmlhelp.default.topic.xml; M: /trunk/xsl/params/compact.list.item.spacing.xml; M: /trunk/xsl/params/page.height.portrait.xml; M: /trunk/xsl/params/html.head.legalnotice.link.types.xml; M: /trunk/xsl/params/passivetex.extensions.xml; M: /trunk/xsl/params/orderedlist.label.properties.xml; M: /trunk/xsl/params/othercredit.like.author.enabled.xml; M: /trunk/xsl/params/header.content.properties.xml; M: /trunk/xsl/params/refentry.meta.get.quietly.xml; M: /trunk/xsl/params/section.properties.xml; M: /trunk/xsl/params/htmlhelp.button.hideshow.xml; M: /trunk/xsl/params/simplesect.in.toc.xml; M: /trunk/xsl/params/chunk.quietly.xml; M: /trunk/xsl/params/htmlhelp.enumerate.images.xml; M: /trunk/xsl/params/section.title.level1.properties.xml; M: /trunk/xsl/params/qanda.defaultlabel.xml; M: /trunk/xsl/params/htmlhelp.enhanced.decompilation.xml; M: /trunk/xsl/params/man.th.title.max.length.xml; M: /trunk/xsl/params/footnote.number.format.xml; M: /trunk/xsl/params/body.margin.bottom.xml; M: /trunk/xsl/params/htmlhelp.window.geometry.xml; M: /trunk/xsl/params/htmlhelp.button.jump2.xml; M: /trunk/xsl/params/use.svg.xml; M: /trunk/xsl/params/qanda.title.level6.properties.xml; M: /trunk/xsl/params/collect.xref.targets.xml; M: /trunk/xsl/params/html.extra.head.links.xml; M: /trunk/xsl/params/variablelist.as.table.xml; M: /trunk/xsl/params/man.indent.width.xml; M: /trunk/xsl/params/eclipse.plugin.id.xml; M: /trunk/xsl/params/linenumbering.width.xml; M: /trunk/xsl/params/axf.extensions.xml; M: /trunk/xsl/params/menuchoice.separator.xml; M: /trunk/xsl/params/glossterm.separation.xml; M: /trunk/xsl/params/htmlhelp.autolabel.xml; M: /trunk/xsl/params/chunk.separate.lots.xml; M: /trunk/xsl/params/man.hyphenate.computer.inlines.xml; M: /trunk/xsl/params/linenumbering.separator.xml; M: /trunk/xsl/params/htmlhelp.title.xml; M: /trunk/xsl/params/index.number.separator.xml; M: /trunk/xsl/params/htmlhelp.button.prev.xml; M: /trunk/xsl/params/refentry.manual.fallback.profile.xml; M: /trunk/xsl/params/table.frame.border.color.xml; M: /trunk/xsl/params/footnote.sep.leader.properties.xml; M: /trunk/xsl/params/hyphenate.verbatim.characters.xml; M: /trunk/xsl/params/table.cell.border.thickness.xml; M: /trunk/xsl/params/template.xml; M: /trunk/xsl/params/margin.note.properties.xml; M: /trunk/xsl/params/man.segtitle.suppress.xml; M: /trunk/xsl/params/generate.toc.xml; M: /trunk/xsl/params/formal.object.properties.xml; M: /trunk/xsl/params/footnote.mark.properties.xml; M: /trunk/xsl/params/header.table.height.xml; M: /trunk/xsl/params/htmlhelp.button.back.xml; M: /trunk/xsl/params/qanda.title.level4.properties.xml; M: /trunk/xsl/params/man.links.are.numbered.xml; M: /trunk/xsl/params/manual.toc.xml; M: /trunk/xsl/params/olink.lang.fallback.sequence.xml; M: /trunk/xsl/params/refentry.manual.profile.enabled.xml; M: /trunk/xsl/params/ulink.hyphenate.chars.xml; M: /trunk/xsl/params/manifest.xml; M: /trunk/xsl/params/olink.fragid.xml; M: /trunk/xsl/params/refentry.date.profile.xml; M: /trunk/xsl/params/linenumbering.extension.xml; M: /trunk/xsl/params/component.title.properties.xml; M: /trunk/xsl/params/alignment.xml; M: /trunk/xsl/params/refentry.version.profile.xml; M: /trunk/xsl/params/ebnf.assignment.xml; M: /trunk/xsl/params/htmlhelp.button.print.xml; M: /trunk/xsl/params/annotation.support.xml; M: /trunk/xsl/params/sidebar.float.width.xml; M: /trunk/xsl/params/normal.para.spacing.xml; M: /trunk/xsl/params/xref.title-page.separator.xml; M: /trunk/xsl/params/callout.unicode.font.xml; M: /trunk/xsl/params/default.table.frame.xml; M: /trunk/xsl/params/pages.template.xml; M: /trunk/xsl/params/htmlhelp.button.zoom.xml; M: /trunk/xsl/params/admonition.title.properties.xml; M: /trunk/xsl/params/callout.graphics.extension.xml; M: /trunk/xsl/params/make.valid.html.xml; M: /trunk/xsl/params/qanda.title.level2.properties.xml; M: /trunk/xsl/params/page.margin.top.xml; M: /trunk/xsl/params/xep.index.item.properties.xml; M: /trunk/xsl/params/section.level5.properties.xml; M: /trunk/xsl/params/line-height.xml; M: /trunk/xsl/params/table.cell.border.color.xml; M: /trunk/xsl/params/qandadiv.autolabel.xml; M: /trunk/xsl/params/xref.label-title.separator.xml; M: /trunk/xsl/params/chunk.tocs.and.lots.xml; M: /trunk/xsl/params/man.font.funcprototype.xml; M: /trunk/xsl/params/process.source.toc.xml; M: /trunk/xsl/params/page.orientation.xml; M: /trunk/xsl/params/refentry.generate.name.xml; M: /trunk/xsl/params/navig.showtitles.xml; M: /trunk/xsl/params/table.table.properties.xml; M: /trunk/xsl/params/arbortext.extensions.xml; M: /trunk/xsl/params/informalequation.properties.xml; M: /trunk/xsl/params/headers.on.blank.pages.xml; M: /trunk/xsl/params/table.footnote.properties.xml; M: /trunk/xsl/params/root.properties.xml; M: /trunk/xsl/params/htmlhelp.display.progress.xml; M: /trunk/xsl/params/htmlhelp.hhp.windows.xml; M: /trunk/xsl/params/graphical.admonition.properties.xml; M: /trunk/xsl/params/refclass.suppress.xml; M: /trunk/xsl/params/profile.conformance.xml; M: /trunk/xsl/params/htmlhelp.button.forward.xml; M: /trunk/xsl/params/segmentedlist.as.table.xml; M: /trunk/xsl/params/margin.note.float.type.xml; M: /trunk/xsl/params/man.table.footnotes.divider.xml; M: /trunk/xsl/params/man.output.quietly.xml; M: /trunk/xsl/params/htmlhelp.hhc.show.root.xml; M: /trunk/xsl/params/footers.on.blank.pages.xml; M: /trunk/xsl/params/crop.mark.offset.xml; M: /trunk/xsl/params/olink.doctitle.xml; M: /trunk/xsl/params/section.level3.properties.xml; M: /trunk/xsl/params/callout.unicode.xml; M: /trunk/xsl/params/formal.procedures.xml; M: /trunk/xsl/params/toc.section.depth.xml; M: /trunk/xsl/params/index.prefer.titleabbrev.xml; M: /trunk/xsl/params/nominal.image.width.xml; M: /trunk/xsl/params/htmlhelp.show.menu.xml; M: /trunk/xsl/params/linenumbering.everyNth.xml; M: /trunk/xsl/params/double.sided.xml; M: /trunk/xsl/params/generate.revhistory.link.xml; M: /trunk/xsl/params/olink.properties.xml; M: /trunk/xsl/params/tex.math.in.alt.xml; M: /trunk/xsl/params/man.output.subdirs.enabled.xml; M: /trunk/xsl/params/section.title.properties.xml; M: /trunk/xsl/params/column.count.back.xml; M: /trunk/xsl/params/toc.indent.width.xml; M: /trunk/xsl/params/man.charmap.uri.xml; M: /trunk/xsl/params/index.method.xml; M: /trunk/xsl/params/generate.section.toc.level.xml; M: /trunk/xsl/params/page.width.portrait.xml; M: /trunk/xsl/params/man.th.extra2.max.length.xml; M: /trunk/xsl/params/abstract.properties.xml; M: /trunk/xsl/params/revhistory.table.properties.xml; M: /trunk/xsl/params/nominal.table.width.xml; M: /trunk/xsl/params/ulink.show.xml; M: /trunk/xsl/params/htmlhelp.button.jump1.title.xml; M: /trunk/xsl/params/index.div.title.properties.xml; M: /trunk/xsl/params/profile.userlevel.xml; M: /trunk/xsl/params/html.cellpadding.xml; M: /trunk/xsl/params/orderedlist.label.width.xml; M: /trunk/xsl/params/crop.marks.xml; M: /trunk/xsl/params/menuchoice.menu.separator.xml; M: /trunk/xsl/params/author.othername.in.middle.xml; M: /trunk/xsl/params/section.level1.properties.xml; M: /trunk/xsl/params/textdata.default.encoding.xml; M: /trunk/xsl/params/label.from.part.xml; M: /trunk/xsl/params/use.embed.for.svg.xml; M: /trunk/xsl/params/list.item.spacing.xml; M: /trunk/xsl/params/htmlhelp.hhc.width.xml; M: /trunk/xsl/params/column.gap.body.xml; M: /trunk/xsl/params/rootid.xml; M: /trunk/xsl/params/glosslist.as.blocks.xml; M: /trunk/xsl/params/index.range.separator.xml; M: /trunk/xsl/params/html.ext.xml; M: /trunk/xsl/params/callout.list.table.xml; M: /trunk/xsl/params/highlight.source.xml; M: /trunk/xsl/params/show.revisionflag.xml; M: /trunk/xsl/params/man.output.manifest.enabled.xml; M: /trunk/xsl/params/make.single.year.ranges.xml; M: /trunk/xsl/params/pgwide.properties.xml; M: /trunk/xsl/params/generate.id.attributes.xml; M: /trunk/xsl/params/emphasis.propagates.style.xml; M: /trunk/xsl/params/abstract.title.properties.xml; M: /trunk/xsl/params/htmlhelp.hhc.xml; M: /trunk/xsl/params/monospace.properties.xml; M: /trunk/xsl/params/htmlhelp.hhk.xml; M: /trunk/xsl/params/table.borders.with.css.xml; M: /trunk/xsl/params/man.links.are.underlined.xml; M: /trunk/xsl/params/profile.vendor.xml; M: /trunk/xsl/params/shade.verbatim.xml; M: /trunk/xsl/params/callout.graphics.path.xml; M: /trunk/xsl/params/olink.debug.xml; M: /trunk/xsl/params/make.graphic.viewport.xml; M: /trunk/xsl/params/footnote.number.symbols.xml; M: /trunk/xsl/params/man.charmap.enabled.xml; M: /trunk/xsl/params/page.height.xml; M: /trunk/xsl/params/htmlhelp.button.jump1.url.xml; M: /trunk/xsl/params/man.font.table.title.xml; M: /trunk/xsl/params/revhistory.title.properties.xml; M: /trunk/xsl/params/chunker.output.media-type.xml; M: /trunk/xsl/params/glossterm.width.xml; M: /trunk/xsl/params/points.per.em.xml; M: /trunk/xsl/params/page.margin.inner.xml; M: /trunk/xsl/params/itemizedlist.label.width.xml; M: /trunk/xsl/params/ulink.hyphenate.xml; M: /trunk/xsl/params/crop.mark.bleed.xml; M: /trunk/xsl/params/use.id.as.filename.xml; M: /trunk/xsl/params/section.title.level6.properties.xml; M: /trunk/xsl/params/highlight.default.language.xml; M: /trunk/xsl/params/man.th.extra2.suppress.xml; M: /trunk/xsl/params/id.warnings.xml; M: /trunk/xsl/params/title.margin.left.xml; M: /trunk/xsl/params/chunker.output.doctype-system.xml; M: /trunk/xsl/params/man.indent.verbatims.xml; M: /trunk/xsl/params/table.frame.border.thickness.xml; M: /trunk/xsl/params/monospace.verbatim.properties.xml; M: /trunk/xsl/params/formal.title.properties.xml; M: /trunk/xsl/params/margin.note.width.xml; M: /trunk/xsl/params/man.hyphenate.filenames.xml; M: /trunk/xsl/params/blockquote.properties.xml; M: /trunk/xsl/params/callout.defaultcolumn.xml; M: /trunk/xsl/params/profile.security.xml; M: /trunk/xsl/params/informal.object.properties.xml; M: /trunk/xsl/params/formal.title.placement.xml; M: /trunk/xsl/params/draft.watermark.image.xml; M: /trunk/xsl/params/equation.properties.xml; M: /trunk/xsl/params/body.font.family.xml; M: /trunk/xsl/params/ignore.image.scaling.xml; M: /trunk/xsl/params/chunk.first.sections.xml; M: /trunk/xsl/params/base.dir.xml; M: /trunk/xsl/params/footnote.properties.xml; M: /trunk/xsl/params/olink.outline.ext.xml; M: /trunk/xsl/params/img.src.path.xml; M: /trunk/xsl/params/qanda.title.properties.xml; M: /trunk/xsl/params/ebnf.statement.terminator.xml; M: /trunk/xsl/params/callouts.extension.xml; M: /trunk/xsl/params/manifest.in.base.dir.xml; M: /trunk/xsl/params/fop1.extensions.xml; M: /trunk/xsl/params/olink.sysid.xml; M: /trunk/xsl/params/section.title.level4.properties.xml; M: /trunk/xsl/params/monospace.font.family.xml; M: /trunk/xsl/params/l10n.gentext.language.xml; M: /trunk/xsl/params/graphic.default.extension.xml; M: /trunk/xsl/params/default.image.width.xml; M: /trunk/xsl/params/htmlhelp.button.refresh.xml; M: /trunk/xsl/params/chunker.output.cdata-section-elements.xml; M: /trunk/xsl/params/admon.graphics.path.xml; M: /trunk/xsl/params/admon.style.xml; M: /trunk/xsl/params/profile.revision.xml; M: /trunk/xsl/params/generate.manifest.xml; M: /trunk/xsl/params/html.longdesc.xml; M: /trunk/xsl/params/footer.rule.xml; M: /trunk/xsl/params/eclipse.plugin.provider.xml; M: /trunk/xsl/params/refentry.source.name.profile.xml; M: /trunk/xsl/params/toc.max.depth.xml; M: /trunk/xsl/params/chunker.output.indent.xml; M: /trunk/xsl/params/html.head.legalnotice.link.multiple.xml; M: /trunk/xsl/params/toc.list.type.xml; M: /trunk/xsl/params/link.mailto.url.xml; M: /trunk/xsl/params/table.properties.xml; M: /trunk/xsl/params/side.float.properties.xml; M: /trunk/xsl/params/man.charmap.use.subset.xml; M: /trunk/xsl/params/annotation.graphic.open.xml; M: /trunk/xsl/params/html.cellspacing.xml; M: /trunk/xsl/params/default.table.width.xml; M: /trunk/xsl/params/xep.extensions.xml; M: /trunk/xsl/params/admonition.properties.xml; M: /trunk/xsl/params/toc.margin.properties.xml; M: /trunk/xsl/params/chunk.toc.xml; M: /trunk/xsl/params/table.entry.padding.xml; M: /trunk/xsl/params/header.rule.xml; M: /trunk/xsl/params/glossentry.show.acronym.xml; M: /trunk/xsl/params/variablelist.as.blocks.xml; M: /trunk/xsl/params/man.hyphenate.xml; M: /trunk/xsl/params/refentry.source.name.profile.enabled.xml; M: /trunk/xsl/params/section.label.includes.component.label.xml; M: /trunk/xsl/params/bridgehead.in.toc.xml; M: /trunk/xsl/params/section.title.level2.properties.xml; M: /trunk/xsl/params/admon.graphics.extension.xml; M: /trunk/xsl/params/inherit.keywords.xml; M: /trunk/xsl/params/insert.xref.page.number.xml; M: /trunk/xsl/params/pixels.per.inch.xml; M: /trunk/xsl/params/refentry.pagebreak.xml; M: /trunk/xsl/params/profile.lang.xml; M: /trunk/xsl/params/insert.olink.page.number.xml; M: /trunk/xsl/params/generate.meta.abstract.xml; M: /trunk/xsl/params/graphicsize.extension.xml; M: /trunk/xsl/params/man.indent.lists.xml; M: /trunk/xsl/params/funcsynopsis.decoration.xml; M: /trunk/xsl/params/runinhead.title.end.punct.xml; M: /trunk/xsl/params/man.string.subst.map.xml; M: /trunk/xsl/params/man.links.list.enabled.xml; M: /trunk/xsl/params/section.autolabel.max.depth.xml; M: /trunk/xsl/params/htmlhelp.show.advanced.search.xml; M: /trunk/xsl/params/htmlhelp.map.file.xml; M: /trunk/xsl/params/l10n.gentext.use.xref.language.xml; M: /trunk/xsl/params/body.font.size.xml; M: /trunk/xsl/params/html.stylesheet.type.xml; M: /trunk/xsl/params/refentry.xref.manvolnum.xml; M: /trunk/xsl/params/runinhead.default.title.end.punct.xml; M: /trunk/xsl/params/navig.graphics.extension.xml; M: /trunk/xsl/params/itemizedlist.label.properties.xml; M: /trunk/xsl/params/htmlhelp.force.map.and.alias.xml; M: /trunk/xsl/params/profile.os.xml; M: /trunk/xsl/params/htmlhelp.alias.file.xml; M: /trunk/xsl/params/page.margin.outer.xml; M: /trunk/xsl/params/annotation.graphic.close.xml; M: /trunk/xsl/params/eclipse.autolabel.xml; M: /trunk/xsl/params/table.frame.border.style.xml; M: /trunk/xsl/params/navig.graphics.path.xml; M: /trunk/xsl/params/htmlhelp.hhc.binary.xml; M: /trunk/xsl/params/index.on.type.xml; M: /trunk/xsl/params/target.database.document.xml; M: /trunk/xsl/params/man.subheading.divider.xml; M: /trunk/xsl/params/chunker.output.method.xml; M: /trunk/xsl/params/make.index.markup.xml; M: /trunk/xsl/params/olink.base.uri.xml; M: /trunk/xsl/params/phrase.propagates.style.xml; M: /trunk/xsl/params/man.indent.refsect.xml; M: /trunk/xsl/params/example.properties.xml; M: /trunk/xsl/params/man.font.table.headings.xml; M: /trunk/xsl/params/profile.revisionflag.xml; M: /trunk/xsl/params/region.after.extent.xml; M: /trunk/xsl/params/qanda.title.level5.properties.xml; M: /trunk/xsl/params/marker.section.level.xml; M: /trunk/xsl/params/footer.table.height.xml; M: /trunk/xsl/params/autotoc.label.separator.xml; M: /trunk/xsl/params/footer.column.widths.xml; M: /trunk/xsl/params/hyphenate.verbatim.xml; M: /trunk/xsl/params/xref.properties.xml; M: /trunk/xsl/params/man.output.base.dir.xml; M: /trunk/xsl/params/man.links.list.heading.xml; M: /trunk/xsl/params/insert.link.page.number.xml; M: /trunk/xsl/params/htmlhelp.button.jump2.title.xml; M: /trunk/xsl/params/l10n.lang.value.rfc.compliant.xml - Michael(tm) Smith + + +Updated index.method doc to describe revised setup for importing index extensions.M: /trunk/xsl/params/index.method.xml - Robert Stayton + + +Added several new HTML parameters for controlling appearance of +content on HTML title pages: + +contrib.inline.enabled: + If non-zero (the default), output of the contrib element is + displayed as inline content rather than as block content. + +othercredit.like.author.enabled: + If non-zero, output of the othercredit element on titlepages is + displayed in the same style as author and editor output. If zero + (the default), othercredit output is displayed using a style + different than that of author and editor. + +blurb.on.titlepage.enabled: + If non-zero, output from authorblurb and personblurb elements is + displayed on title pages. If zero (the default), output from + those elements is suppressed on title pages (unless you are + using a titlepage customization that causes them to be included). + +editedby.enabled + If non-zero (the default), a localized Edited by heading is + displayed above editor names in output of the editor element.A: /trunk/xsl/params/contrib.inline.enabled.xml; A: /trunk/xsl/params/blurb.on.titlepage.enabled.xml; A: /trunk/xsl/params/othercredit.like.author.enabled.xml; A: /trunk/xsl/params/editedby.enabled.xml - Michael(tm) Smith + + +Added new email.delimiters.enabled param. If non-zero (the +default), delimiters are generated around e-mail addresses (output +of the email element). If zero, the delimiters are suppressed.A: /trunk/xsl/params/email.delimiters.enabled.xml - Michael(tm) Smith + + + +Added qanda.nested.in.toc param. Default value is zero. If +non-zero, instances of "nested" Qandaentry (ones that are children +of Answer elements) are displayed in the TOC. Closes patch 1509018 +(from Daniel Leidert). Currently on affects HTML output (no patch +for FO output provided).A: /trunk/xsl/params/qanda.nested.in.toc.xml - Michael(tm) Smith + + + +Initial support of syntax highlighting of programlistings.A: /trunk/xsl/params/highlight.source.xml; A: /trunk/xsl/params/highlight.default.language.xml - Jirka Kosek + + + + + +Tools +The following changes have been made to the + tools code + since the 1.70.1 release. + + + +Racheted down font sizes of headings in example makefile FO output.M: /trunk/xsl/tools/make/Makefile.DocBook - Michael(tm) Smith + + +Added param and attribute set to example makefile, for getting +wrapping in verbatims in FO output.M: /trunk/xsl/tools/make/Makefile.DocBook - Michael(tm) Smith + + +Renamed Makefile.paramDoc to Makefile.docParam.A: /trunk/xsl/tools/make/Makefile.docParam; D: /trunk/xsl/tools/make/Makefile.paramDoc - Michael(tm) Smith + + +Added Makefile.paramDoc file, for creating versions of param.xsl +files with doc embedded.A: /trunk/xsl/tools/make/Makefile.paramDoc - Michael(tm) Smith + + +Added variable to example makefile for controlling whether HTML or +XHTML is generated.M: /trunk/xsl/tools/make/Makefile.DocBook - Michael(tm) Smith + + + + +
+ + +Release: 1.70.1 + +This is a stable release of the 1.70 stylesheets. It includes only a +few small changes from 1.70.0. + +The following is a list of changes that have been made + since the 1.70.0 release. + + +FO +The following changes have been made to the + fo code + since the 1.70.0 release. + + +Added three new attribute sets (revhistory.title.properties, revhistory.table.properties and revhistory.table.cell.properties) for controlling appearance of revhistory in FO output. +Modified: fo/block.xsl,1.34; fo/param.ent,1.101; fo/param.xweb,1.114; fo/titlepage.xsl,1.41; params/revhistory.table.cell.properties.xml,1.1; params/revhistory.table.properties.xml,1.1; params/revhistory.title.properties.xml,1.1 - Jirka Kosek + + +Support DBv5 revisions with full author name (not only authorinitials) +Modified: fo/block.xsl,1.33; fo/titlepage.xsl,1.40 - Jirka Kosek + + + + + +HTML +The following changes have been made to the + html code + since the 1.70.0 release. + + +Support DBv5 revisions with full author name (not only authorinitials) +Modified: html/block.xsl,1.23; html/titlepage.xsl,1.34 - Jirka Kosek + + + + + +HTMLHelp +The following changes have been made to the + htmlhelp code + since the 1.70.0 release. + + +htmlhelp.generate.index is now param, not variable. This means that you can override its setting from outside. This is useful when you generate indexterms on the fly (see http://www.xml.com/pub/a/2004/07/14/dbndx.html?page=3). +Modified: htmlhelp/htmlhelp-common.xsl,1.38 - Jirka Kosek + + +Support chunk.tocs.and.lots in HTML Help +Modified: htmlhelp/htmlhelp-common.xsl,1.37 - Jirka Kosek + + + + + +Params +The following changes have been made to the + params code + since the 1.70.0 release. + + +Added three new attribute sets (revhistory.title.properties, revhistory.table.properties and revhistory.table.cell.properties) for controlling appearance of revhistory in FO output. +Modified: fo/block.xsl,1.34; fo/param.ent,1.101; fo/param.xweb,1.114; fo/titlepage.xsl,1.41; params/revhistory.table.cell.properties.xml,1.1; params/revhistory.table.properties.xml,1.1; params/revhistory.title.properties.xml,1.1 - Jirka Kosek + + + + + + + +Release: 1.70.0 +As with all DocBook Project dot-zero +releases, this is an experimental release. It will be followed shortly +by a stable release. + +This release adds a number of new features, +including: + + + + support for selecting alternative index-collation methods + (in particular, support for using a collation library developed by + Eliot Kimber) + + + improved handling of DocBook 5 document instances (through a + namespace-stripping mechanism) + + + full support for CALS and HTML tables in manpages + output + + + a mechanism for preserving relative URIs in documents that + make use of XInclude + + + support for the "new" .90 version of + FOP + + + enhanced capabilities for controlling formatting of lists in HTML + and FO output + + + autogeneration of AUTHOR and COPYRIGHT sections in manpages + output + + + support for generating crop marks in FO/PDF output + + + support for qandaset as a root element in FO output + + + support for floatstyle and orient on all table types + + + support for floatstyle in figure, and example + + + pgwide.properties attribute-set supports extending figure, + example and table into the left indent area instead of spanning + multiple columns. + + + The following is a detailed list of enhancements and API + changes that have been made since the 1.69.1 release. + + +Common +The following changes have been made to the + common code + since the 1.69.1 release. + + +Add the xsl:key for the kimber +indexing method. +Modified: common/autoidx-ng.xsl,1.2 - Robert +Stayton + + +Add support for +qandaset. +Modified: common/labels.xsl,1.37; +common/subtitles.xsl,1.7; common/titles.xsl,1.35 - Robert +Stayton + + +Support dbhtml/dbfo start PI for +orderedlist numbering in both HTML and +FO +Modified: common/common.xsl,1.61; html/lists.xsl,1.50 - Norman +Walsh + + +Added CVS +header. +Modified: common/stripns.xsl,1.12 - Robert +Stayton + + +Changed content model of text +element to ANY rather than #PCDATA because they could contain +markup. +Modified: common/targetdatabase.dtd,1.7 - Robert +Stayton + + +Added +refentry.meta.get.quietly param. +If zero (the +default), notes and warnings about "missing" markup are generated +during gathering of refentry metadata. If +non-zero, the metadata is gathered "quietly" -- that is, the +notes and warnings are suppressed. +NOTE: If you are +processing a large amount of refentry content, you +may be able to speed up processing significantly by setting a +non-zero value for +refentry.meta.get.quietly. +Modified: common/refentry.xsl,1.17; +manpages/param.ent,1.15; manpages/param.xweb,1.17; +params/refentry.meta.get.quietly.xml,1.1 - Michael(tm) +Smith + + +After namespace stripping, the +source document is the temporary tree created by the stripping +process and it has the wrong base URI for relative +references. Earlier versions of this code used to try to fix that +by patching the elements with relative @fileref attributes. That +was inadequate because it calculated an absolute base URI +without considering that there might be xml:base attributes +already in effect. It seems obvious now that the right thing to +do is simply to put the xml:base on the root of the document. And +that seems to work. +Modified: common/stripns.xsl,1.7 - Norman +Walsh + + +Added support for "software" and +"sectdesc" class values on refmiscinfo; "software" is +treated identically to "source", and "setdesc" is treated +identically to "manual". +Modified: common/refentry.xsl,1.10; +params/man.th.extra2.max.length.xml,1.3; +params/refentry.source.name.profile.xml,1.4 - Michael(tm) +Smith + + +Added support for DocBook 5 +namespace-stripping in manpages stylesheet. Closes request +#1210692. +Modified: common/common.xsl,1.56; manpages/docbook.xsl,1.57 - +Michael(tm) Smith + + +Added <xsl:template +match="/"> to make stripns.xsl usable as a standalone +stylesheet for stripping out DocBook 5/NG to DocBook 4. Note that +DocBook XSLT drivers that include this stylesheet all override +the match="/" template. +Modified: common/stripns.xsl,1.4 - Michael(tm) +Smith + + +Number figures, examples, and +tables from book if there is no prefix (i.e. if +chapter.autolabel is set to 0). This avoids +having the list of figures where the figures mysteriously restart +their numeration periodically when +chapter.autolabel is set to +0. +Modified: common/labels.xsl,1.36 - David Cramer + + +Add task template in +title.markup mode. +Modified: common/titles.xsl,1.34 - Robert +Stayton + + +Add children (with ids) of formal +objects to target data. +Modified: common/targets.xsl,1.10 - Robert +Stayton + + +Added support for case when +personname doesn't contain specific name markup (as allowed +in DocBook 5.0) +Modified: common/common.xsl,1.54 - Jirka +Kosek + + + + + +Extensions +The following changes have been made to the + extensions code + since the 1.69.1 release. + + +Support Xalan +2.7 +Modified: extensions/xalan27/.cvsignore,1.1; +extensions/xalan27/build.xml,1.1; +extensions/xalan27/nbproject/.cvsignore,1.1; +extensions/xalan27/nbproject/build-impl.xml,1.1; +extensions/xalan27/nbproject/genfiles.properties,1.1; +extensions/xalan27/nbproject/project.properties,1.1; +extensions/xalan27/nbproject/project.xml,1.1; +extensions/xalan27/src/com/nwalsh/xalan/CVS.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/Callout.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/FormatCallout.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/FormatDingbatCallout.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/FormatGraphicCallout.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/FormatTextCallout.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/FormatUnicodeCallout.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/Func.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/ImageIntrinsics.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/Params.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/Table.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/Text.java,1.1; +extensions/xalan27/src/com/nwalsh/xalan/Verbatim.java,1.1 - Norman +Walsh + + +Handle the case where the imageFn +is actually a URI. This still needs +work. +Modified: extensions/saxon643/com/nwalsh/saxon/ImageIntrinsics.java,1.4 +- Norman Walsh + + + + + +FO +The following changes have been made to the + fo code + since the 1.69.1 release. + + +Adapted to the new indexing +code. Now works just like a wrapper that calls kosek indexing method, +originally implemented here. +Modified: fo/autoidx-ng.xsl,1.5 - Jirka +Kosek + + +Added parameters for header/footer +table minimum height. +Modified: fo/pagesetup.xsl,1.60; +fo/param.ent,1.100; fo/param.xweb,1.113 - Robert +Stayton + + +Add the index.method +parameter. +Modified: fo/param.ent,1.99; fo/param.xweb,1.112 - Robert +Stayton + + +Integrate support for three +indexing methods: - the original English-only method. - +Jirka Kosek's method using EXSLT extensions. - Eliot Kimber's +method using Saxon extensions. Use the 'index.method' +parameter to select. +Modified: fo/autoidx.xsl,1.38 - Robert +Stayton + + +Add support for TOC for +qandaset in fo output. +Modified: fo/autotoc.xsl,1.30; +fo/qandaset.xsl,1.20 - Robert Stayton + + +Added parameter +ulink.hyphenate.chars. Added parameter +insert.link.page.number. +Modified: fo/param.ent,1.98; +fo/param.xweb,1.111 - Robert Stayton + + +Implemented feature request +#942524 to add insert.link.page.number to allow link +element cross references to have a page number. +Modified: fo/xref.xsl,1.67 - +Robert Stayton + + +Add support for +ulink.hyphenate.chars so more characters +can be break points in urls. +Modified: fo/xref.xsl,1.66 - Robert +Stayton + + +Implemented patch #1075144 to make +the url text in a ulink in FO output an active link as +well. +Modified: fo/xref.xsl,1.65 - Robert Stayton + + +table footnotes now +have their own table.footnote.properties +attribute set. +Modified: fo/footnote.xsl,1.23 - Robert +Stayton + + +Add qandaset to +root.elements. +Modified: fo/docbook.xsl,1.41 - Robert +Stayton + + +Added mode="page.sequence" to make +it easier to put content into a page sequence. First used for +qandaset. +Modified: fo/component.xsl,1.37 - Robert +Stayton + + +Implemented feature request +#1434408 to support formatting +of biblioentry. +Modified: fo/biblio.xsl,1.35 - Robert +Stayton + + +Added +biblioentry.properties. +Modified: fo/param.ent,1.97; +fo/param.xweb,1.110 - Robert Stayton + + +Support PTC/Arbortext +bookmarks +Modified: fo/docbook.xsl,1.40; fo/ptc.xsl,1.1 - Norman +Walsh + + +Added +table.footnote.properties to permit +table footnotes to format differently from regular +footnotes. +Modified: fo/param.ent,1.96; fo/param.xweb,1.109 - Robert +Stayton + + +Refactored table +templates to unify their processing and support all options in +all types. Now table and informaltable, in +both Cals and Html markup, use the same templates where possible, +and all support pgwide, rotation, and floats. There is also a +placeholder table.container template to +support wrapping a table in a layout table, +so the XEP table title "continued" +extension can be more easily implemented. +Modified: fo/formal.xsl,1.52; +fo/htmltbl.xsl,1.9; fo/table.xsl,1.48 - Robert +Stayton + + +Added new attribute set +toc.line.properties for controlling appearance of lines in +ToC/LoT +Modified: fo/autotoc.xsl,1.29; fo/param.ent,1.95; +fo/param.xweb,1.108 - Jirka Kosek + + +Added support for float to example +and equation. Added support for pgwide to +figure, example, and equation (the latter +two via a dbfo pgwide="1" processing +instruction). +Modified: fo/formal.xsl,1.51 - Robert +Stayton + + +Add pgwide.properties +attribute-set. +Modified: fo/param.ent,1.94; fo/param.xweb,1.107 - Robert +Stayton + + +Added refclass.suppress +param. +If the value of refclass.suppress is +non-zero, then display refclass contents is suppressed +in output. Affects HTML and FO output +only. +Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90; +html/param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm) +Smith + + +Improved support for +task subelements +Modified: fo/task.xsl,1.3; html/task.xsl,1.3 - +Jirka Kosek + + +Adjusted spacing around +K&R-formatted Funcdef and Paramdef +output such that it can more easily be discerned where one ends +and the other begins. Closes #1213264. +Modified: fo/synop.xsl,1.18 - +Michael(tm) Smith + + +Made handling of +paramdef/parameter in FO output consistent with that in HTML and +manpages output. Closes #1213259. +Modified: fo/synop.xsl,1.17 - Michael(tm) +Smith + + +Made handling of +Refnamediv consistent with formatting in HTML +and manpages output; specifically, changed so that +Refname (comma-separated list of multiple instances +found) is used (instead of Refentrytitle as +previously), then em-dash, then the Refpurpose. Closes +#1212562. +Modified: fo/refentry.xsl,1.30 - Michael(tm) +Smith + + +Added output of +Releaseinfo to recto titlepage ("copyright" +page) for Book in FO output. This makes it consistent +with HTML output. Closes #1327034. Thanks to Paul DuBois for +reporting. +Modified: fo/titlepage.templates.xml,1.28 - Michael(tm) +Smith + + +Added condition for setting +block-progression-dimension.minimum on table-row, instead of +height, when fop1.extensions is +non-zero. For an explanation of the reason for the change, +see: http://wiki.apache.org/xmlgraphics-fop/Troubleshooting/CommonLogMessages +Modified: fo/pagesetup.xsl,1.59 +- Michael(tm) Smith + + +Added new +refclass.suppress param for suppressing display +of Refclass in HTML and FO output. Did not add it to +manpages because manpages stylesheet is currently just silently +ignoring Refclass anyway. Closes request +#1461065. Thanks to Davor Ocelic (docelic) for +reporting. +Modified: fo/refentry.xsl,1.29; html/refentry.xsl,1.23 - +Michael(tm) Smith + + +Add support for keep-together PI +to informal objects. +Modified: fo/formal.xsl,1.50 - Robert +Stayton + + +Add support for +fop1.extensions. +Modified: fo/formal.xsl,1.49; +fo/graphics.xsl,1.44; fo/table.xsl,1.47 - Robert +Stayton + + +Add support for fop1 +bookmarks. +Modified: fo/docbook.xsl,1.39 - Robert +Stayton + + +Add fop1.extentions parameter to +add support for fop development version. +Modified: fo/param.ent,1.92; +fo/param.xweb,1.105 - Robert Stayton + + +Start supporting fop development +version, which will become fop version 1. +Modified: fo/fop1.xsl,1.1 - +Robert Stayton + + +Add template for task +in mode="xref-to". +Modified: fo/xref.xsl,1.63; html/xref.xsl,1.57 - Robert +Stayton + + +table footnotes now +also get footnote.properties +attribute-set. +Modified: fo/footnote.xsl,1.22 - Robert +Stayton + + +Added index.separator +named template to compute the separator punctuation based on +locale. +Modified: fo/autoidx.xsl,1.36 - Robert Stayton + + +Added support for link, +olink, and xref within OO +Classsynopsis and children. (Because DocBook NG/5 +allows it). +Modified: fo/synop.xsl,1.15; html/synop.xsl,1.19 - Michael(tm) +Smith + + +Support date as an +inline +Modified: fo/inline.xsl,1.43; html/inline.xsl,1.46 - Norman +Walsh + + +Added new parameter +keep.relative.image.uris +Modified: fo/param.ent,1.91; +fo/param.xweb,1.104; html/param.ent,1.87; html/param.xweb,1.96; +params/keep.relative.image.uris.xml,1.1 - Norman +Walsh + + +Map Unicode space characters +U+2000-U+200A to fo:leaders. +Modified: fo/docbook.xsl,1.38; +fo/passivetex.xsl,1.4; fo/spaces.xsl,1.1 - Jirka +Kosek + + +Output a real em dash for em-dash +dingbat (instead of two hypens). +Modified: fo/fo.xsl,1.7 - Michael(tm) +Smith + + +Support default label +width parameters for itemized and ordered lists +Modified: fo/lists.xsl,1.64; +fo/param.ent,1.90; fo/param.xweb,1.103; +params/itemizedlist.label.width.xml,1.1; +params/orderedlist.label.width.xml,1.1 - Norman +Walsh + + +Generate localized +title for Refsynopsisdiv if no +appropriate Title descendant found in source. Closes +#1212398. This change makes behavior for the Synopsis +title consistent with the behavior of HTML and +manpages output. +Also, added +xsl:use-attribute-sets="normal.para.spacing" to +block generated for Cmdsynopsis output. Previously, +that block had no spacing at all specified, which resulted it +being crammed up to closely to the Synopsis +head. +Modified: fo/refentry.xsl,1.28; fo/synop.xsl,1.13 - Michael(tm) +Smith + + +Added parameters to support +localization of index +item punctuation. +Modified: fo/autoidx.xsl,1.35 - Robert +Stayton + + +Added +index.number.separator, +index.range.separator, +and index.term.separator parameters to +support localization of punctuation in index +entries. +Modified: fo/param.ent,1.89; fo/param.xweb,1.102 - Robert +Stayton + + +Added "Cross References" +section in HTML doc (for consistency with the FO +doc). Also, moved the existing FO "Cross +References" section to follow the "Linking" +section. +Modified: fo/param.xweb,1.101; html/param.xweb,1.95 - +Michael(tm) Smith + + +Added ID attribues to all +Reference elements (e.g., id="tables" for the doc for +section on Table params). So pages for +all subsections of ref docs now have stable filenames instead +of arbitrary generated filenames. +Modified: fo/param.xweb,1.100; +html/param.xweb,1.94 - Michael(tm) Smith + + +Added two new parameters for +handling of multi-term +varlistentry elements: +variablelist.term.break.after: +When the variablelist.term.break.after is +non-zero, it will generate a line break after each +term multi-term +varlistentry. +variablelist.term.separator: +When a varlistentry contains multiple term +elements, the string specified in the value of the +variablelist.term.separator parameter is +placed after each term except the last. The default +is ", " (a comma followed by a space). To suppress rendering of +the separator, set the value of +variablelist.term.separator to the empty +string (""). +These parameters are primarily intended to be +useful if you have multi-term varlistentries that have long +terms. +Closes #1306676. Thanks to Sam Steingold for +providing an example "lots of long terms" doc that demonstrated +the value of having these options. +Also, added +normalize-space() call to processing of each +term. +This change affects all output formats +(HTML, PDF, manpages). The default behavior should pretty much +remain the same as before, but it is possible (as always) that +the change may introduce some +new bugginess. +Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; +fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86; +html/param.xweb,1.93; manpages/lists.xsl,1.22; +manpages/param.ent,1.14; manpages/param.xweb,1.16; +params/variablelist.term.break.after.xml,1.1; +params/variablelist.term.separator.xml,1.1 - Michael(tm) +Smith + + +Add sidebar titlepage +placeholder attset for styles. +Modified: fo/titlepage.xsl,1.37 - Robert +Stayton + + +Add titlepage for +sidebar. +Modified: fo/titlepage.templates.xml,1.27 - Robert +Stayton + + +Implemented RFE +#1292615. +Added bunch of new parameters (attribute sets) +that affect list presentation: list.block.properties, +itemizedlist.properties, orderedlist.properties, +itemizedlist.label.properties and +orderedlist.label.properties. Default behaviour +of stylesheets has not been changed but further customizations will be +much more easier. +Modified: fo/lists.xsl,1.61; fo/param.ent,1.87; +fo/param.xweb,1.98; params/itemizedlist.label.properties.xml,1.1; +params/itemizedlist.properties.xml,1.1; +params/list.block.properties.xml,1.1; +params/orderedlist.label.properties.xml,1.1; +params/orderedlist.properties.xml,1.1 - Jirka +Kosek + + +Implemented RFE +#1242092. +You can enable crop marks in your document by +setting crop.marks=1 and xep.extensions=1. Appearance of crop +marks can be controlled by parameters +crop.mark.bleed (6pt), +crop.mark.offset (24pt) and +crop.mark.width (0.5pt). +Also there +is new named template called user-xep-pis. You can overwrite it in +order to produce some PIs that can control XEP as described in +http://www.renderx.com/reference.html#Output_Formats +Modified: fo/docbook.xsl,1.36; +fo/param.ent,1.86; fo/param.xweb,1.97; fo/xep.xsl,1.23; +params/crop.mark.bleed.xml,1.1; params/crop.mark.offset.xml,1.1; +params/crop.mark.width.xml,1.1; params/crop.marks.xml,1.1 - Jirka +Kosek + + + + + +HTML +The following changes have been made to the + html code + since the 1.69.1 release. + + +implemented +index.method parameter and three +methods. +Modified: html/autoidx.xsl,1.28 - Robert +Stayton + + +added index.method +parameter to support 3 indexing methods. +Modified: html/param.ent,1.94; +html/param.xweb,1.103 - Robert Stayton + + +Implemented feature request +#1072510 as a processing instruction to permit including external +HTML content into HTML output. +Modified: html/pi.xsl,1.9 - Robert +Stayton + + +Added new parameter +chunk.tocs.and.lots.has.title which +controls presence of title in a separate chunk with +ToC/LoT. Disabling title can be very useful if you are +generating frameset output (well, yes those frames, but some customers +really want them ;-). +Modified: html/chunk-code.xsl,1.15; +html/param.ent,1.93; html/param.xweb,1.102; +params/chunk.tocs.and.lots.has.title.xml,1.1 - Jirka +Kosek + + +Support dbhtml/dbfo start PI for +orderedlist numbering in both HTML and +FO +Modified: common/common.xsl,1.61; html/lists.xsl,1.50 - Norman +Walsh + + +Allow ToC without +title also for set and +book. +Modified: html/autotoc.xsl,1.37; html/division.xsl,1.12 - +Jirka Kosek + + +Implemented floats uniformly for +figure, example, equation +and informalfigure, informalexample, and +informalequation. +Modified: html/formal.xsl,1.22 - Robert +Stayton + + +Added the +autotoc.label.in.hyperlink param. +If the value +of autotoc.label.in.hyperlink is non-zero, labels +are included in hyperlinked titles in the TOC. If it +is instead zero, labels are still displayed prior to the +hyperlinked titles, but are not hyperlinked along with the +titles. +Closes patch #1065868. Thanks to anatoly techtonik +for the patch. +Modified: html/autotoc.xsl,1.36; html/param.ent,1.92; +html/param.xweb,1.101; params/autotoc.label.in.hyperlink.xml,1.1 - +Michael(tm) Smith + + +Added two new params: +html.head.legalnotice.link.types +and html.head.legalnotice.link.multiple. +If +the value of the generate.legalnotice.link is +non-zero, then the stylesheet generates (in the head +section of the HTML source) either a single HTML +link element or, if the value of +the html.head.legalnotice.link.multiple is +non-zero, one link element for each link +type specified. Each link has the +following attributes: + - a rel attribute whose value +is derived from the value of +html.head.legalnotice.link.types + - +an href attribute whose value is set to the URL of the file +containing the legalnotice + - a title +attribute whose value is set to the title of the +corresponding legalnotice (or a title +programatically determined by the stylesheet) +For +example: + <link rel="copyright" +href="ln-id2524073.html" title="Legal Notice"> +Closes +#1476450. Thanks to Sam Steingold. +Modified: html/chunk-common.xsl,1.45; +html/param.ent,1.91; html/param.xweb,1.100; +params/generate.legalnotice.link.xml,1.4; +params/html.head.legalnotice.link.multiple.xml,1.1; +params/html.head.legalnotice.link.types.xml,1.1 - Michael(tm) +Smith + + +Added refclass.suppress +param. +If the value of refclass.suppress is +non-zero, then display refclass contents is suppressed +in output. Affects HTML and FO output +only. +Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90; +html/param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm) +Smith + + +Improved support for +task subelements +Modified: fo/task.xsl,1.3; html/task.xsl,1.3 - +Jirka Kosek + + +Added new +refclass.suppress param for suppressing display +of Refclass in HTML and FO output. Did not add it to +manpages because manpages stylesheet is currently just silently +ignoring Refclass anyway. Closes request +#1461065. Thanks to Davor Ocelic (docelic) for +reporting. +Modified: fo/refentry.xsl,1.29; html/refentry.xsl,1.23 - +Michael(tm) Smith + + +Process alt text with +normalize-space(). Replace tab indents with +spaces. +Modified: html/graphics.xsl,1.57 - Robert +Stayton + + +Content of citation +element is automatically linked to the bibliographic entry +with the corresponding abbrev. +Modified: html/biblio.xsl,1.26; +html/inline.xsl,1.47; html/xref.xsl,1.58 - Jirka +Kosek + + +Add template for task +in mode="xref-to". +Modified: fo/xref.xsl,1.63; html/xref.xsl,1.57 - Robert +Stayton + + +Suppress ID warnings if the +.warnings parameter is 0 +Modified: html/html.xsl,1.17 - Norman +Walsh + + +Add support for floatstyle to +figure. +Modified: html/formal.xsl,1.21 - Robert +Stayton + + +Handling of xref to +area/areaset need support in extensions code also. I currently have no +time to touch extensions code, so code is here to be enabled when +extension is fixed also. +Modified: html/xref.xsl,1.56 - Jirka +Kosek + + +Added 3 parameters for overriding +gentext for index +punctuation. +Modified: html/param.ent,1.89; html/param.xweb,1.98 - Robert +Stayton + + +Added parameters to support +localization of index item punctuation. Added +index.separator named template to compute +the separator punctuation based on +locale. +Modified: html/autoidx.xsl,1.27 - Robert +Stayton + + +Added a <div +class="{$class}-contents"> wrapper around output of contents +of all formal objects. Also, added an optional <br +class="{class}-break"/> linebreak after all formal +objects. +WARNING: Because this change places an additional +DIV between the DIV wrapper for the equation and the +equation contents, it may break some existing CSS +stylesheets that have been created with the assumption that there +would never be an intervening DIV there. +The following is +an example of what Equation output looks like as a +result of the changes described above. + <div +class="equation"> <a name="three" +id="three"></a> + <p +class="title"><b>(1.3)</b></p> + +<div class="equation-contents"> <span +class="mathphrase">1+1=3</span> +</div> </div><br +class="equation-break"> +Rationale: These changes allow +CSS control of the placement of the formal-object +title relative to the formal-object +contents. For example, using the CSS "float" property +enables the title and contents to be rendered on the +same line. Example stylesheet: + .equation +{ margin-top: 20px; margin-bottom: 20px; } +.equation-contents { float: left; } + +.equation .title { margin-top: 0; +float: right; margin-right: 200px; } + +.equation .title b { font-weight: +normal; } + .equation-break { clear: both; +} +Note that the purpose of the ".equation-break" class is +to provide a way to clear off the floats. +If you want +to instead have the equation title rendered to +the left of the equation contents, you can do +something like this: + .equation { +margin-top: 20px; width: 300px; margin-bottom: 20px; +} .equation-contents { float: right; } + +.equation .title { margin-top: 0; +float: left; margin-right: 200px; } + +.equation .title b { font-weight: +normal; } + .equation-break { clear: both; +} +Modified: html/formal.xsl,1.20 - Michael(tm) Smith + + +Added a chunker.output.quiet +top-level parameter so that the chunker can be made quiet by +default +Modified: html/chunker.xsl,1.26 - Norman Walsh + + +Added support for link, +olink, and xref within OO +Classsynopsis and children. (Because DocBook NG/5 +allows it). +Modified: fo/synop.xsl,1.15; html/synop.xsl,1.19 - Michael(tm) +Smith + + +New parameter: +id.warnings. If non-zero, warnings are +generated for titled objects that don't have titles. True by default; +I wonder if this will be too aggressive? +Modified: html/biblio.xsl,1.25; +html/component.xsl,1.27; html/division.xsl,1.11; html/formal.xsl,1.19; +html/glossary.xsl,1.20; html/html.xsl,1.13; html/index.xsl,1.16; +html/param.ent,1.88; html/param.xweb,1.97; html/refentry.xsl,1.22; +html/sections.xsl,1.30; params/id.warnings.xml,1.1 - Norman +Walsh + + +If the +keep.relative.image.uris parameter is true, +don't use the absolute URI (as calculated from xml:base) in +the img src attribute, us the value the author +specified. Note that we still have to calculate the absolute +filename for use in the image intrinsics +extension. +Modified: html/graphics.xsl,1.56 - Norman +Walsh + + +Support date as an +inline +Modified: fo/inline.xsl,1.43; html/inline.xsl,1.46 - Norman +Walsh + + +Added new parameter +keep.relative.image.uris +Modified: fo/param.ent,1.91; +fo/param.xweb,1.104; html/param.ent,1.87; html/param.xweb,1.96; +params/keep.relative.image.uris.xml,1.1 - Norman +Walsh + + +Added two new parameters for +handling of multi-term +varlistentry elements: +variablelist.term.break.after: +When the variablelist.term.break.after is +non-zero, it will generate a line break after each +term multi-term +varlistentry. +variablelist.term.separator: +When a varlistentry contains multiple term +elements, the string specified in the value of the +variablelist.term.separator parameter is +placed after each term except the last. The default +is ", " (a comma followed by a space). To suppress rendering of +the separator, set the value of +variablelist.term.separator to the empty +string (""). +These parameters are primarily intended to be +useful if you have multi-term varlistentries that have long +terms. +Closes #1306676. Thanks to Sam Steingold for +providing an example "lots of long terms" doc that demonstrated +the value of having these options. +Also, added +normalize-space() call to processing of each +term. +This change affects all output formats +(HTML, PDF, manpages). The default behavior should pretty much +remain the same as before, but it is possible (as always) that +the change may introduce some +new bugginess. +Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; +fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86; +html/param.xweb,1.93; manpages/lists.xsl,1.22; +manpages/param.ent,1.14; manpages/param.xweb,1.16; +params/variablelist.term.break.after.xml,1.1; +params/variablelist.term.separator.xml,1.1 - Michael(tm) +Smith + + +Added "wrapper-name" param to +inline.charseq named template, enabling it to output inlines +other than just "span". Acronym and Abbrev +templates now use inline.charseq to output HTML +"acronym" and "abbr" elements (instead of +"span"). Closes #1305468. Thanks to Sam Steingold for suggesting +the change. +Modified: html/inline.xsl,1.45 - Michael(tm) +Smith + + + + + +Manpages +The following changes have been made to the + manpages code + since the 1.69.1 release. + + +Added the following +params: + - man.indent.width (string-valued) - +man.indent.refsect (boolean) - man.indent.blurbs (boolean) +- man.indent.lists (boolean) - man.indent.verbatims +(boolean) +Note that in earlier snapshots, man.indent.width +was named man.indentation.default.value and the boolean params +had names like man.indentation.*.adjust. Also the +man.indent.blurbs param was called man.indentation.authors.adjust +(or something). +The behavior now is: If the value of a +particular man.indent.* boolean param is non-zero, the +corresponding contents (refsect*, list items, +authorblurb/personblurb, vervatims) are displayed with a left +margin indented by a width equal to the value +of man.indent.width. +Modified: params/man.indent.blurbs.xml,1.1; +manpages/docbook.xsl,1.74; manpages/info.xsl,1.20; +manpages/lists.xsl,1.30; manpages/other.xsl,1.20; +manpages/param.ent,1.22; manpages/param.xweb,1.24; +manpages/refentry.xsl,1.14; params/man.indent.lists.xml,1.1; +params/man.indent.refsect.xml,1.1; +params/man.indent.verbatims.xml,1.1; params/man.indent.width.xml,1.1 - +Michael(tm) Smith + + +Added +man.table.footnotes.divider param. +In each +table that contains footenotes, the string specified +by the man.table.footnotes.divider parameter is output +before the list of footnotes for the +table. +Modified: manpages/docbook.xsl,1.73; +manpages/links.xsl,1.6; manpages/param.ent,1.21; +manpages/param.xweb,1.23; params/man.table.footnotes.divider.xml,1.1 - +Michael(tm) Smith + + +Added the +man.output.in.separate.dir, +man.output.base.dir, +and man.output.subdirs.enabled parameters. +The +man.output.base.dir parameter specifies the +base directory into which man-page files are +output. The man.output.subdirs.enabled parameter controls whether +the files are output in subdirectories within the base +directory. +The values of the +man.output.base.dir +and man.output.subdirs.enabled parameters are used only if the +value of man.output.in.separate.dir parameter is non-zero. If the +value of man.output.in.separate.dir is zero, man-page files are +not output in a separate +directory. +Modified: manpages/docbook.xsl,1.72; manpages/param.ent,1.20; +manpages/param.xweb,1.22; params/man.output.base.dir.xml,1.1; +params/man.output.in.separate.dir.xml,1.1; +params/man.output.subdirs.enabled.xml,1.1 - Michael(tm) +Smith + + +Added +man.font.table.headings and +man.font.table.title params, for +controlling font in table headings and +titles. +Modified: manpages/docbook.xsl,1.71; manpages/param.ent,1.19; +manpages/param.xweb,1.21; params/man.font.table.headings.xml,1.1; +params/man.font.table.title.xml,1.1 - Michael(tm) +Smith + + +Added +man.font.funcsynopsisinfo and +man.font.funcprototype params, for specifying the roff +font (for example, BI, B, I) for funcsynopsisinfo and +funcprototype output. +Modified: manpages/block.xsl,1.19; +manpages/docbook.xsl,1.69; manpages/param.ent,1.18; +manpages/param.xweb,1.20; manpages/synop.xsl,1.29; +manpages/table.xsl,1.21; params/man.font.funcprototype.xml,1.1; +params/man.font.funcsynopsisinfo.xml,1.1 - Michael(tm) +Smith + + +Added +man.segtitle.suppress param. +If the value of +man.segtitle.suppress is non-zero, then display +of segtitle contents is suppressed in +output. +Modified: manpages/docbook.xsl,1.68; manpages/param.ent,1.17; +manpages/param.xweb,1.19; params/man.segtitle.suppress.xml,1.1 - +Michael(tm) Smith + + +Added +man.output.manifest.enabled and +man.output.manifest.filename params. +If +man.output.manifest.enabled is non-zero, a list +of filenames for man pages generated by the stylesheet +transformation is written to the file named by +man.output.manifest.filename +Modified: manpages/docbook.xsl,1.67; +manpages/other.xsl,1.19; manpages/param.ent,1.16; +manpages/param.xweb,1.18; params/man.output.manifest.enabled.xml,1.1; +params/man.output.manifest.filename.xml,1.1; +tools/make/Makefile.DocBook,1.4 - Michael(tm) +Smith + + +Added +refentry.meta.get.quietly param. +If zero (the +default), notes and warnings about "missing" markup are generated +during gathering of refentry metadata. If +non-zero, the metadata is gathered "quietly" -- that is, the +notes and warnings are suppressed. +NOTE: If you are +processing a large amount of refentry content, you +may be able to speed up processing significantly by setting a +non-zero value for +refentry.meta.get.quietly. +Modified: common/refentry.xsl,1.17; +manpages/param.ent,1.15; manpages/param.xweb,1.17; +params/refentry.meta.get.quietly.xml,1.1 - Michael(tm) +Smith + + +Changed names of all boolean +indentation params to man.indent.* Also discarded individual +man.indent.*.value params and switched to just using a common +man.indent.width param (3n by default). +Modified: manpages/docbook.xsl,1.66; +manpages/info.xsl,1.19; manpages/lists.xsl,1.29; +manpages/other.xsl,1.18; manpages/refentry.xsl,1.13 - Michael(tm) +Smith + + +Added boolean +man.output.in.separate.dir param, to control whether or not man +files are output in separate directory. +Modified: manpages/docbook.xsl,1.65; +manpages/utility.xsl,1.14 - Michael(tm) Smith + + +Added options for controlling +indentation of verbatim output. Controlled through the +man.indentation.verbatims.adjust +and man.indentation.verbatims.value params. Closes +#1242997 +Modified: manpages/block.xsl,1.15; manpages/docbook.xsl,1.64 - +Michael(tm) Smith + + +Added options for controlling +indentation in lists and in *blurb output in the AUTHORS +section. Controlled through +the man.indentation.lists.adjust, +man.indentation.lists.value, man.indentation.authors.adjust, and +man.indentation.authors.value parameters. Default is 3 characters +(instead of the roff default of 8 characters). Closes +#1449369. +Also, removed the indent that was being set on +informalexample outuput. I will instead add an option +for indenting verbatims, which I think is what the +informalexample indent was intended +for originally. +Modified: manpages/block.xsl,1.14; +manpages/docbook.xsl,1.63; manpages/info.xsl,1.18; +manpages/lists.xsl,1.28 - Michael(tm) Smith + + +Changed line-spacing call before +synopfragment to use ".sp -1n" ("n" units specified) +instead of plain ".sp -1" +Modified: manpages/synop.xsl,1.28 - Michael(tm) +Smith + + +Added support for writing man +files into a specific output directory and into appropriate +subdirectories within that output directory. Controlled through +the man.base.dir parameter (similar to the +base.dir support in the HTML stylesheet) and +the man.subdirs.enabled parameter, which automatically determines +the name of an appropriate subdir (for example, man/man7, +man/man1, etc.) based on the section number/manvolnum +of the source Refentry. +Closes #1255036 and +#1170317. Thanks to Denis Bradford for the original feature +request, and to Costin Stroie for submitting a patch that was +very helpful in implementing the +support. +Modified: manpages/docbook.xsl,1.62; manpages/utility.xsl,1.13 - +Michael(tm) Smith + + +Refined XPath statements and +notification messages for refentry metadata +handling. +Modified: common/common.xsl,1.59; common/refentry.xsl,1.14; +manpages/docbook.xsl,1.61; manpages/other.xsl,1.17 - Michael(tm) +Smith + + +Added support for +copyright and legalnotice. The manpages +stylesheets now output a COPYRIGHT section, +after the AUTHORS section, if a copyright +or legalnotice is found in the source. The +section contains the copyright contents followed +by the legalnotice contents. Closes +#1450209. +Modified: manpages/docbook.xsl,1.59; manpages/info.xsl,1.17 - +Michael(tm) Smith + + +Drastically reworked all of the +XPath expressions used in refentry metadata gathering +-- completely removed $parentinfo and turned $info into a set of +nodes that includes the *info contents of the Refentry +plus the *info contents all all of its ancestor elements. The +basic XPath expression now used throughout is (using the example +of checking for a date): + +(($info[//date])[last()]/date)[1]. +That selects the "last" +*info/date date in document order -- that is, the one +eitther on the Refentry itself or on the +closest ancestor to the Refentry. +It's +likely this change may break some things; may need to pick up +some pieces later. +Also, changed the default value for the +man.th.extra2.max.length from 40 to +30. +Modified: common/common.xsl,1.58; common/refentry.xsl,1.7; +params/man.th.extra2.max.length.xml,1.2; +params/refentry.date.profile.xml,1.2; +params/refentry.manual.profile.xml,1.2; +params/refentry.source.name.profile.xml,1.2; +params/refentry.version.profile.xml,1.2; manpages/docbook.xsl,1.58; +manpages/other.xsl,1.15 - Michael(tm) Smith + + +Added support for DocBook 5 +namespace-stripping in manpages stylesheet. Closes request +#1210692. +Modified: common/common.xsl,1.56; manpages/docbook.xsl,1.57 - +Michael(tm) Smith + + +Fixed handling of table +footnotes. With this checkin, the table support in the +manpages stylesheet is now basically feature complete. So this +change closes request #619532, "No support for tables" -- the +oldest currently open manpages feature request, submitted by Ben +Secrest (blsecres) on 2002-10-07. Congratulations to me [patting +myself on the back]. +Modified: manpages/block.xsl,1.11; +manpages/docbook.xsl,1.55; manpages/table.xsl,1.15 - Michael(tm) +Smith + + +Added handling for +table titles. Also fixed handling of nested tables; +nest tables are now "extracted" and displayed just after their +parent tables. +Modified: manpages/docbook.xsl,1.54; manpages/table.xsl,1.14 +- Michael(tm) Smith + + +Added option for turning off bold +formatting in Funcsynopsis. Boldface formatting in +function synopsis is mandated in the +man(7) man page and is used almost universally in existing man +pages. Despite that, it really does look like crap to have an +entire Funcsynopsis output in bold, so I added params +for turning off the bold formatting and/or replacing it with a +different roff special font (e.g., "RI" for alternating +roman/italic instead of the default "BI" for alternating +bold/italic). The new params +are "man.funcprototype.font" and +"man.funcsynopsisinfo.font". To be documented +later. +Closes #1452247. Thanks to Joe Orton for the feature +request. +Modified: params/man.string.subst.map.xml,1.16; +manpages/block.xsl,1.10; manpages/docbook.xsl,1.51; +manpages/inline.xsl,1.16; manpages/synop.xsl,1.27 - Michael(tm) +Smith + + +Use AUTHORS instead of +AUTHOR if we have multiple people to attribute. Also, +fixed checking such that we generate +author section even if we don't have an +author (as long as there is at least one other +person/entity we can put in the +section). Also adjusted assembly of content for +Author metainfo field such that we now not only use +author, but try to find a "best match" if we can't +find an author name to put there. +Closes +#1233592. Thanks to Sam Steingold for the +request. +Modified: manpages/info.xsl,1.12 - Michael(tm) +Smith + + +Changes for request #1243027, +"Impove handling of AUTHOR section." This +adds support for Collab, Corpauthor, Corpcredt, +Orgname, Publishername, and +Publisher. Also adds support for output +of Affiliation and its children, and support for using +gentext strings for auto-attributing roles (Author, +Editor, Publisher, Translator, etc.). Also +did a lot of code cleanup and modularization of all the +AUTHOR handling code. And fixed a bug that was causing +Author info to not be picked up correctly +for metainfo comment we embed in man-page +source. +Modified: manpages/info.xsl,1.11 - Michael(tm) +Smith + + +Support bold output for +"emphasis remap='B'". (because Eric Raymond's +doclifter(1) tool converts groff source marked up with ".B" +request or "\fB" escapes to DocBook "emphasis +remap='B'".) +Modified: manpages/inline.xsl,1.14 - Michael(tm) +Smith + + +Added support for +Segmentedlist. Details: Output is tabular, with no +option for "list" type output. Output for Segtitle +elements can be supressed by +setting man.segtitle.suppress. If Segtitle +content is output, it is rendered in italic type (not bold +because not all terminals support bold and so italic ensures the +stand out on those terminals). Extra space (.sp line) at end of +table code ensures that it gets handled correctly in +the case where its source is the child of a Para. +Closes feature-request #1400097. Thanks to Daniel Leidert for the +patch and push, and to Alastair Rankine for filing the original +feature request. +Modified: manpages/lists.xsl,1.23; +manpages/utility.xsl,1.10 - Michael(tm) Smith + + +Improved handling or +Author/Editor/Othercredit. +Reworked content of +(non-visible) comment added at top of each page (metadata +stuff). +Added support for generating a +manifest file (useful for cleaning up +after builds, etc.) +Modified: manpages/docbook.xsl,1.46; +manpages/info.xsl,1.9; manpages/other.xsl,1.12; +manpages/utility.xsl,1.6 - Michael(tm) Smith + + +Added two new parameters for +handling of multi-term +varlistentry elements: +variablelist.term.break.after: +When the variablelist.term.break.after is +non-zero, it will generate a line break after each +term multi-term +varlistentry. +variablelist.term.separator: +When a varlistentry contains multiple term +elements, the string specified in the value of the +variablelist.term.separator parameter is +placed after each term except the last. The default +is ", " (a comma followed by a space). To suppress rendering of +the separator, set the value of +variablelist.term.separator to the empty +string (""). +These parameters are primarily intended to be +useful if you have multi-term varlistentries that have long +terms. +Closes #1306676. Thanks to Sam Steingold for +providing an example "lots of long terms" doc that demonstrated +the value of having these options. +Also, added +normalize-space() call to processing of each +term. +This change affects all output formats +(HTML, PDF, manpages). The default behavior should pretty much +remain the same as before, but it is possible (as always) that +the change may introduce some +new bugginess. +Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; +fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86; +html/param.xweb,1.93; manpages/lists.xsl,1.22; +manpages/param.ent,1.14; manpages/param.xweb,1.16; +params/variablelist.term.break.after.xml,1.1; +params/variablelist.term.separator.xml,1.1 - Michael(tm) +Smith + + + + + +Params +The following changes have been made to the + params code + since the 1.69.1 release. + + +New parameters to set +header/footer table minimum +height. +Modified: params/footer.table.height.xml,1.1; +params/header.table.height.xml,1.1 - Robert +Stayton + + +Support multiple indexing methods +for different languages. +Modified: params/index.method.xml,1.1 - Robert +Stayton + + +Remove qandaset and +qandadiv from generate.toc for fo +output because formerly it wasn't working, but now it is and +the default behavior should stay the +same. +Modified: params/generate.toc.xml,1.8 - Robert +Stayton + + +add support for page number +references to link element +too. +Modified: params/insert.link.page.number.xml,1.1 - Robert +Stayton + + +Add support for more characters to +hyphen on when ulink.hyphenate is turned +on. +Modified: params/ulink.hyphenate.chars.xml,1.1; +params/ulink.hyphenate.xml,1.3 - Robert Stayton + + +New attribute-set to format +biblioentry and +bibliomixed. +Modified: params/biblioentry.properties.xml,1.1 - +Robert Stayton + + +Added new parameter +chunk.tocs.and.lots.has.title which +controls presence of title in a separate chunk with +ToC/LoT. Disabling title can be very useful if you are +generating frameset output (well, yes those frames, but some customers +really want them ;-). +Modified: html/chunk-code.xsl,1.15; +html/param.ent,1.93; html/param.xweb,1.102; +params/chunk.tocs.and.lots.has.title.xml,1.1 - Jirka +Kosek + + +Added new attribute set +toc.line.properties for controlling appearance of lines in +ToC/LoT +Modified: params/toc.line.properties.xml,1.1 - Jirka +Kosek + + +Allow table footnotes +to have different properties from regular +footnotes. +Modified: params/table.footnote.properties.xml,1.1 - Robert +Stayton + + +Set properties for pgwide="1" +objects. +Modified: params/pgwide.properties.xml,1.1 - Robert +Stayton + + +Added the +autotoc.label.in.hyperlink param. +If the value +of autotoc.label.in.hyperlink is non-zero, labels +are included in hyperlinked titles in the TOC. If it +is instead zero, labels are still displayed prior to the +hyperlinked titles, but are not hyperlinked along with the +titles. +Closes patch #1065868. Thanks to anatoly techtonik +for the patch. +Modified: html/autotoc.xsl,1.36; html/param.ent,1.92; +html/param.xweb,1.101; params/autotoc.label.in.hyperlink.xml,1.1 - +Michael(tm) Smith + + +Added two new params: +html.head.legalnotice.link.types +and html.head.legalnotice.link.multiple. +If +the value of the generate.legalnotice.link is +non-zero, then the stylesheet generates (in the head +section of the HTML source) either a single HTML +link element or, if the value of +the html.head.legalnotice.link.multiple is +non-zero, one link element for each link +type specified. Each link has the +following attributes: + - a rel attribute whose value +is derived from the value of +html.head.legalnotice.link.types + - +an href attribute whose value is set to the URL of the file +containing the legalnotice + - a title +attribute whose value is set to the title of the +corresponding legalnotice (or a title +programatically determined by the stylesheet) +For +example: + <link rel="copyright" +href="ln-id2524073.html" title="Legal Notice"> +Closes +#1476450. Thanks to Sam Steingold. +Modified: html/chunk-common.xsl,1.45; +html/param.ent,1.91; html/param.xweb,1.100; +params/generate.legalnotice.link.xml,1.4; +params/html.head.legalnotice.link.multiple.xml,1.1; +params/html.head.legalnotice.link.types.xml,1.1 - Michael(tm) +Smith + + +Added the following +params: + - man.indent.width (string-valued) - +man.indent.refsect (boolean) - man.indent.blurbs (boolean) +- man.indent.lists (boolean) - man.indent.verbatims +(boolean) +Note that in earlier snapshots, man.indent.width +was named man.indentation.default.value and the boolean params +had names like man.indentation.*.adjust. Also the +man.indent.blurbs param was called man.indentation.authors.adjust +(or something). +The behavior now is: If the value of a +particular man.indent.* boolean param is non-zero, the +corresponding contents (refsect*, list items, +authorblurb/personblurb, vervatims) are displayed with a left +margin indented by a width equal to the value +of man.indent.width. +Modified: params/man.indent.blurbs.xml,1.1; +manpages/docbook.xsl,1.74; manpages/info.xsl,1.20; +manpages/lists.xsl,1.30; manpages/other.xsl,1.20; +manpages/param.ent,1.22; manpages/param.xweb,1.24; +manpages/refentry.xsl,1.14; params/man.indent.lists.xml,1.1; +params/man.indent.refsect.xml,1.1; +params/man.indent.verbatims.xml,1.1; params/man.indent.width.xml,1.1 - +Michael(tm) Smith + + +Added +man.table.footnotes.divider param. +In each +table that contains footenotes, the string specified +by the man.table.footnotes.divider parameter is output +before the list of footnotes for the +table. +Modified: manpages/docbook.xsl,1.73; +manpages/links.xsl,1.6; manpages/param.ent,1.21; +manpages/param.xweb,1.23; params/man.table.footnotes.divider.xml,1.1 - +Michael(tm) Smith + + +Added the +man.output.in.separate.dir, +man.output.base.dir, +and man.output.subdirs.enabled parameters. +The +man.output.base.dir parameter specifies the +base directory into which man-page files are +output. The man.output.subdirs.enabled parameter controls whether +the files are output in subdirectories within the base +directory. +The values of the +man.output.base.dir +and man.output.subdirs.enabled parameters are used only if the +value of man.output.in.separate.dir parameter is non-zero. If the +value of man.output.in.separate.dir is zero, man-page files are +not output in a separate +directory. +Modified: manpages/docbook.xsl,1.72; manpages/param.ent,1.20; +manpages/param.xweb,1.22; params/man.output.base.dir.xml,1.1; +params/man.output.in.separate.dir.xml,1.1; +params/man.output.subdirs.enabled.xml,1.1 - Michael(tm) +Smith + + +Added +man.font.table.headings and +man.font.table.title params, for +controlling font in table headings and +titles. +Modified: manpages/docbook.xsl,1.71; manpages/param.ent,1.19; +manpages/param.xweb,1.21; params/man.font.table.headings.xml,1.1; +params/man.font.table.title.xml,1.1 - Michael(tm) +Smith + + +Added +man.font.funcsynopsisinfo and +man.font.funcprototype params, for specifying the roff +font (for example, BI, B, I) for funcsynopsisinfo and +funcprototype output. +Modified: manpages/block.xsl,1.19; +manpages/docbook.xsl,1.69; manpages/param.ent,1.18; +manpages/param.xweb,1.20; manpages/synop.xsl,1.29; +manpages/table.xsl,1.21; params/man.font.funcprototype.xml,1.1; +params/man.font.funcsynopsisinfo.xml,1.1 - Michael(tm) +Smith + + +Changed to select="0" in +refclass.suppress (instead of +..>0</..) +Modified: params/refclass.suppress.xml,1.3 - Michael(tm) +Smith + + +Added +man.segtitle.suppress param. +If the value of +man.segtitle.suppress is non-zero, then display +of segtitle contents is suppressed in +output. +Modified: manpages/docbook.xsl,1.68; manpages/param.ent,1.17; +manpages/param.xweb,1.19; params/man.segtitle.suppress.xml,1.1 - +Michael(tm) Smith + + +Added +man.output.manifest.enabled and +man.output.manifest.filename params. +If +man.output.manifest.enabled is non-zero, a list +of filenames for man pages generated by the stylesheet +transformation is written to the file named by +man.output.manifest.filename +Modified: manpages/docbook.xsl,1.67; +manpages/other.xsl,1.19; manpages/param.ent,1.16; +manpages/param.xweb,1.18; params/man.output.manifest.enabled.xml,1.1; +params/man.output.manifest.filename.xml,1.1; +tools/make/Makefile.DocBook,1.4 - Michael(tm) +Smith + + +Added refclass.suppress +param. +If the value of refclass.suppress is +non-zero, then display refclass contents is suppressed +in output. Affects HTML and FO output +only. +Modified: fo/param.ent,1.93; fo/param.xweb,1.106; html/param.ent,1.90; +html/param.xweb,1.99; params/refclass.suppress.xml,1.1 - Michael(tm) +Smith + + +Added +refentry.meta.get.quietly param. +If zero (the +default), notes and warnings about "missing" markup are generated +during gathering of refentry metadata. If +non-zero, the metadata is gathered "quietly" -- that is, the +notes and warnings are suppressed. +NOTE: If you are +processing a large amount of refentry content, you +may be able to speed up processing significantly by setting a +non-zero value for +refentry.meta.get.quietly. +Modified: common/refentry.xsl,1.17; +manpages/param.ent,1.15; manpages/param.xweb,1.17; +params/refentry.meta.get.quietly.xml,1.1 - Michael(tm) +Smith + + +Added support for "software" and +"sectdesc" class values on refmiscinfo; "software" is +treated identically to "source", and "setdesc" is treated +identically to "manual". +Modified: common/refentry.xsl,1.10; +params/man.th.extra2.max.length.xml,1.3; +params/refentry.source.name.profile.xml,1.4 - Michael(tm) +Smith + + +Drastically reworked all of the +XPath expressions used in refentry metadata gathering +-- completely removed $parentinfo and turned $info into a set of +nodes that includes the *info contents of the Refentry +plus the *info contents all all of its ancestor elements. The +basic XPath expression now used throughout is (using the example +of checking for a date): + +(($info[//date])[last()]/date)[1]. +That selects the "last" +*info/date date in document order -- that is, the one +eitther on the Refentry itself or on the +closest ancestor to the Refentry. +It's +likely this change may break some things; may need to pick up +some pieces later. +Also, changed the default value for the +man.th.extra2.max.length from 40 to +30. +Modified: common/common.xsl,1.58; common/refentry.xsl,1.7; +params/man.th.extra2.max.length.xml,1.2; +params/refentry.date.profile.xml,1.2; +params/refentry.manual.profile.xml,1.2; +params/refentry.source.name.profile.xml,1.2; +params/refentry.version.profile.xml,1.2; manpages/docbook.xsl,1.58; +manpages/other.xsl,1.15 - Michael(tm) Smith + + +Added option for turning off bold +formatting in Funcsynopsis. Boldface formatting in +function synopsis is mandated in the +man(7) man page and is used almost universally in existing man +pages. Despite that, it really does look like crap to have an +entire Funcsynopsis output in bold, so I added params +for turning off the bold formatting and/or replacing it with a +different roff special font (e.g., "RI" for alternating +roman/italic instead of the default "BI" for alternating +bold/italic). The new params +are "man.funcprototype.font" and +"man.funcsynopsisinfo.font". To be documented +later. +Closes #1452247. Thanks to Joe Orton for the feature +request. +Modified: params/man.string.subst.map.xml,1.16; +manpages/block.xsl,1.10; manpages/docbook.xsl,1.51; +manpages/inline.xsl,1.16; manpages/synop.xsl,1.27 - Michael(tm) +Smith + + +fop.extensions now only +for FOP version 0.20.5 and earlier. +Modified: params/fop.extensions.xml,1.4 +- Robert Stayton + + +Support for fop1 different from +fop 0.20.5 and earlier. +Modified: params/fop1.extensions.xml,1.1 - Robert +Stayton + + +Reset default value to empty +string so template uses gentext first, then the parameter value +if not empty. +Modified: params/index.number.separator.xml,1.2; +params/index.range.separator.xml,1.2; +params/index.term.separator.xml,1.2 - Robert +Stayton + + +New parameter: +id.warnings. If non-zero, warnings are +generated for titled objects that don't have titles. True by default; +I wonder if this will be too aggressive? +Modified: html/biblio.xsl,1.25; +html/component.xsl,1.27; html/division.xsl,1.11; html/formal.xsl,1.19; +html/glossary.xsl,1.20; html/html.xsl,1.13; html/index.xsl,1.16; +html/param.ent,1.88; html/param.xweb,1.97; html/refentry.xsl,1.22; +html/sections.xsl,1.30; params/id.warnings.xml,1.1 - Norman +Walsh + + +Added new parameter +keep.relative.image.uris +Modified: fo/param.ent,1.91; +fo/param.xweb,1.104; html/param.ent,1.87; html/param.xweb,1.96; +params/keep.relative.image.uris.xml,1.1 - Norman +Walsh + + +Support default label +width parameters for itemized and ordered lists +Modified: fo/lists.xsl,1.64; +fo/param.ent,1.90; fo/param.xweb,1.103; +params/itemizedlist.label.width.xml,1.1; +params/orderedlist.label.width.xml,1.1 - Norman +Walsh + + +Added parameters to localize +punctuation in indexes. +Modified: params/index.number.separator.xml,1.1; +params/index.range.separator.xml,1.1; +params/index.term.separator.xml,1.1 - Robert +Stayton + + +Added two new parameters for +handling of multi-term +varlistentry elements: +variablelist.term.break.after: +When the variablelist.term.break.after is +non-zero, it will generate a line break after each +term multi-term +varlistentry. +variablelist.term.separator: +When a varlistentry contains multiple term +elements, the string specified in the value of the +variablelist.term.separator parameter is +placed after each term except the last. The default +is ", " (a comma followed by a space). To suppress rendering of +the separator, set the value of +variablelist.term.separator to the empty +string (""). +These parameters are primarily intended to be +useful if you have multi-term varlistentries that have long +terms. +Closes #1306676. Thanks to Sam Steingold for +providing an example "lots of long terms" doc that demonstrated +the value of having these options. +Also, added +normalize-space() call to processing of each +term. +This change affects all output formats +(HTML, PDF, manpages). The default behavior should pretty much +remain the same as before, but it is possible (as always) that +the change may introduce some +new bugginess. +Modified: fo/lists.xsl,1.62; fo/param.ent,1.88; +fo/param.xweb,1.99; html/lists.xsl,1.48; html/param.ent,1.86; +html/param.xweb,1.93; manpages/lists.xsl,1.22; +manpages/param.ent,1.14; manpages/param.xweb,1.16; +params/variablelist.term.break.after.xml,1.1; +params/variablelist.term.separator.xml,1.1 - Michael(tm) +Smith + + +Convert 'no' to string in default +value. +Modified: params/olink.doctitle.xml,1.4 - Robert +Stayton + + +Implemented RFE +#1292615. +Added bunch of new parameters (attribute sets) +that affect list presentation: list.block.properties, +itemizedlist.properties, orderedlist.properties, +itemizedlist.label.properties and +orderedlist.label.properties. Default behaviour +of stylesheets has not been changed but further customizations will be +much more easier. +Modified: fo/lists.xsl,1.61; fo/param.ent,1.87; +fo/param.xweb,1.98; params/itemizedlist.label.properties.xml,1.1; +params/itemizedlist.properties.xml,1.1; +params/list.block.properties.xml,1.1; +params/orderedlist.label.properties.xml,1.1; +params/orderedlist.properties.xml,1.1 - Jirka +Kosek + + +Implemented RFE +#1242092. +You can enable crop marks in your document by +setting crop.marks=1 and xep.extensions=1. Appearance of crop +marks can be controlled by parameters +crop.mark.bleed (6pt), +crop.mark.offset (24pt) and +crop.mark.width (0.5pt). +Also there +is new named template called user-xep-pis. You can overwrite it in +order to produce some PIs that can control XEP as described in +http://www.renderx.com/reference.html#Output_Formats +Modified: fo/docbook.xsl,1.36; +fo/param.ent,1.86; fo/param.xweb,1.97; fo/xep.xsl,1.23; +params/crop.mark.bleed.xml,1.1; params/crop.mark.offset.xml,1.1; +params/crop.mark.width.xml,1.1; params/crop.marks.xml,1.1 - Jirka +Kosek + + +Changed short descriptions in doc +for *autolabel* params to match new autolabel +behavior. +Modified: params/appendix.autolabel.xml,1.5; +params/chapter.autolabel.xml,1.4; params/part.autolabel.xml,1.5; +params/preface.autolabel.xml,1.4 - Michael(tm) +Smith + + + + + +Profiling +The following changes have been made to the + profiling code + since the 1.69.1 release. + + +Profiling now works together with +namespace stripping (V5 documents). Namespace striping should work +with all stylesheets named profile-, even if they are not supporting +namespace stripping in a non-profiling +variant. +Modified: profiling/profile-mode.xsl,1.4; +profiling/xsl2profile.xsl,1.7 - Jirka Kosek + + +Moved profiling stage out of +templates. This make possible to reuse profiled content by several +templates and still maintaing node indentity (needed for example for +HTML Help where content is processed multiple times). +I +don't know why this was not on the top level before. Maybe some XSLT +processors choked on it. I hope this will be OK +now. +Modified: profiling/xsl2profile.xsl,1.5 - Jirka +Kosek + + + + + +Tools +The following changes have been made to the + tools code + since the 1.69.1 release. + + +Moved Makefile.DocBook from +contrib module to xsl +module. +Modified: tools/make/Makefile.DocBook,1.1 - Michael(tm) +Smith + + + + + +WordML +The following changes have been made to the + wordml code + since the 1.69.1 release. + + +added contrib element, +better handling of default paragraph +style +Modified: wordml/pages-normalise.xsl,1.6; wordml/supported.xml,1.2; +wordml/wordml-final.xsl,1.14 - Steve Ball + + +added +bridgehead +Modified: wordml/docbook-pages.xsl,1.6; +wordml/docbook.xsl,1.17; wordml/pages-normalise.xsl,1.5; +wordml/template-pages.xml,1.7; wordml/template.dot,1.4; +wordml/template.xml,1.14; wordml/wordml-final.xsl,1.13 - Steve +Ball + + +added blocks stylesheet to support +bibliographies, glossaries and qandasets +Modified: wordml/Makefile,1.4; +wordml/README,1.3; wordml/blocks-spec.xml,1.1; +wordml/docbook-pages.xsl,1.5; wordml/docbook.xsl,1.16; +wordml/pages-normalise.xsl,1.4; wordml/sections-spec.xml,1.3; +wordml/specifications.xml,1.13; wordml/template-pages.xml,1.6; +wordml/template.dot,1.3; wordml/template.xml,1.13; +wordml/wordml-blocks.xsl,1.1; wordml/wordml-final.xsl,1.12; +wordml/wordml-sections.xsl,1.3 - Steve Ball + + +added mediaobject +caption +Modified: wordml/docbook-pages.xsl,1.4; +wordml/docbook.xsl,1.15; wordml/specifications.xml,1.12; +wordml/template-pages.xml,1.5; wordml/template.dot,1.2; +wordml/template.xml,1.12; wordml/wordml-final.xsl,1.11 - Steve +Ball + + +added +callouts +Modified: wordml/docbook-pages.xsl,1.3; wordml/docbook.xsl,1.14; +wordml/pages-normalise.xsl,1.3; wordml/specifications.xml,1.11; +wordml/template-pages.xml,1.4; wordml/wordml-final.xsl,1.10 - Steve +Ball + + +added Word template +file +Modified: wordml/template.dot,1.1 - Steve Ball + + +added abstract, fixed +itemizedlist, ulink +Modified: wordml/specifications.xml,1.10; +wordml/wordml-final.xsl,1.9 - Steve Ball + + +fixed Makefile added many +features to Pages support added revhistory, inlines, +highlights, abstract +Modified: wordml/Makefile,1.2; +wordml/docbook-pages.xsl,1.2; wordml/pages-normalise.xsl,1.2; +wordml/sections-spec.xml,1.2; wordml/specifications.xml,1.9; +wordml/template-pages.xml,1.3; wordml/template.xml,1.11; +wordml/wordml-final.xsl,1.8; wordml/wordml-sections.xsl,1.2 - Steve +Ball + + +fixed handling linebreaks when +generating WordML added Apple Pages +support +Modified: wordml/docbook.xsl,1.13; wordml/template-pages.xml,1.2 - +Steve Ball + + + + + + + Release 1.69.1 + This release is a minor bug-fix update to the 1.69.0 + release. Along with bug fixes, it includes one + configuration-parameter change: The default value of the + annotation.support parameter is now + 0 (off). The reason for that change is that + there have been reports that annotation handling is + causing a significant performance degradation in processing of + large documents with xsltproc. + + + + + Release 1.69.0 + The release includes major feature changes, + particularly in the manpages + stylesheets, as well as a large number of bug fixes. + + As with all DocBook Project dot zero releases, this is an + experimental release . + + + Common + + + This release adds localizations for the following + languages: + + + Albanian + Amharic + Azerbaijani + Hindi + Irish (Gaelic) + Gujarati + Kannada + Mongolian + Oriya + Punjabi + Tagalog + Tamil + Welsh + . + + + Added support for specifying number format for auto + labels for chapter, appendix, + part, and preface. Contolled with the + appendix.autolabel, + chapter.autolabel, + part.autolabel, and + preface.autolabel parameters. + + + Added basic support for biblioref cross + referencing. + + + Added support for align + on caption in mediaobject. + + + Added support for processing documents that use the + DocBook V5 namespace. + + + Added support for termdef and + mathphrase. + + + EXPERIMENTAL: Incorporated the Slides and Website + stylesheets into the DocBook XSL stylesheets package. So, + for example, Website documents can now be processed using + the following URI for the driver Website + tabular.xsl file: http://docbook.sourceforge.net/release/xsl/current/website/tabular.xsl + + + A procedure without a title is + now treated as an informal procedure (meaning + that it is not added to any generated list of + procedures and has no affect on numbering of + generated labels for other procedures). + + + docname is no longer added to + olink when pointing to a root element. + + + + Added support for generation of choice separator in + inline simplelist. This enables auto-generation of an + appropriate localized choice separator (for + example, and or or) before the + final item in an inline simplelist. + To indicate that you want a choice separator + generated for a particular list, you need to put a processing + instruction (PI) of the form + dbchoice choice="foo" as a + child of the list. For example: + <para>Choose from + ONE and ONLY ONE of the following: + <simplelist type="inline"> + <?dbchoice choice="or" ?> + <member>A</member> + <member>B</member> + <member>C</member>.</simplelist></para> + + Output (for English): +
+ Choose from ONE and only ONE of the + following choices: A, B, or C. +
+ As a temporary workaround for the fact that most of the + DocBook non-English locale files don't have a localization for + the word or, you can put in a literal string to + be used; example for French: dbchoice choice="ou". That is, use + ou instead of or.
+
+
+
+ + FO + + + Added content-type property to + external-graphic element, based on + imagedata format + attribute. + + + Added support for generating + <rx:meta-field creator="$VERSION"/> + field for XEP output. This makes the DocBook XSL + stylesheet version information available through the + Document Properties menu in Acrobat + Reader and other PDF viewers. + + + Trademark symbol handling made consistent with + handling of same in HTML stylesheets. Prior to this change, + if you processed a document that contained no value for the + class attribute on the + trademark element, the HTML stylesheets would + default to rendering a superscript TM + symbol after the trademark contents, + but the FO stylesheets would render nothing. + + + Added support for generating XEP bookmarks for + refentry. + + + Added support for HTML markup table border attribute, applied to each + table cell. + + + The table.width template can now + sum column specs if none use % or + *. + + + Added fox:destination extension + inside fox:outline to support linking to + internal destinations. + + + Added support for customizing + abstract with property sets. Controlled + with the abstract.properties and + abstract.title.properties + parameters. + + + Add footnotes in table title to + table footnote set, and add support for table footnotes to + HTML table markup. + + + Added support for title in + glosslist. + + + Added support for itemizedlist symbol + none. + + + Implemented the new + graphical.admonition.properties and + nongraphical.admonition.properties + attribute sets. + + + Added id to + formalpara and some other blocks that were + missing it. + + + Changed the anchor template to output + fo:inline instead of + fo:wrapper. + + + Added support for toc.max.depth + parameter. + + + + + + Help + + + Eclipse Help: Added support for generating olink + database. + + + + + + HTML + + + Added a first cut at support in HTML output for + DocBook 5 style annotations. Controlled using the + annotation.support parameter, and + implemented using JavaScript and CSS styling. For more + details, see the documentation for the + annotation.js, + annotation.css, + annotation.graphic.open, and + annotation.graphic.close + parameters. + + + Generate client-side image map for + imageobjectco with areas using + calspair units + + + Added support for img.src.path PI. + + + Added support for passing + img.src.path to DocBook Java XSLT + image extensions when appropriate. Controlled using the + graphicsize.use.img.src.path + parameter. + + + Added support for (not + valid for DocBook 4) xlink:href + on area and (not valid for DocBook 4) + alt in area. + + + Added new parameter + default.table.frame to control table + framing if there is no frame + attribute on a table. + + + Added initial, experimental support for generating + content for the HTML title attribute from + content of the alt element. This change adds + support for the following inline elements only (none of them + are block elements): + + + abbrev + accel + acronym + action + application + authorinitials + beginpage + citation + citerefentry + citetitle + city + classname + code + command + computeroutput + constant + country + database + email + envar + errorcode + errorname + errortext + errortype + exceptionname + fax + filename + firstname + firstterm + foreignphrase + function + glossterm + guibutton + guiicon + guilabel + guimenu + guimenuitem + guisubmenu + hardware + honorific + interface + interfacename + keycap + keycode + keysym + lineage + lineannotation + literal + markup + medialabel + methodname + mousebutton + option + optional + otheraddr + othername + package + parameter + personname + phone + pob + postcode + productname + productnumber + prompt + property + quote + refentrytitle + remark + replaceable + returnvalue + tag + shortcut + state + street + structfield + structname + subscript + superscript + surname + symbol + systemitem + tag + termdef + token + trademark + type + uri + userinput + varname + wordasword + + + + + Added support for chunking revhistory into + separate file (similar to the support for doing same with + legalnotice). Patch from Thomas + Schraitle. Controlled through new + generate.revhistory.link parameter. + + + l10n.xsl: Made language codes RFC compliant. Added a + new boolean config parameter, + l10n.lang.value.rfc.compliant. If it + is non-zero (the default), any underscore in a language code + will be converted to a hyphen in HTML output. If it is zero, + the language code will be left as-is. + + + + + man + This release closes out 44 manpages stylesheet bug reports + and feature requests. It adds more than 35 new configuration + parameters for controlling aspects of man-page output -- + including hyphenation and justification, handling of links, + conversion of Unicode characters, and contents of man-page + headers and footers. + + + + New options for globally disabling/enabling + hyphenation and justification: + man.justify and + man.hyphenate. + Note that the default + for the both of those is zero (off), because justified text + looks good only when it is also hyphenated; to quote the + Hyphenation node from the groff info page: +
+ Since the odds are not great for finding a + set of words, for every output line, which fit nicely on a + line without inserting excessive amounts of space between + words, `gtroff' hyphenates words so that it can justify + lines without inserting too much space between + words. +
+ The problem is that groff can end up hyphenating a lot of + things that you don't want hyphenated (variable names and + command names, for example). Keeping both justification and + hyphenation disabled ensures that hyphens won't get inserted + where you don't want to them, and you don't end up with + lines containing excessive amounts of space between + words. These default settings run counter to how most + existing man pages are formatted. But there are some notable + exceptions, such as the perl man pages.
+
+ + Added parameters for controlling hyphenation of + computer inlines, filenames, and URLs. By default, even when + hyphenation is enabled (globally), hyphenation is now + suppressed for "computer inlines" (currently, just + classname, constant, envar, + errorcode, option, + replaceable, userinput, + type, and varname, and for + filenames, and for URLs from link. It + can be (re)enabled using the + man.hyphenate.computer.inlines, + man.hyphenate.filenames, and + man.hyphenate.urls parameters. + + + + Implemented a new system for replacing Unicode + characters. There are two parts to the new system: a + string substitution map for doing + essential replacements, and a + character map that can optionally be disabled + and enabled. + The new system fixes all open bugs that had to do with + literal Unicode numbered entities such as &#8220; and + &#8221; showing up in output, and greatly expands the + ability of the stylesheets to generate good roff + equivalents for Unicode symbols and special + characters. + Here are some details... + The previous manpages mechanism for replacing Unicode + symbols and special characters with roff equivalents (the + replace-entities template) was not + scalable and not complete. The mechanism handled a somewhat + arbitrary selection of less than 20 or so Unicode + characters. But there are potentially more than + 800 Unicode special characters that + have some groff equivalent they can be mapped to. And there + are about 34 symbols in the Latin-1 (ISO-8859-1) block + alone. Users might reasonably expect that if they include + any of those Latin-1 characters in their DocBook source + documents, they will get correctly converted to known roff + equivalents in output. + In addition to those common symbols, certain users may + have a need to use symbols from other Unicode blocks. Say, + somebody who is documenting an application related to math + might need to use a bunch of symbols from the + Mathematical Operators Unicode block (there + are about 65 characters in that block that have reasonable + roff equivalents). Or somebody else might really like + Dingbats -- such as the checkmark character -- and so might + use a bunch of things from the Dingbat block + (141 characters in that that have roff equivalents or that + can at least be degraded somewhat gracefully + into roff). + So, the old replace-entities + mechanism was replaced with a completely different mechanism + that is based on use of two maps: a + substitution map and a character + map (the latter in a format compliant with the XSLT + 2.0 spec and therefore completely forward + compatible with XSLT 2.0). + The substitution map is controlled through the + man.string.subst.map parameter, and + is used to replace things like the backslash character + (which needs special handling to prevent it from being + interpreted as a roff escape). The substitution map cannot + be disabled, because disabling it will cause the output to + be broken. However, you can add to it and change it if + needed. + + The character map mechanism, on the + other hand, can be completely disabled. It is enabled by + default, and, by default, does replacement of all Latin-1 + symbols, along with most special spaces, dashes, and quotes + (about 75 characters by default). Also, you can optionally + enable a full character map that provides + support for converting all 800 or so of the characters that + have some reasonable groff equivalent. + + The character-map mechanism is controlled through the + following parameters: + + + man.charmap.enabled + turns character-map support + on/off + + + man.charmap.use.subset + specifies that a subset of the character + map is used instead of the full map + + + man.charmap.subset.profile + specifies profile of character-map + subset + + + man.charmap.uri + specifies an alternate character map to + use instead of the standard character map + provided in the distribution + + + + + + + Implemented out-of-line handling of display of URLs + for links (currently, only for ulink). This gives + you three choices for handling of links: + + + Number and list links. Each link is numbered + inline, with a number in square brackets preceding the + link contents, and a numbered list of all links is added + to the end of the document. + + + Only list links. Links are not numbered, but an + (unnumbered) list of links is added to the end of the + document. + + + Suppress links. Don't number links and don't add + any list of links to the end of the document. + + + You can also choose whether links should be underlined. The + default is the works -- list, number, and + underline links. You can use the + man.links.list.enabled, + man.links.are.numbered, and + man.links.are.underlined parameters + to change the defaults. The default heading for the link + list is REFERENCES. You can be change that using the + man.links.list.heading + parameter. + + + Changed default output encoding to UTF-8. This does not mean that man pages are output in + raw UTF-8, because the character map is applied + before final output, causing all UTF-8 characters covered in + the map to be converted to roff equivalents. + + + + Added support for processing refsect3 and + formalpara and nested refsection + elements, down to any arbitrary level of nesting. + + + + Output of the NAME and + SYNOPSIS and AUTHOR + headings and the headings for admonitions (note, + caution, etc.) are no longer hard-coded for + English. Instead, headings are generated for those in the + correct locale (just as the FO and HTML stylesheets + do). + + + + Re-worked mechanism for assembling page + headers/footers (the contents of the .TH + macro title line). + + Here are some details... + + All man pages contain a .TH roff + macro whose contents are used for rendering the title + line displayed in the header and footer of each + page. Here are a couple of examples of real-world man pages + that have useful page headers/footers: + gtk-options(7) GTK+ User's Manual gtk-options(7) <-- header + GTK+ 1.2 2003-10-20 gtk-options(7) <-- footer + + svgalib(7) Svgalib User Manual svgalib(7) <-- header + Svgalib 1.4.1 16 December 1999 svgalib(7) <-- footer + + And here are the terms with which the + groff_man(7) man page refers to the + various parts of the header/footer: + title(section) extra3 title(section) <- header + extra2 extra1 title(section) <- footer + Or, using the names with which the man(7) + man page refers to those same fields: + title(section) manual title(section) <- page header + source date title(section) <- page footer + + The easiest way to control the contents of those + fields is to mark up your refentry content like + the following (note that this is a minimal + example). + <refentry> + <info> + <date>2003-10-20</date> + </info> + <refmeta> + <refentrytitle>gtk-options</refentrytitle> + <manvolnum>7</manvolnum> + <refmiscinfo class="source-name">GTK+</refmiscinfo> + <refmiscinfo class="version">1.2</refmiscinfo> + <refmiscinfo class="manual">GTK+ User's Manual</refmiscinfo> + </refmeta> + <refnamediv> + <refname>gtk-options</refname> + <refpurpose>Standard Command Line Options for GTK+ Programs</refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + <para>This manual page describes the command line options, which + are common to all GTK+ based applications.</para> + </refsect1> + </refentry> + + + Sets the date part of the header/footer. + + + Sets the title part. + + + Sets the section part. + + + Sets the source name part. + + + Sets the version part. + + + Sets the manual part. + + + + Below are explanations of the steps the stylesheets + take to attempt to assemble and display + good headers and footer. [In the + descriptions, note that *info + is the refentry info child + (whatever its name), and + parentinfo is the + info child of its parent (again, whatever + its name).] + + + extra1 field (date) + + Content of the extra1 field is + what shows up in the center + footer position of each page. The + man(7) man page describes it as + the date of the last revision. + To provide this content, if the + refentry.date.profile.enabled + is non-zero, the stylesheets check the value of + refentry.date.profile. + Otherwise, by default, they check for a + date or pubdate not only in the + *info contents, but also in + the parentinfo + contents. + If a date cannot be found, the stylesheets now + automatically generate a localized long + format date, ensuring that this field always + has content in output. + However, if for some reason you want to suppress + this field, you can do so by setting a non-zero value + for man.th.extra1.suppress. + + + + extra2 field (source) + + On Linux systems and on systems with a modern + groff, the content of the extra2 field + are what shows up in the left + footer position of each page. + + The man(7) man page describes + this as the source of the command, and + provides the following examples: + + + For binaries, use somwething like: GNU, + NET-2, SLS Distribution, MCC Distribution. + + + For system calls, use the version of the + kernel that you are currently looking at: Linux + 0.99.11. + + + For library calls, use the source of the + function: GNU, BSD 4.3, Linux DLL 4.4.1. + + + + + In practice, there are many pages that simply + have a version number in the source + field. So, it looks like what we have is a two-part + field, + Name Version, + where: + + + Name + + product name (e.g., BSD) or org. name + (e.g., GNU) + + + + Version + + version name + + + + Each part is optional. If the + Name is a product name, + then the Version is + probably the version of the product. Or there may be + no Name, in which case, if + there is a Version, it is + probably the version of the item itself, not the + product it is part of. Or, if the + Name is an organization + name, then there probably will be no + Version. + + To provide this content, if the + refentry.source.name.profile.enabled + and + refentry.version.profile.enabled + parameter are non-zero, the stylesheets check the + value of refentry.source.name.profile + refentry.version.profile. + + Otherwise, by default, they check the following + places, in the following order: + + + *info/productnumber + + + *info/productnumber + + + refmeta/refmiscinfo[@class = 'version'] + + + parentinfo/productnumber + + + *info/productname + + + parentinfo/productname + + + refmeta/refmiscinfo + + + [nothing found, so leave it empty] + + + + + + + extra3 field + + On Linux systems and on systems with a modern + groff, the content of the extra3 field + are what shows up in the center + header position of each page. Some man + pages have extra2 content, some + don't. If a particular man page has it, it is most + often context data about some larger + system the documented item belongs to (for example, + the name or description of a group of related + applications). The stylesheets now check the following + places, in the following order, to look for content to + add to the extra3 field. + + + parentinfo/title + + + parent's title + + + refmeta/refmiscinfo + + + [nothing found, so leave it empty] + + + + + + + + + + Reworked *info gathering. For + each refentry found, the stylesheets now cache its + *info content, then check for any + valid parent of it that might have metainfo content and cache + that, if found; they then then do all further matches against + those node-sets (rather than re-selecting the original + *info nodes each time they are + needed). + + + + New option for breaking strings after forward + slashes. This enables long URLs and pathnames to be broken + across lines. Controlled through + man.break.after.slash parameter. + + + + Output for servicemark and trademark are now + (SM) and (TM). There is + a groff "\(tm" escape, but output from that + is not acceptable. + + + + New option for controlling the length of the title + part of the .TH title line. Controlled + through the man.th.title.max.length + parameter. + + + + New option for specifying output encoding of each man + page; controlled with + man.output.encoding (similar to the + HTML chunker.output.encoding + parameter). + + + + New option for suppressing filename messages when + generating output; controlled with + man.output.quietly (similar to the HTML + chunk.quietly parameter). + + + + The text of cross-references to first-level + refentry (refsect1, top-level + refsection, refnamediv, and + refsynopsisdiv) are now capitalized. + + + + Cross-references to refnamediv now use the + localized NAME title instead of using the + first refname child. This makes the output + inconsistent with HTML and FO output, but for man-page output, + it seems to make better sense to have the + NAME. (It may actually make better sense to + do it that way in HTML and FO output as well...) + + + + Added support for processing funcparams. + + + + Removed the space that was being output between + funcdef and paramdef; example: was: + float rand (void); now: + float rand(void) + + + + Turned off bold formatting for the type + element when it occurs within a funcdef or + paramdef + + + + Corrected rendering of simplelist. Any + <simplelist type="inline" instance + is now rendered as a comma-separated list (also with an + optional localized and or or before the last item -- see + description elsewhere in these release notes). Any simplelist + instance whose type is not + inline is rendered as a one-column vertical + list (ignoring the values of the type and columns attributes if present) + + + + Comment added at top of roff source for each page now + includes DocBook XSL stylesheets version number (as in the + HTML stylesheets) + + + + Made change to prevent sticky fonts + changes. Now, when the manpages stylesheets encounter node + sets that need to be boldfaced or italicized, they put the + \fBfoo\fR and \fIbar\fR + groff bold/italic instructions separately around each node in + the set. + + + synop.xsl: Boldface everything in + funcsynopsis output except parameters (which are in + ital). The man(7) man page says: +
+ For functions, the arguments are always specified + using italics, even in the SYNOPSIS section, where the rest + of the function is specified in bold. +
+ A look through the contents of the + man/man2 directory shows that most + (all) existing pages do follow this everything in + funcsynopsis bold rule. That means the + type content and any punctuation (parens, + semicolons, varargs) also must be bolded.
+
+ + + Removed code for adding backslashes before periods/dots + in roff source, because backslashes in front of periods/dots + in roff source are needed only in the very rare case where a + period is the very first character in a line, without any + space in front of it. A better way to deal with that rare case + is for you to add a zero-width space in front of the offending + dot(s) in your source + + + + Removed special handling of the quote + element. That was hard-coded to cause anything marked up with + the quote element to be output preceded by two + backticks and followed by two apostrophes -- that is, that + old-school kludge for generating curly quotes in Emacs and + in X-Windows fonts. While Emacs still seems to support that, I + don't think X-Windows has for a long time now. And, anyway, it + looks (and has always looked) like crap when viewed on a + normal tty/console. In addition, it breaks localiztion of + quote. By default, quote content is + output with localized quotation marks, which, depending on the + locale, may or may not be left and right double quotation + marks. + + + + Changed mappings for left and right single quotation + marks. Those had previously been incorrectly mapped to the + backtick (&#96;) and apostrophe (&39;) characters (for + kludgy reasons -- see above). They are now correctly mapped to + the \(oq and \(cq roff + escapes. If you want the old (broken) behavior, you need to + manually change the mappings for those in the value of the + man.string.subst.map parameter. + + + Removed xref.xsl file. Now, of the + various cross-reference elements, only the ulink + element is handled differently; the rest are handled exactly + as the HTML stylesheets handle them, except that no hypertext + links are generated. (Because there is no equivalent hypertext + mechanism is man pages.) + + + + New option for making subheading dividers in generated + roff source. The dividers are not visible in the rendered man + page; they are just there to make the source + readable. Controlled using + man.subheading.divider. + + + + Fixed many places where too much space was being added + between lines. + +
+ +
+
+ + + + Release 1.68.1 + The release adds localization support for Farsi (thanks to + Sina Heshmati) and improved support for the XLink-based DocBook NG + db:link element. Other than that, it is a minor + bug-fix update to the 1.68.0 release. The main thing it fixes is a + build error that caused the XSLT Java extensions to be jarred up + with the wrong package structure. Thanks to Jens Stavnstrup for + quickly reporting the problem, and to Mauritz Jeanson for + investigating and finding the cause. + + + + + Release 1.68.0 + This release includes some features changes, particularly + for FO/PDF output, and a number of bug fixes. + + FO + + Moved footnote properties to attribute-sets. + + + Added support for side floats, margin notes, and + custom floats. + + + Added new parameters + body.start.indent and + body.end.indent to the + set.flow.properties template. + + + Added support for xml:id + + + Added support for + refdescriptor. + + + Added support for multiple refnamedivs. + + + Added index.entry.properties + attribute-set to support customization of index + entries. + + + Added set.flow.properties + template call to each fo:flow + to support customizations entry point. + + + Add support for @floatstyle in + figure + + + Moved hardcoded properties for index division titles + to the index.div.title.properties + attribute-set. + + + Added support for + table-layout="auto" for XEP. + + + Added index.div.title.properties + attribute-set. + + + $verbose parameter is now + passed to most elements. + + + Added refentry to + toc in part, as it is + permitted by the DocBook schema/DTD. + + + Added backmatter elements and + article to toc in + part, since they are permitted by the + DocBook schema/DTD. + + + Added mode="toc" for + simplesect, since it is now permitted in + the toc if + simplesect.in.toc is set. + + + Moved hard-coded properties to + nongraphical.admonintion.properties + and graphical.admonition.properties + attribute sets. + + + Added support for sidebar-width and + float-type processing instructions in + sidebar. + + + For tables with HTML markup elements, added support + for dbfo bgcolor PI, the attribute-sets + named table.properties, + informaltable.properties, + table.table.properties, and + table.cell.padding. Also added + support for the templates named + table.cell.properties and + table.cell.block.properties so that + tabstyles can be implemented. Also added support for tables + containing only tr instead of + tbody with tr. + + + Added new paramater + hyphenate.verbatim.characters which + can specify characters after which a line break can occur in + verbatim environments. This parameter can be used to extend + the initial set of characters which contain only space and + non-breakable space. + + + Added itemizedlist.label.markup to enable + selection of different bullet symbol. Also added several + potential bullet characters, commented out by default. + + + Enabled all id's in XEP output for external olinking. + + + + + HTML + + Added support for + refdescriptor. + + + Added support for multiple refnamedivs. + + + Added support for xml:id + + + refsynopsisdiv as a section for + counting section levels + + + + Images + + Added new SVG admonition graphics and navigation images. + + + + + + + + Release 1.67.2 + This release fixes a table bug introduced in the 1.67.1 + release. + + + Release 1.67.1 + This release includes a number of bug fixes. + The following lists provide details about API and feature changes. + + FO + + Tables: Inherited cell properties are now passed to the + table.cell.properties template so they can + be overridden by a customization. + + + Tables: Added support for bgcolor PI on table row + element. + + + TOCs: Added new parameter + simplesect.in.toc; default value of + 0 causes simplesect to be omitted from TOCs; to + cause simplesect to be included in TOCs, you + must set the value of simplesect.in.toc to + 1.Comment from Norm: + +
+ Simplesect elements aren't supposed to + appear in the ToC at all... The use case for simplesect + is when, for example, every chapter in a book ends with + "Exercises" or "For More Information" sections and you + don't want those to appear in the ToC. +
+
+
+ + Sections: Reverted change that caused a variable reference + to be used in a template match and rewrote code to preserve + intended semantics. + + + Lists: Added workaround to prevent "* 0.60 + 1em" garbage in + list output from PassiveTeX + + + Moved the literal attributes from + component.title to the + component.title.properties attribute-set so + they can be customized. + + + Lists: Added glossdef's first + para to special handling in + fo:list-item-body. + +
+ + + HTML + + TOCs: Added new parameter + simplesect.in.toc; for details, see + the list of changes for this + release. + + + Indexing: Added new parameter + index.prefer.titleabbrev; when set to + 1, index references will use + titleabbrev instead of + title when available. + + + + HTML Help + + Added support for generating windows-1252-encoded + output using Saxon; for more details, see the list of changes for this release. + + + + man pages + + Replaced named/numeric character-entity references for + non-breaking space with groff equivalent (backslash-tilde). + + + + XSL Java extensions + + Saxon extensions: Added the + Windows1252 class. It extends Saxon + 6.5.x with the windows-1252 character set, which is + particularly useful when generating HTML Help for Western + European Languages (code from + Pontus + Haglund and contributed to the + DocBook community by Sectra AB, Sweden). + To use: + + + Make sure that the Saxon 6.5.x jar file and the jar file for + the DocBook XSL Java extensions are in your CLASSPATH + + + Create a DocBook XSL customization layer -- a file named + mystylesheet.xsl or whatever -- that, at a + minimum, contains the following: + <xsl:stylesheet + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/htmlhelp/htmlhelp.xsl"/> + <xsl:output method="html" encoding="WINDOWS-1252" indent="no"/> + <xsl:param name="htmlhelp.encoding" select="'WINDOWS-1252'"></xsl:param> + <xsl:param name="chunker.output.encoding" select="'WINDOWS-1252'"></xsl:param> + <xsl:param name="saxon.character.representation" select="'native'"></xsl:param> + </xsl:stylesheet> + + Invoke Saxon with the + encoding.windows-1252 Java system property set + to com.nwalsh.saxon.Windows1252; for example + java \ + -Dencoding.windows-1252=com.nwalsh.saxon.Windows1252 \ + com.icl.saxon.StyleSheet \ + mydoc.xml mystylesheet.xsl + + Or, for a more complete "real world" case showing other + options you'll typically want to use: + java \ + -Dencoding.windows-1252=com.nwalsh.saxon.Windows1252 \ + -Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl \ + -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl \ + -Djavax.xml.transform.TransformerFactory=com.icl.saxon.TransformerFactoryImpl \ + com.icl.saxon.StyleSheet \ + -x org.apache.xml.resolver.tools.ResolvingXMLReader \ + -y org.apache.xml.resolver.tools.ResolvingXMLReader \ + -r org.apache.xml.resolver.tools.CatalogResolver \ + mydoc.xml mystylesheet.xsl + + In both cases, the "mystylesheet.xsl" file should be a + DocBook customization layer containing the parameters + show in step 2. + + + + + + Saxon extensions: Removed Saxon 8 extensions from release package + + +
+
+ + Release 1.67.0 + + + A number of important bug fixes. + + + Added Saxon8 extensions + + + Enabled dbfo table-width on + entrytbl in FO output + + + Added support for role=strong on + emphasis in FO output + + + Added new FO parameter + hyphenate.verbatim that can be used to turn + on "intelligent" wrapping of verbatim environments. + + + Replaced all <tt></tt> output with + <code></code> + + + Changed admon.graphic.width template to a + mode so that different admonitions can have different graphical + widths. + + + Deprecated the HTML shade.verbatim + parameter (use CSS instead) + + + Wrapped ToC + refentrytitle/refname and + refpurpose in span with class values. This + makes it possible to style them using a CSS stylesheet. + + + Use strong/em instead of + b/i in HTML output + + + Added support for converting Emphasis to + groff italic and Emphasis role='bold' to + bold. Controlled by + emphasis.propagates.style param, but not + documented yet using litprog system. Will do that next (planning + to add some other parameter-controllable options for hyphenation + and handling of line spacing). + + + callout.graphics.number.limit.xml + param: Changed the default from 10 to + 15. + + + verbatim.properties: Added + hyphenate=false + + + Saxon and Xalan Text.java extensions: Added support for + URIResolver() on insertfile href's + + + Added generated RELEASE-NOTES.txt + file. + + + Added INSTALL file (executable file for + generating catalog.xml) + + + Removed obsolete tools directory from + package + + + + +Release 1.66.1 + + +A number of important bug fixes. + + + + +Now xml:base attributes that are generated by an +XInclude processor are resolved for image files. + + + + +Rewrote olink templates to support several new features. + + + + +Extended full olink support to FO output. + + + + +Add support for xrefstyle attribute in olinks. + + + + +New parameters to support new olink features: +insert.olink.page.number, insert.olink.pdf.frag, +olink.debug, olink.lang.fallback.sequence, olink.properties, +prefer.internal.olink. +See the reference page for each parameter for more +information. + + + + + +Added index.on.type parameter for new type +attribute introduced in DocBook 4.3 for indexterms and index. +This allows you to create multiple indices containing +different categories of entries. +For users of 4.2 and earlier, you can use the new parameter index.on.role +instead. + + + + +Added new +section.autolabel.max.depth parameter to turn off section numbering +below a certain depth. +This permits you to number major section levels and leave minor +section levels unnumbered. + + + +Added footnote.sep.leader.properties attribute set to format +the line separating footnotes in printed output. + + + + +Added parameter img.src.path as a prefix to HTML img src +attributes. +The prefix is added to whatever path is already generated by the +stylesheet for each image file. + + + +Added new attribute-sets +informalequation.properties, +informalexample.properties, +informalfigure.properties, and informaltable.properties, +so each such element type can be formatted +individually if needed. + + + + +Add component.label.includes.part.label +parameter to add any part number to chapter, appendix +and other component labels when +the label.from.part parameter is nonzero. +This permits you to distinguish multiple chapters with the same +chapter number in cross references and the TOC. + + + +Added chunk.separate.lots parameter for HTML output. +This parameter lets you generate separate chunk files for each LOT +(list of tables, list of figures, etc.). + + +Added several table features: + + + +Added table.table.properties attribute set to add +properties to the fo:table element. + + + + +Added placeholder templates named table.cell.properties +and table.cell.block.properties to enable adding properties +to any fo:table-cell or the cell's fo:block, respectively. + These templates are a start for implementing table styles. + + + + + +Added new attribute +set component.title.properties for easy modifications of +component's title formatting in FO output. + + + + +Added Saxon support for an encoding attribute on the textdata element. Added new parameter +textdata.default.encoding which specifies encoding when +encoding attribute on +textdata is missing. + + + + +Template label.this.section now controls whole +section label, not only sub-label which corresponds to +particular label. Former behaviour was IMHO bug as it was +not usable. + + + + +Formatting in titleabbrev for TOC and headers +is preserved when there are no hotlink elements in the title. Formerly the title showed only the text of the title, no font changes or other markup. + + + + +Added intial.page.number template to set the initial-page-number +property for page sequences in print output. +Customizing this template lets you change when page numbering restarts. This is similar to the format.page.number template that lets you change how the page number formatting changes in the output. + + + + +Added force.page.count template to set the force-page-count +property for page sequences in print output. +This is similar to the format.page.number template. + + + + +Sort language for localized index sorting in autoidx-ng.xsl is now taken from document +lang, not from system environment. + + + + +Numbering and formatting of normal +and ulink footnotes (if turned on) has been unified. +Now ulink footnotes are mixed in with any other footnotes. + + + +Added support for renderas attribute in section and +sect1 et al. +This permits you to render a given section title as if it were a different level. + + + +Added support for label attribute in footnote to manually +supply the footnote mark. + + + + +Added support for DocBook 4.3 corpcredit element. + + + + +Added support for a dbfo keep-together PI for +formal objects (table, figure, example, equation, programlisting). That permits a formal object to be kept together if it is not already, or to be broken if it +is very long and the +default keep-together is not appropriate. + + + + +For graphics files, made file extension matching case +insensitive, and updated the list of graphics extensions. + + + + +Allow calloutlist to have block content before +the first callout + + + + +Added dbfo-need processing instruction to provide +soft page breaks. + + + + +Added implementation of existing but unused +default.image.width parameter for graphics. + + + + +Support DocBook NG tag inline element. + + + + +It appears that XEP now supports Unicode characters in +bookmarks. There is no further need to strip accents from +characters. + + + + +Make segmentedlist HTML markup +more semantic and available to CSS styles. + + + + +Added user.preroot placeholder template to +permit xsl-stylesheet and other PIs and comments to be +output before the HTML root element. + + + + +Non-chunked legalnotice now gets an <a +name="id"> element in HTML output +so it can be referenced with xref or link. + + + + +In chunked HTML output, changed link rel="home" to rel="start", +and link rel="previous" to rel="prev", per W3C HTML 4.01 +spec. + + + + +Added several patches to htmlhelp from W. Borgert + + + + +Added Bosnian locale file as common/bs.xml. + + + + + +Release 1.65.0 + + +A number of important bug fixes. + + + +Added a workaround to allow these stylesheets to process DocBook NG +documents. (It’s a hack that pre-processes the document to strip off the +namespace and then uses exsl:node-set to process +the result.) + + + +Added alternative indexing mechanism which has better +internationalization support. New indexing method allows grouping of +accented letters like e, é, ë into the same group under letter "e". It +can also treat special letters (e.g. "ch") as one character and place +them in the correct position (e.g. between "h" and "i" in Czech +language). +In order to use this mechanism you must create customization +layer which imports some base stylesheet (like +fo/docbook.xsl, +html/chunk.xsl) and then includes appropriate +stylesheet with new indexing code +(fo/autoidx-ng.xsl or +html/autoidx-ng.xsl). For example: +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.0"> + +<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/> +<xsl:include href="http://docbook.sourceforge.net/release/xsl/current/fo/autoidx-ng.xsl"/> + +</xsl:stylesheet> +New method is known to work with Saxon and it should also work +with xsltproc 1.1.1 and later. Currently supported languages are +English, Czech, German, French, Spanish and Danish. + + + + +Release 1.64.1 + +General bug fixes and improvements. Sorry about the failure to produce +an updated release notes file for 1.62.0—1.63.2 + +In the course of fixing bug #849787, wrapping Unicode callouts +with an appropriate font change in the Xalan extensions, I discovered +that the Xalan APIs have changed a bit. So xalan2.jar +will work with older Xalan 2 implementations, xalan25.jar +works with Xalan 2.5. + + + + +Release 1.61.0 + +Lots of bug fixes and improvements. + +Initial support for timestamp PI. From now you + can use <?dbtimestamp format="Y-m-d H:M:S"?> to get current + datetime in your document. Added localization support for datetime PI + + + +Added level 6 to test for section depth in +section.level template so that +section.title.level6.properties will be used for sections +that are 6 deep or deeper. This should also cause a h6 to be +created in html output. + + + +Don't use SVG graphics if use.svg=0 + + + +Now uses number-and-title-template for sections + only if section.autolabel is not zero. + + + +Added missing 'english-language-name' attribute to +the l10n element, and the missing 'style' attribute to the +template element so the current gentext documents will +validate. + + + +Corrected several references to parameter + qanda.defaultlabel that were missing the "$". + + + +Now accepts admon.textlabel parameter to turn off + Note, Warning, etc. label. + + + +FeatReq #684561: support more XEP metadata + + + +Added hyphenation support. Added support for coref. +Added beginpage support. (does nothing; see TDG). + + + +Added support for +hyphenation-character, hyphenation-push-character-count, and +hyphenation-remain-character-count + + + +Added root.properties, +ebnf.assignment, +and ebnf.statement.terminator + + + +Support bgcolor PI in table cells; make sure +rowsep and colsep don't have any effect on the last row or +column + + + +Handle othercredit on titlepage a little +better + + + +Applied fix from Jeff Beal that fixed the bug +that put secondary page numbers on primary entries. Same +with tertiary page numbers on secondary entries. + + + +Added definition of missing variable +collection. + + + +Make footnote formatting 'normal' even when it +occurs in a context that has special formatting + + + +Added warning when glossary.collection is not +blank, but it cannot open the specified file. + + + +Pick up the frame attribute on table and +informaltable. + + + +indexdiv/title +in non-autogenerated indexes are +now picked up. + + + +Removed (unused) +component.title.properties + + + +Move IDs from +page-sequences down to titlepage blocks + + + +Use +proportional-column-width(1) on more tables. + +Use proportional-column-width() for +header/footer tables; suppress relative-align when when +using FOP + + + +Check for glossterm.auto.link when linking +firstterms; don't output gl. prefix on glossterm links + + + +Generate Part ToCs + + + +Support glossary, bibliography, +and index in component ToCs. + + + +Refactored chunking code so that +customization of chunk algorithm and chunk elements is more +practical + + + +Support textobject/phrase +on inlinemediaobject. + + + +Support 'start' PI on ordered lists + + + +Fixed test of $toc PI to turn on qandaset TOC. + + + +Added process.chunk.footnotes to sect2 through +5 to fix bug of missing footnotes when chunk level greater +than 1. + + + +Added +paramater toc.max.depth which controls maximal depth of ToC +as requested by PHP-DOC group. + + + +Exempted titleabbrev from preamble processing in +lists, and fixed variablelist preamble code to use the same +syntax as the other lists. + + + +Added support for elements between variablelist +and first varlistentry since DocBook 4.2 supports that now. + + + + + +Release 1.60.1 + +Lots of bug fixes. + +The format of the titlepage.templates.xml files and +the stylesheet that transforms them have been significantly changed. All of the +attributes used to control the templates are now namespace qualified. So what +used to be: +<t:titlepage element="article" wrapper="fo:block"> +is now: +<t:titlepage t:element="article" t:wrapper="fo:block"> +Attributes from other namespaces (including those that are unqualified) are +now copied directly through. In practice, this means that the names that used +to be fo: qualified: +<title named-template="component.title" + param:node="ancestor-or-self::article[1]" + fo:text-align="center" + fo:keep-with-next="always" + fo:font-size="&hsize5;" + fo:font-weight="bold" + fo:font-family="{$title.font.family}"/> +are now unqualified: +<title t:named-template="component.title" + param:node="ancestor-or-self::article[1]" + text-align="center" + keep-with-next="always" + font-size="&hsize5;" + font-weight="bold" + font-family="{$title.font.family}"/> +The t:titlepage and t:titlepage-content +elements both generate wrappers now. And unqualified attributes on those elements +are passed through. This means that you can now make the title font apply to +ane entire titlepage and make the entire recto +titlepage centered by specifying the font and alignment on the those elements: +<t:titlepage t:element="article" t:wrapper="fo:block" + font-family="{$title.font.family}"> + + <t:titlepage-content t:side="recto" + text-align="center"> + + + + + + + +Support use of titleabbrev in running +headers and footers. + + + +Added (experimental) xref.with.number.and.title +parameter to enable number/title cross references even when the +default would +be just the number. + + + +Generate part ToCs if they're requested. + + + +Use proportional-column-width() in header/footer tables. + + + +Handle alignment correctly when screenshot +wraps a graphic in a figure. + + + +Format chapter and appendix +cross references consistently. + + + +Attempt to support tables with multiple tgroups +in FO. + + + +Output fo:table-columns in +simplelist tables. + + + +Use titlepage.templates.xml for +indexdiv and glossdiv formatting. + + + +Improve support for new bibliography elements. + + + +Added +footnote.number.format, +table.footnote.number.format, +footnote.number.symbols, and +table.footnote.number.symbols for better control of +footnote markers. + + + +Added glossentry.show.acronyms. + + + +Suppress the draft-mode page masters when +draft-mode is no. + + + +Make blank pages verso not recto. D'Oh! + + + +Improved formatting of ulink footnotes. + + + +Fixed bugs in graphic width/height calculations. + + + +Added class attributes to inline elements. + + + +Don't add .html to the filenames identified +with the dbhtml PI. + + + +Don't force a ToC when sections contain refentrys. + + + +Make section title sizes a function of the +body.master.size. + + + + + +Release 1.59.2 + +The 1.59.2 fixes an FO bug in the page masters that causes FOP to fail. + + +Removed the region-name from the region-body of blank pages. There's +no reason to give the body of blank pages a unique name and doing so causes +a mismatch that FOP detects. + + + +Output IDs for the first paragraphs in listitems. + + + +Fixed some small bugs in the handling of page numbers in double-sided mode. + + + +Attempt to prevent duplicated IDs from being produced when +endterm on xref points +to something with nested structure. + + + +Fix aligment problems in equations. + + + +Output the type attribute on unordered lists (UL) in HTML only if +the css.decoration parameter is true. + + + +Calculate the font size in formal.title.properties so that it's 1.2 times +the base font size, not a fixed "12pt". + + + + + +Release 1.59.1 + +The 1.59.1 fixes a few bugs. + + +Added Bulgarian localization. + + + +Indexing improvements; localize book indexes to books but allow setindex +to index an entire set. + + + +The default value for rowsep and colsep is now "1" as per CALS. + + + +Added support for titleabbrev (use them for cross +references). + + + +Improvements to mediaobject for selecting print vs. online +images. + + + +Added seperate property sets for figures, +examples, equations, tabless, +and procedures. + + + +Make lineannotations italic. + + + +Support xrefstyle attribute. + + + +Make endterm on +xref higher priority than +xreflabel target. + + + +Glossary formatting improvements. + + + + + +Release 1.58.0 + +The 1.58.0 adds some initial support for extensions in xsltproc, adds +a few features, and fixes bugs. + + +This release contains the first attempt at extension support for xsltproc. +The only extension available to date is the one that adjusts table column widths. +Run extensions/xsltproc/python/xslt.py. + + + +Fixed bugs in calculation of adjusted column widths to correct for rounding +errors. + + + +Support nested refsection elements correctly. + + + +Reworked gentext.template to take context into consideration. +The name of elements in localization files is now an xpath-like context list, not +just a simple name. + + + +Made some improvements to bibliography formatting. + + + +Improved graphical formatting of admonitions. + + + +Added support for entrytbl. + + + +Support spanning index terms. + + + +Support bibliosource. + + + + + +Release 1.57.0 + + +The 1.57.0 release wasn't documented here. Oops. + + + + + +Release 1.56.0 + +The 1.56.0 release fixes bugs. + + +Reworked chunking. This will break all existing customizations +layers that change the chunking algorithm. If you're customizing chunking, +look at the new content parameter that's passed to +process-chunk-element and friends. + + + +Support continued and inherited numeration in orderedlist +formatting for FOs. + + + +Added Thai localization. + + + +Tweaked stylesheet documentation stylesheets to link to TDG and +the parameter references. + + + +Allow title on tables of contents ("Table of Contents") to be optional. +Added new keyword to generate.toc. +Support tables of contents on sections. + + + +Made separate parameters for table borders and table cell borders: +table.frame.border.color, +table.frame.border.style, +table.frame.border.thickness, +table.cell.border.color, +table.cell.border.style, and +table.cell.border.thickness. + + + +Suppress formatting of endofrange indexterms. +This is only half-right. They should generate a range, but I haven't figured out how +to do that yet. + + + +Support revdescription. (Bug #582192) + + + +Added default.float.class and fixed figure +floats. (Bug #497603) + + + +Fixed formatting of sbr in FOs. + + + +Added context to the missing template error message. + + + +Process arg correctly in a group. +(Bug #605150) + + + +Removed 'keep-with-next' from formal.title.properties +attribute set now that the stylesheets support the option of putting +such titles below the object. Now the $placement value determines if +'keep-with-next' or 'keep-with-previous' is used in the title block. + + + +Wrap url() around external-destinations when appropriate. + + + +Fixed typo in compact list spacing. (Bug #615464) + + + +Removed spurious hash in anchor name. (Bug #617717) + + + +Address is now displayed verbatim on title pages. (Bug #618600) + + + +The bridgehead.in.toc parameter is now properly +supported. + + + +Improved effectiveness of HTML cleanup by increasing the number +of places where it is used. Improve use of HTML cleanup in XHTML stylesheets. + + + +Support table of contents for appendix in +article. (Bug #596599) + + + +Don't duplicate footnotes in bibliographys and +glossarys. (Bug #583282) + + + +Added default.image.width. (Bug #516859) + + + +Totally reworked funcsynopsis code; it now +supports a 'tabular' presentation style for 'wide' prototypes; see +funcsynopsis.tabular.threshold. (HTML only +right now, I think, FO support, uh, real soon now.) + + + +Reworked support for difference marking; toned down the colors a bit +and added a system.head.content template so that the diff CSS +wasn't overriding user.head.content. (Bug #610660) + + + +Added call to the *.head.content elements when writing +out long description chunks. + + + +Make sure legalnotice link is correct even when +chunking to a different base.dir. + + + +Use CSS to set viewport characteristics if +css.decoration is non-zero, use div instead of p for making +graphic a block element; make figure titles the +default alt +text for images in a figure. + + +Added space-after to list.block.spacing. + + + +Reworked section.level template to give correct answer +instead of being off by one. + + + +When processing tables, use the tabstyle +attribute as the division class. + + + +Fixed bug in html2xhtml.xsl that was causing the +XHTML chunker to output HTML instead of XHTML. + + + + + + Older releases + To view the release notes for older releases, see http://cvs.sourceforge.net/viewcvs.py/docbook/xsl/RELEASE-NOTES.xml. Be + aware that there were no release notes for releases prior to the + 1.50.0 release. + + + About dot-zero releases + DocBook Project “dot zero†releases should be + considered experimental and are always + followed by stable “dot one plus†releases, usually within + two or three weeks. Please help to ensure the stability of + “dot one plus†releases by carefully testing each + “dot zero†release and reporting back about any + problems you find. + It is not recommended that you use a “dot zero†+ release in a production system. Instead, you should wait for + the “dot one†or greater versions. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/TODO b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/TODO new file mode 100644 index 000000000..1f421cdaf --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/TODO @@ -0,0 +1,23 @@ +The "to do" list for the DocBook Project XSL stylesheets is +maintained at Sourceforge. To view a list of all open feature +requests for the stylesheets: + + http://docbook.sf.net/tracker/xsl/requests + +To submit a feature request against the stylesheets: + + http://docbook.sf.net/tracker/submit/request + +To do a full-text search of all DocBook Project issues: + + http://docbook.sf.net/tracker/search + +Discussion about the DocBook Project XSL stylesheets takes place +on the docbook-apps mailing list: + + http://wiki.docbook.org/topic/DocBookAppsMailingList + +Real-time discussion takes place on IRC: + + http://wiki.docbook.org/topic/DocBookIrcChannel + irc://irc.freenode.net/docbook diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/VERSION b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/VERSION new file mode 100644 index 000000000..a073fbf19 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/VERSION @@ -0,0 +1,115 @@ + + + + + + + + + +docbook-xsl +1.76.0 +8900 +$Revision: 8933 $ +$URL: https://docbook.svn.sourceforge.net/svnroot/docbook/trunk/xsl/VERSION $ + + + + + DocBook + XSL Stylesheets + + + 1.76.1 + + + + + + + +* Minor bugfixes + + + + + http://sourceforge.net/projects/docbook/ + http://prdownloads.sourceforge.net/docbook/{DISTRONAME-VERSION}.tar.gz?download + http://prdownloads.sourceforge.net/docbook/{DISTRONAME-VERSION}.zip?download + http://prdownloads.sourceforge.net/docbook/{DISTRONAME-VERSION}.bz2?download + http://sourceforge.net/project/shownotes.php?release_id={SFRELID} + http://docbook.svn.sourceforge.net/viewvc/docbook/ + http://lists.oasis-open.org/archives/docbook-apps/ + This is a release with bugfixes and some enhancements. + + + + + + + + + + + + + + + + + + + + + + + You must specify the sf-relid as a parameter. + + + + + + + + + + + + + + + + + + : + + + + + + + + + : + + + + + + + + + : + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/catalog.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/catalog.xml new file mode 100644 index 000000000..f05864681 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/catalog.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/af.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/af.xml new file mode 100644 index 000000000..535b612c4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/af.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/am.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/am.xml new file mode 100644 index 000000000..ddb503518 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/am.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +áˆáˆáŠ­á‰¶á‰½ +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ar.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ar.xml new file mode 100644 index 000000000..ac5545689 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ar.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/as.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/as.xml new file mode 100644 index 000000000..28d0b10cf --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/as.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +চিহà§à¦¨ +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ast.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ast.xml new file mode 100644 index 000000000..26a8e1866 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ast.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Símbolos +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kimber.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kimber.xsl new file mode 100644 index 000000000..45c785d8b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kimber.xsl @@ -0,0 +1,44 @@ + + +%common.entities; + + + + +]> + + + + + + + + + + ERROR: the 'kimber' index method requires the + Saxon version 6 or 8 XSLT processor. + + + 1 + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kosek.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kosek.xsl new file mode 100644 index 000000000..3d755c4fb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/autoidx-kosek.xsl @@ -0,0 +1,154 @@ + + +%common.entities; +]> + + + + + + + + + + ERROR: the 'kosek' index method does not + work with the xsltproc XSLT processor. + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + No " + + " localization of index grouping letters exists + + + . + + + ; using "en". + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No " + + " localization of index grouping letters exists + + + . + + + ; using "en". + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/az.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/az.xml new file mode 100644 index 000000000..c22ec7bff --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/az.xml @@ -0,0 +1,672 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Ä°ÅŸarÉ™lÉ™r +A +a +B +b +C +c +Ç +ç +D +d +E +e +e +e +Æ +É™ +G +g +Äž +ÄŸ +H +h +X +x +I +ı +Ä° +i +J +j +K +k +Q +q +L +l +M +m +N +n +O +o +Ö +ö +P +p +R +r +S +s +Åž +ÅŸ +T +t +U +u +Ãœ +ü +V +v +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bg.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bg.xml new file mode 100644 index 000000000..10e379f32 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bg.xml @@ -0,0 +1,724 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Цифри и знаци +Ð +а +Б +б +Ð’ +в +Г +г +Д +д +Е +е +Ж +ж +З +з +И +и +Й +й +К +к +Л +л +Ðœ +м +Ð +н +О +о +П +п +Р +Ñ€ +С +Ñ +Т +Ñ‚ +У +у +Ф +Ñ„ +Ð¥ +Ñ… +Ц +ц +Ч +ч +Ш +ш +Щ +щ +Ъ +ÑŠ +Ь +ÑŒ +Ю +ÑŽ +Я +Ñ +Э +Ñ +Ы +Ñ‹ +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn.xml new file mode 100644 index 000000000..8ca9503b6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn_in.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn_in.xml new file mode 100644 index 000000000..88404a0f0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bn_in.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +সংকেত +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bs.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bs.xml new file mode 100644 index 000000000..bd9b281bc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/bs.xml @@ -0,0 +1,662 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Simboli +A +a +B +b +C +c +Ć +ć +ÄŒ +Ä +D +d +Ä +Ä‘ +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +R +r +S +s +Å  +Å¡ +T +t +U +u +V +v +Z +z +Ž +ž + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ca.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ca.xml new file mode 100644 index 000000000..95fd48b49 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ca.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Símbols +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xml new file mode 100644 index 000000000..a12a84f2b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xml @@ -0,0 +1,185 @@ + + + + + Common » Character-Map Template Reference + + $Id: charmap.xsl 7266 2007-08-22 11:58:42Z xmldoc $ + + + + + Introduction + +This is technical reference documentation for the + character-map templates in the DocBook XSL Stylesheets. + + + +These templates are defined in a separate file from the set + of “common†templates because some of the common templates + reference DocBook XSL stylesheet parameters, requiring the + entire set of parameters to be imported/included in any + stylesheet that imports/includes the common templates. + + +The character-map templates don’t import or include + any DocBook XSL stylesheet parameters, so the + character-map templates can be used without importing the + whole set of parameters. + + + +This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + +apply-character-map +Applies an XSLT character map + + +<xsl:template name="apply-character-map"> +<xsl:param name="content"/> +<xsl:param name="map.contents"/> + ... +</xsl:template> + +Description + +This template applies an XSLT character map; that is, it causes certain + individual characters to be substituted with strings of one + or more characters. It is useful mainly for replacing + multiple “special†characters or symbols in the same target + content. It uses the value of + map.contents to do substitution on + content, and then returns the + modified contents. + + + +This template is a very slightly modified version of + Jeni Tennison’s replace_strings + template in the multiple string replacements section of Dave Pawson’s + XSLT FAQ. + + +The apply-string-subst-map + template is essentially the same template as the + apply-character-map template; the + only difference is that in the map that + apply-string-subst-map expects, oldstring and newstring attributes are used + instead of character and string attributes. + + + Parameters + + + content + + +The content on which to perform the character-map + substitution. + + + + map.contents + + +A node set of elements, with each element having + the following attributes: + + + + character, a + character to be replaced + + + string, a + string with which to replace character + + + + + + + + + + + + + +read-character-map +Reads in all or part of an XSLT character map + + +<xsl:template name="read-character-map"> +<xsl:param name="use.subset"/> +<xsl:param name="subset.profile"/> +<xsl:param name="uri"/> + ... +</xsl:template> + +Description + +The XSLT 2.0 specification describes character maps and explains how they may be used + to allow a specific character appearing in a text or + attribute node in a final result tree to be substituted by + a specified string of characters during serialization. The + read-character-map template provides a + means for reading and using character maps with XSLT + 1.0-based tools. + + +This template reads the character-map contents from + uri (in full or in part, depending on + the value of the use.subset + parameter), then passes those contents to the + apply-character-map template, along with + content, the data on which to perform + the character substitution. + + +Using the character map “in part†means that it uses only + those output-character elements that match the + XPath expression given in the value of the + subset.profile parameter. The current + implementation of that capability here relies on the + evaluate extension XSLT function. + + Parameters + + + use.subset + + +Specifies whether to use a subset of the character + map instead of the whole map; boolean + 0 or 1 + + + + subset.profile + + +XPath expression that specifies what subset of the + character map to use + + + + uri + + +URI for a character map + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xsl new file mode 100644 index 000000000..3e0f5d4df --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/charmap.xsl @@ -0,0 +1,221 @@ + + + + + + + Common » Character-Map Template Reference + + $Id: charmap.xsl 7266 2007-08-22 11:58:42Z xmldoc $ + + + + + Introduction + This is technical reference documentation for the + character-map templates in the DocBook XSL Stylesheets. + + These templates are defined in a separate file from the set + of “common†templates because some of the common templates + reference DocBook XSL stylesheet parameters, requiring the + entire set of parameters to be imported/included in any + stylesheet that imports/includes the common templates. + The character-map templates don’t import or include + any DocBook XSL stylesheet parameters, so the + character-map templates can be used without importing the + whole set of parameters. + + This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + + Applies an XSLT character map + + This template applies an XSLT character map; that is, it causes certain + individual characters to be substituted with strings of one + or more characters. It is useful mainly for replacing + multiple “special†characters or symbols in the same target + content. It uses the value of + map.contents to do substitution on + content, and then returns the + modified contents. + + This template is a very slightly modified version of + Jeni Tennison’s replace_strings + template in the multiple string replacements section of Dave Pawson’s + XSLT FAQ. + The apply-string-subst-map + template is essentially the same template as the + apply-character-map template; the + only difference is that in the map that + apply-string-subst-map expects, oldstring and newstring attributes are used + instead of character and string attributes. + + + + + content + + The content on which to perform the character-map + substitution. + + + map.contents + + A node set of elements, with each element having + the following attributes: + + + character, a + character to be replaced + + + string, a + string with which to replace character + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Reads in all or part of an XSLT character map + + The XSLT 2.0 specification describes character maps and explains how they may be used + to allow a specific character appearing in a text or + attribute node in a final result tree to be substituted by + a specified string of characters during serialization. The + read-character-map template provides a + means for reading and using character maps with XSLT + 1.0-based tools. + This template reads the character-map contents from + uri (in full or in part, depending on + the value of the use.subset + parameter), then passes those contents to the + apply-character-map template, along with + content, the data on which to perform + the character substitution. + Using the character map “in part†means that it uses only + those output-character elements that match the + XPath expression given in the value of the + subset.profile parameter. The current + implementation of that capability here relies on the + evaluate extension XSLT function. + + + + use.subset + + Specifies whether to use a subset of the character + map instead of the whole map; boolean + 0 or 1 + + + subset.profile + + XPath expression that specifies what subset of the + character map to use + + + uri + + URI for a character map + + + + + + + + + + + + + + + + + + + + + + + +Error: To process character-map subsets, you must use an XSLT engine +that supports the evaluate() XSLT extension function. Your XSLT engine +does not support it. + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xml new file mode 100644 index 000000000..da79980ee --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xml @@ -0,0 +1,622 @@ + + + + + Common » Base Template Reference + + $Id: common.xsl 8784 2010-07-28 12:32:54Z mzjn $ + + + + + Introduction + +This is technical reference documentation for the “base†+ set of common templates in the DocBook XSL Stylesheets. + + +This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + +is.component +Tests if a given node is a component-level element + + +<xsl:template name="is.component"> +<xsl:param name="node" select="."/> + ... +</xsl:template> + +Description + +This template returns '1' if the specified node is a component +(Chapter, Appendix, etc.), and '0' otherwise. + +Parameters + + +node + + +The node which is to be tested. + + + + + +Returns + +This template returns '1' if the specified node is a component +(Chapter, Appendix, etc.), and '0' otherwise. + + + + + +is.section +Tests if a given node is a section-level element + + +<xsl:template name="is.section"> +<xsl:param name="node" select="."/> + ... +</xsl:template> + +Description + +This template returns '1' if the specified node is a section +(Section, Sect1, Sect2, etc.), and '0' otherwise. + +Parameters + + +node + + +The node which is to be tested. + + + + + +Returns + +This template returns '1' if the specified node is a section +(Section, Sect1, Sect2, etc.), and '0' otherwise. + + + + + +section.level +Returns the hierarchical level of a section + + +<xsl:template name="section.level"> +<xsl:param name="node" select="."/> + ... +</xsl:template> + +Description + +This template calculates the hierarchical level of a section. +The element sect1 is at level 1, sect2 is +at level 2, etc. + + + +Recursive sections are calculated down to the fifth level. + +Parameters + + +node + + +The section node for which the level should be calculated. +Defaults to the context node. + + + + + +Returns + +The section level, 1, 2, etc. + + + + + + +qanda.section.level +Returns the hierarchical level of a QandASet + + +<xsl:template name="qanda.section.level"/> + +Description + +This template calculates the hierarchical level of a QandASet. + + +Returns + +The level, 1, 2, etc. + + + + + + +select.mediaobject +Selects and processes an appropriate media object from a list + + +<xsl:template name="select.mediaobject"> +<xsl:param name="olist" select="imageobject|imageobjectco |videoobject|audioobject|textobject"/> + ... +</xsl:template> + +Description + +This template takes a list of media objects (usually the +children of a mediaobject or inlinemediaobject) and processes +the "right" object. + + + +This template relies on a template named +"select.mediaobject.index" to determine which object +in the list is appropriate. + + + +If no acceptable object is located, nothing happens. + +Parameters + + +olist + + +The node list of potential objects to examine. + + + + + +Returns + +Calls <xsl:apply-templates> on the selected object. + + + + + +select.mediaobject.index +Selects the position of the appropriate media object from a list + + +<xsl:template name="select.mediaobject.index"> +<xsl:param name="olist" select="imageobject|imageobjectco |videoobject|audioobject|textobject"/> +<xsl:param name="count">1</xsl:param> + ... +</xsl:template> + +Description + +This template takes a list of media objects (usually the +children of a mediaobject or inlinemediaobject) and determines +the "right" object. It returns the position of that object +to be used by the calling template. + + + +If the parameter use.role.for.mediaobject +is nonzero, then it first checks for an object with +a role attribute of the appropriate value. It takes the first +of those. Otherwise, it takes the first acceptable object +through a recursive pass through the list. + + + +This template relies on a template named "is.acceptable.mediaobject" +to determine if a given object is an acceptable graphic. The semantics +of media objects is that the first acceptable graphic should be used. + + + + +If no acceptable object is located, no index is returned. + +Parameters + + +olist + + +The node list of potential objects to examine. + + + +count + + +The position in the list currently being considered by the +recursive process. + + + + + +Returns + +Returns the position in the original list of the selected object. + + + + + +is.acceptable.mediaobject +Returns '1' if the specified media object is recognized + + +<xsl:template name="is.acceptable.mediaobject"> +<xsl:param name="object"/> + ... +</xsl:template> + +Description + +This template examines a media object and returns '1' if the +object is recognized as a graphic. + +Parameters + + +object + + +The media object to consider. + + + + + +Returns + +0 or 1 + + + + + +check.id.unique +Warn users about references to non-unique IDs + + +<xsl:template name="check.id.unique"> +<xsl:param name="linkend"/> + ... +</xsl:template> + +Description + +If passed an ID in linkend, +check.id.unique prints +a warning message to the user if either the ID does not exist or +the ID is not unique. + + + + + +check.idref.targets +Warn users about incorrectly typed references + + +<xsl:template name="check.idref.targets"> +<xsl:param name="linkend"/> +<xsl:param name="element-list"/> + ... +</xsl:template> + +Description + +If passed an ID in linkend, +check.idref.targets makes sure that the element +pointed to by the link is one of the elements listed in +element-list and warns the user otherwise. + + + + + +copyright.years +Print a set of years with collapsed ranges + + +<xsl:template name="copyright.years"> +<xsl:param name="years"/> +<xsl:param name="print.ranges" select="1"/> +<xsl:param name="single.year.ranges" select="0"/> +<xsl:param name="firstyear" select="0"/> +<xsl:param name="nextyear" select="0"/> + ... +</xsl:template> + +Description + +This template prints a list of year elements with consecutive +years printed as a range. In other words: + + +<year>1992</year> +<year>1993</year> +<year>1994</year> + + +is printed 1992-1994, whereas: + + +<year>1992</year> +<year>1994</year> + + +is printed 1992, 1994. + + + +This template assumes that all the year elements contain only +decimal year numbers, that the elements are sorted in increasing +numerical order, that there are no duplicates, and that all the years +are expressed in full century+year +(1999 not 99) notation. + +Parameters + + +years + + +The initial set of year elements. + + + +print.ranges + + +If non-zero, multi-year ranges are collapsed. If zero, all years +are printed discretely. + + + +single.year.ranges + + +If non-zero, two consecutive years will be printed as a range, +otherwise, they will be printed discretely. In other words, a single +year range is 1991-1992 but discretely it's +1991, 1992. + + + + + +Returns + +This template returns the formatted list of years. + + + + + +find.path.params +Search in a table for the "best" match for the node + + +<xsl:template name="find.path.params"> +<xsl:param name="node" select="."/> +<xsl:param name="table" select="''"/> +<xsl:param name="location"> + <xsl:call-template name="xpath.location"> + <xsl:with-param name="node" select="$node"/> + </xsl:call-template> + </xsl:param> + ... +</xsl:template> + +Description + +This template searches in a table for the value that most-closely +(in the typical best-match sense of XSLT) matches the current (element) +node location. + + + + + +string.upper +Converts a string to all uppercase letters + + +<xsl:template name="string.upper"> +<xsl:param name="string" select="''"/> + ... +</xsl:template> + +Description + +Given a string, this template does a language-aware conversion +of that string to all uppercase letters, based on the values of the +lowercase.alpha and +uppercase.alpha gentext keys for the current +locale. It affects only those characters found in the values of +lowercase.alpha and +uppercase.alpha. All other characters are left +unchanged. + +Parameters + + +string + + +The string to convert to uppercase. + + + + + + + + + +string.lower +Converts a string to all lowercase letters + + +<xsl:template name="string.lower"> +<xsl:param name="string" select="''"/> + ... +</xsl:template> + +Description + +Given a string, this template does a language-aware conversion +of that string to all lowercase letters, based on the values of the +uppercase.alpha and +lowercase.alpha gentext keys for the current +locale. It affects only those characters found in the values of +uppercase.alpha and +lowercase.alpha. All other characters are left +unchanged. + +Parameters + + +string + + +The string to convert to lowercase. + + + + + + + + + +select.choice.separator +Returns localized choice separator + + +<xsl:template name="select.choice.separator"/> + +Description + +This template enables auto-generation of an appropriate + localized "choice" separator (for example, "and" or "or") before + the final item in an inline list (though it could also be useful + for generating choice separators for non-inline lists). + + +It currently works by evaluating a processing instruction + (PI) of the form <?dbchoice choice="foo"?> : + + + + if the value of the choice + pseudo-attribute is "and" or "or", returns a localized "and" + or "or" + + + otherwise returns the literal value of the + choice pseudo-attribute + + + + The latter is provided only as a temporary workaround because the + locale files do not currently have translations for the word + or. So if you want to generate a a + logical "or" separator in French (for example), you currently need + to do this: + <?dbchoice choice="ou"?> + + + + +The dbchoice processing instruction is + an unfortunate hack; support for it may disappear in the future + (particularly if and when a more appropriate means for marking + up "choice" lists becomes available in DocBook). + + + + + + +evaluate.info.profile +Evaluates an info profile + + +<xsl:template name="evaluate.info.profile"> +<xsl:param name="profile"/> +<xsl:param name="info"/> + ... +</xsl:template> + +Description + +This template evaluates an "info profile" matching the XPath + expression given by the profile + parameter. It relies on the XSLT evaluate() + extension function. + + + +The value of the profile parameter + can include the literal string $info. If found + in the value of the profile parameter, the + literal string $info string is replaced with + the value of the info parameter, which + should be a set of *info nodes; the + expression is then evaluated using the XSLT + evaluate() extension function. + + Parameters + + + + profile + + +A string representing an XPath expression + + + + + info + + +A set of *info nodes + + + + + + Returns + +Returns a node (the result of evaluating the + profile parameter) + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xsl new file mode 100644 index 000000000..ab8fbb01f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/common.xsl @@ -0,0 +1,2039 @@ + + + + + + + + Common » Base Template Reference + + $Id: common.xsl 8784 2010-07-28 12:32:54Z mzjn $ + + + + + Introduction + This is technical reference documentation for the “base†+ set of common templates in the DocBook XSL Stylesheets. + This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + + + + + + + + +Tests if a given node is a component-level element + + +This template returns '1' if the specified node is a component +(Chapter, Appendix, etc.), and '0' otherwise. + + + + +node + +The node which is to be tested. + + + + + + +This template returns '1' if the specified node is a component +(Chapter, Appendix, etc.), and '0' otherwise. + + + + + + + 1 + 0 + + + + + + +Tests if a given node is a section-level element + + +This template returns '1' if the specified node is a section +(Section, Sect1, Sect2, etc.), and '0' otherwise. + + + + +node + +The node which is to be tested. + + + + + + +This template returns '1' if the specified node is a section +(Section, Sect1, Sect2, etc.), and '0' otherwise. + + + + + + + 1 + 0 + + + + + + +Returns the hierarchical level of a section + + +This template calculates the hierarchical level of a section. +The element sect1 is at level 1, sect2 is +at level 2, etc. + +Recursive sections are calculated down to the fifth level. + + + + +node + +The section node for which the level should be calculated. +Defaults to the context node. + + + + + + +The section level, 1, 2, etc. + + + + + + + + 1 + 2 + 3 + 4 + 5 + + + 6 + 5 + 4 + 3 + 2 + 1 + + + + + + + + + + 2 + 3 + 4 + 5 + 5 + + + 5 + 4 + 3 + 2 + + + 1 + + + 1 + + + + +Returns the hierarchical level of a QandASet + + +This template calculates the hierarchical level of a QandASet. + + + + +The level, 1, 2, etc. + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + 2 + 3 + + + 5 + 4 + 3 + 2 + 1 + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + question + answer + qandadiv + qandaset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [FAMILY Given] + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +[ +] +{ +} + + +[ +] +... + + + | +4pi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Selects and processes an appropriate media object from a list + + +This template takes a list of media objects (usually the +children of a mediaobject or inlinemediaobject) and processes +the "right" object. + +This template relies on a template named +"select.mediaobject.index" to determine which object +in the list is appropriate. + +If no acceptable object is located, nothing happens. + + + + +olist + +The node list of potential objects to examine. + + + + + + +Calls <xsl:apply-templates> on the selected object. + + + + + + + + + + + + + + + + + + + + + +Selects the position of the appropriate media object from a list + + +This template takes a list of media objects (usually the +children of a mediaobject or inlinemediaobject) and determines +the "right" object. It returns the position of that object +to be used by the calling template. + +If the parameter use.role.for.mediaobject +is nonzero, then it first checks for an object with +a role attribute of the appropriate value. It takes the first +of those. Otherwise, it takes the first acceptable object +through a recursive pass through the list. + +This template relies on a template named "is.acceptable.mediaobject" +to determine if a given object is an acceptable graphic. The semantics +of media objects is that the first acceptable graphic should be used. + + +If no acceptable object is located, no index is returned. + + + + +olist + +The node list of potential objects to examine. + + +count + +The position in the list currently being considered by the +recursive process. + + + + + + +Returns the position in the original list of the selected object. + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + 0 + + + + 0 + + + + 1 + + + + 0 + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Returns '1' if the specified media object is recognized + + +This template examines a media object and returns '1' if the +object is recognized as a graphic. + + + + +object + +The media object to consider. + + + + + + +0 or 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + + + + + + + + + + + . + + + + + + + + + + + + + + + + +Warn users about references to non-unique IDs + +If passed an ID in linkend, +check.id.unique prints +a warning message to the user if either the ID does not exist or +the ID is not unique. + + + + + + + + + + + + Error: no ID for constraint linkend: + + . + + + + + + + Warning: multiple "IDs" for constraint linkend: + + . + + + + + + +Warn users about incorrectly typed references + +If passed an ID in linkend, +check.idref.targets makes sure that the element +pointed to by the link is one of the elements listed in +element-list and warns the user otherwise. + + + + + + + + + + + + + + Error: linkend ( + + ) points to " + + " not (one of): + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unexpected context in procedure.step.numeration: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + loweralpha + lowerroman + upperalpha + upperroman + arabic + arabic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1. + a. + i. + A. + I. + + + + Unexpected numeration: + + + + + + + + + + + + + + + + + + + + + + + + + + circle + square + disc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Print a set of years with collapsed ranges + + +This template prints a list of year elements with consecutive +years printed as a range. In other words: + +1992 +1993 +1994]]> + +is printed 1992-1994, whereas: + +1992 +1994]]> + +is printed 1992, 1994. + +This template assumes that all the year elements contain only +decimal year numbers, that the elements are sorted in increasing +numerical order, that there are no duplicates, and that all the years +are expressed in full century+year +(1999 not 99) notation. + + + + +years + +The initial set of year elements. + + +print.ranges + +If non-zero, multi-year ranges are collapsed. If zero, all years +are printed discretely. + + +single.year.ranges + +If non-zero, two consecutive years will be printed as a range, +otherwise, they will be printed discretely. In other words, a single +year range is 1991-1992 but discretely it's +1991, 1992. + + + + + + +This template returns the formatted list of years. + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + - + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + , + + , + + + + - + + , + + + + + + + + + + + + + + + + +Search in a table for the "best" match for the node + + +This template searches in a table for the value that most-closely +(in the typical best-match sense of XSLT) matches the current (element) +node location. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + + + + +Converts a string to all uppercase letters + + +Given a string, this template does a language-aware conversion +of that string to all uppercase letters, based on the values of the +lowercase.alpha and +uppercase.alpha gentext keys for the current +locale. It affects only those characters found in the values of +lowercase.alpha and +uppercase.alpha. All other characters are left +unchanged. + + + + +string + +The string to convert to uppercase. + + + + + + + + + + + + + + + + + + + + + + + +Converts a string to all lowercase letters + + +Given a string, this template does a language-aware conversion +of that string to all lowercase letters, based on the values of the +uppercase.alpha and +lowercase.alpha gentext keys for the current +locale. It affects only those characters found in the values of +uppercase.alpha and +lowercase.alpha. All other characters are left +unchanged. + + + + +string + +The string to convert to lowercase. + + + + + + + + + + + + + + + + + + + + + + + + Returns localized choice separator + + This template enables auto-generation of an appropriate + localized "choice" separator (for example, "and" or "or") before + the final item in an inline list (though it could also be useful + for generating choice separators for non-inline lists). + It currently works by evaluating a processing instruction + (PI) of the form <?dbchoice choice="foo"?> : + + + if the value of the choice + pseudo-attribute is "and" or "or", returns a localized "and" + or "or" + + + otherwise returns the literal value of the + choice pseudo-attribute + + + The latter is provided only as a temporary workaround because the + locale files do not currently have translations for the word + or. So if you want to generate a a + logical "or" separator in French (for example), you currently need + to do this: + <?dbchoice choice="ou"?> + + + The dbchoice processing instruction is + an unfortunate hack; support for it may disappear in the future + (particularly if and when a more appropriate means for marking + up "choice" lists becomes available in DocBook). + + + + + + + + + + + + + + + + + + + + + + + + + + Evaluates an info profile + + This template evaluates an "info profile" matching the XPath + expression given by the profile + parameter. It relies on the XSLT evaluate() + extension function. + + The value of the profile parameter + can include the literal string $info. If found + in the value of the profile parameter, the + literal string $info string is replaced with + the value of the info parameter, which + should be a set of *info nodes; the + expression is then evaluated using the XSLT + evaluate() extension function. + + + + + profile + + A string representing an XPath expression + + + + info + + A set of *info nodes + + + + + + + Returns a node (the result of evaluating the + profile parameter) + + + + + + + + + + + + + + + + +Error: The "info profiling" mechanism currently requires an XSLT +engine that supports the evaluate() XSLT extension function. Your XSLT +engine does not support it. + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cs.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cs.xml new file mode 100644 index 000000000..b803f79bd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cs.xml @@ -0,0 +1,700 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symboly +A +a +à +á +B +b +C +c +ÄŒ +Ä +D +d +ÄŽ +Ä +E +e +É +é +Äš +Ä› +Ë +ë +F +f +G +g +H +h +Ch +ch +cH +CH +I +i +à +í +J +j +K +k +L +l +M +m +N +n +Ň +ň +O +o +Ó +ó +Ö +ö +P +p +Q +q +R +r +Ř +Å™ +S +s +Å  +Å¡ +T +t +Ť +Å¥ +U +u +Ú +ú +Å® +ů +Ãœ +ü +V +v +W +w +X +x +Y +y +à +ý +Z +z +Ž +ž + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cy.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cy.xml new file mode 100644 index 000000000..bc0f08a45 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/cy.xml @@ -0,0 +1,1245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +Ch +ch +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +Dd +dd +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +Ff +ff +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +Ng +ng +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +Ll +ll +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Ph +ph +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +Rh +rh +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +Th +th +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/da.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/da.xml new file mode 100644 index 000000000..90eb01c2a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/da.xml @@ -0,0 +1,664 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z +Æ +æ +Ø +ø +Ã… +Ã¥ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/de.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/de.xml new file mode 100644 index 000000000..0403153f1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/de.xml @@ -0,0 +1,666 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbole +A +a +Ä +ä +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +Ö +ö +P +p +Q +q +R +r +S +s +T +t +U +u +Ãœ +ü +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/el.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/el.xml new file mode 100644 index 000000000..f8461d1e4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/el.xml @@ -0,0 +1,729 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ΣÏμβολα +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z +Α +α +Ά +ά +Î’ +β +Γ +γ +Δ +δ +Ε +ε +Έ +έ +Ζ +ζ +Η +η +Ή +ή +Θ +θ +Ι +ι +Ί +ί +Ϊ +ÏŠ +Î +Κ +κ +Λ +λ +Îœ +μ +Î +ν +Ξ +ξ +Ο +ο +ÎŒ +ÏŒ +Π +Ï€ +Ρ +Ï +Σ +σ +Ï‚ +Τ +Ï„ +Î¥ +Ï… +ÎŽ +Ï +Ϋ +Ï‹ +ΰ +Φ +φ +Χ +χ +Ψ +ψ +Ω +ω +Î +ÏŽ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/en.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/en.xml new file mode 100644 index 000000000..b77f2c22f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/en.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/entities.ent b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/entities.ent new file mode 100644 index 000000000..fb3e9322e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/entities.ent @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + +'> + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eo.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eo.xml new file mode 100644 index 000000000..c6b95d08d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eo.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/es.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/es.xml new file mode 100644 index 000000000..aad19800e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/es.xml @@ -0,0 +1,676 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Símbolos +A +a +á +à +B +b +C +c +CH +ch +D +d +E +e +É +é +F +f +G +g +H +h +I +i +à +í +J +j +K +k +L +l +LL +ll +M +m +N +n +Ñ +ñ +O +o +Ó +ó +P +p +Q +q +R +r +S +s +T +t +U +u +Ú +ú +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/et.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/et.xml new file mode 100644 index 000000000..b7d224ffc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/et.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eu.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eu.xml new file mode 100644 index 000000000..3841d3f92 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/eu.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fa.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fa.xml new file mode 100644 index 000000000..257dc0bf4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fa.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +سمبل‌های راهنم +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fi.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fi.xml new file mode 100644 index 000000000..232d057a3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fi.xml @@ -0,0 +1,670 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbole +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +Å  +Å¡ +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z +Ž +ž +Ã… +Ã¥ +Ä +ä +Ö +ö + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fr.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fr.xml new file mode 100644 index 000000000..5ca524822 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/fr.xml @@ -0,0 +1,690 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symboles +A +a +à +À +â + +Æ +æ +B +b +C +c +ç +D +d +E +e +ê +Ê +é +É +è +È +ë +Ë +€ +F +f +G +g +H +h +I +i +ÃŽ +î +à +ï +J +j +K +k +L +l +M +m +N +n +O +o +Ö +ö +Å’ +Å“ +P +p +Q +q +R +r +S +s +T +t +U +u +Ù +ù +Û +û +Ãœ +ü +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ga.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ga.xml new file mode 100644 index 000000000..054036be4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ga.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Siombailí +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gentext.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gentext.xsl new file mode 100644 index 000000000..2417e776e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gentext.xsl @@ -0,0 +1,839 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .formal + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + object.xref.markup: empty xref template + for linkend=" + + " and @xrefstyle=" + + " + + + + + + + + + + + + + + + + + + + + + + + + + + + Xref is only supported to listitems in an + orderedlist: + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + %n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + Attempt to use %d in gentext with no referrer! + + + + + + + % + + + % + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + labelnumber + + + labelname + + + label + + + + + + + + quotedtitle + + + title + + + + + + + + + + + + + + nopage + + + pagenumber + + + pageabbrev + + + Page + + + page + + + + + + + + + + + nodocname + + + docnamelong + + + docname + + + + + + + + + + + + + + + + + + + + + + %n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %t + + + + + + %t + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %p + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gl.xml new file mode 100644 index 000000000..7346088b6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gl.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gu.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gu.xml new file mode 100644 index 000000000..ae7ae2e5a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/gu.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +સંકેતો +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/he.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/he.xml new file mode 100644 index 000000000..d084df4ba --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/he.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hi.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hi.xml new file mode 100644 index 000000000..76a075fbb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hi.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +संकेत +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hr.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hr.xml new file mode 100644 index 000000000..2db7030fc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hr.xml @@ -0,0 +1,662 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Oznake +A +a +B +b +C +c +Ć +ć +ÄŒ +Ä +D +d +Ä +Ä‘ +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +R +r +S +s +Å  +Å¡ +T +t +U +u +V +v +Z +z +Ž +ž + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hu.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hu.xml new file mode 100644 index 000000000..ab90c948a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/hu.xml @@ -0,0 +1,678 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Jelzések +A +a +à +á +B +b +C +c +D +d +E +e +É +é +F +f +G +g +H +h +I +i +à +í +J +j +K +k +L +l +M +m +N +n +O +o +Ó +ó +Ö +ö +Å +Å‘ +P +p +Q +q +R +r +S +s +T +t +U +u +Ú +ú +Ãœ +ü +Å° +ű +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/id.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/id.xml new file mode 100644 index 000000000..b730ad894 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/id.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Simbol +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/insertfile.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/insertfile.xsl new file mode 100644 index 000000000..66bcf410e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/insertfile.xsl @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/is.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/is.xml new file mode 100644 index 000000000..6a5b07ff2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/is.xml @@ -0,0 +1,672 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tákn +A +a +à +á +B +b +D +d +Ä +ð +E +e +É +é +F +f +G +g +H +h +I +i +à +í +J +j +K +k +L +l +M +m +N +n +O +o +Ó +ó +P +p +R +r +S +s +T +t +U +u +Ú +ú +V +v +X +x +Y +y +à +ý +Þ +þ +Æ +æ +Ö +ö + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/it.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/it.xml new file mode 100644 index 000000000..691e4d258 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/it.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Simboli +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ja.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ja.xml new file mode 100644 index 000000000..4dd809bab --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ja.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +シンボル +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ka.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ka.xml new file mode 100644 index 000000000..bd6d29c45 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ka.xml @@ -0,0 +1,700 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +სიმბáƒáƒšáƒáƒ”ბი +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z +რ+ბ +გ +დ +ე +ვ +ზ +ჱ +თ +ი +კ +ლ +მ +ნ +ჲ +რ+პ +ჟ +რ +ს +ტ +ჳ +უ +ფ +ქ +ღ +ყ +შ +ჩ +ც +ძ +წ +ჭ +ხ +ჴ +ჯ +ჰ +ჵ +ჶ +ჷ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/kn.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/kn.xml new file mode 100644 index 000000000..5c246f1cd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/kn.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ಸಂಕೇತಗಳೠ+A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ko.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ko.xml new file mode 100644 index 000000000..526407738 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ko.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ky.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ky.xml new file mode 100644 index 000000000..eb2e50ec6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ky.xml @@ -0,0 +1,732 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Символдор +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z +Ð +а +Б +б +Ð’ +в +Г +г +Д +д +Е +е +Ð +Ñ‘ +Ж +ж +З +з +И +и +Й +й +К +к +Л +л +Ðœ +м +Ð +н +Ò¢ +Ò£ +О +о +Ó¨ +Ó© +П +п +Р +Ñ€ +С +Ñ +Т +Ñ‚ +У +у +Ò® +Ò¯ +Ф +Ñ„ +Ð¥ +Ñ… +Ц +ц +Ч +ч +Ш +ш +Щ +щ +Ъ +ÑŠ +Ы +Ñ‹ +Ь +ÑŒ +Э +Ñ +Ю +ÑŽ +Я +Ñ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.dtd b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.dtd new file mode 100644 index 000000000..9bf2f66b7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.dtd @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xml new file mode 100644 index 000000000..da3df2787 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xsl new file mode 100644 index 000000000..f35a0b6e2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/l10n.xsl @@ -0,0 +1,593 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No localization exists for " + + " or " + + ". Using default " + + ". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No " + + " localization of " + + " exists + + + . + + + ; using "en". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bullet + + + + + + + + + + + + + + + + + + + + No " + + " localization of dingbat + + exists; using "en". + + + + + + + + + + + + + + + + startquote + + + + + + endquote + + + + + + nestedstartquote + + + + + + nestedendquote + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No " + + " localization exists. + + + + + + + + No context named " + + " exists in the " + + " localization. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No template for " + + " (or any of its leaves) exists in the context named " + + " in the " + + " localization. + + + + + + + + + + + + + + + + + + + + No " + + " localization exists. + + + + + + + + + + No context named " + + " exists in the " + + " localization. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No template for " + + " (or any of its leaves) exists in the context named " + + " in the " + + " localization. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 0 + + + + \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/la.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/la.xml new file mode 100644 index 000000000..f8a7013c9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/la.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/labels.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/labels.xsl new file mode 100644 index 000000000..c5f74f3d9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/labels.xsl @@ -0,0 +1,890 @@ + + + + + + + + + + +Provides access to element labels + +Processing an element in the +label.markup mode produces the +element label. +Trailing punctuation is not added to the label. + + + + + + . + + + + + + + Request for label of unexpected element: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + label.markup: this can't happen! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + a + i + A + I + + + + Unexpected numeration: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + +Returns true if $section should be labelled + +Returns true if the specified section should be labelled. +By default, this template returns zero unless +the section level is less than or equal to the value of the +$section.autolabel.max.depth parameter, in +which case it returns +$section.autolabel. +Custom stylesheets may override it to get more selective behavior. + + + + + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + Unexpected .autolabel value: + ; using default. + + + + + + + + + +Returns format for autolabel parameters + +Returns format passed as parameter if non zero. Supported + format are 'arabic' or '1', 'loweralpha' or 'a', 'lowerroman' or 'i', + 'upperlapha' or 'A', 'upperroman' or 'I', 'arabicindic' or '١'. + If its not one of these then + returns the default format. + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lt.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lt.xml new file mode 100644 index 000000000..9f9a54523 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lt.xml @@ -0,0 +1,678 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Simboliai +A +a +Ä„ +Ä… +B +b +C +c +ÄŒ +Ä +D +d +E +e +Ę +Ä™ +Ä– +Ä— +F +f +G +g +H +h +I +i +Ä® +į +Y +y +J +j +K +k +L +l +M +m +N +n +O +o +P +p +R +r +S +s +Å  +Å¡ +T +t +U +u +Ų +ų +Ū +Å« +V +v +Z +z +Ž +ž +Q +q +W +w +X +x + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lv.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lv.xml new file mode 100644 index 000000000..ce6ba4988 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/lv.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ml.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ml.xml new file mode 100644 index 000000000..280e7dbb3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ml.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +à´šà´¿à´¹àµà´¨à´™àµà´™à´³àµâ€ +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mn.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mn.xml new file mode 100644 index 000000000..ef9552665 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mn.xml @@ -0,0 +1,730 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ТÑмдÑгтүүд +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z +Ð +а +Б +б +Ð’ +в +Г +г +Д +д +Е +е +Ð +Ñ‘ +Ж +ж +З +з +И +и +Й +й +К +к +Л +л +Ðœ +м +Ð +н +О +о +Ó¨ +Ó© +П +п +Р +Ñ€ +С +Ñ +Т +Ñ‚ +У +у +Ò® +Ò¯ +Ф +Ñ„ +Ð¥ +Ñ… +Ц +ц +Ч +ч +Ш +ш +Щ +щ +Ъ +ÑŠ +Ы +Ñ‹ +Ь +ÑŒ +Э +Ñ +Ю +ÑŽ +Я +Ñ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mr.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mr.xml new file mode 100644 index 000000000..798fff56f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/mr.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +पà¥à¤°à¤¤à¥€à¤• +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nb.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nb.xml new file mode 100644 index 000000000..b9d8a4f15 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nb.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nds.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nds.xml new file mode 100644 index 000000000..af4b296be --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nds.xml @@ -0,0 +1,666 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbole +A +a +Ä +ä +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +Ö +ö +P +p +Q +q +R +r +S +s +T +t +U +u +Ãœ +ü +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nl.xml new file mode 100644 index 000000000..33fb1f41e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nl.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbolen +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nn.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nn.xml new file mode 100644 index 000000000..4898d4278 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/nn.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/olink.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/olink.xsl new file mode 100644 index 000000000..a790eb71d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/olink.xsl @@ -0,0 +1,1225 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Olinks not processed: must specify a + $target.database.document parameter + when using olinks with targetdoc + and targetptr attributes. + + + + + + Olink error: could not open target database ' + + '. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Olink debug: cases for targetdoc=' + + ' and targetptr=' + + ' in language ' + + '. + + + + + + + + + + + + + + Olink debug: CaseA matched. + + + + Olink debug: CaseA NOT matched + + + + + + + + + + + + + + + + Olink debug: CaseB matched. + + + + Olink debug: CaseB NOT matched + + + + + + + + + + + + + + + + + Olink debug: CaseC matched. + + + + Olink debug: CaseC NOT matched. + + + + + + + + + + + + + + + + + Olink debug: CaseD matched. + + + + Olink debug: CaseD NOT matched + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Olink debug: CaseE matched. + + + + Olink debug: CaseE NOT matched. + + + + + + + + + + + + + + + + + + + + + + + + + + + + Olink debug: CaseF matched. + + + + Olink debug: CaseF NOT matched. + + + + + + + + + + + + + + Olink debug: CaseB key is the final selection: + + + + + + + + + Olink debug: CaseA key is the final selection: + + + + + + + + + Olink debug: CaseC key is the final selection: + + + + + + + + + Olink debug: CaseD key is the final selection: + + + + + + + + + Olink debug: CaseF key is the final selection: + + + + + + + + + Olink debug: CaseE key is the final selection: + + + + + + + + Olink debug: No case matched for lang ' + + '. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Olink error: cannot compute relative + sitemap path because $current.docid ' + + ' not found in target database. + + + + + + + Olink warning: cannot compute relative + sitemap path without $current.docid parameter + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + xrefstyle is ' + + '. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Olink error: no gentext template + exists for xrefstyle ' + + ' for element ' + + ' in language ' + + ' in context 'xref-number-and-title + '. Using template without @style. + + + + + + + + Olink error: no gentext template + exists for xrefstyle ' + + ' for element ' + + ' in language ' + + ' in context 'xref-number + '. Using template without @style. + + + + + + + + Olink error: no gentext template + exists for xrefstyle ' + + ' for element ' + + ' in language ' + + ' in context 'xref + '. Using template without @style. + + + + + + Olink error: no gentext template + exists for xrefstyle ' + + ' for element ' + + ' in language ' + + '. Trying '%t'. + + + + + + + + + + + Olink debug: xrefstyle template is ' + + '. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Olink error: no generated text for + targetdoc/targetptr/lang = ' + + '. + + ???? + + + + + + + Olink error: no generated text for + targetdoc/targetptr/lang = ' + + '. + + + ???? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Olink error: cannot locate targetdoc in sitemap + + + + + + + / + + + + + + + + + + + ../ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/or.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/or.xml new file mode 100644 index 000000000..2995ac0fd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/or.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ପà­à¬°à¬¤à­€à¬• +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pa.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pa.xml new file mode 100644 index 000000000..08ef7714c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pa.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ਚਿੰਨ +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xml new file mode 100644 index 000000000..64efdcae7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xml @@ -0,0 +1,168 @@ + + +Common Processing Instruction Reference + + $Id: pi.xsl 8782 2010-07-27 21:15:17Z mzjn $ + + + + Introduction + +This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the + “common†part of the DocBook XSL stylesheets. + + +You add these PIs at particular points in a document to + cause specific “exceptions†to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + +dbchoice_choice +Generates a localized choice separator + + + + dbchoice choice="and"|"or"|string" + + +Description + +Use the dbchoice choice PI to + generate an appropriate localized “choice†separator (for + example, and or or) + before the final item in an inline simplelist + + + +This PI is a less-than-ideal hack; support for it may + disappear in the future (particularly if and when a more + appropriate means for marking up "choice" lists becomes + available in DocBook). + + + Parameters + + + choice="and" + + +generates a localized and separator + + + + choice="or" + + +generates a localized or separator + + + + choice="string" + + +generates a literal string separator + + + + + + + + + +dbtimestamp +Inserts a date timestamp + + + + dbtimestamp format="formatstring" [padding="0"|"1"] + + +Description + +Use the dbtimestamp PI at any point in a + source document to cause a date timestamp (a formatted + string representing the current date and time) to be + inserted in output of the document. + + Parameters + + + format="formatstring" + + +Specifies format in which the date and time are + output + + + +For details of the content of the format string, + see Date and time. + + + + + padding="0"|"1" + + +Specifies padding behavior; if non-zero, padding is is added + + + + + + + + + +dbtex_delims +Generates delimiters around embedded TeX equations + in output + + + + dbtex delims="no"|"yes" + + +Description + +Use the dbtex delims PI as a + child of a textobject containing embedded TeX + markup, to cause that markup to be surrounded by + $ delimiter characters in output. + + + +This feature is useful for print/PDF output only if you + use the obsolete and now unsupported PassiveTeX XSL-FO + engine. + + + Parameters + + + dbtex delims="no"|"yes" + + +Specifies whether delimiters are output + + + + + + Related Global Parameters + +tex.math.delims + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xsl new file mode 100644 index 000000000..42aac0d5b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pi.xsl @@ -0,0 +1,346 @@ + + + + + +Common Processing Instruction Reference + + $Id: pi.xsl 8782 2010-07-27 21:15:17Z mzjn $ + + + + Introduction + This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the + “common†part of the DocBook XSL stylesheets. + + You add these PIs at particular points in a document to + cause specific “exceptions†to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + Generates a localized choice separator + + Use the dbchoice choice PI to + generate an appropriate localized “choice†separator (for + example, and or or) + before the final item in an inline simplelist + + This PI is a less-than-ideal hack; support for it may + disappear in the future (particularly if and when a more + appropriate means for marking up "choice" lists becomes + available in DocBook). + + + + dbchoice choice="and"|"or"|string" + + + + choice="and" + + generates a localized and separator + + + choice="or" + + generates a localized or separator + + + choice="string" + + generates a literal string separator + + + + + + + + + + choice + + + + + Inserts a date timestamp + + Use the dbtimestamp PI at any point in a + source document to cause a date timestamp (a formatted + string representing the current date and time) to be + inserted in output of the document. + + + dbtimestamp format="formatstring" [padding="0"|"1"] + + + + format="formatstring" + + Specifies format in which the date and time are + output + + For details of the content of the format string, + see Date and time. + + + + padding="0"|"1" + + Specifies padding behavior; if non-zero, padding is is added + + + + + + + + + + + format + + + + + + + + + + + + + + + + + + + padding + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + Timestamp processing requires XSLT processor with EXSLT date support. + + + + + + + Generates delimiters around embedded TeX equations + in output + + Use the dbtex delims PI as a + child of a textobject containing embedded TeX + markup, to cause that markup to be surrounded by + $ delimiter characters in output. + + This feature is useful for print/PDF output only if you + use the obsolete and now unsupported PassiveTeX XSL-FO + engine. + + + + dbtex delims="no"|"yes" + + + + dbtex delims="no"|"yes" + + Specifies whether delimiters are output + + + + + + + tex.math.delims + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + 0 + + + + + + + 0 + + + + 0 + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + Timestamp processing requires an XSLT processor with support + for the EXSLT node-set() function. + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pl.xml new file mode 100644 index 000000000..186ed3bb3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pl.xml @@ -0,0 +1,678 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbole +A +a +Ä„ +Ä… +B +b +C +c +Ć +ć +D +d +E +e +Ę +Ä™ +F +f +G +g +H +h +I +i +J +j +K +k +L +l +Å +Å‚ +M +m +N +n +Ń +Å„ +O +o +Ó +ó +P +p +Q +q +R +r +S +s +Åš +Å› +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z +Ź +ź +Å» +ż + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt.xml new file mode 100644 index 000000000..4a07359e1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Símbolos +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt_br.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt_br.xml new file mode 100644 index 000000000..3e71821cd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/pt_br.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Símbolos +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xml new file mode 100644 index 000000000..4741ce0da --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xml @@ -0,0 +1,781 @@ + + + + + Common » Refentry Metadata Template Reference + + $Id: refentry.xsl 7867 2008-03-07 09:54:25Z xmldoc $ + + + + + Introduction + +This is technical reference documentation for the “refentry + metadata†templates in the DocBook XSL Stylesheets. + + +This is not intended to be user documentation. It is provided + for developers writing customization layers for the stylesheets. + + + +Currently, only the manpages stylesheets make use of these + templates. They are, however, potentially useful elsewhere. + + + + + + +get.refentry.metadata +Gathers metadata from a refentry and its ancestors + + +<xsl:template name="get.refentry.metadata"> +<xsl:param name="refname"/> +<xsl:param name="info"/> +<xsl:param name="prefs"/> + ... +</xsl:template> + +Description + +Reference documentation for particular commands, functions, + etc., is sometimes viewed in isolation from its greater "context". For + example, users view Unix man pages as, well, individual pages, not as + part of a "book" of some kind. Therefore, it is sometimes necessary to + embed "context" information in output for each refentry. + + + +However, one problem is that different users mark up that + context information in different ways. Often (usually), the + context information is not actually part of the content of the + refentry itself, but instead part of the content of a + parent or ancestor element to the refentry. And + even then, DocBook provides a variety of elements that users might + potentially use to mark up the same kind of information. One user + might use the productnumber element to mark up version + information about a particular product, while another might use + the releaseinfo element. + + + +Taking all that in mind, the + get.refentry.metadata template tries to gather + metadata from a refentry element and its ancestor + elements in an intelligent and user-configurable way. The basic + mechanism used in the XPath expressions throughout this stylesheet + is to select the relevant metadata from the *info element that is + closest to the actual refentry – either on the + refentry itself, or on its nearest ancestor. + + + + +The get.refentry.metadata + template is actually just sort of a "driver" template; it + calls other templates that do the actual data collection, + then returns the data as a set. + + + + Parameters + + + + refname + + +The first refname in the refentry + + + + + info + + +A set of info nodes (from a refentry + element and its ancestors) + + + + + prefs + + +A node containing user preferences (from global + stylesheet parameters) + + + + + + Returns + +Returns a node set with the following elements. The + descriptions are verbatim from the man(7) man + page. + + + + title + + +the title of the man page (e.g., MAN) + + + + + section + + +the section number the man page should be placed in (e.g., + 7) + + + + + date + + +the date of the last revision + + + + + source + + +the source of the command + + + + + manual + + +the title of the manual (e.g., Linux + Programmer's Manual) + + + + + + + + + + + +get.refentry.title +Gets title metadata for a refentry + + +<xsl:template name="get.refentry.title"> +<xsl:param name="refname"/> + ... +</xsl:template> + +Description + +The man(7) man page describes this as "the + title of the man page (e.g., MAN). This differs + from refname in that, if the refentry has a + refentrytitle, we use that as the title; + otherwise, we just use first refname in the first + refnamediv in the source. + + Parameters + + + + refname + + +The first refname in the refentry + + + + + + Returns + +Returns a title node. + + + + +get.refentry.section +Gets section metadata for a refentry + + +<xsl:template name="get.refentry.section"> +<xsl:param name="refname"/> +<xsl:param name="quiet" select="0"/> + ... +</xsl:template> + +Description + +The man(7) man page describes this as "the + section number the man page should be placed in (e.g., + 7)". If we do not find a manvolnum + specified in the source, and we find that the refentry is + for a function, we use the section number 3 + ["Library calls (functions within program libraries)"]; otherwise, we + default to using 1 ["Executable programs or shell + commands"]. + + Parameters + + + + refname + + +The first refname in the refentry + + + + + quiet + + +If non-zero, no "missing" message is emitted + + + + + + Returns + +Returns a string representing a section number. + + + + +get.refentry.date +Gets date metadata for a refentry + + +<xsl:template name="get.refentry.date"> +<xsl:param name="refname"/> +<xsl:param name="info"/> +<xsl:param name="prefs"/> + ... +</xsl:template> + +Description + +The man(7) man page describes this as "the + date of the last revision". If we cannot find a date in the source, we + generate one. + + Parameters + + + + refname + + +The first refname in the refentry + + + + + info + + +A set of info nodes (from a refentry + element and its ancestors) + + + + + prefs + + +A node containing users preferences (from global stylesheet parameters) + + + + + + Returns + +Returns a date node. + + + + + +get.refentry.source +Gets source metadata for a refentry + + +<xsl:template name="get.refentry.source"> +<xsl:param name="refname"/> +<xsl:param name="info"/> +<xsl:param name="prefs"/> + ... +</xsl:template> + +Description + +The man(7) man page describes this as "the + source of the command", and provides the following examples: + + + + +For binaries, use something like: GNU, NET-2, SLS + Distribution, MCC Distribution. + + + + +For system calls, use the version of the kernel that you are + currently looking at: Linux 0.99.11. + + + + +For library calls, use the source of the function: GNU, BSD + 4.3, Linux DLL 4.4.1. + + + + + + + + +The solbook(5) man page describes + something very much like what man(7) calls + "source", except that solbook(5) names it + "software" and describes it like this: +
+ +This is the name of the software product that the topic + discussed on the reference page belongs to. For example UNIX + commands are part of the SunOS x.x + release. + +
+
+ + + +In practice, there are many pages that simply have a version + number in the "source" field. So, it looks like what we have is a + two-part field, + Name Version, + where: + + + + Name + + +product name (e.g., BSD) or org. name (e.g., GNU) + + + + + Version + + +version name + + + + + + Each part is optional. If the Name is a + product name, then the Version is probably + the version of the product. Or there may be no + Name, in which case, if there is a + Version, it is probably the version of the + item itself, not the product it is part of. Or, if the + Name is an organization name, then there + probably will be no Version. + + +
Parameters + + + + refname + + +The first refname in the refentry + + + + + info + + +A set of info nodes (from a refentry + element and its ancestors) + + + + + prefs + + +A node containing users preferences (from global + stylesheet parameters) + + + + + + Returns + +Returns a source node. + +
+ + + +get.refentry.source.name +Gets source-name metadata for a refentry + + +<xsl:template name="get.refentry.source.name"> +<xsl:param name="refname"/> +<xsl:param name="info"/> +<xsl:param name="prefs"/> + ... +</xsl:template> + +Description + +A "source name" is one part of a (potentially) two-part + Name Version + source field. For more details, see the documentation for the + get.refentry.source template. + + Parameters + + + + refname + + +The first refname in the refentry + + + + + info + + +A set of info nodes (from a refentry + element and its ancestors) + + + + + prefs + + +A node containing users preferences (from global + stylesheet parameters) + + + + + + Returns + +Depending on what output method is used for the + current stylesheet, either returns a text node or possibly an element + node, containing "source name" data. + + + + + +get.refentry.version +Gets version metadata for a refentry + + +<xsl:template name="get.refentry.version"> +<xsl:param name="refname"/> +<xsl:param name="info"/> +<xsl:param name="prefs"/> + ... +</xsl:template> + +Description + +A "version" is one part of a (potentially) two-part + Name Version + source field. For more details, see the documentation for the + get.refentry.source template. + + Parameters + + + + refname + + +The first refname in the refentry + + + + + info + + +A set of info nodes (from a refentry + element and its ancestors) + + + + + prefs + + +A node containing users preferences (from global + stylesheet parameters) + + + + + + Returns + +Depending on what output method is used for the + current stylesheet, either returns a text node or possibly an element + node, containing "version" data. + + + + + +get.refentry.manual +Gets source metadata for a refentry + + +<xsl:template name="get.refentry.manual"> +<xsl:param name="refname"/> +<xsl:param name="info"/> +<xsl:param name="prefs"/> + ... +</xsl:template> + +Description + +The man(7) man page describes this as "the + title of the manual (e.g., Linux Programmer's + Manual)". Here are some examples from existing man pages: + + + + +dpkg utilities + (dpkg-name) + + + + +User Contributed Perl Documentation + (GET) + + + + +GNU Development Tools + (ld) + + + + +Emperor Norton Utilities + (ddate) + + + + +Debian GNU/Linux manual + (faked) + + + + +GIMP Manual Pages + (gimp) + + + + +KDOC Documentation System + (qt2kdoc) + + + + + + + + +The solbook(5) man page describes + something very much like what man(7) calls + "manual", except that solbook(5) names it + "sectdesc" and describes it like this: +
+ +This is the section title of the reference page; for + example User Commands. + +
+
+ + +
Parameters + + + + refname + + +The first refname in the refentry + + + + + info + + +A set of info nodes (from a refentry + element and its ancestors) + + + + + prefs + + +A node containing users preferences (from global + stylesheet parameters) + + + + + + Returns + +Returns a manual node. + +
+ + + +get.refentry.metadata.prefs +Gets user preferences for refentry metadata gathering + + +<xsl:template name="get.refentry.metadata.prefs"/> + +Description + +The DocBook XSL stylesheets include several user-configurable + global stylesheet parameters for controlling refentry + metadata gathering. Those parameters are not read directly by the + other refentry metadata-gathering + templates. Instead, they are read only by the + get.refentry.metadata.prefs template, + which assembles them into a structure that is then passed to + the other refentry metadata-gathering + templates. + + + +So the, get.refentry.metadata.prefs + template is the only interface to collecting stylesheet parameters for + controlling refentry metadata gathering. + + Parameters + +There are no local parameters for this template; however, it + does rely on a number of global parameters. + + Returns + +Returns a manual node. + + + + + +set.refentry.metadata +Sets content of a refentry metadata item + + +<xsl:template name="set.refentry.metadata"> +<xsl:param name="refname"/> +<xsl:param name="info"/> +<xsl:param name="contents"/> +<xsl:param name="context"/> +<xsl:param name="preferred"/> + ... +</xsl:template> + +Description + +The set.refentry.metadata template is + called each time a suitable source element is found for a certain + metadata field. + + Parameters + + + + refname + + +The first refname in the refentry + + + + + info + + +A single *info node that contains the selected source element. + + + + + contents + + +A node containing the selected source element. + + + + + context + + +A string describing the metadata context in which the + set.refentry.metadata template was + called: either "date", "source", "version", or "manual". + + + + + + Returns + +Returns formatted contents of a selected source element. + +
+ diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xsl new file mode 100644 index 000000000..5a04b60c2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/refentry.xsl @@ -0,0 +1,1352 @@ + + + + + + + + + Common » Refentry Metadata Template Reference + + $Id: refentry.xsl 7867 2008-03-07 09:54:25Z xmldoc $ + + + + + Introduction + This is technical reference documentation for the “refentry + metadata†templates in the DocBook XSL Stylesheets. + This is not intended to be user documentation. It is provided + for developers writing customization layers for the stylesheets. + + Currently, only the manpages stylesheets make use of these + templates. They are, however, potentially useful elsewhere. + + + + + + + Gathers metadata from a refentry and its ancestors + + Reference documentation for particular commands, functions, + etc., is sometimes viewed in isolation from its greater "context". For + example, users view Unix man pages as, well, individual pages, not as + part of a "book" of some kind. Therefore, it is sometimes necessary to + embed "context" information in output for each refentry. + + However, one problem is that different users mark up that + context information in different ways. Often (usually), the + context information is not actually part of the content of the + refentry itself, but instead part of the content of a + parent or ancestor element to the refentry. And + even then, DocBook provides a variety of elements that users might + potentially use to mark up the same kind of information. One user + might use the productnumber element to mark up version + information about a particular product, while another might use + the releaseinfo element. + + Taking all that in mind, the + get.refentry.metadata template tries to gather + metadata from a refentry element and its ancestor + elements in an intelligent and user-configurable way. The basic + mechanism used in the XPath expressions throughout this stylesheet + is to select the relevant metadata from the *info element that is + closest to the actual refentry â€“ either on the + refentry itself, or on its nearest ancestor. + + + The get.refentry.metadata + template is actually just sort of a "driver" template; it + calls other templates that do the actual data collection, + then returns the data as a set. + + + + + + + refname + + The first refname in the refentry + + + + info + + A set of info nodes (from a refentry + element and its ancestors) + + + + prefs + + A node containing user preferences (from global + stylesheet parameters) + + + + + + Returns a node set with the following elements. The + descriptions are verbatim from the man(7) man + page. + + + title + + the title of the man page (e.g., MAN) + + + + section + + the section number the man page should be placed in (e.g., + 7) + + + + date + + the date of the last revision + + + + source + + the source of the command + + + + manual + + the title of the manual (e.g., Linux + Programmer's Manual) + + + + + + + + + + + + <xsl:call-template name="get.refentry.title"> + <xsl:with-param name="refname" select="$refname"/> + </xsl:call-template> + +
+ + + +
+ + + + + + + + + + + + + + + + + + + + + +
+ + + + Gets title metadata for a refentry + + The man(7) man page describes this as "the + title of the man page (e.g., MAN). This differs + from refname in that, if the refentry has a + refentrytitle, we use that as the title; + otherwise, we just use first refname in the first + refnamediv in the source. + + + + + refname + + The first refname in the refentry + + + + + + Returns a title node. + + + + + + + + + + + + + + + + + + Gets section metadata for a refentry + + The man(7) man page describes this as "the + section number the man page should be placed in (e.g., + 7)". If we do not find a manvolnum + specified in the source, and we find that the refentry is + for a function, we use the section number 3 + ["Library calls (functions within program libraries)"]; otherwise, we + default to using 1 ["Executable programs or shell + commands"]. + + + + + refname + + The first refname in the refentry + + + + quiet + + If non-zero, no "missing" message is emitted + + + + + + Returns a string representing a section number. + + + + + + + + + + + + + Note + + meta manvol + + no refentry/refmeta/manvolnum + + + + Note + + meta manvol + + see http://docbook.sf.net/el/manvolnum + + + + + + + + + + Note + + meta manvol + + Setting man section to 3 + + + + + 3 + + + 1 + + + + + + + + + Gets date metadata for a refentry + + The man(7) man page describes this as "the + date of the last revision". If we cannot find a date in the source, we + generate one. + + + + + refname + + The first refname in the refentry + + + + info + + A set of info nodes (from a refentry + element and its ancestors) + + + + prefs + + A node containing users preferences (from global stylesheet parameters) + + + + + + Returns a date node. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets source metadata for a refentry + + The man(7) man page describes this as "the + source of the command", and provides the following examples: + + + For binaries, use something like: GNU, NET-2, SLS + Distribution, MCC Distribution. + + + For system calls, use the version of the kernel that you are + currently looking at: Linux 0.99.11. + + + For library calls, use the source of the function: GNU, BSD + 4.3, Linux DLL 4.4.1. + + + + + The solbook(5) man page describes + something very much like what man(7) calls + "source", except that solbook(5) names it + "software" and describes it like this: +
+ This is the name of the software product that the topic + discussed on the reference page belongs to. For example UNIX + commands are part of the SunOS x.x + release. +
+
+ + In practice, there are many pages that simply have a version + number in the "source" field. So, it looks like what we have is a + two-part field, + Name Version, + where: + + + Name + + product name (e.g., BSD) or org. name (e.g., GNU) + + + + Version + + version name + + + + Each part is optional. If the Name is a + product name, then the Version is probably + the version of the product. Or there may be no + Name, in which case, if there is a + Version, it is probably the version of the + item itself, not the product it is part of. Or, if the + Name is an organization name, then there + probably will be no Version. + +
+ + + + refname + + The first refname in the refentry + + + + info + + A set of info nodes (from a refentry + element and its ancestors) + + + + prefs + + A node containing users preferences (from global + stylesheet parameters) + + + + + + Returns a source node. + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warn + + meta source + + using + " + + " + for "source" + + + + + + + + [FIXME: source] + + + Warn + + meta source + + no fallback for source, so inserted a fixme + + + + + + + + + + [FIXME: source] + + + Warn + + meta source + + no source fallback given, so inserted a fixme + + + + + + + + + + Gets source-name metadata for a refentry + + A "source name" is one part of a (potentially) two-part + Name Version + source field. For more details, see the documentation for the + get.refentry.source template. + + + + + refname + + The first refname in the refentry + + + + info + + A set of info nodes (from a refentry + element and its ancestors) + + + + prefs + + A node containing users preferences (from global + stylesheet parameters) + + + + + + Depending on what output method is used for the + current stylesheet, either returns a text node or possibly an element + node, containing "source name" data. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + source + + + + + + + + source + productname + + + + + + + + source + productname + + + + + + + + source + productname + + + + + + + + source + productname + + + + + + + + source + productname + + + + + + + + + + + + + Note + + meta source + + no *info/productname or alternative + + + + Note + + meta source + + see http://docbook.sf.net/el/productname + + + + Note + + meta source + + no refentry/refmeta/refmiscinfo@class=source + + + + Note + + meta source + + see http://docbook.sf.net/el/refmiscinfo + + + + + + + Gets version metadata for a refentry + + A "version" is one part of a (potentially) two-part + Name Version + source field. For more details, see the documentation for the + get.refentry.source template. + + + + + refname + + The first refname in the refentry + + + + info + + A set of info nodes (from a refentry + element and its ancestors) + + + + prefs + + A node containing users preferences (from global + stylesheet parameters) + + + + + + Depending on what output method is used for the + current stylesheet, either returns a text node or possibly an element + node, containing "version" data. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + version + + + + + + + + version + productnumber + + + + + + + + version + productnumber + + + + + + + + + + + + + Note + + meta version + + no *info/productnumber or alternative + + + + Note + + meta version + + see http://docbook.sf.net/el/productnumber + + + + Note + + meta version + + no refentry/refmeta/refmiscinfo@class=version + + + + Note + + meta version + + see http://docbook.sf.net/el/refmiscinfo + + + + + + + Gets source metadata for a refentry + + The man(7) man page describes this as "the + title of the manual (e.g., Linux Programmer's + Manual)". Here are some examples from existing man pages: + + + dpkg utilities + (dpkg-name) + + + User Contributed Perl Documentation + (GET) + + + GNU Development Tools + (ld) + + + Emperor Norton Utilities + (ddate) + + + Debian GNU/Linux manual + (faked) + + + GIMP Manual Pages + (gimp) + + + KDOC Documentation System + (qt2kdoc) + + + + + The solbook(5) man page describes + something very much like what man(7) calls + "manual", except that solbook(5) names it + "sectdesc" and describes it like this: +
+ This is the section title of the reference page; for + example User Commands. +
+
+ +
+ + + + refname + + The first refname in the refentry + + + + info + + A set of info nodes (from a refentry + element and its ancestors) + + + + prefs + + A node containing users preferences (from global + stylesheet parameters) + + + + + + Returns a manual node. + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + manual + + + + + + + + manual + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warn + + meta manual + + using + " + + " + for "manual" + + + + + + + + [FIXME: manual] + + + Warn + + meta manual + + no fallback for manual, so inserted a fixme + + + + + + + + + + [FIXME: manual] + + + Warn + + meta manual + + no manual fallback given, so inserted a fixme + + + + + + + + + + + Note + + meta manual + + no titled ancestor of refentry + + + + Note + + meta manual + + no refentry/refmeta/refmiscinfo@class=manual + + + + Note + + meta manual + + see http://docbook.sf.net/el/refmiscinfo + + + + + + Gets user preferences for refentry metadata gathering + + The DocBook XSL stylesheets include several user-configurable + global stylesheet parameters for controlling refentry + metadata gathering. Those parameters are not read directly by the + other refentry metadata-gathering + templates. Instead, they are read only by the + get.refentry.metadata.prefs template, + which assembles them into a structure that is then passed to + the other refentry metadata-gathering + templates. + + So the, get.refentry.metadata.prefs + template is the only interface to collecting stylesheet parameters for + controlling refentry metadata gathering. + + + There are no local parameters for this template; however, it + does rely on a number of global parameters. + + + Returns a manual node. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sets content of a refentry metadata item + + The set.refentry.metadata template is + called each time a suitable source element is found for a certain + metadata field. + + + + + refname + + The first refname in the refentry + + + + info + + A single *info node that contains the selected source element. + + + + contents + + A node containing the selected source element. + + + + context + + A string describing the metadata context in which the + set.refentry.metadata template was + called: either "date", "source", "version", or "manual". + + + + + + Returns formatted contents of a selected source element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ro.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ro.xml new file mode 100644 index 000000000..49263117c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ro.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ru.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ru.xml new file mode 100644 index 000000000..67d2c9aa0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ru.xml @@ -0,0 +1,726 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z +Ð +а +Б +б +Ð’ +в +Г +г +Д +д +Е +е +Ð +Ñ‘ +Ж +ж +З +з +И +и +Й +й +К +к +Л +л +Ðœ +м +Ð +н +О +о +П +п +Р +Ñ€ +С +Ñ +Т +Ñ‚ +У +у +Ф +Ñ„ +Ð¥ +Ñ… +Ц +ц +Ч +ч +Ш +ш +Щ +щ +Ъ +ÑŠ +Ы +Ñ‹ +Ь +ÑŒ +Э +Ñ +Ю +ÑŽ +Я +Ñ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sk.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sk.xml new file mode 100644 index 000000000..09309b68f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sk.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sl.xml new file mode 100644 index 000000000..43aa2576b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sl.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sq.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sq.xml new file mode 100644 index 000000000..b566918dc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sq.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr.xml new file mode 100644 index 000000000..413ca4c13 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr.xml @@ -0,0 +1,720 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Симболи +Ð +а +Б +б +Ð’ +в +Г +г +Д +д +Ђ +Ñ’ +Е +е +Ж +ж +З +з +И +и +Ј +ј +К +к +Л +л +Љ +Ñ™ +Ðœ +м +Ð +н +Њ +Ñš +О +о +П +п +Р +Ñ€ +С +Ñ +Т +Ñ‚ +Ћ +Ñ› +У +у +Ф +Ñ„ +Ð¥ +Ñ… +Ц +ц +Ч +ч +Ð +ÑŸ +Ш +ш +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +Q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr_Latn.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr_Latn.xml new file mode 100644 index 000000000..7ebb8daf2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sr_Latn.xml @@ -0,0 +1,679 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Simboli +A +a +B +b +C +c +ÄŒ +Ä +Ć +ć +D +d +DŽ +Dž +dž +Ä +Ä‘ +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +LJ +Lj +lj +M +m +N +n +NJ +Nj +nj +O +o +P +p +Q +Q +R +r +S +s +Å  +Å¡ +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z +Ž +ž + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/stripns.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/stripns.xsl new file mode 100644 index 000000000..56009d04b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/stripns.xsl @@ -0,0 +1,352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + info + + + objectinfo + + blockinfo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WARNING: cannot add @xml:base to node + set root element. + Relative paths may not work. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + + + + + + + + + + 1 + 0 + + + + + + Stripping namespace from DocBook 5 document. + It is suggested to use namespaced version of the stylesheets + available in distribution file 'docbook-xsl-ns' + at //http://sourceforge.net/projects/docbook/files/ + which does not require namespace stripping step. + + + + + Processing stripped document. + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/subtitles.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/subtitles.xsl new file mode 100644 index 000000000..8211c84b6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/subtitles.xsl @@ -0,0 +1,155 @@ + + + + + + + + + + +Provides access to element subtitles + +Processing an element in the +subtitle.markup mode produces the +subtitle of the element. + + + + + + + Request for subtitle of unexpected element: + + + ???SUBTITLE??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sv.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sv.xml new file mode 100644 index 000000000..354c48b3e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/sv.xml @@ -0,0 +1,664 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z +Ã… +Ã¥ +Ä +ä +Ö +ö + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ta.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ta.xml new file mode 100644 index 000000000..873f1f978 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/ta.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•à®³à¯ +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/table.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/table.xsl new file mode 100644 index 000000000..aefdb07f1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/table.xsl @@ -0,0 +1,514 @@ + + + + + + + + + + + 0: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0: + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + +Determine the column number in which a given entry occurs + +If an entry has a +colname or +namest attribute, this template +will determine the number of the column in which the entry should occur. +For other entrys, nothing is returned. + + + +entry + +The entry-element which is to be tested. + + + + + + +This template returns the column number if it can be determined, +or 0 (the empty string) + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targetdatabase.dtd b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targetdatabase.dtd new file mode 100644 index 000000000..2ace1e003 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targetdatabase.dtd @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targets.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targets.xsl new file mode 100644 index 000000000..294c304ad --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/targets.xsl @@ -0,0 +1,333 @@ + + + + + + + + + + +Collects information for potential cross reference targets + +Processing the root element in the +collect.targets mode produces +a set of target database elements that can be used by +the olink mechanism to resolve external cross references. +The collection process is controlled by the +collect.xref.targets parameter, which can be +yes to collect targets and process +the document for output, only to +only collect the targets, and no +(default) to not collect the targets and only process the document. + + +A targets.filename parameter must be +specified to receive the output if +collect.xref.targets is +set to yes so as to +redirect the target data to a file separate from the +document output. + + + + + + + + + + + Must specify a $targets.filename parameter when + $collect.xref.targets is set to 'yes'. + The xref targets were not collected. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: processing automatic glossary + without a glossary.collection file. + + + + + + Warning: processing automatic glossary but unable to + open glossary.collection file ' + + ' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/te.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/te.xml new file mode 100644 index 000000000..c912fc206 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/te.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +à°šà°¿à°¹à±à°¨à°®à±à°²à± +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/th.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/th.xml new file mode 100644 index 000000000..f2e8109aa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/th.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/titles.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/titles.xsl new file mode 100644 index 000000000..84fcf791b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/titles.xsl @@ -0,0 +1,805 @@ + + + + + + + + + + +Provides access to element titles + +Processing an element in the +title.markup mode produces the +title of the element. This does not include the label. + + + + + + + + + + + + + + + + + + + + + + + Request for title of element with no title: + + + + (id=" + + ") + + + (xml:id=" + + ") + + + + + ???TITLE??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + REFENTRY WITHOUT TITLE??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: glossdiv missing its required title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note + Important + Caution + Warning + Tip + + + + + + + + + + Question + + + + + Answer + + + + + Question + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Endterm points to nonexistent ID: + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XRef to nonexistent id: + + + + ??? + + + + + + + + + + Endterm points to nonexistent ID: + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tl.xml new file mode 100644 index 000000000..b081d8e0d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tl.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tr.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tr.xml new file mode 100644 index 000000000..652911d83 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/tr.xml @@ -0,0 +1,666 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Semboller +A +a +B +b +C +c +Ç +ç +D +d +E +e +F +f +G +g +Äž +ÄŸ +H +h +I +ı +Ä° +i +J +j +K +k +L +l +M +m +N +n +O +o +Ö +ö +P +p +R +r +S +s +Åž +ÅŸ +T +t +U +u +Ãœ +ü +V +v +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/uk.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/uk.xml new file mode 100644 index 000000000..4caf73f92 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/uk.xml @@ -0,0 +1,726 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z +Ð +а +Б +б +Ð’ +в +Г +г +Ò +Ò‘ +Д +д +Е +е +Є +Ñ” +Ж +ж +З +з +И +и +І +Ñ– +Ї +Ñ— +Й +й +К +к +Л +л +Ðœ +м +Ð +н +О +о +П +п +Р +Ñ€ +С +Ñ +Т +Ñ‚ +У +у +Ф +Ñ„ +Ð¥ +Ñ… +Ц +ц +Ч +ч +Ш +ш +Щ +щ +Ь +ÑŒ +Ю +ÑŽ +Я +Ñ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xml new file mode 100644 index 000000000..d9cbe3ca1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xml @@ -0,0 +1,259 @@ + + + + + Common » Utility Template Reference + + $Id: utility.xsl 7101 2007-07-20 15:32:12Z xmldoc $ + + + + + Introduction + +This is technical reference documentation for the + miscellaneous utility templates in the DocBook XSL + Stylesheets. + + + +These templates are defined in a separate file from the set + of “common†templates because some of the common templates + reference DocBook XSL stylesheet parameters, requiring the + entire set of parameters to be imported/included in any + stylesheet that imports/includes the common templates. + + +The utility templates don’t import or include any DocBook + XSL stylesheet parameters, so the utility templates can be used + without importing the whole set of parameters. + + + +This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + +log.message +Logs/emits formatted notes and warnings + + +<xsl:template name="log.message"> +<xsl:param name="level"/> +<xsl:param name="source"/> +<xsl:param name="context-desc"/> +<xsl:param name="context-desc-field-length">12</xsl:param> +<xsl:param name="context-desc-padded"> + <xsl:if test="not($context-desc = '')"> + <xsl:call-template name="pad-string"> + <xsl:with-param name="leftRight">right</xsl:with-param> + <xsl:with-param name="padVar" select="substring($context-desc, 1, $context-desc-field-length)"/> + <xsl:with-param name="length" select="$context-desc-field-length"/> + </xsl:call-template> + </xsl:if> + </xsl:param> +<xsl:param name="message"/> +<xsl:param name="message-field-length" select="45"/> +<xsl:param name="message-padded"> + <xsl:variable name="spaces-for-blank-level"> + <!-- * if the level field is blank, we'll need to pad out --> + <!-- * the message field with spaces to compensate --> + <xsl:choose> + <xsl:when test="$level = ''"> + <xsl:value-of select="4 + 2"/> + <!-- * 4 = hard-coded length of comment text ("Note" or "Warn") --> + <!-- * + 2 = length of colon-plus-space separator ": " --> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="0"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="spaces-for-blank-context-desc"> + <!-- * if the context-description field is blank, we'll need --> + <!-- * to pad out the message field with spaces to compensate --> + <xsl:choose> + <xsl:when test="$context-desc = ''"> + <xsl:value-of select="$context-desc-field-length + 2"/> + <!-- * + 2 = length of colon-plus-space separator ": " --> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="0"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="extra-spaces" select="$spaces-for-blank-level + $spaces-for-blank-context-desc"/> + <xsl:call-template name="pad-string"> + <xsl:with-param name="leftRight">right</xsl:with-param> + <xsl:with-param name="padVar" select="substring($message, 1, ($message-field-length + $extra-spaces))"/> + <xsl:with-param name="length" select="$message-field-length + $extra-spaces"/> + </xsl:call-template> + </xsl:param> + ... +</xsl:template> + +Description + +The log.message template is a utility + template for logging/emitting formatted messages – that is, + notes and warnings, along with a given log “level†and an + identifier for the “source†that the message relates to. + + Parameters + + + level + + +Text to log/emit in the message-level field to + indicate the message level + (Note or + Warning) + + + + source + + +Text to log/emit in the source field to identify the + “source†to which the notification/warning relates. + This can be any arbitrary string, but because the + message lacks line and column numbers to identify the + exact part of the source document to which it + relates, the intention is that the value you pass + into the source parameter should + give the user some way to identify the portion of + their source document on which to take potentially + take action in response to the log message (for + example, to edit, change, or add content). + + +So the source value should be, + for example, an ID, book/chapter/article title, title + of some formal object, or even a string giving an + XPath expression. + + + + context-desc + + +Text to log/emit in the context-description field to + describe the context for the message. + + + + context-desc-field-length + + +Specifies length of the context-description field + (in characters); default is 12 + + +If the text specified by the + context-desc parameter is longer + than the number of characters specified in + context-desc-field-length, it is + truncated to context-desc-field-length + (12 characters by default). + + +If the specified text is shorter than + context-desc-field-length, + it is right-padded out to + context-desc-field-length (12 by + default). + + +If no value has been specified for the + context-desc parameter, the field is + left empty and the text of the log message begins with + the value of the message + parameter. + + + + message + + +Text to log/emit in the actual message field + + + + message-field-length + + +Specifies length of the message + field (in characters); default is 45 + + + + + + Returns + +Outputs a message (generally, to standard error). + + + + +get.doc.title +Gets a title from the current document + + +<xsl:template name="get.doc.title"/> + +Description + +The get.doc.title template is a + utility template for returning the first title found in the + current document. + + Returns + +Returns a string containing some identifying title for the + current document . + + + + +pad-string +Right-pads or left-pads a string out to a certain length + + +<xsl:template name="pad-string"> +<xsl:param name="padChar" select="' '"/> +<xsl:param name="leftRight">left</xsl:param> +<xsl:param name="padVar"/> +<xsl:param name="length"/> + ... +</xsl:template> + +Description + +This function takes string padVar and + pads it out in the direction rightLeft to + the string-length length, using string + padChar (a space character by default) as + the padding string (note that padChar can + be a string; it is not limited to just being a single + character). + + + +This function began as a copy of Nate Austin's + prepend-pad function in the Padding + Content section of Dave Pawson's XSLT + FAQ. + + + Returns + +Returns a (padded) string. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xsl new file mode 100644 index 000000000..37092b7c5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/utility.xsl @@ -0,0 +1,290 @@ + + + + + + + Common » Utility Template Reference + + $Id: utility.xsl 7101 2007-07-20 15:32:12Z xmldoc $ + + + + + Introduction + This is technical reference documentation for the + miscellaneous utility templates in the DocBook XSL + Stylesheets. + + These templates are defined in a separate file from the set + of “common†templates because some of the common templates + reference DocBook XSL stylesheet parameters, requiring the + entire set of parameters to be imported/included in any + stylesheet that imports/includes the common templates. + The utility templates don’t import or include any DocBook + XSL stylesheet parameters, so the utility templates can be used + without importing the whole set of parameters. + + This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + + + Logs/emits formatted notes and warnings + + + The log.message template is a utility + template for logging/emitting formatted messages â€“ that is, + notes and warnings, along with a given log “level†and an + identifier for the “source†that the message relates to. + + + + + level + + Text to log/emit in the message-level field to + indicate the message level + (Note or + Warning) + + + source + + Text to log/emit in the source field to identify the + “source†to which the notification/warning relates. + This can be any arbitrary string, but because the + message lacks line and column numbers to identify the + exact part of the source document to which it + relates, the intention is that the value you pass + into the source parameter should + give the user some way to identify the portion of + their source document on which to take potentially + take action in response to the log message (for + example, to edit, change, or add content). + So the source value should be, + for example, an ID, book/chapter/article title, title + of some formal object, or even a string giving an + XPath expression. + + + context-desc + + Text to log/emit in the context-description field to + describe the context for the message. + + + context-desc-field-length + + Specifies length of the context-description field + (in characters); default is 12 + If the text specified by the + context-desc parameter is longer + than the number of characters specified in + context-desc-field-length, it is + truncated to context-desc-field-length + (12 characters by default). + If the specified text is shorter than + context-desc-field-length, + it is right-padded out to + context-desc-field-length (12 by + default). + If no value has been specified for the + context-desc parameter, the field is + left empty and the text of the log message begins with + the value of the message + parameter. + + + message + + Text to log/emit in the actual message field + + + message-field-length + + Specifies length of the message + field (in characters); default is 45 + + + + + + Outputs a message (generally, to standard error). + + + + + + 12 + + + + right + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + right + + + + + + + + + : + + + + : + + + + + + + + + + Gets a title from the current document + + The get.doc.title template is a + utility template for returning the first title found in the + current document. + + + Returns a string containing some identifying title for the + current document . + + + + + + + + + + + + + + + Right-pads or left-pads a string out to a certain length + + This function takes string padVar and + pads it out in the direction rightLeft to + the string-length length, using string + padChar (a space character by default) as + the padding string (note that padChar can + be a string; it is not limited to just being a single + character). + + This function began as a copy of Nate Austin's + prepend-pad function in the Padding + Content section of Dave Pawson's XSLT + FAQ. + + + + Returns a (padded) string. + + + + + + left + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/vi.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/vi.xml new file mode 100644 index 000000000..682c46762 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/vi.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/xh.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/xh.xml new file mode 100644 index 000000000..db22550c1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/xh.xml @@ -0,0 +1,1229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Symbols +A +a +À +à +à +á + +â +à +ã +Ä +ä +Ã… +Ã¥ +Ä€ +Ä +Ä‚ +ă +Ä„ +Ä… +Ç +ÇŽ +Çž +ÇŸ +Ç  +Ç¡ +Ǻ +Ç» +È€ +È +È‚ +ȃ +Ȧ +ȧ +Ḁ +Ḡ+ẚ +Ạ +ạ +Ả +ả +Ấ +ấ +Ầ +ầ +Ẩ +ẩ +Ẫ +ẫ +Ậ +ậ +Ắ +ắ +Ằ +ằ +Ẳ +ẳ +Ẵ +ẵ +Ặ +ặ +B +b +Æ€ +Æ +É“ +Æ‚ +ƃ +Ḃ +ḃ +Ḅ +ḅ +Ḇ +ḇ +C +c +Ç +ç +Ć +ć +Ĉ +ĉ +ÄŠ +Ä‹ +ÄŒ +Ä +Ƈ +ƈ +É• +Ḉ +ḉ +D +d +ÄŽ +Ä +Ä +Ä‘ +ÆŠ +É— +Æ‹ +ÆŒ +Ç… +Dz +È¡ +É– +Ḋ +ḋ +Ḍ +Ḡ+Ḏ +Ḡ+Ḡ+ḑ +Ḓ +ḓ +E +e +È +è +É +é +Ê +ê +Ë +ë +Ä’ +Ä“ +Ä” +Ä• +Ä– +Ä— +Ę +Ä™ +Äš +Ä› +È„ +È… +Ȇ +ȇ +Ȩ +È© +Ḕ +ḕ +Ḗ +ḗ +Ḙ +ḙ +Ḛ +ḛ +Ḝ +Ḡ+Ẹ +ẹ +Ẻ +ẻ +Ẽ +ẽ +Ế +ế +Ề +á» +Ể +ể +Ễ +á»… +Ệ +ệ +F +f +Æ‘ +Æ’ +Ḟ +ḟ +G +g +Äœ +Ä +Äž +ÄŸ +Ä  +Ä¡ +Ä¢ +Ä£ +Æ“ +É  +Ǥ +Ç¥ +Ǧ +ǧ +Ç´ +ǵ +Ḡ +ḡ +H +h +Ĥ +Ä¥ +Ħ +ħ +Èž +ÈŸ +ɦ +Ḣ +ḣ +Ḥ +ḥ +Ḧ +ḧ +Ḩ +ḩ +Ḫ +ḫ +ẖ +I +i +ÃŒ +ì +à +í +ÃŽ +î +à +ï +Ĩ +Ä© +Ī +Ä« +Ĭ +Ä­ +Ä® +į +Ä° +Æ— +ɨ +Ç +Ç +Ȉ +ȉ +ÈŠ +È‹ +Ḭ +ḭ +Ḯ +ḯ +Ỉ +ỉ +Ị +ị +J +j +Ä´ +ĵ +Ç° +Ê +K +k +Ķ +Ä· +Ƙ +Æ™ +Ǩ +Ç© +Ḱ +ḱ +Ḳ +ḳ +Ḵ +ḵ +L +l +Ĺ +ĺ +Ä» +ļ +Ľ +ľ +Ä¿ +Å€ +Å +Å‚ +Æš +Lj +È´ +É« +ɬ +É­ +Ḷ +ḷ +Ḹ +ḹ +Ḻ +ḻ +Ḽ +ḽ +M +m +ɱ +Ḿ +ḿ +á¹€ +á¹ +Ṃ +ṃ +N +n +Ñ +ñ +Ń +Å„ +Å… +ņ +Ň +ň +Æ +ɲ +Æž +È  +Ç‹ +Ǹ +ǹ +ȵ +ɳ +Ṅ +á¹… +Ṇ +ṇ +Ṉ +ṉ +Ṋ +ṋ +O +o +Ã’ +ò +Ó +ó +Ô +ô +Õ +õ +Ö +ö +Ø +ø +ÅŒ +Å +ÅŽ +Å +Å +Å‘ +ÆŸ +Æ  +Æ¡ +Ç‘ +Ç’ +Ǫ +Ç« +Ǭ +Ç­ +Ǿ +Ç¿ +ÈŒ +È +ÈŽ +È +Ȫ +È« +Ȭ +È­ +È® +ȯ +È° +ȱ +Ṍ +á¹ +Ṏ +á¹ +á¹ +ṑ +á¹’ +ṓ +Ọ +á» +Ỏ +á» +á» +ố +á»’ +ồ +á»” +ổ +á»– +á»— +Ộ +á»™ +Ớ +á»› +Ờ +á» +Ở +ở +á»  +ỡ +Ợ +ợ +P +p +Ƥ +Æ¥ +á¹” +ṕ +á¹– +á¹— +Q +q +Ê  +R +r +Å” +Å• +Å– +Å— +Ř +Å™ +È +È‘ +È’ +È“ +ɼ +ɽ +ɾ +Ṙ +á¹™ +Ṛ +á¹› +Ṝ +á¹ +Ṟ +ṟ +S +s +Åš +Å› +Åœ +Å +Åž +ÅŸ +Å  +Å¡ +Ș +È™ +Ê‚ +á¹  +ṡ +á¹¢ +á¹£ +Ṥ +á¹¥ +Ṧ +ṧ +Ṩ +ṩ +T +t +Å¢ +Å£ +Ť +Å¥ +Ŧ +ŧ +Æ« +Ƭ +Æ­ +Æ® +ʈ +Èš +È› +ȶ +Ṫ +ṫ +Ṭ +á¹­ +á¹® +ṯ +á¹° +á¹± +ẗ +U +u +Ù +ù +Ú +ú +Û +û +Ãœ +ü +Ũ +Å© +Ū +Å« +Ŭ +Å­ +Å® +ů +Å° +ű +Ų +ų +Ư +Æ° +Ç“ +Ç” +Ç• +Ç– +Ç— +ǘ +Ç™ +Çš +Ç› +Çœ +È” +È• +È– +È— +á¹² +á¹³ +á¹´ +á¹µ +Ṷ +á¹· +Ṹ +á¹¹ +Ṻ +á¹» +Ụ +ụ +Ủ +ủ +Ứ +ứ +Ừ +ừ +Ử +á»­ +á»® +ữ +á»° +á»± +V +v +Ʋ +Ê‹ +á¹¼ +á¹½ +á¹¾ +ṿ +W +w +Å´ +ŵ +Ẁ +Ạ+Ẃ +ẃ +Ẅ +ẅ +Ẇ +ẇ +Ẉ +ẉ +ẘ +X +x +Ẋ +ẋ +Ẍ +Ạ+Y +y +à +ý +ÿ +Ÿ +Ŷ +Å· +Ƴ +Æ´ +Ȳ +ȳ +Ẏ +Ạ+ẙ +Ỳ +ỳ +á»´ +ỵ +Ỷ +á»· +Ỹ +ỹ +Z +z +Ź +ź +Å» +ż +Ž +ž +Ƶ +ƶ +Ȥ +È¥ +Ê +Ê‘ +Ạ+ẑ +Ẓ +ẓ +Ẕ +ẕ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh.xml new file mode 100644 index 000000000..d976ed003 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ç¬¦å· +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_cn.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_cn.xml new file mode 100644 index 000000000..f42774ce2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_cn.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ç¬¦å· +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_tw.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_tw.xml new file mode 100644 index 000000000..49cb5b607 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/common/zh_tw.xml @@ -0,0 +1,660 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +符號 +A +a +B +b +C +c +D +d +E +e +F +f +G +g +H +h +I +i +J +j +K +k +L +l +M +m +N +n +O +o +P +p +Q +q +R +r +S +s +T +t +U +u +V +v +W +w +X +x +Y +y +Z +z + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/authors.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/authors.xml new file mode 100644 index 000000000..ea4bf024d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/authors.xml @@ -0,0 +1,10 @@ + + + + WalshNorman + + + + The DocBook Project + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/copyright.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/copyright.xml new file mode 100644 index 000000000..505f7f8ef --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/copyright.xml @@ -0,0 +1,18 @@ + + + 1999-2007 + Norman Walsh + + + 2003 + Jiří Kosek + + + 2004-2007 + Steve Ball + + + 2001-2007 + The DocBook Project + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/license.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/license.xml new file mode 100644 index 000000000..c265ce8e7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/license.xml @@ -0,0 +1,23 @@ +License +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. +Except as contained in this notice, the names of individuals +credited with contribution to this software shall not be used in +advertising or otherwise to promote the sale, use or other dealings in +this Software without prior written authorization from the individuals +in question. +Any stylesheet derived from this Software that is publically +distributed will be identified with a different name and the version +strings in any derived Software will be changed so that no possibility +of confusion between the derived package and this Software will +exist. + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.css b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.css new file mode 100644 index 000000000..9e7e51135 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.css @@ -0,0 +1,79 @@ +/* reference.css, a stylesheet for reference documentation + * generated by the DocBook XSL Stylesheets */ +/* $Id: reference.css 8234 2009-02-09 12:10:48Z xmldoc $ */ + +div.legalnotice { + font-size: 80%; +} + +div.note, div.tip, div.warning { + margin-left: 5%; + margin-right: 10%; + padding: 5px; +} + +div.note, div.tip { + border-left: solid #d5dee3 20px; + border-right: solid #d5dee3 20px; +} + +div.note, div.tip { + border-left: solid palegreen 20px; + border-right: solid palegreen 20px; +} + +div.warning { + border-left: solid yellow 20px; + border-right: solid yellow 20px; +} + +div.note p, div.tip p, div.warning p { + margin-top: 0px; + margin-bottom: 4px; +} + +div.note h3, div.tip h3, div.warning h3 { + margin-top: 0; +} + +div.informalexample { + background-color: #d5dee3; + border-top-width: 2px; + border-top-style: double; + border-top-color: #d3d3d3; + border-bottom-width: 2px; + border-bottom-style: double; + border-bottom-color: #d3d3d3; + padding: 4px; + margin: 0em; + margin-left: 2em; +} + +pre.programlisting, pre.synopsis { + whitespace: pre; + font-family: monospace; + background-color: #d5dee3; + border-top-width: 1px; + border-top-style: single; + border-top-color: #d3d3d3; + border-bottom-width: 1px; + border-bottom-style: single; + border-bottom-color: #d3d3d3; + padding: 4px; + margin: 0em; + margin-top: 6px; + margin-bottom: 6px; +} + +div.informalexample pre { + whitespace: pre; + font-family: monospace; + border-top-width: 0px; + border-bottom-width: 0px; + padding: 0px; +} + +/* Parameter and PI titles */ + div.refnamediv h2 { + font-size: 2em; +} diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml new file mode 100644 index 000000000..7d493060c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml @@ -0,0 +1,229 @@ + + + + + + + + + + + DocBook XSL Stylesheets: Reference Documentation + $Id: reference.xml 8321 2009-03-12 18:20:36Z mzjn $ + + + + + + About this document + This is generated reference documentation for the DocBook + XSL stylesheets. It is available in the following formats: + + + HTML, + PDF, + plain text + + + This is primarily documentation on the parameters and processing instructions you can use + to control the behavior of the stylesheets. + + This is purely reference documentation â€“ not how-to + documentation. For a thorough step-by-step how-to guide to + publishing content using the DocBook XSL stylesheets, see + Bob Stayton’s DocBook XSL: The Complete Guide, available online + at http://www.sagehill.net/docbookxsl/index.html + + + This document is divided into three sets of references: + the first two sets provides user documentation; the third, + developer documentation. + + + DocBook XSL Stylesheets User Reference: Parameters + + + This is generated reference documentation for all + user-configurable parameters in the DocBook XSL + stylesheets. + + This is purely reference documentation â€“ not how-to + documentation. For a thorough step-by-step how-to guide to + publishing content using the DocBook XSL stylesheets, see + Bob Stayton’s DocBook XSL: The Complete Guide, available online + at http://www.sagehill.net/docbookxsl/index.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Slides Parameter Reference + + + + This is reference documentation for all + user-configurable parameters in the DocBook XSL Slides + stylesheets (for generating HTML and PDF slide + presentations). + + The Slides stylesheet for HTML output is a + customization layer of the DocBook XSL HTML + stylesheet; the Slides stylesheet for FO output is a + customization layer of the DocBook XSL FO stylesheet. + Therefore, in addition to the slides-specific + parameters listed in this section, you can also use a + number of HTML stylesheet + parameters and FO + stylesheet parameters to control Slides + output. + + + + + + + + + + + + + + + + DocBook XSL Stylesheets User Reference: PIs + + + + + This is generated reference documentation for all + user-specifiable processing instructions in the DocBook + XSL stylesheets. + + You add these PIs at particular points in a document to + cause specific “exceptions†to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + + + + + + + + + + + DocBook XSL Stylesheets Developer Reference + + + This is technical reference documentation for + developers using the DocBook XSL Stylesheets. It is not + intended to be user documentation, but is instead + provided for developers writing customization layers for + the stylesheets. + + + + + + + + + + + + Common Template Reference + + + + + This is technical reference documentation for the + “baseâ€, “refentryâ€, and “utility†sets of common + templates in the DocBook XSL Stylesheets. These + templates are “common†in that they are shared across + output formats (that is, they’re not + output-format-dependent) + This documentation is not intended to be user + documentation. It is provided for developers writing + customization layers for the stylesheets. + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml.included b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml.included new file mode 100644 index 000000000..94869ee7a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/reference.xml.included @@ -0,0 +1,33905 @@ + + + + + + + + + + + DocBook XSL Stylesheets: Reference Documentation + $Id: reference.xml 8321 2009-03-12 18:20:36Z mzjn $ + + + + WalshNorman + + + + The DocBook Project + + + + 1999-2007 + Norman Walsh + + 2003 + Jiří Kosek + + 2004-2007 + Steve Ball + + 2001-2007 + The DocBook Project + + License +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. +Except as contained in this notice, the names of individuals +credited with contribution to this software shall not be used in +advertising or otherwise to promote the sale, use or other dealings in +this Software without prior written authorization from the individuals +in question. +Any stylesheet derived from this Software that is publically +distributed will be identified with a different name and the version +strings in any derived Software will be changed so that no possibility +of confusion between the derived package and this Software will +exist. + + Warranty +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 NORMAN WALSH OR ANY +OTHER CONTRIBUTOR 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. + + + About this document + This is generated reference documentation for the DocBook + XSL stylesheets. It is available in the following formats: + + + HTML, + PDF, + plain text + + + This is primarily documentation on the parameters and processing instructions you can use + to control the behavior of the stylesheets. + + This is purely reference documentation – not how-to + documentation. For a thorough step-by-step how-to guide to + publishing content using the DocBook XSL stylesheets, see + Bob Stayton’s DocBook XSL: The Complete Guide, available online + at http://www.sagehill.net/docbookxsl/index.html + + + This document is divided into three sets of references: + the first two sets provides user documentation; the third, + developer documentation. + + + DocBook XSL Stylesheets User Reference: Parameters + + + This is generated reference documentation for all + user-configurable parameters in the DocBook XSL + stylesheets. + + This is purely reference documentation – not how-to + documentation. For a thorough step-by-step how-to guide to + publishing content using the DocBook XSL stylesheets, see + Bob Stayton’s DocBook XSL: The Complete Guide, available online + at http://www.sagehill.net/docbookxsl/index.html + + + + + + + + + HTML Parameter Reference + + + This is reference documentation for all user-configurable + parameters in the DocBook XSL HTML stylesheets (for generating + HTML output). + + + Admonitions + + +admon.graphics.extension +string + + +admon.graphics.extension +Filename extension for admonition graphics + + + + +<xsl:param name="admon.graphics.extension">.png</xsl:param> + + + +Description + +Sets the filename extension to use on admonition graphics. + + + + + + +admon.graphics.path +string + + +admon.graphics.path +Path to admonition graphics + + + +<xsl:param name="admon.graphics.path">images/</xsl:param> + + +Description + +Sets the path to the directory containing the admonition graphics +(caution.png, important.png etc). This location is normally relative +to the output html directory. See base.dir + + + + + + +admon.graphics +boolean + + +admon.graphics +Use graphics in admonitions? + + + + +<xsl:param name="admon.graphics" select="0"></xsl:param> + + + +Description + +If true (non-zero), admonitions are presented in an alternate style that uses +a graphic. Default graphics are provided in the distribution. + + + + + + + +admon.textlabel +boolean + + +admon.textlabel +Use text label in admonitions? + + + + +<xsl:param name="admon.textlabel" select="1"></xsl:param> + + + +Description + +If true (non-zero), admonitions are presented with a generated +text label such as Note or Warning in the appropriate language. +If zero, such labels are turned off, but any title child +of the admonition element are still output. +The default value is 1. + + + + + + + +admon.style +string + + +admon.style +Specifies the CSS style attribute that should be added to +admonitions. + + + +<xsl:param name="admon.style"> + <xsl:value-of select="concat('margin-', $direction.align.start, ': 0.5in; margin-', $direction.align.end, ': 0.5in;')"></xsl:value-of> +</xsl:param> + + +Description + +Specifies the value of the CSS style +attribute that should be added to admonitions. + + + + + +Callouts + + +callout.defaultcolumn +integer + + +callout.defaultcolumn +Indicates what column callouts appear in by default + + + + +<xsl:param name="callout.defaultcolumn">60</xsl:param> + + + +Description + +If a callout does not identify a column (for example, if it uses +the linerange unit), +it will appear in the default column. + + + + + + + +callout.graphics.extension +string + + +callout.graphics.extension +Filename extension for callout graphics + + + + +<xsl:param name="callout.graphics.extension">.png</xsl:param> + + + + +Description +Sets the filename extension to use on callout graphics. + + +The Docbook XSL distribution provides callout graphics in the following formats: +SVG (extension: .svg) +PNG (extension: .png) +GIF (extension: .gif) + + + + + + +callout.graphics.number.limit +integer + + +callout.graphics.number.limit +Number of the largest callout graphic + + + + +<xsl:param name="callout.graphics.number.limit">15</xsl:param> + + + + +Description + +If callout.graphics is non-zero, graphics +are used to represent callout numbers instead of plain text. The value +of callout.graphics.number.limit is the largest +number for which a graphic exists. If the callout number exceeds this +limit, the default presentation "(plain text instead of a graphic)" +will be used. + + + + + + + +callout.graphics.path +string + + +callout.graphics.path +Path to callout graphics + + + + +<xsl:param name="callout.graphics.path">images/callouts/</xsl:param> + + + +Description + +Sets the path to the directory holding the callout graphics. his +location is normally relative to the output html directory. see +base.dir. Always terminate the directory with / since the graphic file +is appended to this string, hence needs the separator. + + + + + + + +callout.graphics +boolean + + +callout.graphics +Use graphics for callouts? + + + + +<xsl:param name="callout.graphics" select="1"></xsl:param> + + + +Description + +If non-zero, callouts are presented with graphics (e.g., reverse-video +circled numbers instead of "(1)", "(2)", etc.). +Default graphics are provided in the distribution. + + + + + + + +callout.list.table +boolean + + +callout.list.table +Present callout lists using a table? + + + + +<xsl:param name="callout.list.table" select="1"></xsl:param> + + + +Description + +The default presentation of calloutlists uses +an HTML DL element. Some browsers don't align DLs very well +if callout.graphics is used. With this option +turned on, calloutlists are presented in an HTML +TABLE, which usually results in better alignment +of the callout number with the callout description. + + + + + + +callout.unicode.number.limit +integer + + +callout.unicode.number.limit +Number of the largest unicode callout character + + + + +<xsl:param name="callout.unicode.number.limit">10</xsl:param> + + + +Description + +If callout.unicode +is non-zero, unicode characters are used to represent +callout numbers. The value of +callout.unicode.number.limit +is +the largest number for which a unicode character exists. If the callout number +exceeds this limit, the default presentation "(nnn)" will always +be used. + + + + + + + +callout.unicode.start.character +integer + + +callout.unicode.start.character +First Unicode character to use, decimal value. + + + + +<xsl:param name="callout.unicode.start.character">10102</xsl:param> + + + +Description + +If callout.graphics is zero and callout.unicode +is non-zero, unicode characters are used to represent +callout numbers. The value of +callout.unicode.start.character +is the decimal unicode value used for callout number one. Currently, +only 10102 is supported in the stylesheets for this parameter. + + + + + + + +callout.unicode +boolean + + +callout.unicode +Use Unicode characters rather than images for callouts. + + + +<xsl:param name="callout.unicode" select="0"></xsl:param> + + +Description + +The stylesheets can use either an image of the numbers one to ten, or the single Unicode character which represents the numeral, in white on a black background. Use this to select the Unicode character option. + + + + + + + +callouts.extension +boolean + + +callouts.extension +Enable the callout extension + + + + +<xsl:param name="callouts.extension" select="1"></xsl:param> + + + +Description + +The callouts extension processes areaset +elements in programlistingco and other text-based +callout elements. + + + + + +EBNF + + +ebnf.table.bgcolor +color + + +ebnf.table.bgcolor +Background color for EBNF tables + + + + +<xsl:param name="ebnf.table.bgcolor">#F5DCB3</xsl:param> + + + +Description + +Sets the background color for EBNF tables (a pale brown). No +bgcolor attribute is output if +ebnf.table.bgcolor is set to the null string. + + + + + + + +ebnf.table.border +boolean + + +ebnf.table.border +Selects border on EBNF tables + + + +<xsl:param name="ebnf.table.border" select="1"></xsl:param> + + +Description + +Selects the border on EBNF tables. If non-zero, the tables have +borders, otherwise they don't. + + + + + + +ebnf.assignment +rtf + + +ebnf.assignment +The EBNF production assignment operator + + + + +<xsl:param name="ebnf.assignment"> +<code>::=</code> +</xsl:param> + + + + +Description + +The ebnf.assignment parameter determines what +text is used to show assignment in productions +in productionsets. + +While ::= is common, so are several +other operators. + + + + + + +ebnf.statement.terminator +rtf + + +ebnf.statement.terminator +Punctuation that ends an EBNF statement. + + + + +<xsl:param name="ebnf.statement.terminator"></xsl:param> + + + + +Description + +The ebnf.statement.terminator parameter determines what +text is used to terminate each production +in productionset. + +Some notations end each statement with a period. + + + + +ToC/LoT/Index Generation + + +annotate.toc +boolean + + +annotate.toc +Annotate the Table of Contents? + + + +<xsl:param name="annotate.toc" select="1"></xsl:param> + + +Description + +If true, TOCs will be annotated. At present, this just means +that the refpurpose of refentry +TOC entries will be displayed. + + + + + + + +autotoc.label.separator +string + + +autotoc.label.separator +Separator between labels and titles in the ToC + + + + +<xsl:param name="autotoc.label.separator">. </xsl:param> + + + +Description + +String used to separate labels and titles in a table of contents. + + + + + + +autotoc.label.in.hyperlink +boolean + + +autotoc.label.in.hyperlink +Include label in hyperlinked titles in TOC? + + + +<xsl:param name="autotoc.label.in.hyperlink" select="1"></xsl:param> + + +Description + +If the value of +autotoc.label.in.hyperlink is non-zero, labels +are included in hyperlinked titles in the TOC. If it is instead zero, +labels are still displayed prior to the hyperlinked titles, but +are not hyperlinked along with the titles. + + + + + + +process.source.toc +boolean + + +process.source.toc +Process a non-empty toc element if it occurs in a source document? + + + +<xsl:param name="process.source.toc" select="0"></xsl:param> + + +Description + +Specifies that the contents of a non-empty "hard-coded" +toc element in a source document are processed to +generate a TOC in output. + + This parameter has no effect on automated generation of + TOCs. An automated TOC may still be generated along with the + "hard-coded" TOC. To suppress automated TOC generation, adjust the + value of the generate.toc paramameter. + + The process.source.toc parameter also has + no effect if the toc element is empty; handling + for empty toc is controlled by the + process.empty.source.toc parameter. + + + + + + + + +process.empty.source.toc +boolean + + +process.empty.source.toc +Generate automated TOC if toc element occurs in a source document? + + + +<xsl:param name="process.empty.source.toc" select="0"></xsl:param> + + +Description + +Specifies that if an empty toc element is found in a +source document, an automated TOC is generated at this point in the +document. + + Depending on what the value of the + generate.toc parameter is, setting this + parameter to 1 could result in generation of + duplicate automated TOCs. So the + process.empty.source.toc is primarily useful + as an "override": by placing an empty toc in your + document and setting this parameter to 1, you can + force a TOC to be generated even if generate.toc + says not to. + + + + + + + + +bridgehead.in.toc +boolean + + +bridgehead.in.toc +Should bridgehead elements appear in the TOC? + + + +<xsl:param name="bridgehead.in.toc" select="0"></xsl:param> + + +Description + +If non-zero, bridgeheads appear in the TOC. Note that +this option is not fully supported and may be removed in a future +version of the stylesheets. + + + + + + + +simplesect.in.toc +boolean + + +simplesect.in.toc +Should simplesect elements appear in the TOC? + + + +<xsl:param name="simplesect.in.toc" select="0"></xsl:param> + + +Description + +If non-zero, simplesects will be included in the TOC. + + + + + + + +manual.toc +string + + +manual.toc +An explicit TOC to be used for the TOC + + + + +<xsl:param name="manual.toc"></xsl:param> + + + +Description + +The manual.toc identifies an explicit TOC that +will be used for building the printed TOC. + + + + + + + +toc.list.type +list +dl +ul +ol + + +toc.list.type +Type of HTML list element to use for Tables of Contents + + + +<xsl:param name="toc.list.type">dl</xsl:param> + + +Description + +When an automatically generated Table of Contents (or List of Titles) +is produced, this HTML element will be used to make the list. + + + + + + + +toc.section.depth +integer + + +toc.section.depth +How deep should recursive sections appear +in the TOC? + + + +<xsl:param name="toc.section.depth">2</xsl:param> + + +Description + +Specifies the depth to which recursive sections should appear in the +TOC. + + + + + + + +toc.max.depth +integer + + +toc.max.depth +How many levels should be created for each TOC? + + + +<xsl:param name="toc.max.depth">8</xsl:param> + + +Description + +Specifies the maximal depth of TOC on all levels. + + + + + + +generate.toc +table + + +generate.toc +Control generation of ToCs and LoTs + + + + +<xsl:param name="generate.toc"> +appendix toc,title +article/appendix nop +article toc,title +book toc,title,figure,table,example,equation +chapter toc,title +part toc,title +preface toc,title +qandadiv toc +qandaset toc +reference toc,title +sect1 toc +sect2 toc +sect3 toc +sect4 toc +sect5 toc +section toc +set toc,title +</xsl:param> + + + + +Description + +This parameter has a structured value. It is a table of space-delimited +path/value pairs. Each path identifies some element in the source document +using a restricted subset of XPath (only the implicit child axis, no wildcards, +no predicates). Paths can be either relative or absolute. + +When processing a particular element, the stylesheets consult this table to +determine if a ToC (or LoT(s)) should be generated. + +For example, consider the entry: + +book toc,figure + +This indicates that whenever a book is formatted, a +Table Of Contents and a List of Figures should be generated. Similarly, + +/chapter toc + +indicates that whenever a document that has a root +of chapter is formatted, a Table of +Contents should be generated. The entry chapter would match +all chapters, but /chapter matches only chapter +document elements. + +Generally, the longest match wins. So, for example, if you want to distinguish +articles in books from articles in parts, you could use these two entries: + +book/article toc,figure +part/article toc + +Note that an article in a part can never match a book/article, +so if you want nothing to be generated for articles in parts, you can simply leave +that rule out. + +If you want to leave the rule in, to make it explicit that you're turning +something off, use the value nop. For example, the following +entry disables ToCs and LoTs for articles: + +article nop + +Do not simply leave the word article in the file +without a matching value. That'd be just begging the silly little +path/value parser to get confused. + +Section ToCs are further controlled by the +generate.section.toc.level parameter. +For a given section level to have a ToC, it must have both an entry in +generate.toc and be within the range enabled by +generate.section.toc.level. + + + + + +generate.section.toc.level +integer + + +generate.section.toc.level +Control depth of TOC generation in sections + + + + +<xsl:param name="generate.section.toc.level" select="0"></xsl:param> + + + +Description + +The generate.section.toc.level parameter +controls the depth of section in which TOCs will be generated. Note +that this is related to, but not the same as +toc.section.depth, which controls the depth to +which TOC entries will be generated in a given TOC. +If, for example, generate.section.toc.level +is 3, TOCs will be generated in first, second, and third +level sections, but not in fourth level sections. + + + + + + + +generate.index +boolean + + +generate.index +Do you want an index? + + + +<xsl:param name="generate.index" select="1"></xsl:param> + + +Description + +Specify if an index should be generated. + + + + + + +index.method +list +basic +kosek +kimber + + +index.method +Select method used to group index entries in an index + + + + +<xsl:param name="index.method">basic</xsl:param> + + + +Description + +This parameter lets you select which method to use for sorting and grouping + index entries in an index. +Indexes in Latin-based languages that have accented characters typically +sort together accented words and unaccented words. +Thus Á (U+00C1 LATIN CAPITAL LETTER A WITH ACUTE) would sort together +with A (U+0041 LATIN CAPITAL LETTER A), so both would appear in the A +section of the index. +Languages using other alphabets (such as Russian, which is written in the Cyrillic alphabet) +and languages using ideographic chararacters (such as Japanese) +require grouping specific to the languages and alphabets. + + +The default indexing method is limited. +It can group accented characters in Latin-based languages only. +It cannot handle non-Latin alphabets or ideographic languages. +The other indexing methods require extensions of one type or +another, and do not work with +all XSLT processors, which is why they are not used by default. + +The three choices for indexing method are: + + +basic + + +(default) Sort and groups words based only on the Latin alphabet. +Words with accented Latin letters will group and sort with +their respective primary letter, but +words in non-Latin alphabets will be +put in the Symbols section of the index. + + + + +kosek + + +This method sorts and groups words based on letter groups configured in +the DocBook locale file for the given language. +See, for example, the French locale file common/fr.xml. +This method requires that the XSLT processor +supports the EXSLT extensions (most do). +It also requires support for using +user-defined functions in xsl:key (xsltproc does not). + +This method is suitable for any language for which you can +list all the individual characters that should appear +in each letter group in an index. +It is probably not practical to use it for ideographic languages +such as Chinese that have hundreds or thousands of characters. + + +To use the kosek method, you must: + + + +Use a processor that supports its extensions, such as +Saxon 6 or Xalan (xsltproc and Saxon 8 do not). + + + +Set the index.method parameter's value to kosek. + + + +Import the appropriate index extensions stylesheet module +fo/autoidx-kosek.xsl or +html/autoidx-kosek.xsl into your +customization. + + + + + + + +kimber + + +This method uses extensions to the Saxon processor to implement +sophisticated indexing processes. It uses its own +configuration file, which can include information for any number of +languages. Each language's configuration can group +words using one of two processes. In the +enumerated process similar to that used in the kosek method, +you indicate the groupings character-by-character. +In the between-key process, you specify the +break-points in the sort order that should start a new group. +The latter configuration is useful for ideographic languages +such as Chinese, Japanese, and Korean. +You can also define your own collation algorithms and how you +want mixed Latin-alphabet words sorted. + + +For a whitepaper describing the extensions, see: +http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf. + + + +To download the extension library, see +http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport. + + + + +To use the kimber method, you must: + + + +Use Saxon (version 6 or 8) as your XSLT processor. + + + +Install and configure the Innodata Isogen library, using +the documentation that comes with it. + + + +Set the index.method parameter's value to kimber. + + + +Import the appropriate index extensions stylesheet module +fo/autoidx-kimber.xsl or +html/autoidx-kimber.xsl into your +customization. + + + + + + + + + + + + + +index.on.type +boolean + + +index.on.type +Select indexterms based on type +attribute value + + + + +<xsl:param name="index.on.type" select="0"></xsl:param> + + + +Description + + +If non-zero, +then an index element that has a +type attribute +value will contain only those indexterm +elements with a matching type attribute value. +If an index has no type +attribute or it is blank, then the index will contain +all indexterms in the current scope. + + + +If index.on.type is zero, then the +type attribute has no effect +on selecting indexterms for an index. + + +For those using DocBook version 4.2 or earlier, +the type attribute is not available +for index terms. However, you can achieve the same +effect by using the role attribute +in the same manner on indexterm +and index, and setting the stylesheet parameter +index.on.role to a nonzero value. + + + + + + + +index.on.role +boolean + + +index.on.role +Select indexterms based on role value + + + + +<xsl:param name="index.on.role" select="0"></xsl:param> + + + +Description + + +If non-zero, +then an index element that has a +role attribute +value will contain only those indexterm +elements with a matching role value. +If an index has no role +attribute or it is blank, then the index will contain +all indexterms in the current scope. + + +If index.on.role is zero, then the +role attribute has no effect +on selecting indexterms for an index. + + +If you are using DocBook version 4.3 or later, you should +use the type attribute instead of role +on indexterm and index, +and set the index.on.type to a nonzero +value. + + + + + + + +index.links.to.section +boolean + + +index.links.to.section +HTML index entries link to container section title + + + + +<xsl:param name="index.links.to.section" select="1"></xsl:param> + + + +Description + +If zero, then an index entry in an index links +directly to the location of the +generated anchor that is output +for the indexterm. If two identical indexterm elements +exist in the same section, then both entries appear +in the index with the same title but link to different +locations. + +If non-zero, then an index entry in an index links to the +section title containing the indexterm, rather than +directly to the anchor output for the indexterm. +Duplicate indexterm entries in the same section are dropped. + + +The default value is 1, so index entries link to +section titles by default. + +In both cases, the link text in an index entry is the +title of the section containing the indexterm. +That is because HTML does not have numbered pages. +It also provides the reader with context information +for each link. + +This parameter lets you choose which style of +index linking you want. + + + +When set to 0, an index entry takes you +to the precise location of its corresponding indexterm. +However, if you have a lot of duplicate +entries in sections, then you have a lot of duplicate +titles in the index, which makes it more cluttered. +The reader may not recognize why duplicate titles +appear until they follow the links. Also, the links +may land the reader in the middle of a section where the +section title is not visible, which may also be +confusing to the reader. + + +When set to 1, an index entry link is +less precise, but duplicate titles in the +index entries are eliminated. +Landing on the section title location may confirm the reader's +expectation that a link that +shows a section title will take them to that section title, +not a location within the section. + + + + + + + + + +index.prefer.titleabbrev +boolean + + +index.prefer.titleabbrev +Should abbreviated titles be used as back references? + + + + +<xsl:param name="index.prefer.titleabbrev" select="0"></xsl:param> + + + +Description + +If non-zero, and if a titleabbrev is defined, the abbreviated title +is used as the link text of a back reference in the index. + + + + + + + +index.term.separator +string + + +index.term.separator +Override for punctuation separating an index term +from its list of page references in an index + + + + +<xsl:param name="index.term.separator"></xsl:param> + + + +Description + +This parameter permits you to override +the text to insert between +the end of an index term and its list of page references. +Typically that might be a comma and a space. + + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'term-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +fill in the content for this normally empty +override parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. +For fo output, it could be an fo:leader +element to provide space of a specific length, or a dot leader. + + + + + + + +index.number.separator +string + + +index.number.separator +Override for punctuation separating page numbers in index + + + + +<xsl:param name="index.number.separator"></xsl:param> + + + +Description + +This parameter permits you to override the text to insert between +page references in a formatted index entry. Typically +that would be a comma and a space. + + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'number-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +override the gentext with the content of this parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. + + +In HTML index output, section title references are used instead of +page number references. This punctuation appears between +such section titles in an HTML index. + + + + + + + +index.range.separator +string + + +index.range.separator +Override for punctuation separating the two numbers +in a page range in index + + + + +<xsl:param name="index.range.separator"></xsl:param> + + + +Description + +This parameter permits you +to override the text to insert between +the two numbers of a page range in an index. +This parameter is only used by those XSL-FO processors +that support an extension for generating such page ranges +(such as XEP). + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'range-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +override the gentext with the content of this parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. + + +In HTML index output, section title references are used instead of +page number references. So there are no page ranges +and this parameter has no effect. + + + + + +Stylesheet Extensions + + +linenumbering.everyNth +integer + + +linenumbering.everyNth +Indicate which lines should be numbered + + + + +<xsl:param name="linenumbering.everyNth">5</xsl:param> + + + +Description + +If line numbering is enabled, everyNth line will be +numbered. Note that numbering is one based, not zero based. + + + + + + + +linenumbering.extension +boolean + + +linenumbering.extension +Enable the line numbering extension + + + + +<xsl:param name="linenumbering.extension" select="1"></xsl:param> + + + +Description + +If non-zero, verbatim environments (address, literallayout, +programlisting, screen, synopsis) that specify line numbering will +have line numbers. + + + + + + + +linenumbering.separator +string + + +linenumbering.separator +Specify a separator between line numbers and lines + + + + +<xsl:param name="linenumbering.separator"><xsl:text> </xsl:text></xsl:param> + + + +Description + +The separator is inserted between line numbers and lines in the +verbatim environment. The default value is a single white space. + Note the interaction with linenumbering.width + + + + + + + +linenumbering.width +integer + + +linenumbering.width +Indicates the width of line numbers + + + + +<xsl:param name="linenumbering.width">3</xsl:param> + + + +Description + +If line numbering is enabled, line numbers will appear right +justified in a field "width" characters wide. + + + + + + + +tablecolumns.extension +boolean + + +tablecolumns.extension +Enable the table columns extension function + + + + +<xsl:param name="tablecolumns.extension" select="1"></xsl:param> + + + +Description + +The table columns extension function adjusts the widths of table +columns in the HTML result to more accurately reflect the specifications +in the CALS table. + + + + + + + + textinsert.extension + boolean + + + textinsert.extension + Enables the textinsert extension element + + + + <xsl:param name="textinsert.extension" select="1"></xsl:param> + + + Description + The textinsert extension element inserts the contents of + a file into the result tree (as text). + + To use the textinsert extension element, you must use + either Saxon or Xalan as your XSLT processor (it doesn’t + work with xsltproc), along with either the DocBook Saxon + extensions or DocBook Xalan extensions (for more + information about those extensions, see DocBook Saxon Extensions and DocBook Xalan Extensions), and you must set both + the use.extensions and + textinsert.extension parameters to + 1. + As an alternative to using the textinsert element, + consider using an Xinclude element with the + parse="text" attribute and value + specified, as detailed in Using XInclude for text inclusions. + + + See Also + You can also use the dbhtml-include href processing + instruction to insert external files — both files containing + plain text and files with markup content (including HTML + content). + + More information + For how-to documentation on inserting contents of + external code files and other text files into output, see + External code files. + For guidelines on inserting contents of + HTML files into output, see Inserting external HTML code. + + + + + +textdata.default.encoding +string + + +textdata.default.encoding +Default encoding of external text files which are included +using textdata element + + + + +<xsl:param name="textdata.default.encoding"></xsl:param> + + + +Description + +Specifies the encoding of any external text files included using +textdata element. This value is used only when you do +not specify encoding by the appropriate attribute +directly on textdata. An empty string is interpreted as the system +default encoding. + + + + + + +graphicsize.extension +boolean + + +graphicsize.extension +Enable the getWidth()/getDepth() extension functions + + + + +<xsl:param name="graphicsize.extension" select="1"></xsl:param> + + + +Description + +If non-zero (and if use.extensions is non-zero +and if you're using a processor that supports extension functions), the +getWidth and getDepth functions +will be used to extract image sizes from graphics. + + + + + + +graphicsize.use.img.src.path +boolean + + +graphicsize.use.img.src.path +Prepend img.src.path before +filenames passed to extension functions + + + + +<xsl:param name="graphicsize.use.img.src.path" select="0"></xsl:param> + + + +Description + +If non-zero img.src.path parameter will +be appended before filenames passed to extension functions for +measuring image dimensions. + + + + + + +use.extensions +boolean + + +use.extensions +Enable extensions + + + + +<xsl:param name="use.extensions" select="0"></xsl:param> + + + +Description + +If non-zero, extensions may be used. Each extension is +further controlled by its own parameter. But if +use.extensions is zero, no extensions will +be used. + + + + + +Automatic labelling + + +chapter.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +chapter.autolabel +Specifies the labeling format for Chapter titles + + + + +<xsl:param name="chapter.autolabel" select="1"></xsl:param> + + +Description + +If non-zero, then chapters will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (arabic). + + + + + + + +appendix.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +appendix.autolabel +Specifies the labeling format for Appendix titles + + + + +<xsl:param name="appendix.autolabel">A</xsl:param> + + + +Description + +If non-zero, then appendices will be numbered using the +parameter value as the number format if the value matches one of the +following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (upperalpha). + + + + + + + +part.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +part.autolabel +Specifies the labeling format for Part titles + + + + +<xsl:param name="part.autolabel">I</xsl:param> + + + +Description + +If non-zero, then parts will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (upperroman). + + + + + + + + +reference.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +reference.autolabel +Specifies the labeling format for Reference titles + + + + <xsl:param name="reference.autolabel">I</xsl:param> + + +Description +If non-zero, references will be numbered using the parameter + value as the number format if the value matches one of the + following: + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + +Any non-zero value other than the above will generate +the default number format (upperroman). + + + + + + +preface.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +preface.autolabel +Specifices the labeling format for Preface titles + + + +<xsl:param name="preface.autolabel" select="0"></xsl:param> + + +Description + +If non-zero then prefaces will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (arabic). + + + + + + + + +qandadiv.autolabel +boolean + + +qandadiv.autolabel +Are divisions in QAndASets enumerated? + + + +<xsl:param name="qandadiv.autolabel" select="1"></xsl:param> + + +Description + +If non-zero, unlabeled qandadivs will be enumerated. + + + + + + + +section.autolabel +boolean + + +section.autolabel +Are sections enumerated? + + + +<xsl:param name="section.autolabel" select="0"></xsl:param> + + +Description + +If true (non-zero), unlabeled sections will be enumerated. + + + + + + + +section.autolabel.max.depth +integer + + +section.autolabel.max.depth +The deepest level of sections that are numbered. + + + + +<xsl:param name="section.autolabel.max.depth">8</xsl:param> + + + +Description + +When section numbering is turned on by the +section.autolabel parameter, then this +parameter controls the depth of section nesting that is +numbered. Sections nested to a level deeper than this value will not +be numbered. + + + + + + + +section.label.includes.component.label +boolean + + +section.label.includes.component.label +Do section labels include the component label? + + + +<xsl:param name="section.label.includes.component.label" select="0"></xsl:param> + + +Description + +If non-zero, section labels are prefixed with the label of the +component that contains them. + + + + + + + +label.from.part +boolean + + +label.from.part +Renumber components in each part? + + + + +<xsl:param name="label.from.part" select="0"></xsl:param> + + + +Description + +If label.from.part is non-zero, then + numbering of components — preface, + chapter, appendix, and + reference (when reference occurs at the + component level) — is re-started within each + part. +If label.from.part is zero (the + default), numbering of components is not + re-started within each part; instead, components are + numbered sequentially throughout each book, + regardless of whether or not they occur within part + instances. + + + + + + +component.label.includes.part.label +boolean + + +component.label.includes.part.label +Do component labels include the part label? + + + +<xsl:param name="component.label.includes.part.label" select="0"></xsl:param> + + +Description + +If non-zero, number labels for chapter, +appendix, and other component elements are prefixed with +the label of the part element that contains them. So you might see +Chapter II.3 instead of Chapter 3. Also, the labels for formal +elements such as table and figure will include +the part label. If there is no part element container, then no prefix +is generated. + + +This feature is most useful when the +label.from.part parameter is turned on. +In that case, there would be more than one chapter +1, and the extra part label prefix will identify +each chapter unambiguously. + + + + + +HTML + + +html.base +uri + + +html.base +An HTML base URI + + + + +<xsl:param name="html.base"></xsl:param> + + +Description + +If html.base is set, it is used for the base element +in the head of the html documents. The parameter specifies +the base URL for all relative URLs in the document. This is useful +for dynamically served html where the base URI needs to be +shifted. + + + + + + +html.stylesheet.type +string + + +html.stylesheet.type +The type of the stylesheet used in the generated HTML + + + +<xsl:param name="html.stylesheet.type">text/css</xsl:param> + + +Description + +The type of the stylesheet to place in the HTML link tag. + + + + + + + +html.stylesheet +string + + +html.stylesheet +Name of the stylesheet(s) to use in the generated HTML + + + + +<xsl:param name="html.stylesheet"></xsl:param> + + + +Description + +The html.stylesheet parameter is either +empty, indicating that no stylesheet link tag should be +generated in the html output, or it is a list of one or more +stylesheet files. + +Multiple stylesheets are space-delimited. If you need to +reference a stylesheet URI that includes a space, encode it with +%20. A separate html link element will +be generated for each stylesheet in the order they are listed in the +parameter. + + + + + + +css.decoration +boolean + + +css.decoration +Enable CSS decoration of elements + + + + +<xsl:param name="css.decoration" select="1"></xsl:param> + + + +Description + + +If non-zero, then html elements produced by the stylesheet may be +decorated with style attributes. For example, the +li tags produced for list items may include a +fragment of CSS in the style attribute which sets +the CSS property "list-style-type". + + + + + + + +spacing.paras +boolean + + +spacing.paras +Insert additional <p> elements for spacing? + + + + +<xsl:param name="spacing.paras" select="0"></xsl:param> + + + +Description + +When non-zero, additional, empty paragraphs are inserted in +several contexts (for example, around informal figures), to create a +more pleasing visual appearance in many browsers. + + + + + + + +emphasis.propagates.style +boolean + + +emphasis.propagates.style +Pass emphasis role attribute through to HTML? + + + +<xsl:param name="emphasis.propagates.style" select="1"></xsl:param> + + +Description +If non-zero, the role attribute of +emphasis elements will be passed through to the HTML as a +class attribute on a span that surrounds the +emphasis. + + + + + +para.propagates.style +boolean + + +para.propagates.style +Pass para role attribute through to HTML? + + + + +<xsl:param name="para.propagates.style" select="1"></xsl:param> + + + +Description + +If true, the role attribute of para elements +will be passed through to the HTML as a class attribute on the +p generated for the paragraph. + + + + + + +phrase.propagates.style +boolean + + +phrase.propagates.style +Pass phrase role attribute through to HTML? + + + + +<xsl:param name="phrase.propagates.style" select="1"></xsl:param> + + +Description + +If non-zero, the role attribute of phrase elements +will be passed through to the HTML as a class +attribute on a span that surrounds the +phrase. + + + + + + +entry.propagates.style +boolean + + +entry.propagates.style +Pass entry role attribute through to HTML? + + + + +<xsl:param name="entry.propagates.style" select="1"></xsl:param> + + + +Description + +If true, the role attribute of entry elements +will be passed through to the HTML as a class attribute on the +td or th generated for the table +cell. + + + + + + +html.longdesc +boolean + + +html.longdesc +Should longdesc URIs be created? + + + +<xsl:param name="html.longdesc" select="1"></xsl:param> + + +Description +If non-zero, HTML files will be created for the +longdesc attribute. These files +are created from the textobjects in +mediaobjects and +inlinemediaobject. + + + + + + +html.longdesc.link +boolean + + +html.longdesc.link +Should a link to the longdesc be included in the HTML? + + + + +<xsl:param name="html.longdesc.link" select="$html.longdesc"></xsl:param> + + + +Description + +If non-zero, links will be created to the +HTML files created for the +longdesc attribute. It makes no +sense to enable this option without also enabling the +html.longdesc parameter. + + + + + + + + +make.valid.html +boolean + + +make.valid.html +Attempt to make sure the HTML output is valid HTML + + + + +<xsl:param name="make.valid.html" select="0"></xsl:param> + + + +Description + +If make.valid.html is true, the stylesheets take +extra effort to ensure that the resulting HTML is valid. This may mean that some +para tags are translated into HTML divs or +that other substitutions occur. + +This parameter is different from html.cleanup +because it changes the resulting markup; it does not use extension functions +to manipulate result-tree-fragments and is therefore applicable to any +XSLT processor. + + + + + + +html.cleanup +boolean + + +html.cleanup +Attempt to clean up the resulting HTML? + + + + +<xsl:param name="html.cleanup" select="1"></xsl:param> + + + +Description + +If non-zero, and if the EXSLT +extensions are supported by your processor, the resulting HTML will be +cleaned up. This improves the chances that the +resulting HTML will be valid. It may also improve the formatting of +some elements. + +This parameter is different from make.valid.html +because it uses extension functions to manipulate result-tree-fragments. + + + + + + +html.append +string + + +html.append +Specifies content to append to HTML output + + + +<xsl:param name="html.append"></xsl:param> + + +Description + +Specifies content to append to the end of HTML files output by +the html/docbook.xsl stylesheet, after the +closing <html> tag. You probably don’t want to set any +value for this parameter; but if you do, the only value it should ever +be set to is a newline character: &#x0a; or +&#10; + + + + + + +draft.mode +list +no +yes +maybe + + +draft.mode +Select draft mode + + + + +<xsl:param name="draft.mode">no</xsl:param> + + + +Description + +Selects draft mode. If draft.mode is +yes, the entire document will be treated +as a draft. If it is no, the entire document +will be treated as a final copy. If it is maybe, +individual sections will be treated as draft or final independently, depending +on how their status attribute is set. + + + + + + + +draft.watermark.image +uri + + +draft.watermark.image +The URI of the image to be used for draft watermarks + + + + +<xsl:param name="draft.watermark.image">images/draft.png</xsl:param> + + + +Description + +The image to be used for draft watermarks. + + + + + + +generate.id.attributes +boolean + + +generate.id.attributes +Generate ID attributes on container elements? + + + + +<xsl:param name="generate.id.attributes" select="0"></xsl:param> + + + +Description + +If non-zero, the HTML stylesheet will generate ID attributes on +containers. For example, the markup: + +<section id="foo"><title>Some Title</title> +<para>Some para.</para> +</section> + +might produce: + +<div class="section" id="foo"> +<h2>Some Title</h2> +<p>Some para.</p> +</div> + +The alternative is to generate anchors: + +<div class="section"> +<h2><a name="foo"></a>Some Title</h2> +<p>Some para.</p> +</div> + +Because the name attribute of +the a element and the id +attribute of other tags are both of type ID, producing both +generates invalid documents. + +As of version 1.50, you can use this switch to control which type of +identifier is generated. For backwards-compatibility, generating +a anchors is preferred. + +Note: at present, this switch is incompletely implemented. +Disabling ID attributes will suppress them, but enabling ID attributes +will not suppress the anchors. + + + + + + +generate.meta.abstract +boolean + + +generate.meta.abstract +Generate HTML META element from abstract? + + + + +<xsl:param name="generate.meta.abstract" select="1"></xsl:param> + + + +Description + +If non-zero, document abstracts will be reproduced in the HTML +head, with >meta name="description" content="..." + + + + + + + +make.clean.html +boolean + + +make.clean.html +Make HTML conform to modern coding standards + + + + +<xsl:param name="make.clean.html" select="0"></xsl:param> + + + +Description + +If make.clean.html is true, the stylesheets take +extra effort to ensure that the resulting HTML is conforms to +modern HTML coding standards. In addition to eliminating +excessive and noncompliant coding, it moves presentation +HTML coding to a CSS stylesheet. + +The resulting HTML is dependent on +CSS for formatting, and so the stylesheet is capable of +generating a supporting CSS file. The docbook.css.source +and custom.css.source parameters control +how a CSS file is generated. + +If you require your CSS to reside in the HTML +head element, then the generate.css.header +can be used to do that. + +The make.clean.html parameter is +different from html.cleanup +because the former changes the resulting markup; it does not use extension functions +like the latter to manipulate result-tree-fragments, +and is therefore applicable to any XSLT processor. + +If make.clean.html is set to zero (the default), +then the stylesheet retains its original +old style +HTML formatting features. + + + + + + docbook.css.source + string + + + docbook.css.source + Name of the default CSS input file + + + + <xsl:param name="docbook.css.source">docbook.css.xml</xsl:param> + + + Description + +The docbook.css.source parameter +specifies the name of the file containing the default DocBook +CSS styles. Those styles are necessary when the +make.clean.html parameter is nonzero. + +The file is a well-formed XML file that +must consist of a single style root +element that contains CSS styles as its text content. +The default value of the parameter (and filename) +is docbook.css.xml. +The stylesheets ship with the default file. You can substitute +your own and specify its path in this parameter. + +If docbook.css.source is not blank, +and make.clean.html is nonzero, then +the stylesheet takes the following actions: + + + + The stylesheet uses the XSLT document() + function to open the file specified by the parameter and + load it into a variable. + + + The stylesheet forms an output pathname consisting of the + value of the base.dir parameter (if it is set) + and the value of docbook.css.source, + with the .xml suffix stripped off. + + + + The stylesheet removes the style + wrapper element and writes just the CSS text content to the output file. + + + The stylesheet adds a link element to the + HTML HEAD element to reference the external CSS stylesheet. + For example: + <link rel="stylesheet" href="docbook.css" type="text/css"> + + However, if the docbook.css.link + parameter is set to zero, then no link is written + for the default CSS file. That is useful if a custom + CSS file will import the default CSS stylesheet to ensure + proper cascading of styles. + + + +If the docbook.css.source parameter +is changed from its default docbook.css.xml to blank, +then no default CSS is generated. Likewise if the +make.clean.html parameter is set to zero, +then no default CSS is generated. The +custom.css.source parameter can be used +instead to generate a complete custom CSS file. + +You can use the generate.css.header +parameter to instead write the CSS to each HTML HEAD +element in a style tag instead of an external CSS file. + + + + + + +docbook.css.link +boolean + + +docbook.css.link +Insert a link referencing the default CSS stylesheet + + + + +<xsl:param name="docbook.css.link" select="1"></xsl:param> + + + +Description + +The stylesheets are capable of generating a default +CSS stylesheet file. The parameters +make.clean.html and +docbook.css.source control that feature. + +Normally if a default CSS file is generated, then +the stylesheet inserts a link tag in the HTML +HEAD element to reference it. +However, you can omit that link reference if +you set the docbook.css.link to zero +(1 is the default). + +This parameter is useful when you want to import the +default CSS into a custom CSS file generated using the +custom.css.source parameter. + + + + + + + + custom.css.source + string + + + custom.css.source + Name of a custom CSS input file + + + + <xsl:param name="custom.css.source"></xsl:param> + + + Description + +The custom.css.source +parameter enables you to add CSS styles to DocBook's +HTML output. + +The parameter +specifies the name of a file containing custom +CSS styles. The file must be a well-formed XML file that +consists of a single style root +element that contains CSS styles as its text content. +For example: +<?xml version="1.0"?> +<style> +h2 { + font-weight: bold; + color: blue; +} +... +</style> + + +The filename specified by the parameter +should have a .xml +filename suffix, although that is not required. +The default value of this parameter is blank. + +If custom.css.source is not blank, then +the stylesheet takes the following actions. +These actions take place regardless of the value of +the make.clean.html parameter. + + + + The stylesheet uses the XSLT document() + function to open the file specified by the parameter and + load it into a variable. + + + The stylesheet forms an output pathname consisting of the + value of the base.dir parameter (if it is set) + and the value of custom.css.source, + with the .xml suffix stripped off. + + + + The stylesheet removes the style + wrapper element and writes just the CSS text content to the output file. + + + The stylesheet adds a link element to the + HTML HEAD element to reference this external CSS stylesheet. + For example: + <link rel="stylesheet" href="custom.css" type="text/css"> + + + + + + + +If the make.clean.html parameter is nonzero +(the default is zero), +and if the docbook.css.source parameter +is not blank (the default is not blank), +then the stylesheet will also generate a default CSS file +and add a link tag to reference it. +The link to the custom CSS comes after the +link to the default, so it should cascade properly +in most browsers. +If you do not want two link tags, and +instead want your custom CSS to import the default generated +CSS file, then do the following: + + + + + Add a line like the following to your custom CSS source file: + @import url("docbook.css") + + + + Set the docbook.css.link parameter + to zero. This will omit the link tag + that references the default CSS file. + + + +If you set make.clean.html to nonzero but +you do not want the default CSS generated, then also set +the docbook.css.source parameter to blank. +Then no default CSS will be generated, and so +all CSS styles must come from your custom CSS file. + +You can use the generate.css.header +parameter to instead write the CSS to each HTML HEAD +element in a style tag instead of an external CSS file. + + + + + + +generate.css.header +boolean + + +generate.css.header +Insert generated CSS styles in HEAD element + + + + +<xsl:param name="generate.css.header" select="0"></xsl:param> + + + +Description + +The stylesheets are capable of generating both default +and custom CSS stylesheet files. The parameters +make.clean.html, +docbook.css.source, and +custom.css.source control that feature. + +If you require that CSS styles reside in the HTML +HEAD element instead of external CSS files, +then set the generate.css.header +parameter to nonzero (it is zero by default). +Then instead of generating the CSS in external files, +they are wrapped in style elements in +the HEAD element of each HTML output file. + + + + + +XSLT Processing + + +rootid +string + + +rootid +Specify the root element to format + + + + +<xsl:param name="rootid"></xsl:param> + + +Description + +If rootid is not empty, it must be the +value of an ID that occurs in the document being formatted. The entire +document will be loaded and parsed, but formatting will begin at the +element identified, rather than at the root. For example, this allows +you to process only chapter 4 of a book. +Because the entire document is available to the processor, automatic +numbering, cross references, and other dependencies are correctly +resolved. + + + + + + +suppress.navigation +boolean + + +suppress.navigation +Disable header and footer navigation + + + + +<xsl:param name="suppress.navigation" select="0"></xsl:param> + + + +Description + + +If non-zero, header and footer navigation will be suppressed. + + + + + + +suppress.header.navigation +boolean + + +suppress.header.navigation +Disable header navigation + + + + +<xsl:param name="suppress.header.navigation" select="0"></xsl:param> + + + +Description + +If non-zero, header navigation will be suppressed. + + + + + + +suppress.footer.navigation +boolean + + +suppress.footer.navigation +Disable footer navigation + + + +<xsl:param name="suppress.footer.navigation">0</xsl:param> + + +Description + + +If non-zero, footer navigation will be suppressed. + + + + + + +header.rule +boolean + + +header.rule +Rule under headers? + + + + +<xsl:param name="header.rule" select="1"></xsl:param> + + + +Description + +If non-zero, a rule will be drawn below the page headers. + + + + + + +footer.rule +boolean + + +footer.rule +Rule over footers? + + + + +<xsl:param name="footer.rule" select="1"></xsl:param> + + + +Description + +If non-zero, a rule will be drawn above the page footers. + + + + + + +id.warnings +boolean + + +id.warnings +Should warnings be generated for titled elements without IDs? + + + +<xsl:param name="id.warnings" select="0"></xsl:param> + + +Description +If non-zero, the stylesheet will issue a warning for any element +(other than the root element) which has a title but does not have an +ID. + + + +Meta/*Info and Titlepages + + +inherit.keywords +boolean + + +inherit.keywords +Inherit keywords from ancestor elements? + + + + +<xsl:param name="inherit.keywords" select="1"></xsl:param> + + +Description + +If inherit.keywords +is non-zero, the keyword meta for each HTML +head element will include all of the keywords from +ancestor elements. Otherwise, only the keywords from the current section +will be used. + + + + + + + +make.single.year.ranges +boolean + + +make.single.year.ranges +Print single-year ranges (e.g., 1998-1999) + + + + +<xsl:param name="make.single.year.ranges" select="0"></xsl:param> + + +Description + +If non-zero, year ranges that span a single year will be printed +in range notation (1998-1999) instead of discrete notation +(1998, 1999). + + + + + + +make.year.ranges +boolean + + +make.year.ranges +Collate copyright years into ranges? + + + +<xsl:param name="make.year.ranges" select="0"></xsl:param> + + +Description + +If non-zero, multiple copyright year elements will be +collated into ranges. +This works only if each year number is put into a separate +year element. The copyright element permits multiple +year elements. If a year element contains a dash or +a comma, then that year element will not be merged into +any range. + + + + + + + +author.othername.in.middle +boolean + + +author.othername.in.middle +Is othername in author a +middle name? + + + + +<xsl:param name="author.othername.in.middle" select="1"></xsl:param> + + +Description + +If non-zero, the othername of an author +appears between the firstname and +surname. Otherwise, othername +is suppressed. + + + + + + + +blurb.on.titlepage.enabled +boolean + + +blurb.on.titlepage.enabled +Display personblurb and authorblurb on title pages? + + + + +<xsl:param name="blurb.on.titlepage.enabled" select="0"></xsl:param> + + + +Description + +If non-zero, output from authorblurb and +personblurb elements is displayed on title pages. If zero +(the default), output from those elements is suppressed on title pages +(unless you are using a titlepage customization +that causes them to be included). + + + + + + +contrib.inline.enabled +boolean + + +contrib.inline.enabled +Display contrib output inline? + + + +<xsl:param name="contrib.inline.enabled">1</xsl:param> + + +Description + +If non-zero (the default), output of the contrib element is +displayed as inline content rather than as block content. + + + + + + +editedby.enabled +boolean + + +editedby.enabled +Display “Edited by” heading above editor name? + + + +<xsl:param name="editedby.enabled">1</xsl:param> + + +Description + +If non-zero, a localized Edited +by heading is displayed above editor names in output of the +editor element. + + + + + + +abstract.notitle.enabled +boolean + + +abstract.notitle.enabled +Suppress display of abstract titles? + + + <xsl:param name="abstract.notitle.enabled" select="0"></xsl:param> + +Description +If non-zero, in output of the abstract element on titlepages, +display of the abstract title is suppressed. + + + + + +othercredit.like.author.enabled +boolean + + +othercredit.like.author.enabled +Display othercredit in same style as author? + + + +<xsl:param name="othercredit.like.author.enabled">0</xsl:param> + + +Description + +If non-zero, output of the +othercredit element on titlepages is displayed in +the same style as author and +editor output. If zero then +othercredit output is displayed using a style +different than that of author and +editor. + + + + + + +generate.legalnotice.link +boolean + + +generate.legalnotice.link +Write legalnotice to separate chunk and generate link? + + + +<xsl:param name="generate.legalnotice.link" select="0"></xsl:param> + + +Description + +If the value of generate.legalnotice.link +is non-zero, the stylesheet: + + + + writes the contents of legalnotice to a separate + HTML file + + + inserts a hyperlink to the legalnotice file + + + adds (in the HTML head) either a single + link or element or multiple + link elements (depending on the value of the + html.head.legalnotice.link.multiple + parameter), with the value or values derived from the + html.head.legalnotice.link.types + parameter + + + + Otherwise, if generate.legalnotice.link is + zero, legalnotice contents are rendered on the title + page. + +The name of the separate HTML file is computed as follows: + + + + If a filename is given by the dbhtml filename +processing instruction, that filename is used. + + + If the legalnotice has an id/xml:id +attribute, and if use.id.as.filename != 0, the filename +is the concatenation of the id value and the value of the html.ext +parameter. + + + If the legalnotice does not have an id/xml:id + attribute, or if use.id.as.filename = 0, the filename is the concatenation of "ln-", +auto-generated id value, and html.ext value. + + + + + + + + + + + +generate.revhistory.link +boolean + + +generate.revhistory.link +Write revhistory to separate chunk and generate link? + + + +<xsl:param name="generate.revhistory.link" select="0"></xsl:param> + + +Description + +If non-zero, the contents of revhistory are written +to a separate HTML file and a link to the file is +generated. Otherwise, revhistory contents are rendered on +the title page. + +The name of the separate HTML file is computed as follows: + + + + If a filename is given by the dbhtml filename processing instruction, +that filename is used. + + + If the revhistory has an id/xml:id +attribute, and if use.id.as.filename != 0, the filename is the concatenation of +the id value and the value of the html.ext parameter. + + + If the revhistory does not have an id/xml:id +attribute, or if use.id.as.filename = 0, the filename is the concatenation of "rh-", +auto-generated id value, and html.ext value. + + + + + + + + + + + +html.head.legalnotice.link.types +string + + +html.head.legalnotice.link.types +Specifies link types for legalnotice link in html head + + + + +<xsl:param name="html.head.legalnotice.link.types">copyright</xsl:param> + + + +Description + +The value of +html.head.legalnotice.link.types is a +space-separated list of link types, as described in Section 6.12 +of the HTML 4.01 specification. If the value of the +generate.legalnotice.link parameter is +non-zero, then the stylesheet generates (in the +head section of the HTML source) either a single +HTML link element or, if the value of the +html.head.legalnotice.link.multiple is +non-zero, one link element for each link type +specified. Each link has the following attributes: + + + + a rel attribute whose + value is derived from the value of + html.head.legalnotice.link.types + + + an href attribute whose + value is set to the URL of the file containing the + legalnotice + + + a title attribute whose + value is set to the title of the corresponding + legalnotice (or a title programatically + determined by the stylesheet) + + + +For example: + + <link rel="license" href="ln-id2524073.html" title="Legal Notice"> + + +About the default value + + In an ideal world, the default value of + html.head.legalnotice.link.types would + probably be “license”, since the content of the + DocBook legalnotice is typically license + information, not copyright information. However, the default value + is “copyright” for pragmatic reasons: because + that’s among the set of “recognized link types” listed in Section + 6.12 of the HTML 4.01 specification, and because certain + browsers and browser extensions are preconfigured to recognize that + value. + + + + + + + +html.head.legalnotice.link.multiple +boolean + + +html.head.legalnotice.link.multiple +Generate multiple link instances in html head for legalnotice? + + + + +<xsl:param name="html.head.legalnotice.link.multiple" select="1"></xsl:param> + + + +Description + +If html.head.legalnotice.link.multiple is +non-zero and the value of +html.head.legalnotice.link.types contains +multiple link types, then the stylesheet generates (in the +head section of the HTML source) one +link element for each link type specified. For +example, if the value of +html.head.legalnotice.link.types is +“copyright license”: + + <link rel="copyright" href="ln-id2524073.html" title="Legal Notice"> + <link rel="license" href="ln-id2524073.html" title="Legal Notice"> + + Otherwise, the stylesheet generates generates a single + link instance; for example: + + <link rel="copyright license" href="ln-id2524073.html" title="Legal Notice"> + + + + + +Reference Pages + + +funcsynopsis.decoration +boolean + + +funcsynopsis.decoration +Decorate elements of a funcsynopsis? + + + + +<xsl:param name="funcsynopsis.decoration" select="1"></xsl:param> + + + +Description + +If non-zero, elements of the funcsynopsis will be +decorated (e.g. rendered as bold or italic text). The decoration is controlled by +templates that can be redefined in a customization layer. + + + + + + + +funcsynopsis.style +list +ansi +kr + + +funcsynopsis.style +What style of funcsynopsis should be generated? + + + +<xsl:param name="funcsynopsis.style">kr</xsl:param> + + +Description + +If funcsynopsis.style is ansi, +ANSI-style function synopses are generated for a +funcsynopsis, otherwise K&R-style +function synopses are generated. + + + + + + + +function.parens +boolean + + +function.parens +Generate parens after a function? + + + + +<xsl:param name="function.parens" select="0"></xsl:param> + + + +Description + +If non-zero, the formatting of a function element +will include generated parentheses. + + + + + + + +refentry.generate.name +boolean + + +refentry.generate.name +Output NAME header before refnames? + + + + +<xsl:param name="refentry.generate.name" select="1"></xsl:param> + + + +Description + +If non-zero, a "NAME" section title is output before the list +of refnames. This parameter and +refentry.generate.title are mutually +exclusive. This means that if you change this parameter to zero, you +should set refentry.generate.title to non-zero unless +you want get quite strange output. + + + + + + + +refentry.generate.title +boolean + + +refentry.generate.title +Output title before refnames? + + + + +<xsl:param name="refentry.generate.title" select="0"></xsl:param> + + + +Description + +If non-zero, the reference page title or first name is +output before the list of refnames. This parameter and +refentry.generate.name are mutually exclusive. +This means that if you change this parameter to non-zero, you +should set refentry.generate.name to zero unless +you want get quite strange output. + + + + + + + +refentry.xref.manvolnum +boolean + + +refentry.xref.manvolnum +Output manvolnum as part of +refentry cross-reference? + + + + +<xsl:param name="refentry.xref.manvolnum" select="1"></xsl:param> + + + +Description + +if non-zero, the manvolnum is used when cross-referencing +refentrys, either with xref +or citerefentry. + + + + + + + +citerefentry.link +boolean + + +citerefentry.link +Generate URL links when cross-referencing RefEntrys? + + + + +<xsl:param name="citerefentry.link" select="0"></xsl:param> + + +Description + +If non-zero, a web link will be generated, presumably +to an online man->HTML gateway. The text of the link is +generated by the generate.citerefentry.link template. + + + + + + + +refentry.separator +boolean + + +refentry.separator +Generate a separator between consecutive RefEntry elements? + + + + +<xsl:param name="refentry.separator" select="1"></xsl:param> + + + +Description + +If true, a separator will be generated between consecutive +reference pages. + + + + + + + +refclass.suppress +boolean + + +refclass.suppress +Suppress display of refclass contents? + + + + +<xsl:param name="refclass.suppress" select="0"></xsl:param> + + +Description + +If the value of refclass.suppress is +non-zero, then display of refclass contents is +suppressed in output. + + + + +Tables + + +default.table.width +length + + +default.table.width +The default width of tables + + + +<xsl:param name="default.table.width"></xsl:param> + + +Description +If non-zero, this value will be used for the +width attribute on tables that do not specify an +alternate width (with the dbhtml table-width or +dbfo table-width processing instruction). + + + + + +nominal.table.width +length + + +nominal.table.width +The (absolute) nominal width of tables + + + + +<xsl:param name="nominal.table.width">6in</xsl:param> + + + +Description + +In order to convert CALS column widths into HTML column widths, it +is sometimes necessary to have an absolute table width to use for conversion +of mixed absolute and relative widths. This value must be an absolute +length (not a percentage). + + + + + + +table.borders.with.css +boolean + + +table.borders.with.css +Use CSS to specify table, row, and cell borders? + + + + +<xsl:param name="table.borders.with.css" select="0"></xsl:param> + + + +Description + +If non-zero, CSS will be used to draw table borders. + + + + + + + +table.cell.border.style +list +none +solid +dotted +dashed +double +groove +ridge +inset +outset +solid + + +table.cell.border.style +Specifies the border style of table cells + + + + +<xsl:param name="table.cell.border.style">solid</xsl:param> + + + +Description + +Specifies the border style of table cells. + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + + + + +table.cell.border.thickness +length + + +table.cell.border.thickness +Specifies the thickness of table cell borders + + + + +<xsl:param name="table.cell.border.thickness">0.5pt</xsl:param> + + + +Description + +If non-zero, specifies the thickness of borders on table +cells. The units are points. See +CSS + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + + + + +table.cell.border.color +color + + +table.cell.border.color +Specifies the border color of table cells + + + + +<xsl:param name="table.cell.border.color"></xsl:param> + + + + +Description + +Set the color of table cell borders. If non-zero, the value is used +for the border coloration. See CSS. A +color is either a keyword or a numerical RGB specification. +Keywords are aqua, black, blue, fuchsia, gray, green, lime, maroon, +navy, olive, orange, purple, red, silver, teal, white, and +yellow. + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + + + + +table.frame.border.style +list +none +solid +dotted +dashed +double +groove +ridge +inset +outset +solid + + +table.frame.border.style +Specifies the border style of table frames + + + + +<xsl:param name="table.frame.border.style">solid</xsl:param> + + + +Description + +Specifies the border style of table frames. + + + + + + +table.frame.border.thickness +length + + +table.frame.border.thickness +Specifies the thickness of the frame border + + + + +<xsl:param name="table.frame.border.thickness">0.5pt</xsl:param> + + + +Description + +Specifies the thickness of the border on the table's frame. + + + + + + +table.frame.border.color +color + + +table.frame.border.color +Specifies the border color of table frames + + + + +<xsl:param name="table.frame.border.color"></xsl:param> + + + + +Description + +Specifies the border color of table frames. + + + + + + +default.table.frame +string + + +default.table.frame +The default framing of tables + + + + +<xsl:param name="default.table.frame">all</xsl:param> + + + +Description + +This value will be used when there is no frame attribute on the +table. + + + + + + +html.cellspacing +integer + + +html.cellspacing +Default value for cellspacing in HTML tables + + + + +<xsl:param name="html.cellspacing"></xsl:param> + + + +Description + +If non-zero, this value will be used as the default cellspacing +value in HTML tables. nn for pixels or nn% for percentage +length. E.g. 5 or 5% + + + + + + +html.cellpadding +integer + + +html.cellpadding +Default value for cellpadding in HTML tables + + + + +<xsl:param name="html.cellpadding"></xsl:param> + + + +Description + +If non-zero, this value will be used as the default cellpadding value +in HTML tables. nn for pixels or nn% for percentage length. E.g. 5 or +5% + + + + +QAndASet + + +qanda.defaultlabel +list +number +qanda +none + + +qanda.defaultlabel +Sets the default for defaultlabel on QandASet. + + + + +<xsl:param name="qanda.defaultlabel">number</xsl:param> + + + +Description + +If no defaultlabel attribute is specified on +a qandaset, this value is used. It is generally one of the legal +values for the defaultlabel attribute (none, +number or +qanda), or one of the additional stylesheet-specific values +(qnumber or qnumberanda). +The default value is 'number'. + +The values are rendered as follows: + +qanda + +questions are labeled "Q:" and +answers are labeled "A:". + + + +number + +The questions are enumerated and the answers +are not labeled. + + + +qnumber + +The questions are labeled "Q:" followed by a number, and answers are not +labeled. +When sections are numbered, adding a label +to the number distinguishes the question numbers +from the section numbers. +This value is not allowed in the +defaultlabel attribute +of a qandaset element. + + + +qnumberanda + +The questions are labeled "Q:" followed by a number, and +the answers are labeled "A:". +When sections are numbered, adding a label +to the number distinguishes the question numbers +from the section numbers. +This value is not allowed in the +defaultlabel attribute +of a qandaset element. + + + +none + +No distinguishing label precedes Questions or Answers. + + + + + + + + + + +qanda.inherit.numeration +boolean + + +qanda.inherit.numeration +Does enumeration of QandASet components inherit the numeration of parent elements? + + + + +<xsl:param name="qanda.inherit.numeration" select="1"></xsl:param> + + + +Description + +If non-zero, numbered qandadiv elements and +question and answer inherit the enumeration of +the ancestors of the qandaset. + + + + + + + +qanda.in.toc +boolean + + +qanda.in.toc +Should qandaentry questions appear in +the document table of contents? + + + +<xsl:param name="qanda.in.toc" select="0"></xsl:param> + + +Description + +If true (non-zero), then the generated table of contents +for a document will include qandaset titles, +qandadiv titles, +and question elements. The default value (zero) excludes +them from the TOC. + +This parameter does not affect any tables of contents +that may be generated inside a qandaset or qandadiv. + + + + + + + +qanda.nested.in.toc +boolean + + +qanda.nested.in.toc +Should nested answer/qandaentry instances appear in TOC? + + + + +<xsl:param name="qanda.nested.in.toc" select="0"></xsl:param> + + + +Description + +If non-zero, instances of qandaentry +that are children of answer elements are shown in +the TOC. + + + + +Linking + + +target.database.document +uri + + +target.database.document +Name of master database file for resolving +olinks + + + + <xsl:param name="target.database.document">olinkdb.xml</xsl:param> + + +Description + + +To resolve olinks between documents, the stylesheets use a master +database document that identifies the target datafiles for all the +documents within the scope of the olinks. This parameter value is the +URI of the master document to be read during processing to resolve +olinks. The default value is olinkdb.xml. + +The data structure of the file is defined in the +targetdatabase.dtd DTD. The database file +provides the high level elements to record the identifiers, locations, +and relationships of documents. The cross reference data for +individual documents is generally pulled into the database using +system entity references or XIncludes. See also +targets.filename. + + + + +targets.filename +string + + +targets.filename +Name of cross reference targets data file + + +<xsl:param name="targets.filename">target.db</xsl:param> + + +Description + + +In order to resolve olinks efficiently, the stylesheets can +generate an external data file containing information about +all potential cross reference endpoints in a document. +This parameter lets you change the name of the generated +file from the default name target.db. +The name must agree with that used in the target database +used to resolve olinks during processing. +See also target.database.document. + + + + + + +olink.base.uri +uri + + +olink.base.uri +Base URI used in olink hrefs + + +<xsl:param name="olink.base.uri"></xsl:param> + + +Description + +When cross reference data is collected for resolving olinks, it +may be necessary to prepend a base URI to each target's href. This +parameter lets you set that base URI when cross reference data is +collected. This feature is needed when you want to link to a document +that is processed without chunking. The output filename for such a +document is not known to the XSL stylesheet; the only target +information consists of fragment identifiers such as +#idref. To enable the resolution of olinks between +documents, you should pass the name of the HTML output file as the +value of this parameter. Then the hrefs recorded in the cross +reference data collection look like +outfile.html#idref, which can be reached as links +from other documents. + + + + + +use.local.olink.style +boolean + + +use.local.olink.style +Process olinks using xref style of current +document + + +<xsl:param name="use.local.olink.style" select="0"></xsl:param> + +Description + +When cross reference data is collected for use by olinks, the data for each potential target includes one field containing a completely assembled cross reference string, as if it were an xref generated in that document. Other fields record the separate title, number, and element name of each target. When an olink is formed to a target from another document, the olink resolves to that preassembled string by default. If the use.local.olink.style parameter is set to non-zero, then instead the cross +reference string is formed again from the target title, number, and +element name, using the stylesheet processing the targeting document. +Then olinks will match the xref style in the targeting document +rather than in the target document. If both documents are processed +with the same stylesheet, then the results will be the same. + + + + + +current.docid +string + + +current.docid +targetdoc identifier for the document being +processed + + +<xsl:param name="current.docid"></xsl:param> + + +Description + +When olinks between documents are resolved for HTML output, the stylesheet can compute the relative path between the current document and the target document. The stylesheet needs to know the targetdoc identifiers for both documents, as they appear in the target.database.document database file. This parameter passes to the stylesheet +the targetdoc identifier of the current document, since that +identifier does not appear in the document itself. +This parameter can also be used for print output. If an olink's targetdoc id differs from the current.docid, then the stylesheet can append the target document's title to the generated olink text. That identifies to the reader that the link is to a different document, not the current document. See also olink.doctitle to enable that feature. + + + + + +olink.doctitle +list +no +yes +maybe + + +olink.doctitle +show the document title for external olinks? + + + +<xsl:param name="olink.doctitle">no</xsl:param> + + +Description + +When olinks between documents are resolved, the generated text +may not make it clear that the reference is to another document. +It is possible for the stylesheets to append the other document's +title to external olinks. For this to happen, two parameters must +be set. + + +This olink.doctitle parameter +should be set to either yes or maybe +to enable this feature. + + + +And you should also set the current.docid +parameter to the document id for the document currently +being processed for output. + + + + + +Then if an olink's targetdoc id differs from +the current.docid value, the stylesheet knows +that it is a reference to another document and can +append the target document's +title to the generated olink text. + +The text for the target document's title is copied from the +olink database from the ttl element +of the top-level div for that document. +If that ttl element is missing or empty, +no title is output. + + +The supported values for olink.doctitle are: + + + +yes + + +Always insert the title to the target document if it is not +the current document. + + + + +no + + +Never insert the title to the target document, even if requested +in an xrefstyle attribute. + + + + +maybe + + +Only insert the title to the target document, if requested +in an xrefstyle attribute. + + + + +An xrefstyle attribute +may override the global setting for individual olinks. +The following values are supported in an +xrefstyle +attribute using the select: syntax: + + + + +docname + + +Insert the target document name for this olink using the +docname gentext template, but only +if the value of olink.doctitle +is not no. + + + + +docnamelong + + +Insert the target document name for this olink using the +docnamelong gentext template, but only +if the value of olink.doctitle +is not no. + + + + +nodocname + + +Omit the target document name even if +the value of olink.doctitle +is yes. + + + + +Another way of inserting the target document name +for a single olink is to employ an +xrefstyle +attribute using the template: syntax. +The %o placeholder (the letter o, not zero) +in such a template +will be filled in with the target document's title when it is processed. +This will occur regardless of +the value of olink.doctitle. + +Note that prior to version 1.66 of the XSL stylesheets, +the allowed values for this parameter were 0 and 1. Those +values are still supported and mapped to 'no' and 'yes', respectively. + + + + + + +olink.debug +boolean + + +olink.debug +Turn on debugging messages for olinks + + + + +<xsl:param name="olink.debug" select="0"></xsl:param> + + + +Description + +If non-zero, then each olink will generate several +messages about how it is being resolved during processing. +This is useful when an olink does not resolve properly +and the standard error messages are not sufficient to +find the problem. + + +You may need to read through the olink XSL templates +to understand the context for some of the debug messages. + + + + + + + +olink.properties +attribute set + + +olink.properties +Properties associated with the cross-reference +text of an olink. + + + + +<xsl:attribute-set name="olink.properties"> + <xsl:attribute name="show-destination">replace</xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is applied to the +fo:basic-link element of an olink. It is not applied to the +optional page number or optional title of the external +document. + + + + + + +olink.lang.fallback.sequence +string + + +olink.lang.fallback.sequence +look up translated documents if olink not found? + + + +<xsl:param name="olink.lang.fallback.sequence"></xsl:param> + + +Description + + +This parameter defines a list of lang values +to search among to resolve olinks. + + +Normally an olink tries to resolve to a document in the same +language as the olink itself. The language of an olink +is determined by its nearest ancestor element with a +lang attribute, otherwise the +value of the l10n.gentext.default.lang +parameter. + + +An olink database can contain target data for the same +document in multiple languages. Each set of data has the +same value for the targetdoc attribute in +the document element in the database, but with a +different lang attribute value. + + +When an olink is being resolved, the target is first +sought in the document with the same language as the olink. +If no match is found there, then this parameter is consulted +for additional languages to try. + +The olink.lang.fallback.sequence +must be a whitespace separated list of lang values to +try. The first one with a match in the olink database is used. +The default value is empty. + +For example, a document might be written in German +and contain an olink with +targetdoc="adminguide". +When the document is processed, the processor +first looks for a target dataset in the +olink database starting with: + +<document targetdoc="adminguide" lang="de">. + + +If there is no such element, then the +olink.lang.fallback.sequence +parameter is consulted. +If its value is, for example, fr en, then the processor next +looks for targetdoc="adminguide" lang="fr", and +then for targetdoc="adminguide" lang="en". +If there is still no match, it looks for +targetdoc="adminguide" with no +lang attribute. + + +This parameter is useful when a set of documents is only +partially translated, or is in the process of being translated. +If a target of an olink has not yet been translated, then this +parameter permits the processor to look for the document in +other languages. This assumes the reader would rather have +a link to a document in a different language than to have +a broken link. + + + + + + + +insert.olink.page.number +list +no +yes +maybe + + +insert.olink.page.number +Turns page numbers in olinks on and off + + + + +<xsl:param name="insert.olink.page.number">no</xsl:param> + + + +Description + +The value of this parameter determines if +cross references made between documents with +olink will +include page number citations. +In most cases this is only applicable to references in printed output. + +The parameter has three possible values. + + + +no +No page number references will be generated for olinks. + + + +yes +Page number references will be generated +for all olink references. +The style of page reference may be changed +if an xrefstyle +attribute is used. + + + +maybe +Page number references will not be generated +for an olink element unless +it has an +xrefstyle +attribute whose value specifies a page reference. + + + +Olinks that point to targets within the same document +are treated as xrefs, and controlled by +the insert.xref.page.number parameter. + + +Page number references for olinks to +external documents can only be inserted if the +information exists in the olink database. +This means each olink target element +(div or obj) +must have a page attribute +whose value is its page number in the target document. +The XSL stylesheets are not able to extract that information +during processing because pages have not yet been created in +XSLT transformation. Only the XSL-FO processor knows what +page each element is placed on. +Therefore some postprocessing must take place to populate +page numbers in the olink database. + + + + + + + + + +insert.olink.pdf.frag +boolean + + +insert.olink.pdf.frag +Add fragment identifiers for links into PDF files + + + + +<xsl:param name="insert.olink.pdf.frag" select="0"></xsl:param> + + + +Description + +The value of this parameter determines whether +the cross reference URIs to PDF documents made with +olink will +include fragment identifiers. + + +When forming a URI to link to a PDF document, +a fragment identifier (typically a '#' followed by an +id value) appended to the PDF filename can be used by +the PDF viewer to open +the PDF file to a location within the document instead of +the first page. +However, not all PDF files have id +values embedded in them, and not all PDF viewers can +handle fragment identifiers. + + +If insert.olink.pdf.frag is set +to a non-zero value, then any olink targeting a +PDF file will have the fragment identifier appended to the URI. +The URI is formed by concatenating the value of the +olink.base.uri parameter, the +value of the baseuri +attribute from the document +element in the olink database with the matching +targetdoc value, +and the value of the href +attribute for the targeted element in the olink database. +The href attribute +contains the fragment identifier. + + +If insert.olink.pdf.frag is set +to zero (the default value), then +the href attribute +from the olink database +is not appended to PDF olinks, so the fragment identifier is left off. +A PDF olink is any olink for which the +baseuri attribute +from the matching document +element in the olink database ends with '.pdf'. +Any other olinks will still have the fragment identifier added. + + + + + + +prefer.internal.olink +boolean + + +prefer.internal.olink +Prefer a local olink reference to an external reference + + + + +<xsl:param name="prefer.internal.olink" select="0"></xsl:param> + + + +Description + +If you are re-using XML content modules in multiple documents, +you may want to redirect some of your olinks. This parameter +permits you to redirect an olink to the current document. + + +For example: you are writing documentation for a product, +which includes 3 manuals: a little installation +booklet (booklet.xml), a user +guide (user.xml), and a reference manual (reference.xml). +All 3 documents begin with the same introduction section (intro.xml) that +contains a reference to the customization section (custom.xml) which is +included in both user.xml and reference.xml documents. + + +How do you write the link to custom.xml in intro.xml +so that it is interpreted correctly in all 3 documents? + +If you use xref, it will fail in user.xml. + +If you use olink (pointing to reference.xml), +the reference in user.xml +will point to the customization section of the reference manual, while it is +actually available in user.xml. + + + +If you set the prefer.internal.olink +parameter to a non-zero value, then the processor will +first look in the olink database +for the olink's targetptr attribute value +in document matching the current.docid +parameter value. If it isn't found there, then +it tries the document in the database +with the targetdoc +value that matches the olink's targetdoc +attribute. + + +This feature permits an olink reference to resolve to +the current document if there is an element +with an id matching the olink's targetptr +value. The current document's olink data must be +included in the target database for this to work. + + +There is a potential for incorrect links if +the same id attribute value is used for different +content in different documents. +Some of your olinks may be redirected to the current document +when they shouldn't be. It is not possible to control +individual olink instances. + + + + + + + +link.mailto.url +string + + +link.mailto.url +Mailto URL for the LINK REL=made HTML HEAD element + + + + +<xsl:param name="link.mailto.url"></xsl:param> + + + +Description + +If not the empty string, this address will be used for the +rel=made link element in the html head + + + + + + + +ulink.target +string + + +ulink.target +The HTML anchor target for ULinks + + + + +<xsl:param name="ulink.target">_top</xsl:param> + + + +Description + +If ulink.target is non-zero, its value will +be used for the target attribute +on anchors generated for ulinks. + + + + + + +olink.fragid +string + + +olink.fragid +Names the fragment identifier portion of an OLink resolver query + + + +<xsl:param name="olink.fragid">fragid=</xsl:param> + + +Description +The fragment identifier portion of an olink target. + + + + + +olink.outline.ext +string + + +olink.outline.ext +The extension of OLink outline files + + + + +<xsl:param name="olink.outline.ext">.olink</xsl:param> + + + +Description + +The extension to be expected for OLink outline files +Bob has this parameter as dead. Please don't use + + + + + + +olink.pubid +string + + +olink.pubid +Names the public identifier portion of an OLink resolver query + + + + +<xsl:param name="olink.pubid">pubid</xsl:param> + + + +Description + + + + + + + + +olink.sysid +string + + +olink.sysid +Names the system identifier portion of an OLink resolver query + + + + +<xsl:param name="olink.sysid">sysid</xsl:param> + + + +Description + +FIXME + + + + + + +olink.resolver +string + + +olink.resolver +The root name of the OLink resolver (usually a script) + + + + <xsl:param name="olink.resolver">/cgi-bin/olink</xsl:param> + + +Description +FIXME: + + + +Cross References + + +collect.xref.targets +list +no +yes +only + + +collect.xref.targets +Controls whether cross reference data is +collected + + +<xsl:param name="collect.xref.targets">no</xsl:param> + + +Description + + +In order to resolve olinks efficiently, the stylesheets can +generate an external data file containing information about +all potential cross reference endpoints in a document. +This parameter determines whether the collection process is run when the document is processed by the stylesheet. The default value is no, which means the data file is not generated during processing. The other choices are yes, which means the data file is created and the document is processed for output, and only, which means the data file is created but the document is not processed for output. +See also targets.filename. + + + + + + +insert.xref.page.number +list +no +yes +maybe + + +insert.xref.page.number +Turns page numbers in xrefs on and off + + + + +<xsl:param name="insert.xref.page.number">no</xsl:param> + + + +Description + +The value of this parameter determines if +cross references (xrefs) in +printed output will +include page number citations. +It has three possible values. + + + +no +No page number references will be generated. + + + +yes +Page number references will be generated +for all xref elements. +The style of page reference may be changed +if an xrefstyle +attribute is used. + + + +maybe +Page number references will not be generated +for an xref element unless +it has an +xrefstyle +attribute whose value specifies a page reference. + + + + + + + + + +use.role.as.xrefstyle +boolean + + +use.role.as.xrefstyle +Use role attribute for +xrefstyle on xref? + + + + +<xsl:param name="use.role.as.xrefstyle" select="1"></xsl:param> + + + +Description + +In DocBook documents that conform to a schema older than V4.3, this parameter allows +role to serve the purpose of specifying the cross reference style. + +If non-zero, the role attribute on +xref will be used to select the cross reference style. +In DocBook V4.3, the xrefstyle attribute was added for this purpose. +If the xrefstyle attribute is present, +role will be ignored, regardless of the setting +of this parameter. + + + +Example + +The following small stylesheet shows how to configure the +stylesheets to make use of the cross reference style: + +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.0"> + +<xsl:import href="../xsl/html/docbook.xsl"/> + +<xsl:output method="html"/> + +<xsl:param name="local.l10n.xml" select="document('')"/> +<l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"> + <l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en"> + <l:context name="xref"> + <l:template name="chapter" style="title" text="Chapter %n, %t"/> + <l:template name="chapter" text="Chapter %n"/> + </l:context> + </l:l10n> +</l:i18n> + +</xsl:stylesheet> + +With this stylesheet, the cross references in the following document: + +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> +<book id="book"><title>Book</title> + +<preface> +<title>Preface</title> + +<para>Normal: <xref linkend="ch1"/>.</para> +<para>Title: <xref xrefstyle="title" linkend="ch1"/>.</para> + +</preface> + +<chapter id="ch1"> +<title>First Chapter</title> + +<para>Irrelevant.</para> + +</chapter> +</book> + +will appear as: + + +Normal: Chapter 1. +Title: Chapter 1, First Chapter. + + + + + + + +xref.with.number.and.title +boolean + + +xref.with.number.and.title +Use number and title in cross references + + + + +<xsl:param name="xref.with.number.and.title" select="1"></xsl:param> + + + +Description + +A cross reference may include the number (for example, the number of +an example or figure) and the title which is a required child of some +targets. This parameter inserts both the relevant number as well as +the title into the link. + + + + + + +xref.label-page.separator +string + + +xref.label-page.separator +Punctuation or space separating label from page number in xref + + + +<xsl:param name="xref.label-page.separator"><xsl:text> </xsl:text></xsl:param> + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both label and page +but no title, +then the value of this parameter is inserted between +label and page number in the output. +If a title is included, then other separators are used. + + + + + + + +xref.label-title.separator +string + + +xref.label-title.separator +Punctuation or space separating label from title in xref + + + +<xsl:param name="xref.label-title.separator">: </xsl:param> + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both label and title, +then the value of this parameter is inserted between +label and title in the output. + + + + + + + +xref.title-page.separator +string + + +xref.title-page.separator +Punctuation or space separating title from page number in xref + + + +<xsl:param name="xref.title-page.separator"><xsl:text> </xsl:text></xsl:param> + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both title and page number, +then the value of this parameter is inserted between +title and page number in the output. + + + + + +Lists + + +segmentedlist.as.table +boolean + + +segmentedlist.as.table +Format segmented lists as tables? + + + + +<xsl:param name="segmentedlist.as.table" select="0"></xsl:param> + + + +Description + +If non-zero, segmentedlists will be formatted as +tables. + + + + + + +variablelist.as.table +boolean + + +variablelist.as.table +Format variablelists as tables? + + + + +<xsl:param name="variablelist.as.table" select="0"></xsl:param> + + + +Description + +If non-zero, variablelists will be formatted as +tables. A processing instruction exists to specify a particular width for the +column containing the terms: +dbhtml term-width=".25in" + +You can override this setting with a processing instruction as the +child of variablelist: dbhtml +list-presentation="table" or dbhtml +list-presentation="list". + +This parameter only applies to the HTML transformations. In the +FO case, proper list markup is robust enough to handle the formatting. +But see also variablelist.as.blocks. + + <variablelist> + <?dbhtml list-presentation="table"?> + <?dbhtml term-width="1.5in"?> + <?dbfo list-presentation="list"?> + <?dbfo term-width="1in"?> + <varlistentry> + <term>list</term> + <listitem> + <para> + Formatted as a table even if variablelist.as.table is set to 0. + </para> + </listitem> + </varlistentry> + </variablelist> + + + + + + +variablelist.term.separator +string + + +variablelist.term.separator +Text to separate terms within a multi-term +varlistentry + + + + +<xsl:param name="variablelist.term.separator">, </xsl:param> + + +Description + +When a varlistentry contains multiple term +elements, the string specified in the value of the +variablelist.term.separator parameter is placed +after each term except the last. + + + To generate a line break between multiple terms in + a varlistentry, set a non-zero value for the + variablelist.term.break.after parameter. If + you do so, you may also want to set the value of the + variablelist.term.separator parameter to an + empty string (to suppress rendering of the default comma and space + after each term). + + + + + + + +variablelist.term.break.after +boolean + + +variablelist.term.break.after +Generate line break after each term within a +multi-term varlistentry? + + + + +<xsl:param name="variablelist.term.break.after">0</xsl:param> + + +Description + +Set a non-zero value for the +variablelist.term.break.after parameter to +generate a line break between terms in a +multi-term varlistentry. + + +If you set a non-zero value for +variablelist.term.break.after, you may also +want to set the value of the +variablelist.term.separator parameter to an +empty string (to suppress rendering of the default comma and space +after each term). + + + + + +Bibliography + + +bibliography.style +list +normal +iso690 + + +bibliography.style +Style used for formatting of biblioentries. + + + + +<xsl:param name="bibliography.style">normal</xsl:param> + + + +Description + +Currently only normal and +iso690 styles are supported. + +In order to use ISO690 style to the full extent you might need +to use additional markup described on the +following WiKi page. + + + + + + +biblioentry.item.separator +string + + +biblioentry.item.separator +Text to separate bibliography entries + + + +<xsl:param name="biblioentry.item.separator">. </xsl:param> + + +Description + +Text to separate bibliography entries + + + + + + + +bibliography.collection +string + + +bibliography.collection +Name of the bibliography collection file + + + + +<xsl:param name="bibliography.collection">http://docbook.sourceforge.net/release/bibliography/bibliography.xml</xsl:param> + + + + +Description + +Maintaining bibliography entries across a set of documents is tedious, time +consuming, and error prone. It makes much more sense, usually, to store all of +the bibliography entries in a single place and simply extract +the ones you need in each document. + +That's the purpose of the +bibliography.collection parameter. To setup a global +bibliography database, follow these steps: + +First, create a stand-alone bibliography document that contains all of +the documents that you wish to reference. Make sure that each bibliography +entry (whether you use biblioentry or bibliomixed) +has an ID. + +My global bibliography, ~/bibliography.xml begins +like this: + + +<!DOCTYPE bibliography + PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> +<bibliography><title>References</title> + +<bibliomixed id="xml-rec"><abbrev>XML 1.0</abbrev>Tim Bray, +Jean Paoli, C. M. Sperberg-McQueen, and Eve Maler, editors. +<citetitle><ulink url="http://www.w3.org/TR/REC-xml">Extensible Markup +Language (XML) 1.0 Second Edition</ulink></citetitle>. +World Wide Web Consortium, 2000. +</bibliomixed> + +<bibliomixed id="xml-names"><abbrev>Namespaces</abbrev>Tim Bray, +Dave Hollander, +and Andrew Layman, editors. +<citetitle><ulink url="http://www.w3.org/TR/REC-xml-names/">Namespaces in +XML</ulink></citetitle>. +World Wide Web Consortium, 1999. +</bibliomixed> + +<!-- ... --> +</bibliography> + + + +When you create a bibliography in your document, simply +provide empty bibliomixed +entries for each document that you wish to cite. Make sure that these +elements have the same ID as the corresponding real +entry in your global bibliography. + +For example: + + +<bibliography><title>Bibliography</title> + +<bibliomixed id="xml-rec"/> +<bibliomixed id="xml-names"/> +<bibliomixed id="DKnuth86">Donald E. Knuth. <citetitle>Computers and +Typesetting: Volume B, TeX: The Program</citetitle>. Addison-Wesley, +1986. ISBN 0-201-13437-3. +</bibliomixed> +<bibliomixed id="relaxng"/> + +</bibliography> + + +Note that it's perfectly acceptable to mix entries from your +global bibliography with normal entries. You can use +xref or other elements to cross-reference your +bibliography entries in exactly the same way you do now. + +Finally, when you are ready to format your document, simply set the +bibliography.collection parameter (in either a +customization layer or directly through your processor's interface) to +point to your global bibliography. + +The stylesheets will format the bibliography in your document as if +all of the entries referenced appeared there literally. + + + + + + +bibliography.numbered +boolean + + +bibliography.numbered +Should bibliography entries be numbered? + + + + +<xsl:param name="bibliography.numbered" select="0"></xsl:param> + + + +Description + +If non-zero bibliography entries will be numbered + + + + +Glossary + + +glossterm.auto.link +boolean + + +glossterm.auto.link +Generate links from glossterm to glossentry automatically? + + + + +<xsl:param name="glossterm.auto.link" select="0"></xsl:param> + + + +Description + +If non-zero, links from inline glossterms to the corresponding +glossentry elements in a glossary or glosslist +will be automatically generated. This is useful when your glossterms are consistent +and you don't want to add links manually. + +The automatic link generation feature is not used on glossterm elements +that have a linkend attribute. + + + + + + +firstterm.only.link +boolean + + +firstterm.only.link +Does automatic glossterm linking only apply to firstterms? + + + + +<xsl:param name="firstterm.only.link" select="0"></xsl:param> + + + +Description + +If non-zero, only firstterms will be automatically linked +to the glossary. If glossary linking is not enabled, this parameter +has no effect. + + + + + + +glossary.collection +string + + +glossary.collection +Name of the glossary collection file + + + + +<xsl:param name="glossary.collection"></xsl:param> + + + +Description + +Glossaries maintained independently across a set of documents +are likely to become inconsistent unless considerable effort is +expended to keep them in sync. It makes much more sense, usually, to +store all of the glossary entries in a single place and simply +extract the ones you need in each document. + +That's the purpose of the +glossary.collection parameter. To setup a global +glossary database, follow these steps: + +Setting Up the Glossary Database + +First, create a stand-alone glossary document that contains all of +the entries that you wish to reference. Make sure that each glossary +entry has an ID. + +Here's an example glossary: + + + +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE glossary + PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> +<glossary> +<glossaryinfo> +<editor><firstname>Eric</firstname><surname>Raymond</surname></editor> +<title>Jargon File 4.2.3 (abridged)</title> +<releaseinfo>Just some test data</releaseinfo> +</glossaryinfo> + +<glossdiv><title>0</title> + +<glossentry> +<glossterm>0</glossterm> +<glossdef> +<para>Numeric zero, as opposed to the letter `O' (the 15th letter of +the English alphabet). In their unmodified forms they look a lot +alike, and various kluges invented to make them visually distinct have +compounded the confusion. If your zero is center-dotted and letter-O +is not, or if letter-O looks almost rectangular but zero looks more +like an American football stood on end (or the reverse), you're +probably looking at a modern character display (though the dotted zero +seems to have originated as an option on IBM 3270 controllers). If +your zero is slashed but letter-O is not, you're probably looking at +an old-style ASCII graphic set descended from the default typewheel on +the venerable ASR-33 Teletype (Scandinavians, for whom /O is a letter, +curse this arrangement). (Interestingly, the slashed zero long +predates computers; Florian Cajori's monumental "A History of +Mathematical Notations" notes that it was used in the twelfth and +thirteenth centuries.) If letter-O has a slash across it and the zero +does not, your display is tuned for a very old convention used at IBM +and a few other early mainframe makers (Scandinavians curse <emphasis>this</emphasis> +arrangement even more, because it means two of their letters collide). +Some Burroughs/Unisys equipment displays a zero with a <emphasis>reversed</emphasis> +slash. Old CDC computers rendered letter O as an unbroken oval and 0 +as an oval broken at upper right and lower left. And yet another +convention common on early line printers left zero unornamented but +added a tail or hook to the letter-O so that it resembled an inverted +Q or cursive capital letter-O (this was endorsed by a draft ANSI +standard for how to draw ASCII characters, but the final standard +changed the distinguisher to a tick-mark in the upper-left corner). +Are we sufficiently confused yet?</para> +</glossdef> +</glossentry> + +<glossentry> +<glossterm>1TBS</glossterm> +<glossdef> +<para role="accidence"> +<phrase role="pronounce"></phrase> +<phrase role="partsofspeach">n</phrase> +</para> +<para>The "One True Brace Style"</para> +<glossseealso>indent style</glossseealso> +</glossdef> +</glossentry> + +<!-- ... --> + +</glossdiv> + +<!-- ... --> + +</glossary> + + + + +Marking Up Glossary Terms + +That takes care of the glossary database, now you have to get the entries +into your document. Unlike bibliography entries, which can be empty, creating +placeholder glossary entries would be very tedious. So instead, +support for glossary.collection relies on implicit linking. + +In your source document, simply use firstterm and +glossterm to identify the terms you wish to have included +in the glossary. The stylesheets assume that you will either set the +baseform attribute correctly, or that the +content of the element exactly matches a term in your glossary. + +If you're using a glossary.collection, don't +make explicit links on the terms in your document. + +So, in your document, you might write things like this: + + +<para>This is dummy text, without any real meaning. +The point is simply to reference glossary terms like <glossterm>0</glossterm> +and the <firstterm baseform="1TBS">One True Brace Style (1TBS)</firstterm>. +The <glossterm>1TBS</glossterm>, as you can probably imagine, is a nearly +religious issue.</para> + + +If you set the firstterm.only.link parameter, +only the terms marked with firstterm will be links. +Otherwise, all the terms will be linked. + + + +Marking Up the Glossary + +The glossary itself has to be identified for the stylesheets. For lack +of a better choice, the role is used. +To identify the glossary as the target for automatic processing, set +the role to auto. The title of this +glossary (and any other information from the glossaryinfo +that's rendered by your stylesheet) will be displayed, but the entries will +come from the database. + + +Unfortunately, the glossary can't be empty, so you must put in +at least one glossentry. The content of this entry +is irrelevant, it will not be rendered: + + +<glossary role="auto"> +<glossentry> +<glossterm>Irrelevant</glossterm> +<glossdef> +<para>If you can see this, the document was processed incorrectly. Use +the <parameter>glossary.collection</parameter> parameter.</para> +</glossdef> +</glossentry> +</glossary> + + +What about glossary divisions? If your glossary database has glossary +divisions and your automatic glossary contains at least +one glossdiv, the automic glossary will have divisions. +If the glossdiv is missing from either location, no divisions +will be rendered. + +Glossary entries (and divisions, if appropriate) in the glossary will +occur in precisely the order they occur in your database. + + + +Formatting the Document + +Finally, when you are ready to format your document, simply set the +glossary.collection parameter (in either a +customization layer or directly through your processor's interface) to +point to your global glossary. + +The stylesheets will format the glossary in your document as if +all of the entries implicilty referenced appeared there literally. + + +Limitations + +Glossary cross-references within the glossary are +not supported. For example, this will not work: + + +<glossentry> +<glossterm>gloss-1</glossterm> +<glossdef><para>A description that references <glossterm>gloss-2</glossterm>.</para> +<glossseealso>gloss-2</glossseealso> +</glossdef> +</glossentry> + + +If you put glossary cross-references in your glossary that way, +you'll get the cryptic error: Warning: +glossary.collection specified, but there are 0 automatic +glossaries. + +Instead, you must do two things: + + + +Markup your glossary using glossseealso: + + +<glossentry> +<glossterm>gloss-1</glossterm> +<glossdef><para>A description that references <glossterm>gloss-2</glossterm>.</para> +<glossseealso>gloss-2</glossseealso> +</glossdef> +</glossentry> + + + + +Make sure there is at least one glossterm reference to +gloss-2 in your document. The +easiest way to do that is probably within a remark in your +automatic glossary: + + +<glossary role="auto"> +<remark>Make sure there's a reference to <glossterm>gloss-2</glossterm>.</remark> +<glossentry> +<glossterm>Irrelevant</glossterm> +<glossdef> +<para>If you can see this, the document was processed incorrectly. Use +the <parameter>glossary.collection</parameter> parameter.</para> +</glossdef> +</glossentry> +</glossary> + + + + + + + + + + +glossary.sort +boolean + + +glossary.sort +Sort glossentry elements? + + + + +<xsl:param name="glossary.sort" select="0"></xsl:param> + + + +Description + +If non-zero, then the glossentry elements within a +glossary, glossdiv, or glosslist are sorted on the glossterm, using +the current lang setting. If zero (the default), then +glossentry elements are not sorted and are presented +in document order. + + + + + + + +glossentry.show.acronym +list +no +yes +primary + + +glossentry.show.acronym +Display glossentry acronyms? + + + + +<xsl:param name="glossentry.show.acronym">no</xsl:param> + + + +Description + +A setting of yes means they should be displayed; +no means they shouldn't. If primary is used, +then they are shown as the primary text for the entry. + + +This setting controls both acronym and +abbrev elements in the glossentry. + + + + + +Miscellaneous + + +formal.procedures +boolean + + +formal.procedures +Selects formal or informal procedures + + + + +<xsl:param name="formal.procedures" select="1"></xsl:param> + + + +Description + +Formal procedures are numbered and always have a title. + + + + + + + +formal.title.placement +table + + +formal.title.placement +Specifies where formal object titles should occur + + + + +<xsl:param name="formal.title.placement"> +figure before +example before +equation before +table before +procedure before +task before +</xsl:param> + + + +Description + +Specifies where formal object titles should occur. For each formal object +type (figure, +example, +equation, +table, and procedure) +you can specify either the keyword +before or +after. + + + + + + +runinhead.default.title.end.punct +string + + +runinhead.default.title.end.punct +Default punctuation character on a run-in-head + + + +<xsl:param name="runinhead.default.title.end.punct">.</xsl:param> + + + +Description + +If non-zero, For a formalpara, use the specified +string as the separator between the title and following text. The period is the default value. + + + + + + +runinhead.title.end.punct +string + + +runinhead.title.end.punct +Characters that count as punctuation on a run-in-head + + + + +<xsl:param name="runinhead.title.end.punct">.!?:</xsl:param> + + + +Description + +Specify which characters are to be counted as punctuation. These +characters are checked for a match with the last character of the +title. If no match is found, the +runinhead.default.title.end.punct contents are +inserted. This is to avoid duplicated punctuation in the output. + + + + + + + +show.comments +boolean + + +show.comments +Display remark elements? + + + + +<xsl:param name="show.comments" select="1"></xsl:param> + + + +Description + +If non-zero, comments will be displayed, otherwise they +are suppressed. Comments here refers to the remark element +(which was called comment prior to DocBook +4.0), not XML comments (<-- like this -->) which are +unavailable. + + + + + + + +show.revisionflag +boolean + + +show.revisionflag +Enable decoration of elements that have a revisionflag + + + + +<xsl:param name="show.revisionflag" select="0"></xsl:param> + + + +Description + + +If show.revisionflag is turned on, then the stylesheets +may produce additional markup designed to allow a CSS stylesheet to +highlight elements that have specific revisionflag settings. + +The markup inserted will be usually be either a <span> or +<div> with an appropriate class +attribute. (The value of the class attribute will be the same as the +value of the revisionflag attribute). In some contexts, for example +tables, where extra markup would be structurally illegal, the class +attribute will be added to the appropriate container element. + +In general, the stylesheets only test for revisionflag in contexts +where an importing stylesheet would have to redefine whole templates. +Most of the revisionflag processing is expected to be done by another +stylesheet, for example changebars.xsl. + + + + + + +shade.verbatim +boolean + + +shade.verbatim +Should verbatim environments be shaded? + + + +<xsl:param name="shade.verbatim" select="0"></xsl:param> + + +Description + +In the FO stylesheet, if this parameter is non-zero then the +shade.verbatim.style properties will be applied +to verbatim environments. + +In the HTML stylesheet, this parameter is now deprecated. Use +CSS instead. + + + + + + +shade.verbatim.style +attribute set + + +shade.verbatim.style +Properties that specify the style of shaded verbatim listings + + + + +<xsl:attribute-set name="shade.verbatim.style"> + <xsl:attribute name="border">0</xsl:attribute> + <xsl:attribute name="bgcolor">#E0E0E0</xsl:attribute> +</xsl:attribute-set> + + + + +Description + +Properties that specify the style of shaded verbatim listings. The +parameters specified (the border and background color) are added to +the styling of the xsl-fo output. A border might be specified as "thin +black solid" for example. See xsl-fo + + + + + + +punct.honorific +string + + +punct.honorific +Punctuation after an honorific in a personal name. + + + + +<xsl:param name="punct.honorific">.</xsl:param> + + + +Description + +This parameter specifies the punctuation that should be added after an +honorific in a personal name. + + + + + + +tex.math.in.alt +list +plain +latex + + +tex.math.in.alt +TeX notation used for equations + + + + +<xsl:param name="tex.math.in.alt"></xsl:param> + + + +Description + +If you want type math directly in TeX notation in equations, +this parameter specifies notation used. Currently are supported two +values -- plain and latex. Empty +value means that you are not using TeX math at all. + +Preferred way for including TeX alternative of math is inside of +textobject element. Eg.: + +<inlineequation> +<inlinemediaobject> +<imageobject> +<imagedata fileref="eq1.gif"/> +</imageobject> +<textobject><phrase>E=mc squared</phrase></textobject> +<textobject role="tex"><phrase>E=mc^2</phrase></textobject> +</inlinemediaobject> +</inlineequation> + +If you are using graphic element, you can +store TeX inside alt element: + +<inlineequation> +<alt role="tex">a^2+b^2=c^2</alt> +<graphic fileref="a2b2c2.gif"/> +</inlineequation> + +If you want use this feature, you should process your FO with +PassiveTeX, which only supports TeX math notation. When calling +stylsheet, don't forget to specify also +passivetex.extensions=1. + +If you want equations in HTML, just process generated file +tex-math-equations.tex by TeX or LaTeX. Then run +dvi2bitmap program on result DVI file. You will get images for +equations in your document. + + + This feature is useful for print/PDF output only if you + use the obsolete and now unsupported PassiveTeX XSL-FO + engine. + + + + +Related Parameters + tex.math.delims, + passivetex.extensions, + tex.math.file + + + + + + +tex.math.file +string + + +tex.math.file +Name of temporary file for generating images from equations + + + + +<xsl:param name="tex.math.file">tex-math-equations.tex</xsl:param> + + + +Description + +Name of auxiliary file for TeX equations. This file can be +processed by dvi2bitmap to get bitmap versions of equations for HTML +output. + + +Related Parameters + tex.math.in.alt, + tex.math.delims, + + +More information + For how-to documentation on embedding TeX equations and + generating output from them, see + DBTeXMath. + + + + + +tex.math.delims +boolean + + +tex.math.delims +Should equations output for processing by TeX be +surrounded by math mode delimiters? + + + + +<xsl:param name="tex.math.delims" select="1"></xsl:param> + + + +Description + +For compatibility with DSSSL based DBTeXMath from Allin Cottrell +you should set this parameter to 0. + + + This feature is useful for print/PDF output only if you + use the obsolete and now unsupported PassiveTeX XSL-FO + engine. + + + +Related Parameters + tex.math.in.alt, + passivetex.extensions + + +See Also + You can also use the dbtex delims processing + instruction to control whether delimiters are output. + + + + + + + +pixels.per.inch +integer + + +pixels.per.inch +How many pixels are there per inch? + + + + +<xsl:param name="pixels.per.inch">90</xsl:param> + + + +Description + +When lengths are converted to pixels, this value is used to +determine the size of a pixel. The default value is taken from the +XSL +Recommendation. + + + + + + + +points.per.em +number + + +points.per.em +Specify the nominal size of an em-space in points + + + + +<xsl:param name="points.per.em">10</xsl:param> + + + +Description + +The fixed value used for calculations based upon the size of a +character. The assumption made is that ten point font is in use. This +assumption may not be valid. + + + + + + +use.svg +boolean + + +use.svg +Allow SVG in the result tree? + + + + +<xsl:param name="use.svg" select="1"></xsl:param> + + + +Description + +If non-zero, SVG will be considered an acceptable image format. SVG +is passed through to the result tree, so correct rendering of the resulting +diagram depends on the formatter (FO processor or web browser) that is used +to process the output from the stylesheet. + + + + + + +menuchoice.separator +string + + +menuchoice.separator +Separator between items of a menuchoice +other than guimenuitem and +guisubmenu + + + + +<xsl:param name="menuchoice.separator">+</xsl:param> + + + +Description + +Separator used to connect items of a menuchoice other +than guimenuitem and guisubmenu. The latter +elements are linked with menuchoice.menu.separator. + + + + + + + +menuchoice.menu.separator +string + + +menuchoice.menu.separator +Separator between items of a menuchoice +with guimenuitem or +guisubmenu + + + + +<xsl:param name="menuchoice.menu.separator"> → </xsl:param> + + + +Description + +Separator used to connect items of a menuchoice with +guimenuitem or guisubmenu. Other elements +are linked with menuchoice.separator. + +The default value is &#x2192;, which is the +&rarr; (right arrow) character entity. +The current FOP (0.20.5) requires setting the font-family +explicitly. + +The default value also includes spaces around the arrow, +which will allow a line to break. Replace the spaces with +&#xA0; (nonbreaking space) if you don't want those +spaces to break. + + + + + + + +default.float.class +string + + +default.float.class +Specifies the default float class + + + + +<xsl:param name="default.float.class"> + <xsl:choose> + <xsl:when test="contains($stylesheet.result.type,'html')">left</xsl:when> + <xsl:otherwise>before</xsl:otherwise> + </xsl:choose> +</xsl:param> + + + +Description + +Selects the direction in which a float should be placed. for +xsl-fo this is before, for html it is left. For Western texts, the +before direction is the top of the page. + + + + + + +footnote.number.format +list +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +footnote.number.format +Identifies the format used for footnote numbers + + + + +<xsl:param name="footnote.number.format">1</xsl:param> + + + +Description + +The footnote.number.format specifies the format +to use for footnote numeration (1, i, I, a, or A). + + + + + + +table.footnote.number.format +list +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +table.footnote.number.format +Identifies the format used for footnote numbers in tables + + + + +<xsl:param name="table.footnote.number.format">a</xsl:param> + + + +Description + +The table.footnote.number.format specifies the format +to use for footnote numeration (1, i, I, a, or A) in tables. + + + + + + +footnote.number.symbols + + + +footnote.number.symbols +Special characters to use as footnote markers + + + + +<xsl:param name="footnote.number.symbols"></xsl:param> + + + +Description + +If footnote.number.symbols is not the empty string, +footnotes will use the characters it contains as footnote symbols. For example, +*&#x2020;&#x2021;&#x25CA;&#x2720; will identify +footnotes with *, , , +, and . If there are more footnotes +than symbols, the stylesheets will fall back to numbered footnotes using +footnote.number.format. + +The use of symbols for footnotes depends on the ability of your +processor (or browser) to render the symbols you select. Not all systems are +capable of displaying the full range of Unicode characters. If the quoted characters +in the preceding paragraph are not displayed properly, that's a good indicator +that you may have trouble using those symbols for footnotes. + + + + + + +table.footnote.number.symbols +string + + +table.footnote.number.symbols +Special characters to use a footnote markers in tables + + + + +<xsl:param name="table.footnote.number.symbols"></xsl:param> + + + +Description + +If table.footnote.number.symbols is not the empty string, +table footnotes will use the characters it contains as footnote symbols. For example, +*&#x2020;&#x2021;&#x25CA;&#x2720; will identify +footnotes with *, , , +, and . If there are more footnotes +than symbols, the stylesheets will fall back to numbered footnotes using +table.footnote.number.format. + +The use of symbols for footnotes depends on the ability of your +processor (or browser) to render the symbols you select. Not all systems are +capable of displaying the full range of Unicode characters. If the quoted characters +in the preceding paragraph are not displayed properly, that's a good indicator +that you may have trouble using those symbols for footnotes. + + + + + + +highlight.source +boolean + + +highlight.source +Should the content of programlisting +be syntactically highlighted? + + + + +<xsl:param name="highlight.source" select="0"></xsl:param> + + + +Description + +When this parameter is non-zero, the stylesheets will try to do syntax highlighting of the +content of programlisting elements. You specify the language for each programlisting +by using the language attribute. The highlight.default.language +parameter can be used to specify the language for programlistings without a language +attribute. Syntax highlighting also works for screen and synopsis elements. + +The actual highlighting work is done by the XSLTHL extension module. This is an external Java library that has to be +downloaded separately (see below). + + +In order to use this extension, you must + +add xslthl-2.x.x.jar to your Java classpath. The latest version is available +from the XSLT syntax highlighting project +at SourceForge. + + +use a customization layer in which you import one of the following stylesheet modules: + + + html/highlight.xsl + + + + xhtml/highlight.xsl + + + + xhtml-1_1/highlight.xsl + + + + fo/highlight.xsl + + + + + +let either the xslthl.config Java system property or the +highlight.xslthl.config parameter point to the configuration file for syntax +highlighting (using URL syntax). DocBook XSL comes with a ready-to-use configuration file, +highlighting/xslthl-config.xml. + + + +The extension works with Saxon 6.5.x and Xalan-J. (Saxon 8.5 or later is also supported, but since it is +an XSLT 2.0 processor it is not guaranteed to work with DocBook XSL in all circumstances.) + +The following is an example of a Saxon 6 command adapted for syntax highlighting, to be used on Windows: + + +java -cp c:/Java/saxon.jar;c:/Java/xslthl-2.0.1.jar +-Dxslthl.config=file:///c:/docbook-xsl/highlighting/xslthl-config.xml com.icl.saxon.StyleSheet +-o test.html test.xml myhtml.xsl + + + + + + + +highlight.xslthl.config +uri + + +highlight.xslthl.config +Location of XSLTHL configuration file + + + + +<xsl:param name="highlight.xslthl.config"></xsl:param> + + + +Description + +This location has precedence over the corresponding Java property. + +Please note that usually you have to specify location as URL not +just as a simple path on the local +filesystem. E.g. file:///home/user/xslthl/my-xslthl-config.xml. + + + + + + + + +highlight.default.language +string + + +highlight.default.language +Default language of programlisting + + + + +<xsl:param name="highlight.default.language"></xsl:param> + + + +Description + +This language is used when there is no language attribute on programlisting. + + + + + + +email.delimiters.enabled +boolean + + +email.delimiters.enabled +Generate delimiters around email addresses? + + + + +<xsl:param name="email.delimiters.enabled" select="1"></xsl:param> + + + +Description + +If non-zero, delimiters + +For delimiters, the +stylesheets are currently hard-coded to output angle +brackets. + +are generated around e-mail addresses +(the output of the email element). + + + + + + +exsl.node.set.available +boolean + + +exsl.node.set.available +Is the test function-available('exsl:node-set') true? + + + +<xsl:param name="exsl.node.set.available"> + <xsl:choose> + <xsl:when exsl:foo="" test="function-available('exsl:node-set') or contains(system-property('xsl:vendor'), 'Apache Software Foundation')">1</xsl:when> + <xsl:otherwise>0</xsl:otherwise> + </xsl:choose> +</xsl:param> + + + +Description + +If non-zero, +then the exsl:node-set() function is available to be used in +the stylesheet. +If zero, then the function is not available. +This param automatically detects the presence of +the function and does not normally need to be set manually. + +This param was created to handle a long-standing +bug in the Xalan processor that fails to detect the +function even though it is available. + + + + +Annotations + + +annotation.support +boolean + + +annotation.support +Enable annotations? + + + + +<xsl:param name="annotation.support" select="0"></xsl:param> + + + +Description + +If non-zero, the stylesheets will attempt to support annotation +elements in HTML by including some JavaScript (see +annotation.js). + + + + + + +annotation.js +string + + +annotation.js +URIs identifying JavaScript files with support for annotation popups + + + + + +<xsl:param name="annotation.js"> +<xsl:text>http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js</xsl:text></xsl:param> + + + + +Description + +If annotation.support is enabled and the +document contains annotations, then the URIs listed +in this parameter will be included. These JavaScript files are required +for popup annotation support. + + + + + + +annotation.css +string + + +annotation.css +CSS rules for annotations + + + + +<xsl:param name="annotation.css"> +/* ====================================================================== + Annotations +*/ + +div.annotation-list { visibility: hidden; + } + +div.annotation-nocss { position: absolute; + visibility: hidden; + } + +div.annotation-popup { position: absolute; + z-index: 4; + visibility: hidden; + padding: 0px; + margin: 2px; + border-style: solid; + border-width: 1px; + width: 200px; + background-color: white; + } + +div.annotation-title { padding: 1px; + font-weight: bold; + border-bottom-style: solid; + border-bottom-width: 1px; + color: white; + background-color: black; + } + +div.annotation-body { padding: 2px; + } + +div.annotation-body p { margin-top: 0px; + padding-top: 0px; + } + +div.annotation-close { position: absolute; + top: 2px; + right: 2px; + } +</xsl:param> + + + +Description + +If annotation.support is enabled and the +document contains annotations, then the CSS in this +parameter will be included in the document. + + + + + + +annotation.graphic.open +uri + + +annotation.graphic.open +Image for identifying a link that opens an annotation popup + + + + +<xsl:param name="annotation.graphic.open">http://docbook.sourceforge.net/release/images/annot-open.png</xsl:param> + + + +Description + +This image is used inline to identify the location of +annotations. It may be replaced by a user provided graphic. The size should be approximately 10x10 pixels. + + + + + + +annotation.graphic.close +uri + + +annotation.graphic.close +Image for identifying a link that closes an annotation popup + + + + +<xsl:param name="annotation.graphic.close"> +http://docbook.sourceforge.net/release/images/annot-close.png</xsl:param> + + + +Description + +This image is used on popup annotations as the “x” that the +user can click to dismiss the popup. +This image is used on popup annotations as the “x” that the user can +click to dismiss the popup. It may be replaced by a user provided graphic. The size should be approximately 10x10 pixels. + + + + +Graphics + + +img.src.path +string + + +img.src.path +Path to HTML/FO image files + + + +<xsl:param name="img.src.path"></xsl:param> + + +Description + +Add a path prefix to the value of the fileref +attribute of graphic, inlinegraphic, and imagedata elements. The resulting +compound path is used in the output as the value of the src +attribute of img (HTML) or external-graphic (FO). + + + +The path given by img.src.path could be relative to the directory where the HTML/FO +files are created, or it could be an absolute URI. +The default value is empty. +Be sure to include a trailing slash if needed. + + +This prefix is not applied to any filerefs that start +with "/" or contain "//:". + + + + + + + +keep.relative.image.uris +boolean + + +keep.relative.image.uris +Should image URIs be resolved against xml:base? + + + + +<xsl:param name="keep.relative.image.uris" select="1"></xsl:param> + + + + +Description + +If non-zero, relative URIs (in, for example +fileref attributes) will be used in the generated +output. Otherwise, the URIs will be made absolute with respect to the +base URI. + +Note that the stylesheets calculate (and use) the absolute form +for some purposes, this only applies to the resulting output. + + + + + + +graphic.default.extension +string + + +graphic.default.extension +Default extension for graphic filenames + + + +<xsl:param name="graphic.default.extension"></xsl:param> + + +Description + +If a graphic or mediaobject +includes a reference to a filename that does not include an extension, +and the format attribute is +unspecified, the default extension will be used. + + + + + + + +default.image.width +length + + +default.image.width +The default width of images + + + + +<xsl:param name="default.image.width"></xsl:param> + + + +Description + +If specified, this value will be used for the +width attribute on images that do not specify any +viewport dimensions. + + + + + + +nominal.image.width +length + + +nominal.image.width +The nominal image width + + + + +<xsl:param name="nominal.image.width" select="6 * $pixels.per.inch"></xsl:param> + + + +Description + +Graphic widths expressed as a percentage are problematic. In the +following discussion, we speak of width and contentwidth, but +the same issues apply to depth and contentdepth. + +A width of 50% means "half of the available space for the image." +That's fine. But note that in HTML, this is a dynamic property and +the image size will vary if the browser window is resized. + +A contentwidth of 50% means "half of the actual image width". +But what does that mean if the stylesheets cannot assess the image's +actual size? Treating this as a width of 50% is one possibility, but +it produces behavior (dynamic scaling) that seems entirely out of +character with the meaning. + +Instead, the stylesheets define a +nominal.image.width and convert percentages to +actual values based on that nominal size. + + + + + + +nominal.image.depth +length + + +nominal.image.depth +Nominal image depth + + + + +<xsl:param name="nominal.image.depth" select="4 * $pixels.per.inch"></xsl:param> + + + +Description + +See nominal.image.width. + + + + + + +use.embed.for.svg +boolean + + +use.embed.for.svg +Use HTML embed for SVG? + + + + +<xsl:param name="use.embed.for.svg" select="0"></xsl:param> + + + +Description + +If non-zero, an embed element will be created for +SVG figures. An object is always created, +this parameter merely controls whether or not an additional embed +is generated inside the object. + +On the plus side, this may be more portable among browsers and plug-ins. +On the minus side, it isn't valid HTML. + + + + + + +make.graphic.viewport +boolean + + +make.graphic.viewport +Use tables in HTML to make viewports for graphics + + + + +<xsl:param name="make.graphic.viewport" select="1"></xsl:param> + + + +Description + +The HTML img element only supports the notion +of content-area scaling; it doesn't support the distinction between a +content-area and a viewport-area, so we have to make some compromises. + +If make.graphic.viewport is non-zero, a table +will be used to frame the image. This creates an effective viewport-area. + + +Tables and alignment don't work together, so this parameter is ignored +if alignment is specified on an image. + + + + + +preferred.mediaobject.role +string + + +preferred.mediaobject.role +Select which mediaobject to use based on +this value of an object's role attribute. + + + + + +<xsl:param name="preferred.mediaobject.role"></xsl:param> + + + +Description + +A mediaobject may contain several objects such as imageobjects. +If the parameter use.role.for.mediaobject is +non-zero, then the role attribute on +imageobjects and other objects within a +mediaobject container will be used to select which object +will be used. If one of the objects has a role value that matches the +preferred.mediaobject.role parameter, then it +has first priority for selection. If more than one has such a role +value, the first one is used. + + +See the use.role.for.mediaobject parameter +for the sequence of selection. + + + + + +use.role.for.mediaobject +boolean + + +use.role.for.mediaobject +Use role attribute +value for selecting which of several objects within a mediaobject to use. + + + + + +<xsl:param name="use.role.for.mediaobject" select="1"></xsl:param> + + + +Description + +If non-zero, the role attribute on +imageobjects or other objects within a mediaobject container will be used to select which object will be +used. + + +The order of selection when then parameter is non-zero is: + + + + If the stylesheet parameter preferred.mediaobject.role has a value, then the object whose role equals that value is selected. + + +Else if an object's role attribute has a value of +html for HTML processing or +fo for FO output, then the first +of such objects is selected. + + + +Else the first suitable object is selected. + + + +If the value of +use.role.for.mediaobject +is zero, then role attributes are not considered +and the first suitable object +with or without a role value is used. + + + + + + +ignore.image.scaling +boolean + + +ignore.image.scaling +Tell the stylesheets to ignore the author's image scaling attributes + + + + +<xsl:param name="ignore.image.scaling" select="0"></xsl:param> + + + +Description + +If non-zero, the scaling attributes on graphics and media objects are +ignored. + + + + +Chunking + + +chunker.output.cdata-section-elements +string + + +chunker.output.cdata-section-elements +List of elements to escape with CDATA sections + + + +<xsl:param name="chunker.output.cdata-section-elements"></xsl:param> + + +Description +This parameter specifies the list of elements that should be escaped +as CDATA sections by the chunking stylesheet. Not all processors support +specification of this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +chunker.output.doctype-public +string + + +chunker.output.doctype-public +Public identifer to use in the document type of generated pages + + + +<xsl:param name="chunker.output.doctype-public"></xsl:param> + + +Description +This parameter specifies the public identifier that should be used by +the chunking stylesheet in the document type declaration of chunked pages. +Not all processors support specification of +this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +chunker.output.doctype-system +uri + + +chunker.output.doctype-system +System identifier to use for the document type in generated pages + + + +<xsl:param name="chunker.output.doctype-system"></xsl:param> + + +Description +This parameter specifies the system identifier that should be used by +the chunking stylesheet in the document type declaration of chunked pages. +Not all processors support specification of +this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +chunker.output.encoding +string + + +chunker.output.encoding +Encoding used in generated pages + + + +<xsl:param name="chunker.output.encoding">ISO-8859-1</xsl:param> + + +Description +This parameter specifies the encoding to be used in files +generated by the chunking stylesheet. Not all processors support +specification of this parameter. + +This parameter used to be named default.encoding. + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +chunker.output.indent +string + + +chunker.output.indent +Specification of indentation on generated pages + + + +<xsl:param name="chunker.output.indent">no</xsl:param> + + +Description +This parameter specifies the value of the indent +specification for generated pages. Not all processors support +specification of this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +chunker.output.media-type +string + + +chunker.output.media-type +Media type to use in generated pages + + + +<xsl:param name="chunker.output.media-type"></xsl:param> + + +Description +This parameter specifies the media type that should be used by +the chunking stylesheet. Not all processors support specification of +this parameter. + +This parameter specifies the media type that should be used by the +chunking stylesheet. This should be one from those defined in +[RFC2045] and + [RFC2046] + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. +It must be one from html, xml or text + + + + + + +chunker.output.method +list +html +xml + + +chunker.output.method +Method used in generated pages + + + +<xsl:param name="chunker.output.method">html</xsl:param> + + +Description +This parameter specifies the output method to be used in files +generated by the chunking stylesheet. + +This parameter used to be named output.method. + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +chunker.output.omit-xml-declaration +string + + +chunker.output.omit-xml-declaration +Omit-xml-declaration for generated pages + + + +<xsl:param name="chunker.output.omit-xml-declaration">no</xsl:param> + + +Description +This parameter specifies the value of the omit-xml-declaration +specification for generated pages. Not all processors support +specification of this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +chunker.output.standalone +string + + +chunker.output.standalone +Standalone declaration for generated pages + + + +<xsl:param name="chunker.output.standalone">no</xsl:param> + + +Description +This parameter specifies the value of the standalone + specification for generated pages. It must be either + yes or no. Not all + processors support specification of this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +saxon.character.representation +string + + +saxon.character.representation +Saxon character representation used in generated HTML pages + + + + <xsl:param name="saxon.character.representation" select="'entity;decimal'"></xsl:param> + + +Description + +This parameter has effect only when Saxon 6 is used (version 6.4.2 or later). +It sets the character representation in files generated by the chunking stylesheets. +If you want to suppress entity references for characters with direct representations in +chunker.output.encoding, set the parameter value to native. + + + For more information, see Saxon output character representation. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + + + +html.ext +string + + +html.ext +Identifies the extension of generated HTML files + + + + +<xsl:param name="html.ext">.html</xsl:param> + + + +Description + +The extension identified by html.ext will +be used as the filename extension for chunks created by this +stylesheet. + + + + + + +use.id.as.filename +boolean + + +use.id.as.filename +Use ID value of chunk elements as the filename? + + + + +<xsl:param name="use.id.as.filename" select="0"></xsl:param> + + + +Description + +If use.id.as.filename +is non-zero, the filename of chunk elements that have IDs will be +derived from the ID value. + + + + + + + +html.extra.head.links +boolean + + +html.extra.head.links +Toggle extra HTML head link information + + + + +<xsl:param name="html.extra.head.links" select="0"></xsl:param> + + + +Description + +If non-zero, extra link elements will be +generated in the head of chunked HTML files. These +extra links point to chapters, appendixes, sections, etc. as supported +by the Site Navigation Bar in Mozilla 1.0 (as of CR1, at least). + + + + + + + +root.filename +uri + + +root.filename +Identifies the name of the root HTML file when chunking + + + + +<xsl:param name="root.filename">index</xsl:param> + + + +Description + +The root.filename is the base filename for +the chunk created for the root of each document processed. + + + + + + + +base.dir +uri + + +base.dir +The base directory of chunks + + + + +<xsl:param name="base.dir"></xsl:param> + + + +Description + +If specified, the base.dir identifies +the output directory for chunks. (If not specified, the output directory +is system dependent.) + + + + + + + generate.manifest + boolean + + + generate.manifest + Generate a manifest file? + + + + <xsl:param name="generate.manifest" select="0"></xsl:param> + + + Description + + If non-zero, a list of HTML files generated by the + stylesheet transformation is written to the file named by + the manifest parameter. + + + + + + + manifest + string + + + manifest + Name of manifest file + + + + + <xsl:param name="manifest">HTML.manifest</xsl:param> + + + + Description + + The name of the file to which a manifest is written (if the + value of the generate.manifest parameter + is non-zero). + + + + + + +manifest.in.base.dir +boolean + + +manifest.in.base.dir +Should the manifest file be written into base.dir? + + + + +<xsl:param name="manifest.in.base.dir" select="0"></xsl:param> + + + +Description + +If non-zero, the manifest file as well as project files for HTML Help and +Eclipse Help are written into base.dir instead +of the current directory. + + + + + + +chunk.toc +string + + +chunk.toc +An explicit TOC to be used for chunking + + + + +<xsl:param name="chunk.toc"></xsl:param> + + + +Description + +The chunk.toc identifies an explicit TOC that +will be used for chunking. This parameter is only used by the +chunktoc.xsl stylesheet (and customization layers built +from it). + + + + + + +chunk.tocs.and.lots +boolean + + +chunk.tocs.and.lots +Should ToC and LoTs be in separate chunks? + + + + +<xsl:param name="chunk.tocs.and.lots" select="0"></xsl:param> + + + +Description + +If non-zero, ToC and LoT (List of Examples, List of Figures, etc.) +will be put in a separate chunk. At the moment, this chunk is not in the +normal forward/backward navigation list. Instead, a new link is added to the +navigation footer. + +This feature is still somewhat experimental. Feedback welcome. + + + + + + +chunk.separate.lots +boolean + + +chunk.separate.lots +Should each LoT be in its own separate chunk? + + + + +<xsl:param name="chunk.separate.lots" select="0"></xsl:param> + + + +Description + +If non-zero, each of the ToC and LoTs +(List of Examples, List of Figures, etc.) +will be put in its own separate chunk. +The title page includes generated links to each of the separate files. + + +This feature depends on the +chunk.tocs.and.lots +parameter also being non-zero. + + + + + + + +chunk.tocs.and.lots.has.title +boolean + + +chunk.tocs.and.lots.has.title +Should ToC and LoTs in a separate chunks have title? + + + + +<xsl:param name="chunk.tocs.and.lots.has.title" select="1"></xsl:param> + + + +Description + +If non-zero title of document is shown before ToC/LoT in +separate chunk. + + + + + + +chunk.section.depth +integer + + +chunk.section.depth +Depth to which sections should be chunked + + + + +<xsl:param name="chunk.section.depth" select="1"></xsl:param> + + + +Description + +This parameter sets the depth of section chunking. + + + + + + +chunk.first.sections +boolean + + +chunk.first.sections +Chunk the first top-level section? + + + + +<xsl:param name="chunk.first.sections" select="0"></xsl:param> + + + +Description + +If non-zero, a chunk will be created for the first top-level +sect1 or section elements in +each component. Otherwise, that section will be part of the chunk for +its parent. + + + + + + + +chunk.quietly +boolean + + +chunk.quietly +Omit the chunked filename messages. + + + + +<xsl:param name="chunk.quietly" select="0"></xsl:param> + + + +Description + +If zero (the default), the XSL processor emits a message naming +each separate chunk filename as it is being output. +If nonzero, then the messages are suppressed. + + + + + + + +chunk.append +string + + +chunk.append +Specifies content to append to chunked HTML output + + + +<xsl:param name="chunk.append"></xsl:param> + + +Description + +Specifies content to append to the end of HTML files output by +the html/chunk.xsl stylesheet, after the closing +<html> tag. You probably don’t want to set any value +for this parameter; but if you do, the only value it should ever be +set to is a newline character: &#x0a; or +&#10; + + + + + + +navig.graphics +boolean + + +navig.graphics +Use graphics in navigational headers and footers? + + + + +<xsl:param name="navig.graphics" select="0"></xsl:param> + + + +Description + +If non-zero, the navigational headers and footers in chunked +HTML are presented in an alternate style that uses graphical icons for +Next, Previous, Up, and Home. Default graphics are provided in the +distribution. If zero, text is used instead of graphics. + + + + + + + +navig.graphics.extension +string + + +navig.graphics.extension +Extension for navigational graphics + + + + +<xsl:param name="navig.graphics.extension">.gif</xsl:param> + + + +Description + +Sets the filename extension to use on navigational graphics used +in the headers and footers of chunked HTML. + + + + + + +navig.graphics.path +string + + +navig.graphics.path +Path to navigational graphics + + + + +<xsl:param name="navig.graphics.path">images/</xsl:param> + + + +Description + +Sets the path, probably relative to the directory where the HTML +files are created, to the navigational graphics used in the +headers and footers of chunked HTML. + + + + + + + +navig.showtitles +boolean + + +navig.showtitles +Display titles in HTML headers and footers? + + + +<xsl:param name="navig.showtitles">1</xsl:param> + + +Description + +If non-zero, +the headers and footers of chunked HTML +display the titles of the next and previous chunks, +along with the words 'Next' and 'Previous' (or the +equivalent graphical icons if navig.graphics is true). +If false (zero), then only the words 'Next' and 'Previous' +(or the icons) are displayed. + + + + + +Profiling + +The following parameters can be used for attribute-based +profiling of your document. For more information about profiling, see +Profiling (conditional text). + + + +profile.arch +string + + +profile.arch +Target profile for arch +attribute + + + + +<xsl:param name="profile.arch"></xsl:param> + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.audience +string + + +profile.audience +Target profile for audience +attribute + + + + +<xsl:param name="profile.audience"></xsl:param> + + + +Description + +Value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.condition +string + + +profile.condition +Target profile for condition +attribute + + + + +<xsl:param name="profile.condition"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.conformance +string + + +profile.conformance +Target profile for conformance +attribute + + + + +<xsl:param name="profile.conformance"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.lang +string + + +profile.lang +Target profile for lang +attribute + + + + +<xsl:param name="profile.lang"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.os +string + + +profile.os +Target profile for os +attribute + + + + +<xsl:param name="profile.os"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.revision +string + + +profile.revision +Target profile for revision +attribute + + + + +<xsl:param name="profile.revision"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.revisionflag +string + + +profile.revisionflag +Target profile for revisionflag +attribute + + + + +<xsl:param name="profile.revisionflag"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.role +string + + +profile.role +Target profile for role +attribute + + + + +<xsl:param name="profile.role"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + +Note that role is often +used for other purposes than profiling. For example it is commonly +used to get emphasize in bold font: + +<emphasis role="bold">very important</emphasis> + +If you are using role for +these purposes do not forget to add values like bold to +value of this parameter. If you forgot you will get document with +small pieces missing which are very hard to track. + +For this reason it is not recommended to use role attribute for profiling. You should +rather use profiling specific attributes like userlevel, os, arch, condition, etc. + + + + + + + +profile.security +string + + +profile.security +Target profile for security +attribute + + + + +<xsl:param name="profile.security"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.status +string + + +profile.status +Target profile for status +attribute + + + + +<xsl:param name="profile.status"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.userlevel +string + + +profile.userlevel +Target profile for userlevel +attribute + + + + +<xsl:param name="profile.userlevel"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.vendor +string + + +profile.vendor +Target profile for vendor +attribute + + + + +<xsl:param name="profile.vendor"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.wordsize +string + + +profile.wordsize +Target profile for wordsize +attribute + + + + +<xsl:param name="profile.wordsize"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.attribute +string + + +profile.attribute +Name of user-specified profiling attribute + + + + +<xsl:param name="profile.attribute"></xsl:param> + + + +Description + +This parameter is used in conjuction with +profile.value. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.value +string + + +profile.value +Target profile for user-specified attribute + + + + +<xsl:param name="profile.value"></xsl:param> + + + +Description + +When you are using this parameter you must also specify name of +profiling attribute with parameter +profile.attribute. + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.separator +string + + +profile.separator +Separator character for compound profile values + + + + +<xsl:param name="profile.separator">;</xsl:param> + + + +Description + +Separator character used for compound profile values. See profile.arch + + + + +HTML Help + + +htmlhelp.encoding +string + + +htmlhelp.encoding +Character encoding to use in files for HTML Help compiler. + + + + +<xsl:param name="htmlhelp.encoding">iso-8859-1</xsl:param> + + + +Description + +HTML Help Compiler is not UTF-8 aware, so you should always use an +appropriate single-byte encoding here. Use one from iana, the registered charset values. + + + + + + +htmlhelp.autolabel +boolean + + +htmlhelp.autolabel +Should tree-like ToC use autonumbering feature? + + + + +<xsl:param name="htmlhelp.autolabel" select="0"></xsl:param> + + + +Description + +Set this to non-zero to include chapter and section numbers into ToC +in the left panel. + + + + + + +htmlhelp.chm +string + + +htmlhelp.chm +Filename of output HTML Help file. + + + + +<xsl:param name="htmlhelp.chm">htmlhelp.chm</xsl:param> + + + +Description + +Set the name of resulting CHM file + + + + + + +htmlhelp.default.topic +string + + +htmlhelp.default.topic +Name of file with default topic + + + + +<xsl:param name="htmlhelp.default.topic"></xsl:param> + + + +Description + +Normally first chunk of document is displayed when you open HTML +Help file. If you want to display another topic, simply set its +filename by this parameter. + +This is useful especially if you don't generate ToC in front of +your document and you also hide root element in ToC. E.g.: + +<xsl:param name="generate.book.toc" select="0"/> +<xsl:param name="htmlhelp.hhc.show.root" select="0"/> +<xsl:param name="htmlhelp.default.topic">pr01.html</xsl:param> + + + + + + + +htmlhelp.display.progress +boolean + + +htmlhelp.display.progress +Display compile progress? + + + + +<xsl:param name="htmlhelp.display.progress" select="1"></xsl:param> + + + +Description + +Set to non-zero to to display compile progress + + + + + + + +htmlhelp.hhp +string + + +htmlhelp.hhp +Filename of project file. + + + + +<xsl:param name="htmlhelp.hhp">htmlhelp.hhp</xsl:param> + + + +Description + +Change this parameter if you want different name of project +file than htmlhelp.hhp. + + + + + + +htmlhelp.hhc +string + + +htmlhelp.hhc +Filename of TOC file. + + + + +<xsl:param name="htmlhelp.hhc">toc.hhc</xsl:param> + + + +Description + +Set the name of the TOC file. The default is toc.hhc. + + + + + + +htmlhelp.hhk +string + + +htmlhelp.hhk +Filename of index file. + + + + +<xsl:param name="htmlhelp.hhk">index.hhk</xsl:param> + + + +Description + +set the name of the index file. The default is index.hhk. + + + + + + +htmlhelp.hhp.tail +string + + +htmlhelp.hhp.tail +Additional content for project file. + + + + +<xsl:param name="htmlhelp.hhp.tail"></xsl:param> + + + +Description + +If you want to include some additional parameters into project file, +store appropriate part of project file into this parameter. + + + + + + +htmlhelp.hhp.window +string + + +htmlhelp.hhp.window +Name of default window. + + + + +<xsl:param name="htmlhelp.hhp.window">Main</xsl:param> + + + +Description + +Name of default window. If empty no [WINDOWS] section will be +added to project file. + + + + + + +htmlhelp.hhp.windows +string + + +htmlhelp.hhp.windows +Definition of additional windows + + + + +<xsl:param name="htmlhelp.hhp.windows"></xsl:param> + + + +Description + +Content of this parameter is placed at the end of [WINDOWS] +section of project file. You can use it for defining your own +addtional windows. + + + + + + +htmlhelp.enhanced.decompilation +boolean + + +htmlhelp.enhanced.decompilation +Allow enhanced decompilation of CHM? + + + + +<xsl:param name="htmlhelp.enhanced.decompilation" select="0"></xsl:param> + + + +Description + +When non-zero this parameter enables enhanced decompilation of CHM. + + + + + + +htmlhelp.enumerate.images +boolean + + +htmlhelp.enumerate.images +Should the paths to all used images be added to the project file? + + + + +<xsl:param name="htmlhelp.enumerate.images" select="0"></xsl:param> + + + +Description + +Set to non-zero if you insert images into your documents as +external binary entities or if you are using absolute image paths. + + + + + + +htmlhelp.force.map.and.alias +boolean + + +htmlhelp.force.map.and.alias +Should [MAP] and [ALIAS] sections be added to the project file unconditionally? + + + +<xsl:param name="htmlhelp.force.map.and.alias" select="0"></xsl:param> + + +Description + Set to non-zero if you have your own + alias.h and context.h + files and you want to include references to them in the project + file. + + + + + +htmlhelp.map.file +string + + +htmlhelp.map.file +Filename of map file. + + + +<xsl:param name="htmlhelp.map.file">context.h</xsl:param> + + +Description +Set the name of map file. The default is + context.h. (used for context-sensitive + help). + + + + + +htmlhelp.alias.file +string + + +htmlhelp.alias.file +Filename of alias file. + + + + +<xsl:param name="htmlhelp.alias.file">alias.h</xsl:param> + + + +Description + +Specifies the filename of the alias file (used for context-sensitive help). + + + + + + +htmlhelp.hhc.section.depth +integer + + +htmlhelp.hhc.section.depth +Depth of TOC for sections in a left pane. + + + + +<xsl:param name="htmlhelp.hhc.section.depth">5</xsl:param> + + + +Description + +Set the section depth in the left pane of HTML Help viewer. + + + + + + +htmlhelp.hhc.show.root +boolean + + +htmlhelp.hhc.show.root +Should there be an entry for the root element in the ToC? + + + + +<xsl:param name="htmlhelp.hhc.show.root" select="1"></xsl:param> + + + +Description + +If set to zero, there will be no entry for the root element in the +ToC. This is useful when you want to provide the user with an expanded +ToC as a default. + + + + + + +htmlhelp.hhc.folders.instead.books +boolean + + +htmlhelp.hhc.folders.instead.books +Use folder icons in ToC (instead of book icons)? + + + + +<xsl:param name="htmlhelp.hhc.folders.instead.books" select="1"></xsl:param> + + + +Description + +Set to non-zero for folder-like icons or zero for book-like icons in the ToC. +If you want to use folder-like icons, you must switch off the binary ToC using +htmlhelp.hhc.binary. + + + + + + + + +htmlhelp.hhc.binary +boolean + + +htmlhelp.hhc.binary +Generate binary ToC? + + + + +<xsl:param name="htmlhelp.hhc.binary" select="1"></xsl:param> + + + +Description + +Set to non-zero to generate a binary TOC. You must create a binary TOC +if you want to add Prev/Next buttons to toolbar (which is default +behaviour). Files with binary TOC can't be merged. + + + + + + +htmlhelp.hhc.width +integer + + +htmlhelp.hhc.width +Width of navigation pane + + + + +<xsl:param name="htmlhelp.hhc.width"></xsl:param> + + + +Description + +This parameter specifies the width of the navigation pane (containing TOC and +other navigation tabs) in pixels. + + + + + + +htmlhelp.title +string + + +htmlhelp.title +Title of HTML Help + + + + +<xsl:param name="htmlhelp.title"></xsl:param> + + + +Description + +Content of this parameter will be used as a title for generated +HTML Help. If empty, title will be automatically taken from document. + + + + + + +htmlhelp.show.menu +boolean + + +htmlhelp.show.menu +Should the menu bar be shown? + + + + +<xsl:param name="htmlhelp.show.menu" select="0"></xsl:param> + + + +Description + +Set to non-zero to have an application menu bar in your HTML Help window. + + + + + + + +htmlhelp.show.toolbar.text +boolean + + +htmlhelp.show.toolbar.text +Show text under toolbar buttons? + + + + +<xsl:param name="htmlhelp.show.toolbar.text" select="1"></xsl:param> + + + +Description + +Set to non-zero to display texts under toolbar buttons, zero to switch +off displays. + + + + + + +htmlhelp.show.advanced.search +boolean + + +htmlhelp.show.advanced.search +Should advanced search features be available? + + + + +<xsl:param name="htmlhelp.show.advanced.search" select="0"></xsl:param> + + + +Description + +If you want advanced search features in your help, turn this +parameter to 1. + + + + + + +htmlhelp.show.favorities +boolean + + +htmlhelp.show.favorities +Should the Favorites tab be shown? + + + + +<xsl:param name="htmlhelp.show.favorities" select="0"></xsl:param> + + + +Description + +Set to non-zero to include a Favorites tab in the navigation pane +of the help window. + + + + + + +htmlhelp.button.hideshow +boolean + + +htmlhelp.button.hideshow +Should the Hide/Show button be shown? + + + + +<xsl:param name="htmlhelp.button.hideshow" select="1"></xsl:param> + + + +Description + +Set to non-zero to include the Hide/Show button shown on toolbar + + + + + + +htmlhelp.button.back +boolean + + +htmlhelp.button.back +Should the Back button be shown? + + + + +<xsl:param name="htmlhelp.button.back" select="1"></xsl:param> + + + +Description + +Set to non-zero to include the Hide/Show button shown on toolbar + + + + + + +htmlhelp.button.forward +boolean + + +htmlhelp.button.forward +Should the Forward button be shown? + + + + +<xsl:param name="htmlhelp.button.forward" select="0"></xsl:param> + + + +Description + +Set to non-zero to include the Forward button on the toolbar. + + + + + + +htmlhelp.button.stop +boolean + + +htmlhelp.button.stop +Should the Stop button be shown? + + + + +<xsl:param name="htmlhelp.button.stop" select="0"></xsl:param> + + + +Description + +If you want Stop button shown on toolbar, turn this +parameter to 1. + + + + + + +htmlhelp.button.refresh +boolean + + +htmlhelp.button.refresh +Should the Refresh button be shown? + + + + +<xsl:param name="htmlhelp.button.refresh" select="0"></xsl:param> + + + +Description + +Set to non-zero to include the Stop button on the toolbar. + + + + + + +htmlhelp.button.home +boolean + + +htmlhelp.button.home +Should the Home button be shown? + + + + +<xsl:param name="htmlhelp.button.home" select="0"></xsl:param> + + + +Description + +Set to non-zero to include the Home button on the toolbar. + + + + + + +htmlhelp.button.home.url +string + + +htmlhelp.button.home.url +URL address of page accessible by Home button + + + + +<xsl:param name="htmlhelp.button.home.url"></xsl:param> + + + +Description + +URL address of page accessible by Home button. + + + + + + +htmlhelp.button.options +boolean + + +htmlhelp.button.options +Should the Options button be shown? + + + + +<xsl:param name="htmlhelp.button.options" select="1"></xsl:param> + + + +Description + +If you want Options button shown on toolbar, turn this +parameter to 1. + + + + + + +htmlhelp.button.print +boolean + + +htmlhelp.button.print +Should the Print button be shown? + + + + +<xsl:param name="htmlhelp.button.print" select="1"></xsl:param> + + + +Description + +Set to non-zero to include the Print button on the toolbar. + + + + + + + +htmlhelp.button.locate +boolean + + +htmlhelp.button.locate +Should the Locate button be shown? + + + + +<xsl:param name="htmlhelp.button.locate" select="0"></xsl:param> + + + +Description + +If you want Locate button shown on toolbar, turn this +parameter to 1. + + + + + + +htmlhelp.button.jump1 +boolean + + +htmlhelp.button.jump1 +Should the Jump1 button be shown? + + + +<xsl:param name="htmlhelp.button.jump1" select="0"></xsl:param> + + +Description + Set to non-zero to include the Jump1 button on the toolbar. + + + + + +htmlhelp.button.jump1.url +string + + +htmlhelp.button.jump1.url +URL address of page accessible by Jump1 button + + + + +<xsl:param name="htmlhelp.button.jump1.url"></xsl:param> + + + +Description + +URL address of page accessible by Jump1 button. + + + + + + +htmlhelp.button.jump1.title +string + + +htmlhelp.button.jump1.title +Title of Jump1 button + + + + +<xsl:param name="htmlhelp.button.jump1.title">User1</xsl:param> + + + +Description + +Title of Jump1 button. + + + + + + +htmlhelp.button.jump2 +boolean + + +htmlhelp.button.jump2 +Should the Jump2 button be shown? + + + + +<xsl:param name="htmlhelp.button.jump2" select="0"></xsl:param> + + + +Description + +Set to non-zero to include the Jump2 button on the toolbar. + + + + + + +htmlhelp.button.jump2.url +string + + +htmlhelp.button.jump2.url +URL address of page accessible by Jump2 button + + + + +<xsl:param name="htmlhelp.button.jump2.url"></xsl:param> + + + +Description + +URL address of page accessible by Jump2 button. + + + + + + +htmlhelp.button.jump2.title +string + + +htmlhelp.button.jump2.title +Title of Jump2 button + + + + +<xsl:param name="htmlhelp.button.jump2.title">User2</xsl:param> + + + +Description + +Title of Jump2 button. + + + + + + +htmlhelp.button.next +boolean + + +htmlhelp.button.next +Should the Next button be shown? + + + + +<xsl:param name="htmlhelp.button.next" select="1"></xsl:param> + + + +Description + +Set to non-zero to include the Next button on the toolbar. + + + + + + +htmlhelp.button.prev +boolean + + +htmlhelp.button.prev +Should the Prev button be shown? + + + + +<xsl:param name="htmlhelp.button.prev" select="1"></xsl:param> + + + +Description + +Set to non-zero to include the Prev button on the toolbar. + + + + + + + +htmlhelp.button.zoom +boolean + + +htmlhelp.button.zoom +Should the Zoom button be shown? + + + + +<xsl:param name="htmlhelp.button.zoom" select="0"></xsl:param> + + + +Description + +Set to non-zero to include the Zoom button on the toolbar. + + + + + + + +htmlhelp.remember.window.position +boolean + + +htmlhelp.remember.window.position +Remember help window position? + + + + +<xsl:param name="htmlhelp.remember.window.position" select="0"></xsl:param> + + + +Description + +Set to non-zero to remember help window position between starts. + + + + + + +htmlhelp.window.geometry +string + + +htmlhelp.window.geometry +Set initial geometry of help window + + + + +<xsl:param name="htmlhelp.window.geometry"></xsl:param> + + + +Description + +This parameter specifies initial position of help +window. E.g. + +<xsl:param name="htmlhelp.window.geometry">[160,64,992,704]</xsl:param> + + + + + + +htmlhelp.use.hhk +boolean + + +htmlhelp.use.hhk +Should the index be built using the HHK file? + + + + +<xsl:param name="htmlhelp.use.hhk" select="0"></xsl:param> + + + +Description + +If non-zero, the index is created using the HHK file (instead of using object +elements in the HTML files). For more information, see Generating an index. + + + + + +htmlhelp.only +boolean + + +htmlhelp.only +Should only project files be generated? + + + + +<xsl:param name="htmlhelp.only" select="0"></xsl:param> + + + +Description + + +Set to non-zero if you want to play with various HTML Help parameters +and you don't need to regenerate all HTML files. This setting will not +process whole document, only project files (hhp, hhc, hhk,...) will be +generated. + + + + + +Eclipse Help Platform + + +eclipse.autolabel +boolean + + +eclipse.autolabel +Should tree-like ToC use autonumbering feature? + + + + +<xsl:param name="eclipse.autolabel" select="0"></xsl:param> + + + +Description + +If you want to include chapter and section numbers into ToC in +the left panel, set this parameter to 1. + + + + + + +eclipse.plugin.name +string + + +eclipse.plugin.name +Eclipse Help plugin name + + + + +<xsl:param name="eclipse.plugin.name">DocBook Online Help Sample</xsl:param> + + + +Description + +Eclipse Help plugin name. + + + + + + +eclipse.plugin.id +string + + +eclipse.plugin.id +Eclipse Help plugin id + + + + +<xsl:param name="eclipse.plugin.id">com.example.help</xsl:param> + + + +Description + +Eclipse Help plugin id. You should change this id to something +unique for each help. + + + + + + +eclipse.plugin.provider +string + + +eclipse.plugin.provider +Eclipse Help plugin provider name + + + + +<xsl:param name="eclipse.plugin.provider">Example provider</xsl:param> + + + +Description + +Eclipse Help plugin provider name. + + + + +JavaHelp + + +javahelp.encoding +string + + +javahelp.encoding +Character encoding to use in control files for JavaHelp. + + + + +<xsl:param name="javahelp.encoding">iso-8859-1</xsl:param> + + + +Description + +JavaHelp crashes on some characters when written as character +references. In that case you can use this parameter to select an appropriate encoding. + + + + + + + +Localization + + +l10n.gentext.language +string + + +l10n.gentext.language +Sets the gentext language + + + + +<xsl:param name="l10n.gentext.language"></xsl:param> + + + +Description + +If this parameter is set to any value other than the empty string, its +value will be used as the value for the language when generating text. Setting +l10n.gentext.language overrides any settings within the +document being formatted. + +It's much more likely that you might want to set the +l10n.gentext.default.language parameter. + + + + + + + l10n.gentext.default.language + string + + + l10n.gentext.default.language + Sets the default language for generated text + + + + +<xsl:param name="l10n.gentext.default.language">en</xsl:param> + + + +Description + +The value of the l10n.gentext.default.language +parameter is used as the language for generated text if no setting is provided +in the source document. + + + + + + +l10n.gentext.use.xref.language +boolean + + +l10n.gentext.use.xref.language +Use the language of target when generating cross-reference text? + + + + +<xsl:param name="l10n.gentext.use.xref.language" select="0"></xsl:param> + + + +Description + +If non-zero, the language of the target will be used when +generating cross reference text. Usually, the current +language is used when generating text (that is, the language of the +element that contains the cross-reference element). But setting this parameter +allows the language of the element pointed to to control +the generated text. + +Consider the following example: + + +<para lang="en">See also <xref linkend="chap3"/>.</para> + + + +Suppose that Chapter 3 happens to be written in German. +If l10n.gentext.use.xref.language is non-zero, the +resulting text will be something like this: + +
+See also Kapital 3. +
+ +Where the more traditional rendering would be: + +
+See also Chapter 3. +
+ +
+
+ + + +l10n.lang.value.rfc.compliant +boolean + + +l10n.lang.value.rfc.compliant +Make value of lang attribute RFC compliant? + + + + +<xsl:param name="l10n.lang.value.rfc.compliant" select="1"></xsl:param> + + + +Description + +If non-zero, ensure that the values for all lang attributes in HTML output are RFC +compliantSection 8.1.1, Language Codes, in the HTML 4.0 Recommendation states that: + +
[RFC1766] defines and explains the language codes +that must be used in HTML documents. +Briefly, language codes consist of a primary code and a possibly +empty series of subcodes: + +language-code = primary-code ( "-" subcode )* + +And in RFC 1766, Tags for the Identification +of Languages, the EBNF for "language tag" is given as: + +Language-Tag = Primary-tag *( "-" Subtag ) +Primary-tag = 1*8ALPHA +Subtag = 1*8ALPHA + +
+
. + +by taking any underscore characters in any lang values found in source documents, and +replacing them with hyphen characters in output HTML files. For +example, zh_CN in a source document becomes +zh-CN in the HTML output form that source. + + +This parameter does not cause any case change in lang values, because RFC 1766 +explicitly states that all "language tags" (as it calls them) "are +to be treated as case insensitive". + +
+ +
+
+ + + +writing.mode +string + + +writing.mode +Direction of text flow based on locale + + + + +<xsl:param name="writing.mode"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">writing-mode</xsl:with-param> + <xsl:with-param name="lang"> + <xsl:call-template name="l10n.language"> + <xsl:with-param name="target" select="/*[1]"></xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> +</xsl:param> + + + +Description + +Sets direction of text flow and text alignment based on locale. +The value is normally taken from the gentext file for the +lang attribute of the document's root element, using the +key name 'writing-mode' to look it up in the gentext file. +But the param can also be +set on the command line to override that gentext value. + +Accepted values are: + + + lr-tb + + Left-to-right text flow in each line, lines stack top to bottom. + + + + rl-tb + + Right-to-left text flow in each line, lines stack top to bottom. + + + + tb-rl + + Top-to-bottom text flow in each vertical line, lines stack right to left. + Supported by only a few XSL-FO processors. Not supported in HTML output. + + + + lr + + Shorthand for lr-tb. + + + + rl + + Shorthand for rl-tb. + + + + tb + + Shorthand for tb-rl. + + + + + + + + +
+
+ + + + FO Parameter Reference + + + This is reference documentation for all user-configurable + parameters in the DocBook XSL FO stylesheets (for generating + XSL-FO output destined for final print/PDF output). + + + Admonitions + + +admon.graphics +boolean + + +admon.graphics +Use graphics in admonitions? + + + + +<xsl:param name="admon.graphics" select="0"></xsl:param> + + + +Description + +If true (non-zero), admonitions are presented in an alternate style that uses +a graphic. Default graphics are provided in the distribution. + + + + + + + +admon.graphics.extension +string + + +admon.graphics.extension +Filename extension for admonition graphics + + + + +<xsl:param name="admon.graphics.extension">.png</xsl:param> + + + +Description + +Sets the filename extension to use on admonition graphics. + + + + + + +admon.graphics.path +string + + +admon.graphics.path +Path to admonition graphics + + + +<xsl:param name="admon.graphics.path">images/</xsl:param> + + +Description + +Sets the path to the directory containing the admonition graphics +(caution.png, important.png etc). This location is normally relative +to the output html directory. See base.dir + + + + + + +admon.textlabel +boolean + + +admon.textlabel +Use text label in admonitions? + + + + +<xsl:param name="admon.textlabel" select="1"></xsl:param> + + + +Description + +If true (non-zero), admonitions are presented with a generated +text label such as Note or Warning in the appropriate language. +If zero, such labels are turned off, but any title child +of the admonition element are still output. +The default value is 1. + + + + + + + + + admonition.title.properties + attribute set + + +admonition.title.properties +To set the style for admonitions titles. + + + + +<xsl:attribute-set name="admonition.title.properties"> + <xsl:attribute name="font-size">14pt</xsl:attribute> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> + + +Description +How do you want admonitions titles styled? +Set the font-size, weight etc to the style required. + + + + + + + admonition.properties + attribute set + + +admonition.properties +To set the style for admonitions. + + + +<xsl:attribute-set name="admonition.properties"></xsl:attribute-set> + + +Description +How do you want admonitions styled? +Set the font-size, weight, etc. to the style required + + + + + + +graphical.admonition.properties +attribute set + + +graphical.admonition.properties +To add properties to the outer block of a graphical admonition. + + + +<xsl:attribute-set name="graphical.admonition.properties"> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> + <xsl:attribute name="space-after.optimum">1em</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> + + +Description +These properties are added to the outer block containing the +entire graphical admonition, including its title. +It is used when the parameter +admon.graphics is set to nonzero. +Use this attribute-set to set the space above and below, +and any indent for the whole admonition. + +In addition to these properties, a graphical admonition +also applies the admonition.title.properties +attribute-set to the title, and applies the +admonition.properties attribute-set +to the rest of the content. + + + + + + +nongraphical.admonition.properties +attribute set + + +nongraphical.admonition.properties +To add properties to the outer block of a nongraphical admonition. + + + +<xsl:attribute-set name="nongraphical.admonition.properties"> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> + <xsl:attribute name="margin-{$direction.align.start}">0.25in</xsl:attribute> + <xsl:attribute name="margin-{$direction.align.end}">0.25in</xsl:attribute> +</xsl:attribute-set> + + +Description +These properties are added to the outer block containing the +entire nongraphical admonition, including its title. +It is used when the parameter +admon.graphics is set to zero. +Use this attribute-set to set the space above and below, +and any indent for the whole admonition. + +In addition to these properties, a nongraphical admonition +also applies the admonition.title.properties +attribute-set to the title, and the +admonition.properties attribute-set +to the rest of the content. + + + + +Callouts + + +callout.defaultcolumn +integer + + +callout.defaultcolumn +Indicates what column callouts appear in by default + + + + +<xsl:param name="callout.defaultcolumn">60</xsl:param> + + + +Description + +If a callout does not identify a column (for example, if it uses +the linerange unit), +it will appear in the default column. + + + + + + + +callout.graphics +boolean + + +callout.graphics +Use graphics for callouts? + + + + +<xsl:param name="callout.graphics" select="1"></xsl:param> + + + +Description + +If non-zero, callouts are presented with graphics (e.g., reverse-video +circled numbers instead of "(1)", "(2)", etc.). +Default graphics are provided in the distribution. + + + + + + + +callout.graphics.extension +string + + +callout.graphics.extension +Filename extension for callout graphics + + + + + +<xsl:param name="callout.graphics.extension">.svg</xsl:param> + + + +Description +Sets the filename extension to use on callout graphics. + + +The Docbook XSL distribution provides callout graphics in the following formats: +SVG (extension: .svg) +PNG (extension: .png) +GIF (extension: .gif) + + + + + + +callout.graphics.number.limit +integer + + +callout.graphics.number.limit +Number of the largest callout graphic + + + + + +<xsl:param name="callout.graphics.number.limit">30</xsl:param> + + + +Description + +If callout.graphics is non-zero, graphics +are used to represent callout numbers instead of plain text. The value +of callout.graphics.number.limit is the largest +number for which a graphic exists. If the callout number exceeds this +limit, the default presentation "(plain text instead of a graphic)" +will be used. + + + + + + + +callout.graphics.path +string + + +callout.graphics.path +Path to callout graphics + + + + +<xsl:param name="callout.graphics.path">images/callouts/</xsl:param> + + + +Description + +Sets the path to the directory holding the callout graphics. his +location is normally relative to the output html directory. see +base.dir. Always terminate the directory with / since the graphic file +is appended to this string, hence needs the separator. + + + + + + + +callout.icon.size +length + + +callout.icon.size +Specifies the size of callout marker icons + + + + +<xsl:param name="callout.icon.size">7pt</xsl:param> + + + +Description + +Specifies the size of the callout marker icons. +The default size is 7 points. + + + + + + +callout.unicode +boolean + + +callout.unicode +Use Unicode characters rather than images for callouts. + + + +<xsl:param name="callout.unicode" select="0"></xsl:param> + + +Description + +The stylesheets can use either an image of the numbers one to ten, or the single Unicode character which represents the numeral, in white on a black background. Use this to select the Unicode character option. + + + + + + + +callout.unicode.font +string + + +callout.unicode.font +Specify a font for Unicode glyphs + + + + +<xsl:param name="callout.unicode.font">ZapfDingbats</xsl:param> + + + +Description + +The name of the font to specify around Unicode callout glyphs. +If set to the empty string, no font change will occur. + + + + + + + +callout.unicode.number.limit +integer + + +callout.unicode.number.limit +Number of the largest unicode callout character + + + + +<xsl:param name="callout.unicode.number.limit">10</xsl:param> + + + +Description + +If callout.unicode +is non-zero, unicode characters are used to represent +callout numbers. The value of +callout.unicode.number.limit +is +the largest number for which a unicode character exists. If the callout number +exceeds this limit, the default presentation "(nnn)" will always +be used. + + + + + + + +callout.unicode.start.character +integer + + +callout.unicode.start.character +First Unicode character to use, decimal value. + + + + +<xsl:param name="callout.unicode.start.character">10102</xsl:param> + + + +Description + +If callout.graphics is zero and callout.unicode +is non-zero, unicode characters are used to represent +callout numbers. The value of +callout.unicode.start.character +is the decimal unicode value used for callout number one. Currently, +only 10102 is supported in the stylesheets for this parameter. + + + + + + + +callouts.extension +boolean + + +callouts.extension +Enable the callout extension + + + + +<xsl:param name="callouts.extension" select="1"></xsl:param> + + + +Description + +The callouts extension processes areaset +elements in programlistingco and other text-based +callout elements. + + + + + +ToC/LoT/Index Generation + + +autotoc.label.separator +string + + +autotoc.label.separator +Separator between labels and titles in the ToC + + + + +<xsl:param name="autotoc.label.separator">. </xsl:param> + + + +Description + +String used to separate labels and titles in a table of contents. + + + + + + +process.empty.source.toc +boolean + + +process.empty.source.toc +Generate automated TOC if toc element occurs in a source document? + + + +<xsl:param name="process.empty.source.toc" select="0"></xsl:param> + + +Description + +Specifies that if an empty toc element is found in a +source document, an automated TOC is generated at this point in the +document. + + Depending on what the value of the + generate.toc parameter is, setting this + parameter to 1 could result in generation of + duplicate automated TOCs. So the + process.empty.source.toc is primarily useful + as an "override": by placing an empty toc in your + document and setting this parameter to 1, you can + force a TOC to be generated even if generate.toc + says not to. + + + + + + + + +process.source.toc +boolean + + +process.source.toc +Process a non-empty toc element if it occurs in a source document? + + + +<xsl:param name="process.source.toc" select="0"></xsl:param> + + +Description + +Specifies that the contents of a non-empty "hard-coded" +toc element in a source document are processed to +generate a TOC in output. + + This parameter has no effect on automated generation of + TOCs. An automated TOC may still be generated along with the + "hard-coded" TOC. To suppress automated TOC generation, adjust the + value of the generate.toc paramameter. + + The process.source.toc parameter also has + no effect if the toc element is empty; handling + for empty toc is controlled by the + process.empty.source.toc parameter. + + + + + + + + +generate.toc +table + + +generate.toc +Control generation of ToCs and LoTs + + + + + +<xsl:param name="generate.toc"> +/appendix toc,title +article/appendix nop +/article toc,title +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title +</xsl:param> + + + +Description + +This parameter has a structured value. It is a table of space-delimited +path/value pairs. Each path identifies some element in the source document +using a restricted subset of XPath (only the implicit child axis, no wildcards, +no predicates). Paths can be either relative or absolute. + +When processing a particular element, the stylesheets consult this table to +determine if a ToC (or LoT(s)) should be generated. + +For example, consider the entry: + +book toc,figure + +This indicates that whenever a book is formatted, a +Table Of Contents and a List of Figures should be generated. Similarly, + +/chapter toc + +indicates that whenever a document that has a root +of chapter is formatted, a Table of +Contents should be generated. The entry chapter would match +all chapters, but /chapter matches only chapter +document elements. + +Generally, the longest match wins. So, for example, if you want to distinguish +articles in books from articles in parts, you could use these two entries: + +book/article toc,figure +part/article toc + +Note that an article in a part can never match a book/article, +so if you want nothing to be generated for articles in parts, you can simply leave +that rule out. + +If you want to leave the rule in, to make it explicit that you're turning +something off, use the value nop. For example, the following +entry disables ToCs and LoTs for articles: + +article nop + +Do not simply leave the word article in the file +without a matching value. That'd be just begging the silly little +path/value parser to get confused. + +Section ToCs are further controlled by the +generate.section.toc.level parameter. +For a given section level to have a ToC, it must have both an entry in +generate.toc and be within the range enabled by +generate.section.toc.level. + + + + + +generate.index +boolean + + +generate.index +Do you want an index? + + + +<xsl:param name="generate.index" select="1"></xsl:param> + + +Description + +Specify if an index should be generated. + + + + + + +make.index.markup +boolean + + +make.index.markup +Generate XML index markup in the index? + + + + +<xsl:param name="make.index.markup" select="0"></xsl:param> + + + +Description + +This parameter enables a very neat trick for getting properly +merged, collated back-of-the-book indexes. G. Ken Holman suggested +this trick at Extreme Markup Languages 2002 and I'm indebted to him +for it. + +Jeni Tennison's excellent code in +autoidx.xsl does a great job of merging and +sorting indexterms in the document and building a +back-of-the-book index. However, there's one thing that it cannot +reasonably be expected to do: merge page numbers into ranges. (I would +not have thought that it could collate and suppress duplicate page +numbers, but in fact it appears to manage that task somehow.) + +Ken's trick is to produce a document in which the index at the +back of the book is displayed in XML. Because the index +is generated by the FO processor, all of the page numbers have been resolved. +It's a bit hard to explain, but what it boils down to is that instead of having +an index at the back of the book that looks like this: + +
+A +ap1, 1, 2, 3 + +
+ +you get one that looks like this: + +
+<indexdiv>A</indexdiv> +<indexentry> +<primaryie>ap1</primaryie>, +<phrase role="pageno">1</phrase>, +<phrase role="pageno">2</phrase>, +<phrase role="pageno">3</phrase> +</indexentry> +
+ +After building a PDF file with this sort of odd-looking index, you can +extract the text from the PDF file and the result is a proper index expressed in +XML. + +Now you have data that's amenable to processing and a simple Perl script +(such as fo/pdf2index) can +merge page ranges and generate a proper index. + +Finally, reformat your original document using this literal index instead of +an automatically generated one and bingo! + +
+
+ + + +index.method +list +basic +kosek +kimber + + +index.method +Select method used to group index entries in an index + + + + +<xsl:param name="index.method">basic</xsl:param> + + + +Description + +This parameter lets you select which method to use for sorting and grouping + index entries in an index. +Indexes in Latin-based languages that have accented characters typically +sort together accented words and unaccented words. +Thus Á (U+00C1 LATIN CAPITAL LETTER A WITH ACUTE) would sort together +with A (U+0041 LATIN CAPITAL LETTER A), so both would appear in the A +section of the index. +Languages using other alphabets (such as Russian, which is written in the Cyrillic alphabet) +and languages using ideographic chararacters (such as Japanese) +require grouping specific to the languages and alphabets. + + +The default indexing method is limited. +It can group accented characters in Latin-based languages only. +It cannot handle non-Latin alphabets or ideographic languages. +The other indexing methods require extensions of one type or +another, and do not work with +all XSLT processors, which is why they are not used by default. + +The three choices for indexing method are: + + +basic + + +(default) Sort and groups words based only on the Latin alphabet. +Words with accented Latin letters will group and sort with +their respective primary letter, but +words in non-Latin alphabets will be +put in the Symbols section of the index. + + + + +kosek + + +This method sorts and groups words based on letter groups configured in +the DocBook locale file for the given language. +See, for example, the French locale file common/fr.xml. +This method requires that the XSLT processor +supports the EXSLT extensions (most do). +It also requires support for using +user-defined functions in xsl:key (xsltproc does not). + +This method is suitable for any language for which you can +list all the individual characters that should appear +in each letter group in an index. +It is probably not practical to use it for ideographic languages +such as Chinese that have hundreds or thousands of characters. + + +To use the kosek method, you must: + + + +Use a processor that supports its extensions, such as +Saxon 6 or Xalan (xsltproc and Saxon 8 do not). + + + +Set the index.method parameter's value to kosek. + + + +Import the appropriate index extensions stylesheet module +fo/autoidx-kosek.xsl or +html/autoidx-kosek.xsl into your +customization. + + + + + + + +kimber + + +This method uses extensions to the Saxon processor to implement +sophisticated indexing processes. It uses its own +configuration file, which can include information for any number of +languages. Each language's configuration can group +words using one of two processes. In the +enumerated process similar to that used in the kosek method, +you indicate the groupings character-by-character. +In the between-key process, you specify the +break-points in the sort order that should start a new group. +The latter configuration is useful for ideographic languages +such as Chinese, Japanese, and Korean. +You can also define your own collation algorithms and how you +want mixed Latin-alphabet words sorted. + + +For a whitepaper describing the extensions, see: +http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf. + + + +To download the extension library, see +http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport. + + + + +To use the kimber method, you must: + + + +Use Saxon (version 6 or 8) as your XSLT processor. + + + +Install and configure the Innodata Isogen library, using +the documentation that comes with it. + + + +Set the index.method parameter's value to kimber. + + + +Import the appropriate index extensions stylesheet module +fo/autoidx-kimber.xsl or +html/autoidx-kimber.xsl into your +customization. + + + + + + + + + + + + + +index.on.type +boolean + + +index.on.type +Select indexterms based on type +attribute value + + + + +<xsl:param name="index.on.type" select="0"></xsl:param> + + + +Description + + +If non-zero, +then an index element that has a +type attribute +value will contain only those indexterm +elements with a matching type attribute value. +If an index has no type +attribute or it is blank, then the index will contain +all indexterms in the current scope. + + + +If index.on.type is zero, then the +type attribute has no effect +on selecting indexterms for an index. + + +For those using DocBook version 4.2 or earlier, +the type attribute is not available +for index terms. However, you can achieve the same +effect by using the role attribute +in the same manner on indexterm +and index, and setting the stylesheet parameter +index.on.role to a nonzero value. + + + + + + + +index.on.role +boolean + + +index.on.role +Select indexterms based on role value + + + + +<xsl:param name="index.on.role" select="0"></xsl:param> + + + +Description + + +If non-zero, +then an index element that has a +role attribute +value will contain only those indexterm +elements with a matching role value. +If an index has no role +attribute or it is blank, then the index will contain +all indexterms in the current scope. + + +If index.on.role is zero, then the +role attribute has no effect +on selecting indexterms for an index. + + +If you are using DocBook version 4.3 or later, you should +use the type attribute instead of role +on indexterm and index, +and set the index.on.type to a nonzero +value. + + + + + + + +index.preferred.page.properties +attribute set + + +index.preferred.page.properties +Properties used to emphasize page number references for +significant index terms + + + + +<xsl:attribute-set name="index.preferred.page.properties"> + <xsl:attribute name="font-weight">bold</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties used to emphasize page number references for +significant index terms (significance=preferred). Currently works only with +XEP. + + + + + + +index.entry.properties +attribute set + + +index.entry.properties +Properties applied to the formatted entries +in an index + + + + +<xsl:attribute-set name="index.entry.properties"> + <xsl:attribute name="start-indent">0pt</xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is applied to the block containing +the entries in a letter division in an index. It can be used to set the +font-size, font-family, and other inheritable properties that will be +applied to all index entries. + + + + + + +index.div.title.properties +attribute set + + +index.div.title.properties +Properties associated with the letter headings in an +index + + + + +<xsl:attribute-set name="index.div.title.properties"> + <xsl:attribute name="margin-{$direction.align.start}">0pt</xsl:attribute> + <xsl:attribute name="font-size">14.4pt</xsl:attribute> + <xsl:attribute name="font-family"><xsl:value-of select="$title.fontset"></xsl:value-of></xsl:attribute> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master,'pt')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master,'pt * 0.8')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master,'pt * 1.2')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="start-indent">0pt</xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is used on the letter headings that separate +the divisions in an index. + + + + + + +index.number.separator +string + + +index.number.separator +Override for punctuation separating page numbers in index + + + + +<xsl:param name="index.number.separator"></xsl:param> + + + +Description + +This parameter permits you to override the text to insert between +page references in a formatted index entry. Typically +that would be a comma and a space. + + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'number-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +override the gentext with the content of this parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. + + +In HTML index output, section title references are used instead of +page number references. This punctuation appears between +such section titles in an HTML index. + + + + + + + +index.range.separator +string + + +index.range.separator +Override for punctuation separating the two numbers +in a page range in index + + + + +<xsl:param name="index.range.separator"></xsl:param> + + + +Description + +This parameter permits you +to override the text to insert between +the two numbers of a page range in an index. +This parameter is only used by those XSL-FO processors +that support an extension for generating such page ranges +(such as XEP). + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'range-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +override the gentext with the content of this parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. + + +In HTML index output, section title references are used instead of +page number references. So there are no page ranges +and this parameter has no effect. + + + + + + + +index.term.separator +string + + +index.term.separator +Override for punctuation separating an index term +from its list of page references in an index + + + + +<xsl:param name="index.term.separator"></xsl:param> + + + +Description + +This parameter permits you to override +the text to insert between +the end of an index term and its list of page references. +Typically that might be a comma and a space. + + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'term-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +fill in the content for this normally empty +override parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. +For fo output, it could be an fo:leader +element to provide space of a specific length, or a dot leader. + + + + + + + +xep.index.item.properties +attribute set + + +xep.index.item.properties +Properties associated with XEP index-items + + + + +<xsl:attribute-set name="xep.index.item.properties" use-attribute-sets="index.page.number.properties"> + <xsl:attribute name="merge-subsequent-page-numbers">true</xsl:attribute> + <xsl:attribute name="link-back">true</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties associated with XEP index-items, which generate +page numbers in an index processed by XEP. For more info see +the XEP documentation section "Indexes" in +http://www.renderx.com/reference.html#Indexes. + +This attribute-set also adds by default any properties from the +index.page.number.properties +attribute-set. + + + + + +toc.section.depth +integer + + +toc.section.depth +How deep should recursive sections appear +in the TOC? + + + +<xsl:param name="toc.section.depth">2</xsl:param> + + +Description + +Specifies the depth to which recursive sections should appear in the +TOC. + + + + + + + +toc.max.depth +integer + + +toc.max.depth +How many levels should be created for each TOC? + + + +<xsl:param name="toc.max.depth">8</xsl:param> + + +Description + +Specifies the maximal depth of TOC on all levels. + + + + + + +toc.indent.width +float + + +toc.indent.width +Amount of indentation for TOC entries + + + + +<xsl:param name="toc.indent.width">24</xsl:param> +<!-- inconsistant point specification? --> + + + +Description + +Specifies, in points, the distance by which each level of the +TOC is indented from its parent. + +This value is expressed in points, without +a unit (in other words, it is a bare number). Using a bare number allows the stylesheet +to perform calculations that would otherwise have to be performed by the FO processor +because not all processors support expressions. + + + + + + +toc.line.properties +attribute set + + +toc.line.properties +Properties for lines in ToCs and LoTs + + + + +<xsl:attribute-set name="toc.line.properties"> + <xsl:attribute name="text-align-last">justify</xsl:attribute> + <xsl:attribute name="text-align">start</xsl:attribute> + <xsl:attribute name="end-indent"><xsl:value-of select="concat($toc.indent.width, 'pt')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="last-line-end-indent"><xsl:value-of select="concat('-', $toc.indent.width, 'pt')"></xsl:value-of></xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties which are applied to every line in ToC (or LoT). You can +modify them in order to change appearance of all, or some lines. For +example, in order to make lines for chapters bold, specify the +following in your customization layer: + +<xsl:attribute-set name="toc.line.properties"> + <xsl:attribute name="font-weight"> + <xsl:choose> + <xsl:when test="self::chapter">bold</xsl:when> + <xsl:otherwise>normal</xsl:otherwise> + </xsl:choose> + </xsl:attribute> +</xsl:attribute-set> + + + + + + +toc.margin.properties +attribute set + + +toc.margin.properties +Margin properties used on Tables of Contents + + + + +<xsl:attribute-set name="toc.margin.properties"> + <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.maximum">2em</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> + <xsl:attribute name="space-after.optimum">1em</xsl:attribute> + <xsl:attribute name="space-after.maximum">2em</xsl:attribute> +</xsl:attribute-set> + + + +Description +This attribute set is used on Tables of Contents. These attributes are set +on the wrapper that surrounds the ToC block, not on each individual lines. + + + + + +bridgehead.in.toc +boolean + + +bridgehead.in.toc +Should bridgehead elements appear in the TOC? + + + +<xsl:param name="bridgehead.in.toc" select="0"></xsl:param> + + +Description + +If non-zero, bridgeheads appear in the TOC. Note that +this option is not fully supported and may be removed in a future +version of the stylesheets. + + + + + + + +simplesect.in.toc +boolean + + +simplesect.in.toc +Should simplesect elements appear in the TOC? + + + +<xsl:param name="simplesect.in.toc" select="0"></xsl:param> + + +Description + +If non-zero, simplesects will be included in the TOC. + + + + + + + +generate.section.toc.level +integer + + +generate.section.toc.level +Control depth of TOC generation in sections + + + + +<xsl:param name="generate.section.toc.level" select="0"></xsl:param> + + + +Description + +The generate.section.toc.level parameter +controls the depth of section in which TOCs will be generated. Note +that this is related to, but not the same as +toc.section.depth, which controls the depth to +which TOC entries will be generated in a given TOC. +If, for example, generate.section.toc.level +is 3, TOCs will be generated in first, second, and third +level sections, but not in fourth level sections. + + + + + + + + +
Processor Extensions + + +arbortext.extensions +boolean + + +arbortext.extensions +Enable Arbortext extensions? + + + +<xsl:param name="arbortext.extensions" select="0"></xsl:param> + + +Description + +If non-zero, +Arbortext +extensions will be used. + +This parameter can also affect which graphics file formats +are supported + + + + + + +axf.extensions +boolean + + +axf.extensions +Enable XSL Formatter extensions? + + + + +<xsl:param name="axf.extensions" select="0"></xsl:param> + + + +Description + +If non-zero, +XSL Formatter +extensions will be used. XSL Formatter extensions consists of PDF bookmarks, +document information and better index processing. + +This parameter can also affect which graphics file formats +are supported + + + + + + +fop.extensions +boolean + + +fop.extensions +Enable extensions for FOP version 0.20.5 and earlier + + + +<xsl:param name="fop.extensions" select="0"></xsl:param> + + +Description + +If non-zero, extensions intended for +FOP +version 0.20.5 and earlier will be used. +At present, this consists of PDF bookmarks. + + +This parameter can also affect which graphics file formats +are supported. + +If you are using a version of FOP beyond +version 0.20.5, then use the fop1.extensions parameter +instead. + + + + + + +fop1.extensions +boolean + + +fop1.extensions +Enable extensions for FOP version 0.90 and later + + + +<xsl:param name="fop1.extensions" select="0"></xsl:param> + + +Description + +If non-zero, extensions for +FOP +version 0.90 and later will be used. + + +This parameter can also affect which graphics file formats +are supported. + +The original fop.extensions parameter +should still be used for FOP version 0.20.5 and earlier. + + + + + + +passivetex.extensions +boolean + + +passivetex.extensions +Enable PassiveTeX extensions? + + + +<xsl:param name="passivetex.extensions" select="0"></xsl:param> + + +Description + +If non-zero, +PassiveTeX +extensions will be used. At present, this consists of PDF bookmarks +and sorted index terms. + + +This parameter can also affect which graphics file formats +are supported + + + PassiveTeX is incomplete and development has ceased. In most cases, +another XSL-FO engine is probably a better choice. + + + + + + + +tex.math.in.alt +list +plain +latex + + +tex.math.in.alt +TeX notation used for equations + + + + +<xsl:param name="tex.math.in.alt"></xsl:param> + + + +Description + +If you want type math directly in TeX notation in equations, +this parameter specifies notation used. Currently are supported two +values -- plain and latex. Empty +value means that you are not using TeX math at all. + +Preferred way for including TeX alternative of math is inside of +textobject element. Eg.: + +<inlineequation> +<inlinemediaobject> +<imageobject> +<imagedata fileref="eq1.gif"/> +</imageobject> +<textobject><phrase>E=mc squared</phrase></textobject> +<textobject role="tex"><phrase>E=mc^2</phrase></textobject> +</inlinemediaobject> +</inlineequation> + +If you are using graphic element, you can +store TeX inside alt element: + +<inlineequation> +<alt role="tex">a^2+b^2=c^2</alt> +<graphic fileref="a2b2c2.gif"/> +</inlineequation> + +If you want use this feature, you should process your FO with +PassiveTeX, which only supports TeX math notation. When calling +stylsheet, don't forget to specify also +passivetex.extensions=1. + +If you want equations in HTML, just process generated file +tex-math-equations.tex by TeX or LaTeX. Then run +dvi2bitmap program on result DVI file. You will get images for +equations in your document. + + + This feature is useful for print/PDF output only if you + use the obsolete and now unsupported PassiveTeX XSL-FO + engine. + + + + +Related Parameters + tex.math.delims, + passivetex.extensions, + tex.math.file + + + + + + +tex.math.delims +boolean + + +tex.math.delims +Should equations output for processing by TeX be +surrounded by math mode delimiters? + + + + +<xsl:param name="tex.math.delims" select="1"></xsl:param> + + + +Description + +For compatibility with DSSSL based DBTeXMath from Allin Cottrell +you should set this parameter to 0. + + + This feature is useful for print/PDF output only if you + use the obsolete and now unsupported PassiveTeX XSL-FO + engine. + + + +Related Parameters + tex.math.in.alt, + passivetex.extensions + + +See Also + You can also use the dbtex delims processing + instruction to control whether delimiters are output. + + + + + + + +xep.extensions +boolean + + +xep.extensions +Enable XEP extensions? + + + +<xsl:param name="xep.extensions" select="0"></xsl:param> + + +Description + +If non-zero, +XEP +extensions will be used. XEP extensions consists of PDF bookmarks, +document information and better index processing. + + +This parameter can also affect which graphics file formats +are supported + + + +Stylesheet Extensions + + +linenumbering.everyNth +integer + + +linenumbering.everyNth +Indicate which lines should be numbered + + + + +<xsl:param name="linenumbering.everyNth">5</xsl:param> + + + +Description + +If line numbering is enabled, everyNth line will be +numbered. Note that numbering is one based, not zero based. + + + + + + + +linenumbering.extension +boolean + + +linenumbering.extension +Enable the line numbering extension + + + + +<xsl:param name="linenumbering.extension" select="1"></xsl:param> + + + +Description + +If non-zero, verbatim environments (address, literallayout, +programlisting, screen, synopsis) that specify line numbering will +have line numbers. + + + + + + + +linenumbering.separator +string + + +linenumbering.separator +Specify a separator between line numbers and lines + + + + +<xsl:param name="linenumbering.separator"><xsl:text> </xsl:text></xsl:param> + + + +Description + +The separator is inserted between line numbers and lines in the +verbatim environment. The default value is a single white space. + Note the interaction with linenumbering.width + + + + + + + +linenumbering.width +integer + + +linenumbering.width +Indicates the width of line numbers + + + + +<xsl:param name="linenumbering.width">3</xsl:param> + + + +Description + +If line numbering is enabled, line numbers will appear right +justified in a field "width" characters wide. + + + + + + + +tablecolumns.extension +boolean + + +tablecolumns.extension +Enable the table columns extension function + + + + +<xsl:param name="tablecolumns.extension" select="1"></xsl:param> + + + +Description + +The table columns extension function adjusts the widths of table +columns in the HTML result to more accurately reflect the specifications +in the CALS table. + + + + + + + + textinsert.extension + boolean + + + textinsert.extension + Enables the textinsert extension element + + + + <xsl:param name="textinsert.extension" select="1"></xsl:param> + + + Description + The textinsert extension element inserts the contents of + a file into the result tree (as text). + + To use the textinsert extension element, you must use + either Saxon or Xalan as your XSLT processor (it doesn’t + work with xsltproc), along with either the DocBook Saxon + extensions or DocBook Xalan extensions (for more + information about those extensions, see DocBook Saxon Extensions and DocBook Xalan Extensions), and you must set both + the use.extensions and + textinsert.extension parameters to + 1. + As an alternative to using the textinsert element, + consider using an Xinclude element with the + parse="text" attribute and value + specified, as detailed in Using XInclude for text inclusions. + + + See Also + You can also use the dbhtml-include href processing + instruction to insert external files — both files containing + plain text and files with markup content (including HTML + content). + + More information + For how-to documentation on inserting contents of + external code files and other text files into output, see + External code files. + For guidelines on inserting contents of + HTML files into output, see Inserting external HTML code. + + + + + +textdata.default.encoding +string + + +textdata.default.encoding +Default encoding of external text files which are included +using textdata element + + + + +<xsl:param name="textdata.default.encoding"></xsl:param> + + + +Description + +Specifies the encoding of any external text files included using +textdata element. This value is used only when you do +not specify encoding by the appropriate attribute +directly on textdata. An empty string is interpreted as the system +default encoding. + + + + + + +use.extensions +boolean + + +use.extensions +Enable extensions + + + + +<xsl:param name="use.extensions" select="0"></xsl:param> + + + +Description + +If non-zero, extensions may be used. Each extension is +further controlled by its own parameter. But if +use.extensions is zero, no extensions will +be used. + + + + + +Automatic labelling + + +appendix.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +appendix.autolabel +Specifies the labeling format for Appendix titles + + + + +<xsl:param name="appendix.autolabel">A</xsl:param> + + + +Description + +If non-zero, then appendices will be numbered using the +parameter value as the number format if the value matches one of the +following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (upperalpha). + + + + + + + +chapter.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +chapter.autolabel +Specifies the labeling format for Chapter titles + + + + +<xsl:param name="chapter.autolabel" select="1"></xsl:param> + + +Description + +If non-zero, then chapters will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (arabic). + + + + + + + +part.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +part.autolabel +Specifies the labeling format for Part titles + + + + +<xsl:param name="part.autolabel">I</xsl:param> + + + +Description + +If non-zero, then parts will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (upperroman). + + + + + + + + +reference.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +reference.autolabel +Specifies the labeling format for Reference titles + + + + <xsl:param name="reference.autolabel">I</xsl:param> + + +Description +If non-zero, references will be numbered using the parameter + value as the number format if the value matches one of the + following: + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + +Any non-zero value other than the above will generate +the default number format (upperroman). + + + + + + +preface.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +preface.autolabel +Specifices the labeling format for Preface titles + + + +<xsl:param name="preface.autolabel" select="0"></xsl:param> + + +Description + +If non-zero then prefaces will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (arabic). + + + + + + + + +section.autolabel +boolean + + +section.autolabel +Are sections enumerated? + + + +<xsl:param name="section.autolabel" select="0"></xsl:param> + + +Description + +If true (non-zero), unlabeled sections will be enumerated. + + + + + + + +section.autolabel.max.depth +integer + + +section.autolabel.max.depth +The deepest level of sections that are numbered. + + + + +<xsl:param name="section.autolabel.max.depth">8</xsl:param> + + + +Description + +When section numbering is turned on by the +section.autolabel parameter, then this +parameter controls the depth of section nesting that is +numbered. Sections nested to a level deeper than this value will not +be numbered. + + + + + + + +section.label.includes.component.label +boolean + + +section.label.includes.component.label +Do section labels include the component label? + + + +<xsl:param name="section.label.includes.component.label" select="0"></xsl:param> + + +Description + +If non-zero, section labels are prefixed with the label of the +component that contains them. + + + + + + + +label.from.part +boolean + + +label.from.part +Renumber components in each part? + + + + +<xsl:param name="label.from.part" select="0"></xsl:param> + + + +Description + +If label.from.part is non-zero, then + numbering of components — preface, + chapter, appendix, and + reference (when reference occurs at the + component level) — is re-started within each + part. +If label.from.part is zero (the + default), numbering of components is not + re-started within each part; instead, components are + numbered sequentially throughout each book, + regardless of whether or not they occur within part + instances. + + + + + + +component.label.includes.part.label +boolean + + +component.label.includes.part.label +Do component labels include the part label? + + + +<xsl:param name="component.label.includes.part.label" select="0"></xsl:param> + + +Description + +If non-zero, number labels for chapter, +appendix, and other component elements are prefixed with +the label of the part element that contains them. So you might see +Chapter II.3 instead of Chapter 3. Also, the labels for formal +elements such as table and figure will include +the part label. If there is no part element container, then no prefix +is generated. + + +This feature is most useful when the +label.from.part parameter is turned on. +In that case, there would be more than one chapter +1, and the extra part label prefix will identify +each chapter unambiguously. + + + + + +XSLT Processing + + +rootid +string + + +rootid +Specify the root element to format + + + + +<xsl:param name="rootid"></xsl:param> + + +Description + +If rootid is not empty, it must be the +value of an ID that occurs in the document being formatted. The entire +document will be loaded and parsed, but formatting will begin at the +element identified, rather than at the root. For example, this allows +you to process only chapter 4 of a book. +Because the entire document is available to the processor, automatic +numbering, cross references, and other dependencies are correctly +resolved. + + + + +Meta/*Info + + +make.single.year.ranges +boolean + + +make.single.year.ranges +Print single-year ranges (e.g., 1998-1999) + + + + +<xsl:param name="make.single.year.ranges" select="0"></xsl:param> + + +Description + +If non-zero, year ranges that span a single year will be printed +in range notation (1998-1999) instead of discrete notation +(1998, 1999). + + + + + + +make.year.ranges +boolean + + +make.year.ranges +Collate copyright years into ranges? + + + +<xsl:param name="make.year.ranges" select="0"></xsl:param> + + +Description + +If non-zero, multiple copyright year elements will be +collated into ranges. +This works only if each year number is put into a separate +year element. The copyright element permits multiple +year elements. If a year element contains a dash or +a comma, then that year element will not be merged into +any range. + + + + + + + +author.othername.in.middle +boolean + + +author.othername.in.middle +Is othername in author a +middle name? + + + + +<xsl:param name="author.othername.in.middle" select="1"></xsl:param> + + +Description + +If non-zero, the othername of an author +appears between the firstname and +surname. Otherwise, othername +is suppressed. + + + + + +Reference Pages + + +funcsynopsis.decoration +boolean + + +funcsynopsis.decoration +Decorate elements of a funcsynopsis? + + + + +<xsl:param name="funcsynopsis.decoration" select="1"></xsl:param> + + + +Description + +If non-zero, elements of the funcsynopsis will be +decorated (e.g. rendered as bold or italic text). The decoration is controlled by +templates that can be redefined in a customization layer. + + + + + + + +funcsynopsis.style +list +ansi +kr + + +funcsynopsis.style +What style of funcsynopsis should be generated? + + + +<xsl:param name="funcsynopsis.style">kr</xsl:param> + + +Description + +If funcsynopsis.style is ansi, +ANSI-style function synopses are generated for a +funcsynopsis, otherwise K&R-style +function synopses are generated. + + + + + + + +function.parens +boolean + + +function.parens +Generate parens after a function? + + + + +<xsl:param name="function.parens" select="0"></xsl:param> + + + +Description + +If non-zero, the formatting of a function element +will include generated parentheses. + + + + + + + +refentry.generate.name +boolean + + +refentry.generate.name +Output NAME header before refnames? + + + + +<xsl:param name="refentry.generate.name" select="1"></xsl:param> + + + +Description + +If non-zero, a "NAME" section title is output before the list +of refnames. This parameter and +refentry.generate.title are mutually +exclusive. This means that if you change this parameter to zero, you +should set refentry.generate.title to non-zero unless +you want get quite strange output. + + + + + + + +refentry.generate.title +boolean + + +refentry.generate.title +Output title before refnames? + + + + +<xsl:param name="refentry.generate.title" select="0"></xsl:param> + + + +Description + +If non-zero, the reference page title or first name is +output before the list of refnames. This parameter and +refentry.generate.name are mutually exclusive. +This means that if you change this parameter to non-zero, you +should set refentry.generate.name to zero unless +you want get quite strange output. + + + + + + + +refentry.pagebreak +boolean + + +refentry.pagebreak +Start each refentry on a new page + + + +<xsl:param name="refentry.pagebreak" select="1"></xsl:param> + + +Description + +If non-zero (the default), each refentry +element will start on a new page. If zero, a page +break will not be generated between refentry elements. +The exception is when the refentry elements are children of +a part element, in which case the page breaks are always +retained. That is because a part element does not generate +a page-sequence for its children, so each refentry must +start its own page-sequence. + + + + + + + +refentry.title.properties +attribute set + + +refentry.title.properties +Title properties for a refentry title + + + + +<xsl:attribute-set name="refentry.title.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$title.font.family"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="font-size">18pt</xsl:attribute> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="space-after">1em</xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> + <xsl:attribute name="space-after.optimum">0.5em</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute> + <xsl:attribute name="space-after.maximum">0.6em</xsl:attribute> + <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"></xsl:value-of></xsl:attribute> +</xsl:attribute-set> + + + +Description + +Formatting properties applied to the title generated for the +refnamediv part of output for +refentry when the value of the +refentry.generate.title parameter is +non-zero. The font size is supplied by the appropriate section.levelX.title.properties +attribute-set, computed from the location of the +refentry in the section hierarchy. + + + This parameter has no effect on the the title generated for + the refnamediv part of output for + refentry when the value of the + refentry.generate.name parameter is + non-zero. By default, that title is formatted with the same + properties as the titles for all other first-level children of + refentry. + + + + + + + +refentry.xref.manvolnum +boolean + + +refentry.xref.manvolnum +Output manvolnum as part of +refentry cross-reference? + + + + +<xsl:param name="refentry.xref.manvolnum" select="1"></xsl:param> + + + +Description + +if non-zero, the manvolnum is used when cross-referencing +refentrys, either with xref +or citerefentry. + + + + + + + +refclass.suppress +boolean + + +refclass.suppress +Suppress display of refclass contents? + + + + +<xsl:param name="refclass.suppress" select="0"></xsl:param> + + +Description + +If the value of refclass.suppress is +non-zero, then display of refclass contents is +suppressed in output. + + + + +Tables + + +default.table.width +length + + +default.table.width +The default width of tables + + + +<xsl:param name="default.table.width"></xsl:param> + + +Description +If non-zero, this value will be used for the +width attribute on tables that do not specify an +alternate width (with the dbhtml table-width or +dbfo table-width processing instruction). + + + + + +nominal.table.width +length + + +nominal.table.width +The (absolute) nominal width of tables + + + + +<xsl:param name="nominal.table.width">6in</xsl:param> + + + +Description + +In order to convert CALS column widths into HTML column widths, it +is sometimes necessary to have an absolute table width to use for conversion +of mixed absolute and relative widths. This value must be an absolute +length (not a percentage). + + + + + + +default.table.frame +string + + +default.table.frame +The default framing of tables + + + + +<xsl:param name="default.table.frame">all</xsl:param> + + + +Description + +This value will be used when there is no frame attribute on the +table. + + + + + + +default.table.rules +string + + +default.table.rules +The default column and row rules for tables using HTML markup + + + + +<xsl:param name="default.table.rules">none</xsl:param> + + + +Description + +Tables using HTML markup elements can use an attribute +named rules on the table or +informaltable element +to specify whether column and row border rules should be +displayed. This parameter lets you specify a global default +style for all HTML tables that don't otherwise have +that attribute. +These are the supported values: + + +all + +Rules will appear between all rows and columns. + + + +rows + +Rules will appear between rows only. + + + +cols + +Rules will appear between columns only. + + + +groups + +Rules will appear between row groups (thead, tfoot, tbody). +No support for rules between column groups yet. + + + + +none + +No rules. This is the default value. + + + + + + +The border after the last row and the border after +the last column are not affected by +this setting. Those borders are controlled by +the frame attribute on the table element. + + + + + + + +table.cell.padding +attribute set + + +table.cell.padding +Specifies the padding of table cells + + + + +<xsl:attribute-set name="table.cell.padding"> + <xsl:attribute name="padding-start">2pt</xsl:attribute> + <xsl:attribute name="padding-end">2pt</xsl:attribute> + <xsl:attribute name="padding-top">2pt</xsl:attribute> + <xsl:attribute name="padding-bottom">2pt</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Specifies the padding of table cells. + + + + + + +table.frame.border.thickness +length + + +table.frame.border.thickness +Specifies the thickness of the frame border + + + + +<xsl:param name="table.frame.border.thickness">0.5pt</xsl:param> + + + +Description + +Specifies the thickness of the border on the table's frame. + + + + + + +table.frame.border.style +list +none +solid +dotted +dashed +double +groove +ridge +inset +outset +solid + + +table.frame.border.style +Specifies the border style of table frames + + + + +<xsl:param name="table.frame.border.style">solid</xsl:param> + + + +Description + +Specifies the border style of table frames. + + + + + + +table.frame.border.color +color + + +table.frame.border.color +Specifies the border color of table frames + + + + + +<xsl:param name="table.frame.border.color">black</xsl:param> + + + +Description + +Specifies the border color of table frames. + + + + + + +table.cell.border.thickness +length + + +table.cell.border.thickness +Specifies the thickness of table cell borders + + + + +<xsl:param name="table.cell.border.thickness">0.5pt</xsl:param> + + + +Description + +If non-zero, specifies the thickness of borders on table +cells. The units are points. See +CSS + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + + + + +table.cell.border.style +list +none +solid +dotted +dashed +double +groove +ridge +inset +outset +solid + + +table.cell.border.style +Specifies the border style of table cells + + + + +<xsl:param name="table.cell.border.style">solid</xsl:param> + + + +Description + +Specifies the border style of table cells. + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + + + + +table.cell.border.color +color + + +table.cell.border.color +Specifies the border color of table cells + + + + + +<xsl:param name="table.cell.border.color">black</xsl:param> + + + +Description + +Set the color of table cell borders. If non-zero, the value is used +for the border coloration. See CSS. A +color is either a keyword or a numerical RGB specification. +Keywords are aqua, black, blue, fuchsia, gray, green, lime, maroon, +navy, olive, orange, purple, red, silver, teal, white, and +yellow. + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + + + + +table.table.properties +attribute set + + +table.table.properties +Properties associated with a table + + + + +<xsl:attribute-set name="table.table.properties"> + <xsl:attribute name="border-before-width.conditionality">retain</xsl:attribute> + <xsl:attribute name="border-collapse">collapse</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The styling for tables. This parameter should really +have been called table.properties, but that parameter +name was inadvertently established for the block-level properties +of the table as a whole. + + +See also table.properties. + + + + +Linking + + +current.docid +string + + +current.docid +targetdoc identifier for the document being +processed + + +<xsl:param name="current.docid"></xsl:param> + + +Description + +When olinks between documents are resolved for HTML output, the stylesheet can compute the relative path between the current document and the target document. The stylesheet needs to know the targetdoc identifiers for both documents, as they appear in the target.database.document database file. This parameter passes to the stylesheet +the targetdoc identifier of the current document, since that +identifier does not appear in the document itself. +This parameter can also be used for print output. If an olink's targetdoc id differs from the current.docid, then the stylesheet can append the target document's title to the generated olink text. That identifies to the reader that the link is to a different document, not the current document. See also olink.doctitle to enable that feature. + + + + + +collect.xref.targets +list +no +yes +only + + +collect.xref.targets +Controls whether cross reference data is +collected + + +<xsl:param name="collect.xref.targets">no</xsl:param> + + +Description + + +In order to resolve olinks efficiently, the stylesheets can +generate an external data file containing information about +all potential cross reference endpoints in a document. +This parameter determines whether the collection process is run when the document is processed by the stylesheet. The default value is no, which means the data file is not generated during processing. The other choices are yes, which means the data file is created and the document is processed for output, and only, which means the data file is created but the document is not processed for output. +See also targets.filename. + + + + + + +insert.olink.page.number +list +no +yes +maybe + + +insert.olink.page.number +Turns page numbers in olinks on and off + + + + +<xsl:param name="insert.olink.page.number">no</xsl:param> + + + +Description + +The value of this parameter determines if +cross references made between documents with +olink will +include page number citations. +In most cases this is only applicable to references in printed output. + +The parameter has three possible values. + + + +no +No page number references will be generated for olinks. + + + +yes +Page number references will be generated +for all olink references. +The style of page reference may be changed +if an xrefstyle +attribute is used. + + + +maybe +Page number references will not be generated +for an olink element unless +it has an +xrefstyle +attribute whose value specifies a page reference. + + + +Olinks that point to targets within the same document +are treated as xrefs, and controlled by +the insert.xref.page.number parameter. + + +Page number references for olinks to +external documents can only be inserted if the +information exists in the olink database. +This means each olink target element +(div or obj) +must have a page attribute +whose value is its page number in the target document. +The XSL stylesheets are not able to extract that information +during processing because pages have not yet been created in +XSLT transformation. Only the XSL-FO processor knows what +page each element is placed on. +Therefore some postprocessing must take place to populate +page numbers in the olink database. + + + + + + + + + +insert.olink.pdf.frag +boolean + + +insert.olink.pdf.frag +Add fragment identifiers for links into PDF files + + + + +<xsl:param name="insert.olink.pdf.frag" select="0"></xsl:param> + + + +Description + +The value of this parameter determines whether +the cross reference URIs to PDF documents made with +olink will +include fragment identifiers. + + +When forming a URI to link to a PDF document, +a fragment identifier (typically a '#' followed by an +id value) appended to the PDF filename can be used by +the PDF viewer to open +the PDF file to a location within the document instead of +the first page. +However, not all PDF files have id +values embedded in them, and not all PDF viewers can +handle fragment identifiers. + + +If insert.olink.pdf.frag is set +to a non-zero value, then any olink targeting a +PDF file will have the fragment identifier appended to the URI. +The URI is formed by concatenating the value of the +olink.base.uri parameter, the +value of the baseuri +attribute from the document +element in the olink database with the matching +targetdoc value, +and the value of the href +attribute for the targeted element in the olink database. +The href attribute +contains the fragment identifier. + + +If insert.olink.pdf.frag is set +to zero (the default value), then +the href attribute +from the olink database +is not appended to PDF olinks, so the fragment identifier is left off. +A PDF olink is any olink for which the +baseuri attribute +from the matching document +element in the olink database ends with '.pdf'. +Any other olinks will still have the fragment identifier added. + + + + + + +olink.base.uri +uri + + +olink.base.uri +Base URI used in olink hrefs + + +<xsl:param name="olink.base.uri"></xsl:param> + + +Description + +When cross reference data is collected for resolving olinks, it +may be necessary to prepend a base URI to each target's href. This +parameter lets you set that base URI when cross reference data is +collected. This feature is needed when you want to link to a document +that is processed without chunking. The output filename for such a +document is not known to the XSL stylesheet; the only target +information consists of fragment identifiers such as +#idref. To enable the resolution of olinks between +documents, you should pass the name of the HTML output file as the +value of this parameter. Then the hrefs recorded in the cross +reference data collection look like +outfile.html#idref, which can be reached as links +from other documents. + + + + + +olink.debug +boolean + + +olink.debug +Turn on debugging messages for olinks + + + + +<xsl:param name="olink.debug" select="0"></xsl:param> + + + +Description + +If non-zero, then each olink will generate several +messages about how it is being resolved during processing. +This is useful when an olink does not resolve properly +and the standard error messages are not sufficient to +find the problem. + + +You may need to read through the olink XSL templates +to understand the context for some of the debug messages. + + + + + + + +olink.doctitle +list +no +yes +maybe + + +olink.doctitle +show the document title for external olinks? + + + +<xsl:param name="olink.doctitle">no</xsl:param> + + +Description + +When olinks between documents are resolved, the generated text +may not make it clear that the reference is to another document. +It is possible for the stylesheets to append the other document's +title to external olinks. For this to happen, two parameters must +be set. + + +This olink.doctitle parameter +should be set to either yes or maybe +to enable this feature. + + + +And you should also set the current.docid +parameter to the document id for the document currently +being processed for output. + + + + + +Then if an olink's targetdoc id differs from +the current.docid value, the stylesheet knows +that it is a reference to another document and can +append the target document's +title to the generated olink text. + +The text for the target document's title is copied from the +olink database from the ttl element +of the top-level div for that document. +If that ttl element is missing or empty, +no title is output. + + +The supported values for olink.doctitle are: + + + +yes + + +Always insert the title to the target document if it is not +the current document. + + + + +no + + +Never insert the title to the target document, even if requested +in an xrefstyle attribute. + + + + +maybe + + +Only insert the title to the target document, if requested +in an xrefstyle attribute. + + + + +An xrefstyle attribute +may override the global setting for individual olinks. +The following values are supported in an +xrefstyle +attribute using the select: syntax: + + + + +docname + + +Insert the target document name for this olink using the +docname gentext template, but only +if the value of olink.doctitle +is not no. + + + + +docnamelong + + +Insert the target document name for this olink using the +docnamelong gentext template, but only +if the value of olink.doctitle +is not no. + + + + +nodocname + + +Omit the target document name even if +the value of olink.doctitle +is yes. + + + + +Another way of inserting the target document name +for a single olink is to employ an +xrefstyle +attribute using the template: syntax. +The %o placeholder (the letter o, not zero) +in such a template +will be filled in with the target document's title when it is processed. +This will occur regardless of +the value of olink.doctitle. + +Note that prior to version 1.66 of the XSL stylesheets, +the allowed values for this parameter were 0 and 1. Those +values are still supported and mapped to 'no' and 'yes', respectively. + + + + + + +olink.lang.fallback.sequence +string + + +olink.lang.fallback.sequence +look up translated documents if olink not found? + + + +<xsl:param name="olink.lang.fallback.sequence"></xsl:param> + + +Description + + +This parameter defines a list of lang values +to search among to resolve olinks. + + +Normally an olink tries to resolve to a document in the same +language as the olink itself. The language of an olink +is determined by its nearest ancestor element with a +lang attribute, otherwise the +value of the l10n.gentext.default.lang +parameter. + + +An olink database can contain target data for the same +document in multiple languages. Each set of data has the +same value for the targetdoc attribute in +the document element in the database, but with a +different lang attribute value. + + +When an olink is being resolved, the target is first +sought in the document with the same language as the olink. +If no match is found there, then this parameter is consulted +for additional languages to try. + +The olink.lang.fallback.sequence +must be a whitespace separated list of lang values to +try. The first one with a match in the olink database is used. +The default value is empty. + +For example, a document might be written in German +and contain an olink with +targetdoc="adminguide". +When the document is processed, the processor +first looks for a target dataset in the +olink database starting with: + +<document targetdoc="adminguide" lang="de">. + + +If there is no such element, then the +olink.lang.fallback.sequence +parameter is consulted. +If its value is, for example, fr en, then the processor next +looks for targetdoc="adminguide" lang="fr", and +then for targetdoc="adminguide" lang="en". +If there is still no match, it looks for +targetdoc="adminguide" with no +lang attribute. + + +This parameter is useful when a set of documents is only +partially translated, or is in the process of being translated. +If a target of an olink has not yet been translated, then this +parameter permits the processor to look for the document in +other languages. This assumes the reader would rather have +a link to a document in a different language than to have +a broken link. + + + + + + + +olink.properties +attribute set + + +olink.properties +Properties associated with the cross-reference +text of an olink. + + + + +<xsl:attribute-set name="olink.properties"> + <xsl:attribute name="show-destination">replace</xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is applied to the +fo:basic-link element of an olink. It is not applied to the +optional page number or optional title of the external +document. + + + + + + +prefer.internal.olink +boolean + + +prefer.internal.olink +Prefer a local olink reference to an external reference + + + + +<xsl:param name="prefer.internal.olink" select="0"></xsl:param> + + + +Description + +If you are re-using XML content modules in multiple documents, +you may want to redirect some of your olinks. This parameter +permits you to redirect an olink to the current document. + + +For example: you are writing documentation for a product, +which includes 3 manuals: a little installation +booklet (booklet.xml), a user +guide (user.xml), and a reference manual (reference.xml). +All 3 documents begin with the same introduction section (intro.xml) that +contains a reference to the customization section (custom.xml) which is +included in both user.xml and reference.xml documents. + + +How do you write the link to custom.xml in intro.xml +so that it is interpreted correctly in all 3 documents? + +If you use xref, it will fail in user.xml. + +If you use olink (pointing to reference.xml), +the reference in user.xml +will point to the customization section of the reference manual, while it is +actually available in user.xml. + + + +If you set the prefer.internal.olink +parameter to a non-zero value, then the processor will +first look in the olink database +for the olink's targetptr attribute value +in document matching the current.docid +parameter value. If it isn't found there, then +it tries the document in the database +with the targetdoc +value that matches the olink's targetdoc +attribute. + + +This feature permits an olink reference to resolve to +the current document if there is an element +with an id matching the olink's targetptr +value. The current document's olink data must be +included in the target database for this to work. + + +There is a potential for incorrect links if +the same id attribute value is used for different +content in different documents. +Some of your olinks may be redirected to the current document +when they shouldn't be. It is not possible to control +individual olink instances. + + + + + + + +target.database.document +uri + + +target.database.document +Name of master database file for resolving +olinks + + + + <xsl:param name="target.database.document">olinkdb.xml</xsl:param> + + +Description + + +To resolve olinks between documents, the stylesheets use a master +database document that identifies the target datafiles for all the +documents within the scope of the olinks. This parameter value is the +URI of the master document to be read during processing to resolve +olinks. The default value is olinkdb.xml. + +The data structure of the file is defined in the +targetdatabase.dtd DTD. The database file +provides the high level elements to record the identifiers, locations, +and relationships of documents. The cross reference data for +individual documents is generally pulled into the database using +system entity references or XIncludes. See also +targets.filename. + + + + +targets.filename +string + + +targets.filename +Name of cross reference targets data file + + +<xsl:param name="targets.filename">target.db</xsl:param> + + +Description + + +In order to resolve olinks efficiently, the stylesheets can +generate an external data file containing information about +all potential cross reference endpoints in a document. +This parameter lets you change the name of the generated +file from the default name target.db. +The name must agree with that used in the target database +used to resolve olinks during processing. +See also target.database.document. + + + + + + +use.local.olink.style +boolean + + +use.local.olink.style +Process olinks using xref style of current +document + + +<xsl:param name="use.local.olink.style" select="0"></xsl:param> + +Description + +When cross reference data is collected for use by olinks, the data for each potential target includes one field containing a completely assembled cross reference string, as if it were an xref generated in that document. Other fields record the separate title, number, and element name of each target. When an olink is formed to a target from another document, the olink resolves to that preassembled string by default. If the use.local.olink.style parameter is set to non-zero, then instead the cross +reference string is formed again from the target title, number, and +element name, using the stylesheet processing the targeting document. +Then olinks will match the xref style in the targeting document +rather than in the target document. If both documents are processed +with the same stylesheet, then the results will be the same. + + + +Cross References + + +insert.xref.page.number +list +no +yes +maybe + + +insert.xref.page.number +Turns page numbers in xrefs on and off + + + + +<xsl:param name="insert.xref.page.number">no</xsl:param> + + + +Description + +The value of this parameter determines if +cross references (xrefs) in +printed output will +include page number citations. +It has three possible values. + + + +no +No page number references will be generated. + + + +yes +Page number references will be generated +for all xref elements. +The style of page reference may be changed +if an xrefstyle +attribute is used. + + + +maybe +Page number references will not be generated +for an xref element unless +it has an +xrefstyle +attribute whose value specifies a page reference. + + + + + + + + + +xref.properties +attribute set + + +xref.properties +Properties associated with cross-reference text + + + + +<xsl:attribute-set name="xref.properties"> +</xsl:attribute-set> + + + +Description + +This attribute set is used to set properties +on cross reference text. + + + + + + +xref.label-title.separator +string + + +xref.label-title.separator +Punctuation or space separating label from title in xref + + + +<xsl:param name="xref.label-title.separator">: </xsl:param> + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both label and title, +then the value of this parameter is inserted between +label and title in the output. + + + + + + + +xref.label-page.separator +string + + +xref.label-page.separator +Punctuation or space separating label from page number in xref + + + +<xsl:param name="xref.label-page.separator"><xsl:text> </xsl:text></xsl:param> + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both label and page +but no title, +then the value of this parameter is inserted between +label and page number in the output. +If a title is included, then other separators are used. + + + + + + + +xref.title-page.separator +string + + +xref.title-page.separator +Punctuation or space separating title from page number in xref + + + +<xsl:param name="xref.title-page.separator"><xsl:text> </xsl:text></xsl:param> + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both title and page number, +then the value of this parameter is inserted between +title and page number in the output. + + + + + + + +insert.link.page.number +list +no +yes +maybe + + +insert.link.page.number +Turns page numbers in link elements on and off + + + + +<xsl:param name="insert.link.page.number">no</xsl:param> + + + +Description + +The value of this parameter determines if +cross references using the link element in +printed output will +include standard page number citations. +It has three possible values. + + + +no +No page number references will be generated. + + + +yes +Page number references will be generated +for all link elements. +The style of page reference may be changed +if an xrefstyle +attribute is used. + + + +maybe +Page number references will not be generated +for a link element unless +it has an +xrefstyle +attribute whose value specifies a page reference. + + + + +Although the xrefstyle attribute +can be used to turn the page reference on or off, it cannot be +used to control the formatting of the page number as it +can in xref. +In link it will always format with +the style established by the +gentext template with name="page.citation" +in the l:context name="xref". + + + + +Lists + + +compact.list.item.spacing +attribute set + + +compact.list.item.spacing +What space do you want between list items (when spacing="compact")? + + + +<xsl:attribute-set name="compact.list.item.spacing"> + <xsl:attribute name="space-before.optimum">0em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0em</xsl:attribute> + <xsl:attribute name="space-before.maximum">0.2em</xsl:attribute> +</xsl:attribute-set> + +Description +Specify what spacing you want between each list item when +spacing is +compact. + + + + + +itemizedlist.properties +attribute set + + +itemizedlist.properties +Properties that apply to each list-block generated by itemizedlist. + + + +<xsl:attribute-set name="itemizedlist.properties" use-attribute-sets="list.block.properties"> +</xsl:attribute-set> + +Description +Properties that apply to each fo:list-block generated by itemizedlist. + + + + + +itemizedlist.label.properties +attribute set + + +itemizedlist.label.properties +Properties that apply to each label inside itemized list. + + + +<xsl:attribute-set name="itemizedlist.label.properties"> +</xsl:attribute-set> + +Description +Properties that apply to each label inside itemized list. E.g.: +<xsl:attribute-set name="itemizedlist.label.properties"> + <xsl:attribute name="text-align">right</xsl:attribute> +</xsl:attribute-set> + + + + + +itemizedlist.label.width +length + + + itemizedlist.label.width +The default width of the label (bullet) in an itemized list. + + + + + <xsl:param name="itemizedlist.label.width">1.0em</xsl:param> + + + +Description +Specifies the default width of the label (usually a bullet or other +symbol) in an itemized list. You can override the default value on any +particular list with the “dbfo” processing instruction using the +“label-width” pseudoattribute. + + + + + +list.block.properties +attribute set + + +list.block.properties +Properties that apply to each list-block generated by list. + + + +<xsl:attribute-set name="list.block.properties"> + <xsl:attribute name="provisional-label-separation">0.2em</xsl:attribute> + <xsl:attribute name="provisional-distance-between-starts">1.5em</xsl:attribute> +</xsl:attribute-set> + +Description +Properties that apply to each fo:list-block generated by itemizedlist/orderedlist. + + + + + +list.block.spacing +attribute set + + +list.block.spacing +What spacing do you want before and after lists? + + + +<xsl:attribute-set name="list.block.spacing"> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> + <xsl:attribute name="space-after.optimum">1em</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> + +Description +Specify the spacing required before and after a list. It is necessary to specify the space after a list block because lists can come inside of paras. + + + + + +list.item.spacing +attribute set + + +list.item.spacing +What space do you want between list items? + + + +<xsl:attribute-set name="list.item.spacing"> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> + +Description +Specify what spacing you want between each list item. + + + + + +orderedlist.properties +attribute set + + +orderedlist.properties +Properties that apply to each list-block generated by orderedlist. + + + +<xsl:attribute-set name="orderedlist.properties" use-attribute-sets="list.block.properties"> + <xsl:attribute name="provisional-distance-between-starts">2em</xsl:attribute> +</xsl:attribute-set> + +Description +Properties that apply to each fo:list-block generated by orderedlist. + + + + + +orderedlist.label.properties +attribute set + + +orderedlist.label.properties +Properties that apply to each label inside ordered list. + + + +<xsl:attribute-set name="orderedlist.label.properties"> +</xsl:attribute-set> + +Description +Properties that apply to each label inside ordered list. E.g.: +<xsl:attribute-set name="orderedlist.label.properties"> + <xsl:attribute name="text-align">right</xsl:attribute> +</xsl:attribute-set> + + + + + +orderedlist.label.width +length + + +orderedlist.label.width +The default width of the label (number) in an ordered list. + + + + +<xsl:param name="orderedlist.label.width">1.2em</xsl:param> + + + +Description +Specifies the default width of the label (usually a number or +sequence of numbers) in an ordered list. You can override the default +value on any particular list with the “dbfo” processing instruction +using the “label-width” pseudoattribute. + + + + + +variablelist.max.termlength +number + + +variablelist.max.termlength +Specifies the longest term in variablelists + + + + +<xsl:param name="variablelist.max.termlength">24</xsl:param> + + + +Description + +In variablelists, the listitem +is indented to leave room for the +term elements. That indent may be computed +if it is not specified with a termlength +attribute on the variablelist element. + + +The computation counts characters in the +term elements in the list +to find the longest term. However, some terms are very long +and would produce extreme indents. This parameter lets you +set a maximum character count. Any terms longer than the maximum +would line wrap. The default value is 24. + + +The character counts are converted to physical widths +by multiplying by 0.50em. There will be some variability +in how many actual characters fit in the space +since some characters are wider than others. + + + + + + + +variablelist.term.separator +string + + +variablelist.term.separator +Text to separate terms within a multi-term +varlistentry + + + + +<xsl:param name="variablelist.term.separator">, </xsl:param> + + +Description + +When a varlistentry contains multiple term +elements, the string specified in the value of the +variablelist.term.separator parameter is placed +after each term except the last. + + + To generate a line break between multiple terms in + a varlistentry, set a non-zero value for the + variablelist.term.break.after parameter. If + you do so, you may also want to set the value of the + variablelist.term.separator parameter to an + empty string (to suppress rendering of the default comma and space + after each term). + + + + + + + +variablelist.term.properties +attribute set + + +variablelist.term.properties +To add properties to the term elements in a variablelist. + + + + +<xsl:attribute-set name="variablelist.term.properties"> +</xsl:attribute-set> + + +Description +These properties are added to the block containing a +term in a variablelist. +Use this attribute-set to set +font properties or alignment, for example. + + + + + + +variablelist.term.break.after +boolean + + +variablelist.term.break.after +Generate line break after each term within a +multi-term varlistentry? + + + + +<xsl:param name="variablelist.term.break.after">0</xsl:param> + + +Description + +Set a non-zero value for the +variablelist.term.break.after parameter to +generate a line break between terms in a +multi-term varlistentry. + + +If you set a non-zero value for +variablelist.term.break.after, you may also +want to set the value of the +variablelist.term.separator parameter to an +empty string (to suppress rendering of the default comma and space +after each term). + + + + + +QAndASet + + +qandadiv.autolabel +boolean + + +qandadiv.autolabel +Are divisions in QAndASets enumerated? + + + +<xsl:param name="qandadiv.autolabel" select="1"></xsl:param> + + +Description + +If non-zero, unlabeled qandadivs will be enumerated. + + + + + + + +qanda.inherit.numeration +boolean + + +qanda.inherit.numeration +Does enumeration of QandASet components inherit the numeration of parent elements? + + + + +<xsl:param name="qanda.inherit.numeration" select="1"></xsl:param> + + + +Description + +If non-zero, numbered qandadiv elements and +question and answer inherit the enumeration of +the ancestors of the qandaset. + + + + + + + +qanda.defaultlabel +list +number +qanda +none + + +qanda.defaultlabel +Sets the default for defaultlabel on QandASet. + + + + +<xsl:param name="qanda.defaultlabel">number</xsl:param> + + + +Description + +If no defaultlabel attribute is specified on +a qandaset, this value is used. It is generally one of the legal +values for the defaultlabel attribute (none, +number or +qanda), or one of the additional stylesheet-specific values +(qnumber or qnumberanda). +The default value is 'number'. + +The values are rendered as follows: + +qanda + +questions are labeled "Q:" and +answers are labeled "A:". + + + +number + +The questions are enumerated and the answers +are not labeled. + + + +qnumber + +The questions are labeled "Q:" followed by a number, and answers are not +labeled. +When sections are numbered, adding a label +to the number distinguishes the question numbers +from the section numbers. +This value is not allowed in the +defaultlabel attribute +of a qandaset element. + + + +qnumberanda + +The questions are labeled "Q:" followed by a number, and +the answers are labeled "A:". +When sections are numbered, adding a label +to the number distinguishes the question numbers +from the section numbers. +This value is not allowed in the +defaultlabel attribute +of a qandaset element. + + + +none + +No distinguishing label precedes Questions or Answers. + + + + + + + + + + +qanda.in.toc +boolean + + +qanda.in.toc +Should qandaentry questions appear in +the document table of contents? + + + +<xsl:param name="qanda.in.toc" select="0"></xsl:param> + + +Description + +If true (non-zero), then the generated table of contents +for a document will include qandaset titles, +qandadiv titles, +and question elements. The default value (zero) excludes +them from the TOC. + +This parameter does not affect any tables of contents +that may be generated inside a qandaset or qandadiv. + + + + + + + +qanda.nested.in.toc +boolean + + +qanda.nested.in.toc +Should nested answer/qandaentry instances appear in TOC? + + + + +<xsl:param name="qanda.nested.in.toc" select="0"></xsl:param> + + + +Description + +If non-zero, instances of qandaentry +that are children of answer elements are shown in +the TOC. + + + + +Bibliography + + +bibliography.style +list +normal +iso690 + + +bibliography.style +Style used for formatting of biblioentries. + + + + +<xsl:param name="bibliography.style">normal</xsl:param> + + + +Description + +Currently only normal and +iso690 styles are supported. + +In order to use ISO690 style to the full extent you might need +to use additional markup described on the +following WiKi page. + + + + + + +biblioentry.item.separator +string + + +biblioentry.item.separator +Text to separate bibliography entries + + + +<xsl:param name="biblioentry.item.separator">. </xsl:param> + + +Description + +Text to separate bibliography entries + + + + + + + +bibliography.collection +string + + +bibliography.collection +Name of the bibliography collection file + + + + +<xsl:param name="bibliography.collection">http://docbook.sourceforge.net/release/bibliography/bibliography.xml</xsl:param> + + + + +Description + +Maintaining bibliography entries across a set of documents is tedious, time +consuming, and error prone. It makes much more sense, usually, to store all of +the bibliography entries in a single place and simply extract +the ones you need in each document. + +That's the purpose of the +bibliography.collection parameter. To setup a global +bibliography database, follow these steps: + +First, create a stand-alone bibliography document that contains all of +the documents that you wish to reference. Make sure that each bibliography +entry (whether you use biblioentry or bibliomixed) +has an ID. + +My global bibliography, ~/bibliography.xml begins +like this: + + +<!DOCTYPE bibliography + PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> +<bibliography><title>References</title> + +<bibliomixed id="xml-rec"><abbrev>XML 1.0</abbrev>Tim Bray, +Jean Paoli, C. M. Sperberg-McQueen, and Eve Maler, editors. +<citetitle><ulink url="http://www.w3.org/TR/REC-xml">Extensible Markup +Language (XML) 1.0 Second Edition</ulink></citetitle>. +World Wide Web Consortium, 2000. +</bibliomixed> + +<bibliomixed id="xml-names"><abbrev>Namespaces</abbrev>Tim Bray, +Dave Hollander, +and Andrew Layman, editors. +<citetitle><ulink url="http://www.w3.org/TR/REC-xml-names/">Namespaces in +XML</ulink></citetitle>. +World Wide Web Consortium, 1999. +</bibliomixed> + +<!-- ... --> +</bibliography> + + + +When you create a bibliography in your document, simply +provide empty bibliomixed +entries for each document that you wish to cite. Make sure that these +elements have the same ID as the corresponding real +entry in your global bibliography. + +For example: + + +<bibliography><title>Bibliography</title> + +<bibliomixed id="xml-rec"/> +<bibliomixed id="xml-names"/> +<bibliomixed id="DKnuth86">Donald E. Knuth. <citetitle>Computers and +Typesetting: Volume B, TeX: The Program</citetitle>. Addison-Wesley, +1986. ISBN 0-201-13437-3. +</bibliomixed> +<bibliomixed id="relaxng"/> + +</bibliography> + + +Note that it's perfectly acceptable to mix entries from your +global bibliography with normal entries. You can use +xref or other elements to cross-reference your +bibliography entries in exactly the same way you do now. + +Finally, when you are ready to format your document, simply set the +bibliography.collection parameter (in either a +customization layer or directly through your processor's interface) to +point to your global bibliography. + +The stylesheets will format the bibliography in your document as if +all of the entries referenced appeared there literally. + + + + + + +bibliography.numbered +boolean + + +bibliography.numbered +Should bibliography entries be numbered? + + + + +<xsl:param name="bibliography.numbered" select="0"></xsl:param> + + + +Description + +If non-zero bibliography entries will be numbered + + + + + + + biblioentry.properties + attribute set + + +biblioentry.properties +To set the style for biblioentry. + + + +<xsl:attribute-set name="biblioentry.properties" use-attribute-sets="normal.para.spacing"> + <xsl:attribute name="start-indent">0.5in</xsl:attribute> + <xsl:attribute name="text-indent">-0.5in</xsl:attribute> +</xsl:attribute-set> + + +Description +How do you want biblioentry styled? +Set the font-size, weight, space-above and space-below, indents, etc. to the style required + + + + +Glossary + + +glossterm.auto.link +boolean + + +glossterm.auto.link +Generate links from glossterm to glossentry automatically? + + + + +<xsl:param name="glossterm.auto.link" select="0"></xsl:param> + + + +Description + +If non-zero, links from inline glossterms to the corresponding +glossentry elements in a glossary or glosslist +will be automatically generated. This is useful when your glossterms are consistent +and you don't want to add links manually. + +The automatic link generation feature is not used on glossterm elements +that have a linkend attribute. + + + + + + +firstterm.only.link +boolean + + +firstterm.only.link +Does automatic glossterm linking only apply to firstterms? + + + + +<xsl:param name="firstterm.only.link" select="0"></xsl:param> + + + +Description + +If non-zero, only firstterms will be automatically linked +to the glossary. If glossary linking is not enabled, this parameter +has no effect. + + + + + + +glossary.collection +string + + +glossary.collection +Name of the glossary collection file + + + + +<xsl:param name="glossary.collection"></xsl:param> + + + +Description + +Glossaries maintained independently across a set of documents +are likely to become inconsistent unless considerable effort is +expended to keep them in sync. It makes much more sense, usually, to +store all of the glossary entries in a single place and simply +extract the ones you need in each document. + +That's the purpose of the +glossary.collection parameter. To setup a global +glossary database, follow these steps: + +Setting Up the Glossary Database + +First, create a stand-alone glossary document that contains all of +the entries that you wish to reference. Make sure that each glossary +entry has an ID. + +Here's an example glossary: + + + +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE glossary + PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> +<glossary> +<glossaryinfo> +<editor><firstname>Eric</firstname><surname>Raymond</surname></editor> +<title>Jargon File 4.2.3 (abridged)</title> +<releaseinfo>Just some test data</releaseinfo> +</glossaryinfo> + +<glossdiv><title>0</title> + +<glossentry> +<glossterm>0</glossterm> +<glossdef> +<para>Numeric zero, as opposed to the letter `O' (the 15th letter of +the English alphabet). In their unmodified forms they look a lot +alike, and various kluges invented to make them visually distinct have +compounded the confusion. If your zero is center-dotted and letter-O +is not, or if letter-O looks almost rectangular but zero looks more +like an American football stood on end (or the reverse), you're +probably looking at a modern character display (though the dotted zero +seems to have originated as an option on IBM 3270 controllers). If +your zero is slashed but letter-O is not, you're probably looking at +an old-style ASCII graphic set descended from the default typewheel on +the venerable ASR-33 Teletype (Scandinavians, for whom /O is a letter, +curse this arrangement). (Interestingly, the slashed zero long +predates computers; Florian Cajori's monumental "A History of +Mathematical Notations" notes that it was used in the twelfth and +thirteenth centuries.) If letter-O has a slash across it and the zero +does not, your display is tuned for a very old convention used at IBM +and a few other early mainframe makers (Scandinavians curse <emphasis>this</emphasis> +arrangement even more, because it means two of their letters collide). +Some Burroughs/Unisys equipment displays a zero with a <emphasis>reversed</emphasis> +slash. Old CDC computers rendered letter O as an unbroken oval and 0 +as an oval broken at upper right and lower left. And yet another +convention common on early line printers left zero unornamented but +added a tail or hook to the letter-O so that it resembled an inverted +Q or cursive capital letter-O (this was endorsed by a draft ANSI +standard for how to draw ASCII characters, but the final standard +changed the distinguisher to a tick-mark in the upper-left corner). +Are we sufficiently confused yet?</para> +</glossdef> +</glossentry> + +<glossentry> +<glossterm>1TBS</glossterm> +<glossdef> +<para role="accidence"> +<phrase role="pronounce"></phrase> +<phrase role="partsofspeach">n</phrase> +</para> +<para>The "One True Brace Style"</para> +<glossseealso>indent style</glossseealso> +</glossdef> +</glossentry> + +<!-- ... --> + +</glossdiv> + +<!-- ... --> + +</glossary> + + + + +Marking Up Glossary Terms + +That takes care of the glossary database, now you have to get the entries +into your document. Unlike bibliography entries, which can be empty, creating +placeholder glossary entries would be very tedious. So instead, +support for glossary.collection relies on implicit linking. + +In your source document, simply use firstterm and +glossterm to identify the terms you wish to have included +in the glossary. The stylesheets assume that you will either set the +baseform attribute correctly, or that the +content of the element exactly matches a term in your glossary. + +If you're using a glossary.collection, don't +make explicit links on the terms in your document. + +So, in your document, you might write things like this: + + +<para>This is dummy text, without any real meaning. +The point is simply to reference glossary terms like <glossterm>0</glossterm> +and the <firstterm baseform="1TBS">One True Brace Style (1TBS)</firstterm>. +The <glossterm>1TBS</glossterm>, as you can probably imagine, is a nearly +religious issue.</para> + + +If you set the firstterm.only.link parameter, +only the terms marked with firstterm will be links. +Otherwise, all the terms will be linked. + + + +Marking Up the Glossary + +The glossary itself has to be identified for the stylesheets. For lack +of a better choice, the role is used. +To identify the glossary as the target for automatic processing, set +the role to auto. The title of this +glossary (and any other information from the glossaryinfo +that's rendered by your stylesheet) will be displayed, but the entries will +come from the database. + + +Unfortunately, the glossary can't be empty, so you must put in +at least one glossentry. The content of this entry +is irrelevant, it will not be rendered: + + +<glossary role="auto"> +<glossentry> +<glossterm>Irrelevant</glossterm> +<glossdef> +<para>If you can see this, the document was processed incorrectly. Use +the <parameter>glossary.collection</parameter> parameter.</para> +</glossdef> +</glossentry> +</glossary> + + +What about glossary divisions? If your glossary database has glossary +divisions and your automatic glossary contains at least +one glossdiv, the automic glossary will have divisions. +If the glossdiv is missing from either location, no divisions +will be rendered. + +Glossary entries (and divisions, if appropriate) in the glossary will +occur in precisely the order they occur in your database. + + + +Formatting the Document + +Finally, when you are ready to format your document, simply set the +glossary.collection parameter (in either a +customization layer or directly through your processor's interface) to +point to your global glossary. + +The stylesheets will format the glossary in your document as if +all of the entries implicilty referenced appeared there literally. + + +Limitations + +Glossary cross-references within the glossary are +not supported. For example, this will not work: + + +<glossentry> +<glossterm>gloss-1</glossterm> +<glossdef><para>A description that references <glossterm>gloss-2</glossterm>.</para> +<glossseealso>gloss-2</glossseealso> +</glossdef> +</glossentry> + + +If you put glossary cross-references in your glossary that way, +you'll get the cryptic error: Warning: +glossary.collection specified, but there are 0 automatic +glossaries. + +Instead, you must do two things: + + + +Markup your glossary using glossseealso: + + +<glossentry> +<glossterm>gloss-1</glossterm> +<glossdef><para>A description that references <glossterm>gloss-2</glossterm>.</para> +<glossseealso>gloss-2</glossseealso> +</glossdef> +</glossentry> + + + + +Make sure there is at least one glossterm reference to +gloss-2 in your document. The +easiest way to do that is probably within a remark in your +automatic glossary: + + +<glossary role="auto"> +<remark>Make sure there's a reference to <glossterm>gloss-2</glossterm>.</remark> +<glossentry> +<glossterm>Irrelevant</glossterm> +<glossdef> +<para>If you can see this, the document was processed incorrectly. Use +the <parameter>glossary.collection</parameter> parameter.</para> +</glossdef> +</glossentry> +</glossary> + + + + + + + + + + +glossary.as.blocks +boolean + + +glossary.as.blocks +Present glossarys using blocks instead of lists? + + + + +<xsl:param name="glossary.as.blocks" select="0"></xsl:param> + + + +Description + +If non-zero, glossarys will be formatted as +blocks. + +If you have long glossterms, proper list +markup in the FO case may produce unattractive lists. By setting this +parameter, you can force the stylesheets to produce block markup +instead of proper lists. + +You can override this setting with a processing instruction as the +child of glossary: dbfo +glossary-presentation="blocks" or dbfo +glossary-presentation="list" + + + + + + +glosslist.as.blocks +boolean + + +glosslist.as.blocks +Use blocks for glosslists? + + + + +<xsl:param name="glosslist.as.blocks" select="0"></xsl:param> + + + +Description + +See glossary.as.blocks. + + + + + + +glossentry.list.item.properties +attribute set + + +glossentry.list.item.properties +To add properties to each glossentry in a list. + + + +<xsl:attribute-set name="glossentry.list.item.properties"> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> + + +Description +These properties are added to the fo:list-item containing a +glossentry in a glossary when the glossary.as.blocks parameter +is zero. +Use this attribute-set to set +spacing between entries, for example. + + + + + + +glossterm.block.properties +attribute set + + +glossterm.block.properties +To add properties to the block of a glossentry's glossterm. + + + +<xsl:attribute-set name="glossterm.block.properties"> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="keep-together.within-column">always</xsl:attribute> +</xsl:attribute-set> + + +Description +These properties are added to the block containing a +glossary term in a glossary when the glossary.as.blocks parameter +is non-zero. +Use this attribute-set to set the space above and below, +font properties, +and any indent for the glossary term. + + + + + + +glossdef.block.properties +attribute set + + +glossdef.block.properties +To add properties to the block of a glossary definition. + + + +<xsl:attribute-set name="glossdef.block.properties"> + <xsl:attribute name="margin-{$direction.align.start}">.25in</xsl:attribute> +</xsl:attribute-set> + + +Description +These properties are added to the block containing a +glossary definition in a glossary when +the glossary.as.blocks parameter +is non-zero. +Use this attribute-set to set the space above and below, +any font properties, +and any indent for the glossary definition. + + + + + + +glossterm.list.properties +attribute set + + +glossterm.list.properties +To add properties to the glossterm in a list. + + + + +<xsl:attribute-set name="glossterm.list.properties"> +</xsl:attribute-set> + + +Description +These properties are added to the block containing a +glossary term in a glossary when the glossary.as.blocks parameter +is zero. +Use this attribute-set to set +font properties, for example. + + + + + + +glossdef.list.properties +attribute set + + +glossdef.list.properties +To add properties to the glossary definition in a list. + + + + +<xsl:attribute-set name="glossdef.list.properties"> +</xsl:attribute-set> + + +Description +These properties are added to the block containing a +glossary definition in a glossary when +the glossary.as.blocks parameter +is zero. +Use this attribute-set to set font properties, for example. + + + + + + +glossterm.width +length + + +glossterm.width +Width of glossterm in list presentation mode + + + + +<xsl:param name="glossterm.width">2in</xsl:param> + + + +Description + +This parameter specifies the width reserved for glossary terms when +a list presentation is used. + + + + + + +glossterm.separation +length + + +glossterm.separation +Separation between glossary terms and descriptions in list mode + + + + +<xsl:param name="glossterm.separation">0.25in</xsl:param> + + + +Description + +Specifies the miminum horizontal +separation between glossary terms and descriptions when +they are presented side-by-side using lists +when the glossary.as.blocks +is zero. + + + + + + +glossentry.show.acronym +list +no +yes +primary + + +glossentry.show.acronym +Display glossentry acronyms? + + + + +<xsl:param name="glossentry.show.acronym">no</xsl:param> + + + +Description + +A setting of yes means they should be displayed; +no means they shouldn't. If primary is used, +then they are shown as the primary text for the entry. + + +This setting controls both acronym and +abbrev elements in the glossentry. + + + + + + + +glossary.sort +boolean + + +glossary.sort +Sort glossentry elements? + + + + +<xsl:param name="glossary.sort" select="0"></xsl:param> + + + +Description + +If non-zero, then the glossentry elements within a +glossary, glossdiv, or glosslist are sorted on the glossterm, using +the current lang setting. If zero (the default), then +glossentry elements are not sorted and are presented +in document order. + + + + + +Miscellaneous + + +formal.procedures +boolean + + +formal.procedures +Selects formal or informal procedures + + + + +<xsl:param name="formal.procedures" select="1"></xsl:param> + + + +Description + +Formal procedures are numbered and always have a title. + + + + + + + +formal.title.placement +table + + +formal.title.placement +Specifies where formal object titles should occur + + + + +<xsl:param name="formal.title.placement"> +figure before +example before +equation before +table before +procedure before +task before +</xsl:param> + + + +Description + +Specifies where formal object titles should occur. For each formal object +type (figure, +example, +equation, +table, and procedure) +you can specify either the keyword +before or +after. + + + + + + +runinhead.default.title.end.punct +string + + +runinhead.default.title.end.punct +Default punctuation character on a run-in-head + + + +<xsl:param name="runinhead.default.title.end.punct">.</xsl:param> + + + +Description + +If non-zero, For a formalpara, use the specified +string as the separator between the title and following text. The period is the default value. + + + + + + +runinhead.title.end.punct +string + + +runinhead.title.end.punct +Characters that count as punctuation on a run-in-head + + + + +<xsl:param name="runinhead.title.end.punct">.!?:</xsl:param> + + + +Description + +Specify which characters are to be counted as punctuation. These +characters are checked for a match with the last character of the +title. If no match is found, the +runinhead.default.title.end.punct contents are +inserted. This is to avoid duplicated punctuation in the output. + + + + + + + +show.comments +boolean + + +show.comments +Display remark elements? + + + + +<xsl:param name="show.comments" select="1"></xsl:param> + + + +Description + +If non-zero, comments will be displayed, otherwise they +are suppressed. Comments here refers to the remark element +(which was called comment prior to DocBook +4.0), not XML comments (<-- like this -->) which are +unavailable. + + + + + + + +punct.honorific +string + + +punct.honorific +Punctuation after an honorific in a personal name. + + + + +<xsl:param name="punct.honorific">.</xsl:param> + + + +Description + +This parameter specifies the punctuation that should be added after an +honorific in a personal name. + + + + + + +segmentedlist.as.table +boolean + + +segmentedlist.as.table +Format segmented lists as tables? + + + + +<xsl:param name="segmentedlist.as.table" select="0"></xsl:param> + + + +Description + +If non-zero, segmentedlists will be formatted as +tables. + + + + + + +variablelist.as.blocks +boolean + + +variablelist.as.blocks +Format variablelists lists as blocks? + + + + +<xsl:param name="variablelist.as.blocks" select="0"></xsl:param> + + + +Description + +If non-zero, variablelists will be formatted as +blocks. + +If you have long terms, proper list markup in the FO case may produce +unattractive lists. By setting this parameter, you can force the stylesheets +to produce block markup instead of proper lists. + +You can override this setting with a processing instruction as the +child of variablelist: dbfo +list-presentation="blocks" or dbfo +list-presentation="list". + +When using list-presentation="list", +you can also control the amount of space used for the terms with +the dbfo term-width=".25in" processing instruction, +the termlength attribute on variablelist, +or allow the stylesheets to attempt to calculate the amount of space to leave based on the +number of letters in the longest term. + + + <variablelist> + <?dbfo list-presentation="list"?> + <?dbfo term-width="1.5in"?> + <?dbhtml list-presentation="table"?> + <?dbhtml term-width="1.5in"?> + <varlistentry> + <term>list</term> + <listitem> + <para> + Formatted as a list even if variablelist.as.blocks is set to 1. + </para> + </listitem> + </varlistentry> + </variablelist> + + + + + + + + + blockquote.properties + attribute set + + +blockquote.properties +To set the style for block quotations. + + + + +<xsl:attribute-set name="blockquote.properties"> +<xsl:attribute name="margin-{$direction.align.start}">0.5in</xsl:attribute> +<xsl:attribute name="margin-{$direction.align.end}">0.5in</xsl:attribute> +<xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> +<xsl:attribute name="space-after.optimum">1em</xsl:attribute> +<xsl:attribute name="space-after.maximum">2em</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The blockquote.properties attribute set specifies +the formating properties of block quotations. + + + + + + +ulink.show +boolean + + +ulink.show +Display URLs after ulinks? + + + + +<xsl:param name="ulink.show" select="1"></xsl:param> + + + +Description + +If non-zero, the URL of each ulink will +appear after the text of the link. If the text of the link and the URL +are identical, the URL is suppressed. + +See also ulink.footnotes. + +DocBook 5 does not have an ulink element. When processing +DocBoook 5 documents, ulink.show applies to all inline +elements that are marked up with xlink:href attributes +that point to external resources. + + + + + + + +ulink.footnotes +boolean + + +ulink.footnotes +Generate footnotes for ulinks? + + + + +<xsl:param name="ulink.footnotes" select="0"></xsl:param> + + + +Description + +If non-zero, and if ulink.show also is non-zero, +the URL of each ulink will appear as a footnote. + +DocBook 5 does not have an ulink element. When processing +DocBoook 5 documents, ulink.footnotes applies to all inline +elements that are marked up with xlink:href attributes +that point to external resources. + + + + + + + +ulink.hyphenate +string + + +ulink.hyphenate +Allow URLs to be automatically hyphenated + + + + +<xsl:param name="ulink.hyphenate"></xsl:param> + + + +Description + +If not empty, the specified character (or more generally, content) is +added to URLs after every character included in the string +in the ulink.hyphenate.chars parameter (default +is /). If the character in this parameter is a +Unicode soft hyphen (0x00AD) or Unicode zero-width space (0x200B), some FO +processors will be able to reasonably hyphenate long URLs. + +As of 28 Jan 2002, discretionary hyphens are more widely and correctly +supported than zero-width spaces for this purpose. + + + + + + +ulink.hyphenate.chars +string + + +ulink.hyphenate.chars +List of characters to allow ulink URLs to be automatically hyphenated on + + + + +<xsl:param name="ulink.hyphenate.chars">/</xsl:param> + + + +Description + +If the ulink.hyphenate is not empty, then +hyphenation of ulinks is turned on, and any +character contained in this parameter is treated as an allowable +hyphenation point. + +The default value is /, but the parameter +could be customized +to contain other URL characters, as for example: + +<xsl:param name="ulink.hyphenate.chars">:/@&?.#</xsl:param> + + + + + + + +shade.verbatim +boolean + + +shade.verbatim +Should verbatim environments be shaded? + + + +<xsl:param name="shade.verbatim" select="0"></xsl:param> + + +Description + +In the FO stylesheet, if this parameter is non-zero then the +shade.verbatim.style properties will be applied +to verbatim environments. + +In the HTML stylesheet, this parameter is now deprecated. Use +CSS instead. + + + + + + +shade.verbatim.style +attribute set + + +shade.verbatim.style +Properties that specify the style of shaded verbatim listings + + + + + +<xsl:attribute-set name="shade.verbatim.style"> + <xsl:attribute name="background-color">#E0E0E0</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties that specify the style of shaded verbatim listings. The +parameters specified (the border and background color) are added to +the styling of the xsl-fo output. A border might be specified as "thin +black solid" for example. See xsl-fo + + + + + + +hyphenate.verbatim +boolean + + +hyphenate.verbatim +Should verbatim environments be hyphenated on space characters? + + + +<xsl:param name="hyphenate.verbatim" select="0"></xsl:param> + + +Description + +If the lines of program listing are too long to fit into one +line it is quite common to split them at space and indicite by hook +arrow that code continues on the next line. You can turn on this +behaviour for programlisting, +screen and synopsis elements by +using this parameter. + +Note that you must also enable line wrapping for verbatim environments and +select appropriate hyphenation character (e.g. hook arrow). This can +be done using monospace.verbatim.properties +attribute set: + +<xsl:attribute-set name="monospace.verbatim.properties" + use-attribute-sets="verbatim.properties monospace.properties"> + <xsl:attribute name="wrap-option">wrap</xsl:attribute> + <xsl:attribute name="hyphenation-character">&#x25BA;</xsl:attribute> +</xsl:attribute-set> + +For a list of arrows available in Unicode see http://www.unicode.org/charts/PDF/U2190.pdf and http://www.unicode.org/charts/PDF/U2900.pdf and make sure that +selected character is available in the font you are using for verbatim +environments. + + + + + + +hyphenate.verbatim.characters +string + + +hyphenate.verbatim.characters +List of characters after which a line break can occur in listings + + + + +<xsl:param name="hyphenate.verbatim.characters"></xsl:param> + + + +Description + +If you enable hyphenate.verbatim line +breaks are allowed only on space characters. If this is not enough for +your document, you can specify list of additional characters after +which line break is allowed in this parameter. + + + + + + +use.svg +boolean + + +use.svg +Allow SVG in the result tree? + + + + +<xsl:param name="use.svg" select="1"></xsl:param> + + + +Description + +If non-zero, SVG will be considered an acceptable image format. SVG +is passed through to the result tree, so correct rendering of the resulting +diagram depends on the formatter (FO processor or web browser) that is used +to process the output from the stylesheet. + + + + + + +use.role.as.xrefstyle +boolean + + +use.role.as.xrefstyle +Use role attribute for +xrefstyle on xref? + + + + +<xsl:param name="use.role.as.xrefstyle" select="1"></xsl:param> + + + +Description + +In DocBook documents that conform to a schema older than V4.3, this parameter allows +role to serve the purpose of specifying the cross reference style. + +If non-zero, the role attribute on +xref will be used to select the cross reference style. +In DocBook V4.3, the xrefstyle attribute was added for this purpose. +If the xrefstyle attribute is present, +role will be ignored, regardless of the setting +of this parameter. + + + +Example + +The following small stylesheet shows how to configure the +stylesheets to make use of the cross reference style: + +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.0"> + +<xsl:import href="../xsl/html/docbook.xsl"/> + +<xsl:output method="html"/> + +<xsl:param name="local.l10n.xml" select="document('')"/> +<l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"> + <l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en"> + <l:context name="xref"> + <l:template name="chapter" style="title" text="Chapter %n, %t"/> + <l:template name="chapter" text="Chapter %n"/> + </l:context> + </l:l10n> +</l:i18n> + +</xsl:stylesheet> + +With this stylesheet, the cross references in the following document: + +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> +<book id="book"><title>Book</title> + +<preface> +<title>Preface</title> + +<para>Normal: <xref linkend="ch1"/>.</para> +<para>Title: <xref xrefstyle="title" linkend="ch1"/>.</para> + +</preface> + +<chapter id="ch1"> +<title>First Chapter</title> + +<para>Irrelevant.</para> + +</chapter> +</book> + +will appear as: + + +Normal: Chapter 1. +Title: Chapter 1, First Chapter. + + + + + + + +menuchoice.separator +string + + +menuchoice.separator +Separator between items of a menuchoice +other than guimenuitem and +guisubmenu + + + + +<xsl:param name="menuchoice.separator">+</xsl:param> + + + +Description + +Separator used to connect items of a menuchoice other +than guimenuitem and guisubmenu. The latter +elements are linked with menuchoice.menu.separator. + + + + + + + +menuchoice.menu.separator +string + + +menuchoice.menu.separator +Separator between items of a menuchoice +with guimenuitem or +guisubmenu + + + + +<xsl:param name="menuchoice.menu.separator"> → </xsl:param> + + + +Description + +Separator used to connect items of a menuchoice with +guimenuitem or guisubmenu. Other elements +are linked with menuchoice.separator. + +The default value is &#x2192;, which is the +&rarr; (right arrow) character entity. +The current FOP (0.20.5) requires setting the font-family +explicitly. + +The default value also includes spaces around the arrow, +which will allow a line to break. Replace the spaces with +&#xA0; (nonbreaking space) if you don't want those +spaces to break. + + + + + + + +default.float.class +string + + +default.float.class +Specifies the default float class + + + + +<xsl:param name="default.float.class"> + <xsl:choose> + <xsl:when test="contains($stylesheet.result.type,'html')">left</xsl:when> + <xsl:otherwise>before</xsl:otherwise> + </xsl:choose> +</xsl:param> + + + +Description + +Selects the direction in which a float should be placed. for +xsl-fo this is before, for html it is left. For Western texts, the +before direction is the top of the page. + + + + + + +footnote.number.format +list +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +footnote.number.format +Identifies the format used for footnote numbers + + + + +<xsl:param name="footnote.number.format">1</xsl:param> + + + +Description + +The footnote.number.format specifies the format +to use for footnote numeration (1, i, I, a, or A). + + + + + + +table.footnote.number.format +list +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +table.footnote.number.format +Identifies the format used for footnote numbers in tables + + + + +<xsl:param name="table.footnote.number.format">a</xsl:param> + + + +Description + +The table.footnote.number.format specifies the format +to use for footnote numeration (1, i, I, a, or A) in tables. + + + + + + +footnote.number.symbols + + + +footnote.number.symbols +Special characters to use as footnote markers + + + + +<xsl:param name="footnote.number.symbols"></xsl:param> + + + +Description + +If footnote.number.symbols is not the empty string, +footnotes will use the characters it contains as footnote symbols. For example, +*&#x2020;&#x2021;&#x25CA;&#x2720; will identify +footnotes with *, , , +, and . If there are more footnotes +than symbols, the stylesheets will fall back to numbered footnotes using +footnote.number.format. + +The use of symbols for footnotes depends on the ability of your +processor (or browser) to render the symbols you select. Not all systems are +capable of displaying the full range of Unicode characters. If the quoted characters +in the preceding paragraph are not displayed properly, that's a good indicator +that you may have trouble using those symbols for footnotes. + + + + + + +table.footnote.number.symbols +string + + +table.footnote.number.symbols +Special characters to use a footnote markers in tables + + + + +<xsl:param name="table.footnote.number.symbols"></xsl:param> + + + +Description + +If table.footnote.number.symbols is not the empty string, +table footnotes will use the characters it contains as footnote symbols. For example, +*&#x2020;&#x2021;&#x25CA;&#x2720; will identify +footnotes with *, , , +, and . If there are more footnotes +than symbols, the stylesheets will fall back to numbered footnotes using +table.footnote.number.format. + +The use of symbols for footnotes depends on the ability of your +processor (or browser) to render the symbols you select. Not all systems are +capable of displaying the full range of Unicode characters. If the quoted characters +in the preceding paragraph are not displayed properly, that's a good indicator +that you may have trouble using those symbols for footnotes. + + + + + + +footnote.properties +attribute set + + +footnote.properties +Properties applied to each footnote body + + + + + +<xsl:attribute-set name="footnote.properties"> + <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"></xsl:value-of></xsl:attribute> + <xsl:attribute name="font-size"><xsl:value-of select="$footnote.font.size"></xsl:value-of></xsl:attribute> + <xsl:attribute name="font-weight">normal</xsl:attribute> + <xsl:attribute name="font-style">normal</xsl:attribute> + <xsl:attribute name="text-align"><xsl:value-of select="$alignment"></xsl:value-of></xsl:attribute> + <xsl:attribute name="start-indent">0pt</xsl:attribute> + <xsl:attribute name="text-indent">0pt</xsl:attribute> + <xsl:attribute name="hyphenate"><xsl:value-of select="$hyphenate"></xsl:value-of></xsl:attribute> + <xsl:attribute name="wrap-option">wrap</xsl:attribute> + <xsl:attribute name="linefeed-treatment">treat-as-space</xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is applied to the footnote-block +for each footnote. +It can be used to set the +font-size, font-family, and other inheritable properties that will be +applied to all footnotes. + + + + + + +table.footnote.properties +attribute set + + +table.footnote.properties +Properties applied to each table footnote body + + + + + +<xsl:attribute-set name="table.footnote.properties"> + <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"></xsl:value-of></xsl:attribute> + <xsl:attribute name="font-size"><xsl:value-of select="$footnote.font.size"></xsl:value-of></xsl:attribute> + <xsl:attribute name="font-weight">normal</xsl:attribute> + <xsl:attribute name="font-style">normal</xsl:attribute> + <xsl:attribute name="space-before">2pt</xsl:attribute> + <xsl:attribute name="text-align"><xsl:value-of select="$alignment"></xsl:value-of></xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is applied to the footnote-block +for each table footnote. +It can be used to set the +font-size, font-family, and other inheritable properties that will be +applied to all table footnotes. + + + + + + +footnote.mark.properties +attribute set + + +footnote.mark.properties +Properties applied to each footnote mark + + + + + +<xsl:attribute-set name="footnote.mark.properties"> + <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"></xsl:value-of></xsl:attribute> + <xsl:attribute name="font-size">75%</xsl:attribute> + <xsl:attribute name="font-weight">normal</xsl:attribute> + <xsl:attribute name="font-style">normal</xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is applied to the footnote mark used +for each footnote. +It should contain only inline properties. + + +The property to make the mark a superscript is contained in the +footnote template itself, because the current version of FOP reports +an error if baseline-shift is used. + + + + + + + +footnote.sep.leader.properties +attribute set + + +footnote.sep.leader.properties +Properties associated with footnote separators + + + + +<xsl:attribute-set name="footnote.sep.leader.properties"> + <xsl:attribute name="color">black</xsl:attribute> + <xsl:attribute name="leader-pattern">rule</xsl:attribute> + <xsl:attribute name="leader-length">1in</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The styling for the rule line that separates the +footnotes from the body text. +These are properties applied to the fo:leader used as +the separator. + +If you want to do more than just set properties on +the leader element, then you can customize the template +named footnote.separator in +fo/pagesetup.xsl. + + + + + + +xref.with.number.and.title +boolean + + +xref.with.number.and.title +Use number and title in cross references + + + + +<xsl:param name="xref.with.number.and.title" select="1"></xsl:param> + + + +Description + +A cross reference may include the number (for example, the number of +an example or figure) and the title which is a required child of some +targets. This parameter inserts both the relevant number as well as +the title into the link. + + + + + + +superscript.properties +attribute set + + +superscript.properties +Properties associated with superscripts + + + + +<xsl:attribute-set name="superscript.properties"> + <xsl:attribute name="font-size">75%</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Specifies styling properties for superscripts. + + + + + + +subscript.properties +attribute set + + +subscript.properties +Properties associated with subscripts + + + + +<xsl:attribute-set name="subscript.properties"> + <xsl:attribute name="font-size">75%</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Specifies styling properties for subscripts. + + + + + + +pgwide.properties +attribute set + + +pgwide.properties +Properties to make a figure or table page wide. + + + + + +<xsl:attribute-set name="pgwide.properties"> + <xsl:attribute name="start-indent">0pt</xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is used to set the properties +that make a figure or table "page wide" in fo output. +It comes into effect when an attribute pgwide="1" +is used. + + + +By default, it sets start-indent +to 0pt. +In a stylesheet that sets the parameter +body.start.indent +to a non-zero value in order to indent body text, +this attribute set can be used to outdent pgwide +figures to the start margin. + + +If a document uses a multi-column page layout, +then this attribute set could try setting span +to a value of all. However, this may +not work with some processors because a span property must be on an +fo:block that is a direct child of fo:flow. It may work in +some processors anyway. + + + + + + + +highlight.source +boolean + + +highlight.source +Should the content of programlisting +be syntactically highlighted? + + + + +<xsl:param name="highlight.source" select="0"></xsl:param> + + + +Description + +When this parameter is non-zero, the stylesheets will try to do syntax highlighting of the +content of programlisting elements. You specify the language for each programlisting +by using the language attribute. The highlight.default.language +parameter can be used to specify the language for programlistings without a language +attribute. Syntax highlighting also works for screen and synopsis elements. + +The actual highlighting work is done by the XSLTHL extension module. This is an external Java library that has to be +downloaded separately (see below). + + +In order to use this extension, you must + +add xslthl-2.x.x.jar to your Java classpath. The latest version is available +from the XSLT syntax highlighting project +at SourceForge. + + +use a customization layer in which you import one of the following stylesheet modules: + + + html/highlight.xsl + + + + xhtml/highlight.xsl + + + + xhtml-1_1/highlight.xsl + + + + fo/highlight.xsl + + + + + +let either the xslthl.config Java system property or the +highlight.xslthl.config parameter point to the configuration file for syntax +highlighting (using URL syntax). DocBook XSL comes with a ready-to-use configuration file, +highlighting/xslthl-config.xml. + + + +The extension works with Saxon 6.5.x and Xalan-J. (Saxon 8.5 or later is also supported, but since it is +an XSLT 2.0 processor it is not guaranteed to work with DocBook XSL in all circumstances.) + +The following is an example of a Saxon 6 command adapted for syntax highlighting, to be used on Windows: + + +java -cp c:/Java/saxon.jar;c:/Java/xslthl-2.0.1.jar +-Dxslthl.config=file:///c:/docbook-xsl/highlighting/xslthl-config.xml com.icl.saxon.StyleSheet +-o test.html test.xml myhtml.xsl + + + + + + + +highlight.xslthl.config +uri + + +highlight.xslthl.config +Location of XSLTHL configuration file + + + + +<xsl:param name="highlight.xslthl.config"></xsl:param> + + + +Description + +This location has precedence over the corresponding Java property. + +Please note that usually you have to specify location as URL not +just as a simple path on the local +filesystem. E.g. file:///home/user/xslthl/my-xslthl-config.xml. + + + + + + + + +highlight.default.language +string + + +highlight.default.language +Default language of programlisting + + + + +<xsl:param name="highlight.default.language"></xsl:param> + + + +Description + +This language is used when there is no language attribute on programlisting. + + + + + + +email.delimiters.enabled +boolean + + +email.delimiters.enabled +Generate delimiters around email addresses? + + + + +<xsl:param name="email.delimiters.enabled" select="1"></xsl:param> + + + +Description + +If non-zero, delimiters + +For delimiters, the +stylesheets are currently hard-coded to output angle +brackets. + +are generated around e-mail addresses +(the output of the email element). + + + + + + +email.mailto.enabled +boolean + + +email.mailto.enabled +Generate mailto: links for email addresses? + + + + +<xsl:param name="email.mailto.enabled" select="0"></xsl:param> + + + +Description + +If non-zero the generated output for the email element +will be a clickable mailto: link that brings up the default mail client +on the system. + + + + + + +section.container.element +list +block +wrapper + + +section.container.element +Select XSL-FO element name to contain sections + + + + +<xsl:param name="section.container.element">block</xsl:param> + + + +Description + +Selects the element name for outer container of +each section. The choices are block (default) +or wrapper. +The fo: namespace prefix is added +by the stylesheet to form the full element name. + + +This element receives the section id +attribute and the appropriate section level attribute-set. + + +Changing this parameter to wrapper +is only necessary when producing multi-column output +that contains page-wide spans. Using fo:wrapper +avoids the nesting of fo:block +elements that prevents spans from working (the standard says +a span must be on a block that is a direct child of +fo:flow). + + +If set to wrapper, the +section attribute-sets only support properties +that are inheritable. That's because there is no +block to apply them to. Properties such as +font-family are inheritable, but properties such as +border are not. + + +Only some XSL-FO processors need to use this parameter. +The Antenna House processor, for example, will handle +spans in nested blocks without changing the element name. +The RenderX XEP product and FOP follow the XSL-FO standard +and need to use wrapper. + + + + + + + +monospace.verbatim.font.width +length + + +monospace.verbatim.font.width +Width of a single monospace font character + + + + +<xsl:param name="monospace.verbatim.font.width">0.60em</xsl:param> + + + +Description + +Specifies with em units the width of a single character +of the monospace font. The default value is 0.6em. + +This parameter is only used when a screen +or programlisting element has a +width attribute, which is +expressed as a plain integer to indicate the maximum character count +of each line. +To convert this character count to an actual maximum width +measurement, the width of the font characters must be provided. +Different monospace fonts have different character width, +so this parameter should be adjusted to fit the +monospace font being used. + + + + + + + +exsl.node.set.available +boolean + + +exsl.node.set.available +Is the test function-available('exsl:node-set') true? + + + +<xsl:param name="exsl.node.set.available"> + <xsl:choose> + <xsl:when exsl:foo="" test="function-available('exsl:node-set') or contains(system-property('xsl:vendor'), 'Apache Software Foundation')">1</xsl:when> + <xsl:otherwise>0</xsl:otherwise> + </xsl:choose> +</xsl:param> + + + +Description + +If non-zero, +then the exsl:node-set() function is available to be used in +the stylesheet. +If zero, then the function is not available. +This param automatically detects the presence of +the function and does not normally need to be set manually. + +This param was created to handle a long-standing +bug in the Xalan processor that fails to detect the +function even though it is available. + + + + + + +bookmarks.collapse +boolean + + +bookmarks.collapse +Specifies the initial state of bookmarks + + + + +<xsl:param name="bookmarks.collapse" select="1"></xsl:param> + + + +Description + +If non-zero, the bookmark tree is collapsed so that only the +top-level bookmarks are displayed initially. Otherwise, the whole tree +of bookmarks is displayed. + +This parameter currently works with FOP 0.93 or later. + + + + +Graphics + + +graphic.default.extension +string + + +graphic.default.extension +Default extension for graphic filenames + + + +<xsl:param name="graphic.default.extension"></xsl:param> + + +Description + +If a graphic or mediaobject +includes a reference to a filename that does not include an extension, +and the format attribute is +unspecified, the default extension will be used. + + + + + + + +default.image.width +length + + +default.image.width +The default width of images + + + + +<xsl:param name="default.image.width"></xsl:param> + + + +Description + +If specified, this value will be used for the +width attribute on images that do not specify any +viewport dimensions. + + + + + + +preferred.mediaobject.role +string + + +preferred.mediaobject.role +Select which mediaobject to use based on +this value of an object's role attribute. + + + + + +<xsl:param name="preferred.mediaobject.role"></xsl:param> + + + +Description + +A mediaobject may contain several objects such as imageobjects. +If the parameter use.role.for.mediaobject is +non-zero, then the role attribute on +imageobjects and other objects within a +mediaobject container will be used to select which object +will be used. If one of the objects has a role value that matches the +preferred.mediaobject.role parameter, then it +has first priority for selection. If more than one has such a role +value, the first one is used. + + +See the use.role.for.mediaobject parameter +for the sequence of selection. + + + + + +use.role.for.mediaobject +boolean + + +use.role.for.mediaobject +Use role attribute +value for selecting which of several objects within a mediaobject to use. + + + + + +<xsl:param name="use.role.for.mediaobject" select="1"></xsl:param> + + + +Description + +If non-zero, the role attribute on +imageobjects or other objects within a mediaobject container will be used to select which object will be +used. + + +The order of selection when then parameter is non-zero is: + + + + If the stylesheet parameter preferred.mediaobject.role has a value, then the object whose role equals that value is selected. + + +Else if an object's role attribute has a value of +html for HTML processing or +fo for FO output, then the first +of such objects is selected. + + + +Else the first suitable object is selected. + + + +If the value of +use.role.for.mediaobject +is zero, then role attributes are not considered +and the first suitable object +with or without a role value is used. + + + + + + +ignore.image.scaling +boolean + + +ignore.image.scaling +Tell the stylesheets to ignore the author's image scaling attributes + + + + +<xsl:param name="ignore.image.scaling" select="0"></xsl:param> + + + +Description + +If non-zero, the scaling attributes on graphics and media objects are +ignored. + + + + + + +img.src.path +string + + +img.src.path +Path to HTML/FO image files + + + +<xsl:param name="img.src.path"></xsl:param> + + +Description + +Add a path prefix to the value of the fileref +attribute of graphic, inlinegraphic, and imagedata elements. The resulting +compound path is used in the output as the value of the src +attribute of img (HTML) or external-graphic (FO). + + + +The path given by img.src.path could be relative to the directory where the HTML/FO +files are created, or it could be an absolute URI. +The default value is empty. +Be sure to include a trailing slash if needed. + + +This prefix is not applied to any filerefs that start +with "/" or contain "//:". + + + + + + + +keep.relative.image.uris +boolean + + +keep.relative.image.uris +Should image URIs be resolved against xml:base? + + + + + +<xsl:param name="keep.relative.image.uris" select="0"></xsl:param> + + + +Description + +If non-zero, relative URIs (in, for example +fileref attributes) will be used in the generated +output. Otherwise, the URIs will be made absolute with respect to the +base URI. + +Note that the stylesheets calculate (and use) the absolute form +for some purposes, this only applies to the resulting output. + + + + +Pagination and General Styles + +
Understanding XSL FO Margins + +To make sense of the parameters in this section, it's useful to +consider . + +
+ Page Model + + + + + + + + Figure showing page margins + + This figure shows the physical page with the various FO page regions + identified. + + +
+ +First, let's consider the regions on the page. + +The white region is the physical page. Its dimensions are determined by +the page.height and page.width +parameters. + +The yellow region is the region-body. The size and placement of +the region body is constrained by the dimensions labelled in the +figure. + +The pink region at the top of the page is the region-before. The +darker area inside the region-before is the header text. In XSL, the default +display alignment for a region is before, but the +DocBook stylesheets still explicitly make it before. That's +why the darker area is at the top. + +The pink region at the bottom of the page is the region-after. +The darker area is the footer text. In XSL, the default display +alignment for a region is before, +but the DocBook stylesheets explicitly make it +after. That's why the darker area is at the bottom. + +The dimensions in the figure are: + + +The page-master margin-top. + +The region-before extent. + +The region-body margin-top. + +The region-after extent. + +The page-master margin-bottom. + +The region-body margin-bottom. + +The sum of the page-master margin-left and the +region-body margin-left. In DocBook, the region-body margin-left is +zero by default, so this is simply the page-master margin-left. + +The sum of the page-master margin-right and the +region-body margin-right. In DocBook, the region-body margin-right is +zero by default, so this is simply the page-master margin-right. + + + +
+
+ + + +page.height +length + + +page.height +The height of the physical page + + + +<xsl:param name="page.height"> + <xsl:choose> + <xsl:when test="$page.orientation = 'portrait'"> + <xsl:value-of select="$page.height.portrait"></xsl:value-of> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$page.width.portrait"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> +</xsl:param> + + +Description + +The page height is generally calculated from the +paper.type and +page.orientation parameters. + + + + + + + +page.height.portrait +length + + +page.height.portrait +Specify the physical size of the long edge of the page + + + +<xsl:param name="page.height.portrait"> + <xsl:choose> + <xsl:when test="$paper.type = 'A4landscape'">210mm</xsl:when> + <xsl:when test="$paper.type = 'USletter'">11in</xsl:when> + <xsl:when test="$paper.type = 'USlandscape'">8.5in</xsl:when> + <xsl:when test="$paper.type = '4A0'">2378mm</xsl:when> + <xsl:when test="$paper.type = '2A0'">1682mm</xsl:when> + <xsl:when test="$paper.type = 'A0'">1189mm</xsl:when> + <xsl:when test="$paper.type = 'A1'">841mm</xsl:when> + <xsl:when test="$paper.type = 'A2'">594mm</xsl:when> + <xsl:when test="$paper.type = 'A3'">420mm</xsl:when> + <xsl:when test="$paper.type = 'A4'">297mm</xsl:when> + <xsl:when test="$paper.type = 'A5'">210mm</xsl:when> + <xsl:when test="$paper.type = 'A6'">148mm</xsl:when> + <xsl:when test="$paper.type = 'A7'">105mm</xsl:when> + <xsl:when test="$paper.type = 'A8'">74mm</xsl:when> + <xsl:when test="$paper.type = 'A9'">52mm</xsl:when> + <xsl:when test="$paper.type = 'A10'">37mm</xsl:when> + <xsl:when test="$paper.type = 'B0'">1414mm</xsl:when> + <xsl:when test="$paper.type = 'B1'">1000mm</xsl:when> + <xsl:when test="$paper.type = 'B2'">707mm</xsl:when> + <xsl:when test="$paper.type = 'B3'">500mm</xsl:when> + <xsl:when test="$paper.type = 'B4'">353mm</xsl:when> + <xsl:when test="$paper.type = 'B5'">250mm</xsl:when> + <xsl:when test="$paper.type = 'B6'">176mm</xsl:when> + <xsl:when test="$paper.type = 'B7'">125mm</xsl:when> + <xsl:when test="$paper.type = 'B8'">88mm</xsl:when> + <xsl:when test="$paper.type = 'B9'">62mm</xsl:when> + <xsl:when test="$paper.type = 'B10'">44mm</xsl:when> + <xsl:when test="$paper.type = 'C0'">1297mm</xsl:when> + <xsl:when test="$paper.type = 'C1'">917mm</xsl:when> + <xsl:when test="$paper.type = 'C2'">648mm</xsl:when> + <xsl:when test="$paper.type = 'C3'">458mm</xsl:when> + <xsl:when test="$paper.type = 'C4'">324mm</xsl:when> + <xsl:when test="$paper.type = 'C5'">229mm</xsl:when> + <xsl:when test="$paper.type = 'C6'">162mm</xsl:when> + <xsl:when test="$paper.type = 'C7'">114mm</xsl:when> + <xsl:when test="$paper.type = 'C8'">81mm</xsl:when> + <xsl:when test="$paper.type = 'C9'">57mm</xsl:when> + <xsl:when test="$paper.type = 'C10'">40mm</xsl:when> + <xsl:otherwise>11in</xsl:otherwise> + </xsl:choose> +</xsl:param> + + +Description + +The portrait page height is the length of the long +edge of the physical page. + + + + + + + +page.margin.bottom +length + + +page.margin.bottom +The bottom margin of the page + + + + +<xsl:param name="page.margin.bottom">0.5in</xsl:param> + + + +Description + +The bottom page margin is the distance from the bottom of the region-after +to the physical bottom of the page. + + + + + + + +page.margin.inner +length + + +page.margin.inner +The inner page margin + + + +<xsl:param name="page.margin.inner"> + <xsl:choose> + <xsl:when test="$double.sided != 0">1.25in</xsl:when> + <xsl:otherwise>1in</xsl:otherwise> + </xsl:choose> +</xsl:param> + + +Description + +The inner page margin is the distance from bound edge of the +page to the first column of text. + +The inner page margin is the distance from bound edge of the +page to the outer edge of the first column of text. + +In left-to-right text direction, +this is the left margin of recto (front side) pages. +For single-sided output, it is the left margin +of all pages. + +In right-to-left text direction, +this is the right margin of recto pages. +For single-sided output, this is the +right margin of all pages. + + +Current versions (at least as of version 4.13) +of the XEP XSL-FO processor do not +correctly handle these margin settings for documents +with right-to-left text direction. +The workaround in that situation is to reverse +the values for page.margin.inner +and page.margin.outer, until +this bug is fixed by RenderX. It does not affect documents +with left-to-right text direction. + + + + + + + +page.margin.outer +length + + +page.margin.outer +The outer page margin + + + +<xsl:param name="page.margin.outer"> + <xsl:choose> + <xsl:when test="$double.sided != 0">0.75in</xsl:when> + <xsl:otherwise>1in</xsl:otherwise> + </xsl:choose> +</xsl:param> + + +Description + +The outer page margin is the distance from non-bound edge of the +page to the outer edge of the last column of text. + +In left-to-right text direction, +this is the right margin of recto (front side) pages. +For single-sided output, it is the right margin +of all pages. + +In right-to-left text direction, +this is the left margin of recto pages. +For single-sided output, this is the +left margin of all pages. + + +Current versions (at least as of version 4.13) +of the XEP XSL-FO processor do not +correctly handle these margin settings for documents +with right-to-left text direction. +The workaround in that situation is to reverse +the values for page.margin.inner +and page.margin.outer, until +this bug is fixed by RenderX. It does not affect documents +with left-to-right text direction. + + + + + + + +page.margin.top +length + + +page.margin.top +The top margin of the page + + + + +<xsl:param name="page.margin.top">0.5in</xsl:param> + + + +Description + +The top page margin is the distance from the physical top of the +page to the top of the region-before. + + + + + + +page.orientation +list +portrait +landscape + + +page.orientation +Select the page orientation + + + + +<xsl:param name="page.orientation">portrait</xsl:param> + + + +Description + + Select one from portrait or landscape. +In portrait orientation, the short edge is horizontal; in +landscape orientation, it is vertical. + + + + + + + +page.width +length + + +page.width +The width of the physical page + + + +<xsl:param name="page.width"> + <xsl:choose> + <xsl:when test="$page.orientation = 'portrait'"> + <xsl:value-of select="$page.width.portrait"></xsl:value-of> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$page.height.portrait"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> +</xsl:param> + + +Description + +The page width is generally calculated from the +paper.type and +page.orientation parameters. + + + + + + +page.width.portrait +length + + +page.width.portrait +Specify the physical size of the short edge of the page + + + +<xsl:param name="page.width.portrait"> + <xsl:choose> + <xsl:when test="$paper.type = 'USletter'">8.5in</xsl:when> + <xsl:when test="$paper.type = '4A0'">1682mm</xsl:when> + <xsl:when test="$paper.type = '2A0'">1189mm</xsl:when> + <xsl:when test="$paper.type = 'A0'">841mm</xsl:when> + <xsl:when test="$paper.type = 'A1'">594mm</xsl:when> + <xsl:when test="$paper.type = 'A2'">420mm</xsl:when> + <xsl:when test="$paper.type = 'A3'">297mm</xsl:when> + <xsl:when test="$paper.type = 'A4'">210mm</xsl:when> + <xsl:when test="$paper.type = 'A5'">148mm</xsl:when> + <xsl:when test="$paper.type = 'A6'">105mm</xsl:when> + <xsl:when test="$paper.type = 'A7'">74mm</xsl:when> + <xsl:when test="$paper.type = 'A8'">52mm</xsl:when> + <xsl:when test="$paper.type = 'A9'">37mm</xsl:when> + <xsl:when test="$paper.type = 'A10'">26mm</xsl:when> + <xsl:when test="$paper.type = 'B0'">1000mm</xsl:when> + <xsl:when test="$paper.type = 'B1'">707mm</xsl:when> + <xsl:when test="$paper.type = 'B2'">500mm</xsl:when> + <xsl:when test="$paper.type = 'B3'">353mm</xsl:when> + <xsl:when test="$paper.type = 'B4'">250mm</xsl:when> + <xsl:when test="$paper.type = 'B5'">176mm</xsl:when> + <xsl:when test="$paper.type = 'B6'">125mm</xsl:when> + <xsl:when test="$paper.type = 'B7'">88mm</xsl:when> + <xsl:when test="$paper.type = 'B8'">62mm</xsl:when> + <xsl:when test="$paper.type = 'B9'">44mm</xsl:when> + <xsl:when test="$paper.type = 'B10'">31mm</xsl:when> + <xsl:when test="$paper.type = 'C0'">917mm</xsl:when> + <xsl:when test="$paper.type = 'C1'">648mm</xsl:when> + <xsl:when test="$paper.type = 'C2'">458mm</xsl:when> + <xsl:when test="$paper.type = 'C3'">324mm</xsl:when> + <xsl:when test="$paper.type = 'C4'">229mm</xsl:when> + <xsl:when test="$paper.type = 'C5'">162mm</xsl:when> + <xsl:when test="$paper.type = 'C6'">114mm</xsl:when> + <xsl:when test="$paper.type = 'C7'">81mm</xsl:when> + <xsl:when test="$paper.type = 'C8'">57mm</xsl:when> + <xsl:when test="$paper.type = 'C9'">40mm</xsl:when> + <xsl:when test="$paper.type = 'C10'">28mm</xsl:when> + <xsl:otherwise>8.5in</xsl:otherwise> + </xsl:choose> +</xsl:param> + + +Description + +The portrait page width is the length of the short +edge of the physical page. + + + + + + + +paper.type +list +open +open +USletter8.5x11in +USlandscape11x8.5in +USlegal8.5inx14in +USlegallandscape14inx8.5in +4A02378x1682mm +2A01682x1189mm +A01189x841mm +A1841x594mm +A2594x420mm +A3420x297mm +A4297x210mm +A5210x148mm +A6148x105mm +A7105x74mm +A874x52mm +A952x37mm +A1037x26mm +B01414x1000mm +B11000x707mm +B2707x500mm +B3500x353mm +B4353x250mm +B5250x176mm +B6176x125mm +B7125x88mm +B888x62mm +B962x44mm +B1044x31mm +C01297x917mm +C1917x648mm +C2648x458mm +C3458x324mm +C4324x229mm +C5229x162mm +C6162x114mm +C7114x81mm +C881x57mm +C957x40mm +C1040x28mm + + +paper.type +Select the paper type + + + + +<xsl:param name="paper.type">USletter</xsl:param> + + + +Description + +The paper type is a convenient way to specify the paper size. +The list of known paper sizes includes USletter and most of the A, +B, and C sizes. See page.width.portrait, for example. + + + + + + + + + +double.sided +boolean + + +double.sided +Is the document to be printed double sided? + + + + +<xsl:param name="double.sided" select="0"></xsl:param> + + + +Description + +Double-sided documents are printed with a slightly wider margin +on the binding edge of the page. + +FIXME: The current set of parameters does not take writing direction +into account. + + + + + + +body.margin.bottom +length + + +body.margin.bottom +The bottom margin of the body text + + + + +<xsl:param name="body.margin.bottom">0.5in</xsl:param> + + + +Description + +The body bottom margin is the distance from the last line of text +in the page body to the bottom of the region-after. + + + + + + + +body.margin.top +length + + +body.margin.top +To specify the size of the top margin of a page + + + + +<xsl:param name="body.margin.top">0.5in</xsl:param> + + + +Description + +The body top margin is the distance from the top of the +region-before to the first line of text in the page body. + + + + + + +body.start.indent +length + + +body.start.indent +The start-indent for the body text + + + + +<xsl:param name="body.start.indent"> + <xsl:choose> + <xsl:when test="$fop.extensions != 0">0pt</xsl:when> + <xsl:when test="$passivetex.extensions != 0">0pt</xsl:when> + <xsl:otherwise>4pc</xsl:otherwise> + </xsl:choose> +</xsl:param> + + + +Description + +This parameter provides +the means of indenting the body text relative to +section titles. +For left-to-right text direction, it indents the left side. +For right-to-left text direction, it indents the right side. +It is used in place of the +title.margin.left for +all XSL-FO processors except FOP 0.25. +It enables support for side floats to appear +in the indented margin area. + +This start-indent property is added to the fo:flow +for certain page sequences. Which page-sequences it is +applied to is determined by the template named +set.flow.properties. +By default, that template adds it to the flow +for page-sequences using the body +master-reference, as well as appendixes and prefaces. + +If this parameter is used, section titles should have +a start-indent value of 0pt if they are to be +outdented relative to the body text. + + +If you are using FOP, then set this parameter to a zero +width value and set the title.margin.left +parameter to the negative value of the desired indent. + + +See also body.end.indent and +title.margin.left. + + + + + + + +body.end.indent +length + + +body.end.indent +The end-indent for the body text + + + + +<xsl:param name="body.end.indent">0pt</xsl:param> + + + +Description + +This end-indent property is added to the fo:flow +for certain page sequences. Which page-sequences it is +applied to is determined by the template named +set.flow.properties. +By default, that template adds it to the flow +for page-sequences using the body +master-reference, as well as appendixes and prefaces. + + +See also body.start.indent. + + + + + + + +alignment + list + open + left + start + right + end + center + justify + + +alignment +Specify the default text alignment + + + +<xsl:param name="alignment">justify</xsl:param> + + +Description + +The default text alignment is used for most body text. +Allowed values are +left, +right, +start, +end, +center, +justify. +The default value is justify. + + + + + + + +hyphenate +list +closed +true +false + + +hyphenate +Specify hyphenation behavior + + + +<xsl:param name="hyphenate">true</xsl:param> + + +Description + +If true, words may be hyphenated. Otherwise, they may not. + + + + + + + +line-height +string + + +line-height +Specify the line-height property + + + + +<xsl:param name="line-height">normal</xsl:param> + + + +Description + +Sets the line-height property. + + + + + + +column.count.back +integer + + +column.count.back +Number of columns on back matter pages + + + + +<xsl:param name="column.count.back" select="1"></xsl:param> + + + +Description + +Number of columns on back matter (appendix, glossary, etc.) pages. + + + + + + +column.count.body +integer + + +column.count.body +Number of columns on body pages + + + + +<xsl:param name="column.count.body" select="1"></xsl:param> + + + +Description + +Number of columns on body pages. + + + + + + +column.count.front +integer + + +column.count.front +Number of columns on front matter pages + + + + +<xsl:param name="column.count.front" select="1"></xsl:param> + + + +Description + +Number of columns on front matter (dedication, preface, etc.) pages. + + + + + + +column.count.index +integer + + +column.count.index +Number of columns on index pages + + + + +<xsl:param name="column.count.index">2</xsl:param> + + + +Description + +Number of columns on index pages. + + + + + + +column.count.lot +integer + + +column.count.lot +Number of columns on a 'List-of-Titles' page + + + + +<xsl:param name="column.count.lot" select="1"></xsl:param> + + + +Description + +Number of columns on a page sequence containing the Table of Contents, +List of Figures, etc. + + + + + + +column.count.titlepage +integer + + +column.count.titlepage +Number of columns on a title page + + + + +<xsl:param name="column.count.titlepage" select="1"></xsl:param> + + + +Description + +Number of columns on a title page + + + + + + +column.gap.back +length + + +column.gap.back +Gap between columns in back matter + + + + +<xsl:param name="column.gap.back">12pt</xsl:param> + + + +Description + +Specifies the gap between columns in back matter (if +column.count.back is greater than one). + + + + + + +column.gap.body +length + + +column.gap.body +Gap between columns in the body + + + + +<xsl:param name="column.gap.body">12pt</xsl:param> + + + +Description + +Specifies the gap between columns in body matter (if +column.count.body is greater than one). + + + + + + +column.gap.front +length + + +column.gap.front +Gap between columns in the front matter + + + + +<xsl:param name="column.gap.front">12pt</xsl:param> + + + +Description + +Specifies the gap between columns in front matter (if +column.count.front is greater than one). + + + + + + +column.gap.index +length + + +column.gap.index +Gap between columns in the index + + + + +<xsl:param name="column.gap.index">12pt</xsl:param> + + + +Description + +Specifies the gap between columns in indexes (if +column.count.index is greater than one). + + + + + + +column.gap.lot +length + + +column.gap.lot +Gap between columns on a 'List-of-Titles' page + + + + +<xsl:param name="column.gap.lot">12pt</xsl:param> + + + +Description + +Specifies the gap between columns on 'List-of-Titles' pages (if +column.count.lot is greater than one). + + + + + + +column.gap.titlepage +length + + +column.gap.titlepage +Gap between columns on title pages + + + + +<xsl:param name="column.gap.titlepage">12pt</xsl:param> + + + +Description + +Specifies the gap between columns on title pages (if +column.count.titlepage is greater than one). + + + + + + + +region.after.extent +length + + +region.after.extent +Specifies the height of the footer. + + + + +<xsl:param name="region.after.extent">0.4in</xsl:param> + + + +Description + +The region after extent is the height of the area where footers +are printed. + + + + + + + +region.before.extent +length + + +region.before.extent +Specifies the height of the header + + + + +<xsl:param name="region.before.extent">0.4in</xsl:param> + + + +Description + +The region before extent is the height of the area where headers +are printed. + + + + + + + +default.units +list +cm +mm +in +pt +pc +px +em + + +default.units +Default units for an unqualified dimension + + + + +<xsl:param name="default.units">pt</xsl:param> + + + +Description + +If an unqualified dimension is encountered (for example, in a +graphic width), the default.units will be used for the +units. Unqualified dimensions are not allowed in XSL Formatting Objects. + + + + + + + +normal.para.spacing +attribute set + + +normal.para.spacing +What space do you want between normal paragraphs + + + +<xsl:attribute-set name="normal.para.spacing"> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> + +Description +Specify the spacing required between normal paragraphs + + + + + +body.font.master + number + + +body.font.master +Specifies the default point size for body text + + + + +<xsl:param name="body.font.master">10</xsl:param> + + + +Description + +The body font size is specified in two parameters +(body.font.master and body.font.size) +so that math can be performed on the font size by XSLT. + + + + + + + +body.font.size +length + + +body.font.size +Specifies the default font size for body text + + + + +<xsl:param name="body.font.size"> + <xsl:value-of select="$body.font.master"></xsl:value-of><xsl:text>pt</xsl:text> +</xsl:param> + + +Description + +The body font size is specified in two parameters +(body.font.master and body.font.size) +so that math can be performed on the font size by XSLT. + + + + + + + +footnote.font.size +length + + +footnote.font.size +The font size for footnotes + + + +<xsl:param name="footnote.font.size"> + <xsl:value-of select="$body.font.master * 0.8"></xsl:value-of><xsl:text>pt</xsl:text> +</xsl:param> + + +Description + +The footnote font size is used for...footnotes! + + + + + + + +title.margin.left +length + + +title.margin.left +Adjust the left margin for titles + + + + +<xsl:param name="title.margin.left"> + <xsl:choose> + <xsl:when test="$fop.extensions != 0">-4pc</xsl:when> + <xsl:when test="$passivetex.extensions != 0">0pt</xsl:when> + <xsl:otherwise>0pt</xsl:otherwise> + </xsl:choose> +</xsl:param> + + + +Description + +This parameter provides +the means of adjusting the left margin for titles +when the XSL-FO processor being used is +an old version of FOP (0.25 and earlier). +It is only useful when the fop.extensions +is nonzero. + +The left margin of the body region +is calculated to include this space, +and titles are outdented to the left outside +the body region by this amount, +effectively leaving titles at the intended left margin +and the body text indented. +Currently this method is only used for old FOP because +it cannot properly use the body.start.indent +parameter. + + +The default value when the fop.extensions +parameter is nonzero is -4pc, which means the +body text is indented 4 picas relative to +the titles. +The default value when the fop.extensions +parameter equals zero is 0pt, and +the body indent should instead be specified +using the body.start.indent +parameter. + + +If you set the value to zero, be sure to still include +a unit indicator such as 0pt, or +the FO processor will report errors. + + + + + + + +draft.mode +list +no +yes +maybe + + +draft.mode +Select draft mode + + + + +<xsl:param name="draft.mode">no</xsl:param> + + + +Description + +Selects draft mode. If draft.mode is +yes, the entire document will be treated +as a draft. If it is no, the entire document +will be treated as a final copy. If it is maybe, +individual sections will be treated as draft or final independently, depending +on how their status attribute is set. + + + + + + + +draft.watermark.image +uri + + +draft.watermark.image +The URI of the image to be used for draft watermarks + + + + +<xsl:param name="draft.watermark.image">images/draft.png</xsl:param> + + + +Description + +The image to be used for draft watermarks. + + + + + + +headers.on.blank.pages +boolean + + +headers.on.blank.pages +Put headers on blank pages? + + + + +<xsl:param name="headers.on.blank.pages" select="1"></xsl:param> + + + +Description + +If non-zero, headers will be placed on blank pages. + + + + + + +footers.on.blank.pages +boolean + + +footers.on.blank.pages +Put footers on blank pages? + + + + +<xsl:param name="footers.on.blank.pages" select="1"></xsl:param> + + + +Description + +If non-zero, footers will be placed on blank pages. + + + + + + +header.rule +boolean + + +header.rule +Rule under headers? + + + + +<xsl:param name="header.rule" select="1"></xsl:param> + + + +Description + +If non-zero, a rule will be drawn below the page headers. + + + + + + +footer.rule +boolean + + +footer.rule +Rule over footers? + + + + +<xsl:param name="footer.rule" select="1"></xsl:param> + + + +Description + +If non-zero, a rule will be drawn above the page footers. + + + + + + +header.column.widths +string + + +header.column.widths +Specify relative widths of header areas + + + +<xsl:param name="header.column.widths">1 1 1</xsl:param> + + +Description + +Page headers in print output use a three column table +to position text at the left, center, and right side of +the header on the page. +This parameter lets you specify the relative sizes of the +three columns. The default value is +"1 1 1". + +The parameter value must be three numbers, separated +by white space. The first number represents the relative +width of the inside header for +double-sided output. The second number is the relative +width of the center header. The third number is the +relative width of the outside header for +double-sided output. + +For single-sided output, the first number is the +relative width of left header for left-to-right +text direction, or the right header for right-to-left +text direction. +The third number is the +relative width of right header for left-to-right +text direction, or the left header for right-to-left +text direction. + +The numbers are used to specify the column widths +for the table that makes up the header area. +In the FO output, this looks like: + + + +<fo:table-column column-number="1" + column-width="proportional-column-width(1)"/> + + + +The proportional-column-width() +function computes a column width by dividing its +argument by the total of the arguments for all the columns, and +then multiplying the result by the width of the whole table +(assuming all the column specs use the function). +Its argument can be any positive integer or floating point number. +Zero is an acceptable value, although some FO processors +may warn about it, in which case using a very small number might +be more satisfactory. + + +For example, the value "1 2 1" means the center +header should have twice the width of the other areas. +A value of "0 0 1" means the entire header area +is reserved for the right (or outside) header text. +Note that to keep the center area centered on +the page, the left and right values must be +the same. A specification like "1 2 3" means the +center area is no longer centered on the page +since the right area is three times the width of the left area. + + + + + + + +footer.column.widths +string + + +footer.column.widths +Specify relative widths of footer areas + + + +<xsl:param name="footer.column.widths">1 1 1</xsl:param> + + +Description + +Page footers in print output use a three column table +to position text at the left, center, and right side of +the footer on the page. +This parameter lets you specify the relative sizes of the +three columns. The default value is +"1 1 1". + +The parameter value must be three numbers, separated +by white space. The first number represents the relative +width of the inside footer for +double-sided output. The second number is the relative +width of the center footer. The third number is the +relative width of the outside footer for +double-sided output. + +For single-sided output, the first number is the +relative width of left footer for left-to-right +text direction, or the right footer for right-to-left +text direction. +The third number is the +relative width of right footer for left-to-right +text direction, or the left footer for right-to-left +text direction. + +The numbers are used to specify the column widths +for the table that makes up the footer area. +In the FO output, this looks like: + + + +<fo:table-column column-number="1" + column-width="proportional-column-width(1)"/> + + + +The proportional-column-width() +function computes a column width by dividing its +argument by the total of the arguments for all the columns, and +then multiplying the result by the width of the whole table +(assuming all the column specs use the function). +Its argument can be any positive integer or floating point number. +Zero is an acceptable value, although some FO processors +may warn about it, in which case using a very small number might +be more satisfactory. + + +For example, the value "1 2 1" means the center +footer should have twice the width of the other areas. +A value of "0 0 1" means the entire footer area +is reserved for the right (or outside) footer text. +Note that to keep the center area centered on +the page, the left and right values must be +the same. A specification like "1 2 3" means the +center area is no longer centered on the page +since the right area is three times the width of the left area. + + + + + + + +header.table.properties +attribute set + + +header.table.properties +Apply properties to the header layout table + + + + +<xsl:attribute-set name="header.table.properties"> + <xsl:attribute name="table-layout">fixed</xsl:attribute> + <xsl:attribute name="width">100%</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties applied to the table that lays out the page header. + + + + + + +header.table.height +length + + +header.table.height +Specify the minimum height of the table containing the running page headers + + + +<xsl:param name="header.table.height">14pt</xsl:param> + + +Description + +Page headers in print output use a three column table +to position text at the left, center, and right side of +the header on the page. +This parameter lets you specify the minimum height +of the single row in the table. +Since this specifies only the minimum height, +the table should automatically grow to fit taller content. +The default value is "14pt". + + + + + + +footer.table.properties +attribute set + + +footer.table.properties +Apply properties to the footer layout table + + + + +<xsl:attribute-set name="footer.table.properties"> + <xsl:attribute name="table-layout">fixed</xsl:attribute> + <xsl:attribute name="width">100%</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties applied to the table that lays out the page footer. + + + + + + +footer.table.height +length + + +footer.table.height +Specify the minimum height of the table containing the running page footers + + + +<xsl:param name="footer.table.height">14pt</xsl:param> + + +Description + +Page footers in print output use a three column table +to position text at the left, center, and right side of +the footer on the page. +This parameter lets you specify the minimum height +of the single row in the table. +Since this specifies only the minimum height, +the table should automatically grow to fit taller content. +The default value is "14pt". + + + + + + +header.content.properties +attribute set + + +header.content.properties +Properties of page header content + + + + +<xsl:attribute-set name="header.content.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$body.fontset"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="margin-left"> + <xsl:value-of select="$title.margin.left"></xsl:value-of> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties of page header content. + + + + + + +footer.content.properties +attribute set + + +footer.content.properties +Properties of page footer content + + + + +<xsl:attribute-set name="footer.content.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$body.fontset"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="margin-left"> + <xsl:value-of select="$title.margin.left"></xsl:value-of> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties of page footer content. + + + + + + +marker.section.level +integer + + +marker.section.level +Control depth of sections shown in running headers or footers + + + + +<xsl:param name="marker.section.level">2</xsl:param> + + + +Description + +The marker.section.level parameter +controls the depth of section levels that may be displayed +in running headers and footers. For example, if the value +is 2 (the default), then titles from sect1 and +sect2 or equivalent section +elements are candidates for use in running headers and +footers. + +Each candidate title is marked in the FO output with a +<fo:marker marker-class-name="section.head.marker"> +element. + +In order for such titles to appear in headers +or footers, the header.content +or footer.content template +must be customized to retrieve the marker using +an output element such as: + + +<fo:retrieve-marker retrieve-class-name="section.head.marker" + retrieve-position="first-including-carryover" + retrieve-boundary="page-sequence"/> + + + + + + +
Font Families + + +body.font.family +list +open +serif +sans-serif +monospace + + +body.font.family +The default font family for body text + + + + +<xsl:param name="body.font.family">serif</xsl:param> + + + +Description + +The body font family is the default font used for text in the page body. + + + + + + + +dingbat.font.family +list +open +serif +sans-serif +monospace + + +dingbat.font.family +The font family for copyright, quotes, and other symbols + + + + +<xsl:param name="dingbat.font.family">serif</xsl:param> + + + +Description + +The dingbat font family is used for dingbats. If it is defined +as the empty string, no font change is effected around dingbats. + + + + + + + +monospace.font.family +string + + +monospace.font.family +The default font family for monospace environments + + + + +<xsl:param name="monospace.font.family">monospace</xsl:param> + + + +Description + +The monospace font family is used for verbatim environments +(program listings, screens, etc.). + + + + + + + +sans.font.family +string + + +sans.font.family +The default sans-serif font family + + + + +<xsl:param name="sans.font.family">sans-serif</xsl:param> + + + +Description + +The default sans-serif font family. At the present, this isn't +actually used by the stylesheets. + + + + + + + +title.font.family +list +open +serif +sans-serif +monospace + + +title.font.family +The default font family for titles + + + + +<xsl:param name="title.font.family">sans-serif</xsl:param> + + + +Description + +The title font family is used for titles (chapter, section, figure, +etc.) + + + + + + + +symbol.font.family +list +open +serif +sans-serif +monospace + + +symbol.font.family +The font families to be searched for symbols outside + of the body font + + + + +<xsl:param name="symbol.font.family">Symbol,ZapfDingbats</xsl:param> + + + +Description + +A typical body or title font does not contain all +the character glyphs that DocBook supports. This parameter +specifies additional fonts that should be searched for +special characters not in the normal font. +These symbol font names are automatically appended +to the body or title font family name when fonts +are specified in a +font-family +property in the FO output. + +The symbol font names should be entered as a +comma-separated list. The default value is +Symbol,ZapfDingbats. + + + + + +Property Sets + + +formal.object.properties +attribute set + + +formal.object.properties +Properties associated with a formal object such as a figure, or other component that has a title + + + + +<xsl:attribute-set name="formal.object.properties"> + <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.maximum">2em</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> + <xsl:attribute name="space-after.optimum">1em</xsl:attribute> + <xsl:attribute name="space-after.maximum">2em</xsl:attribute> + <xsl:attribute name="keep-together.within-column">always</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The styling for formal objects in docbook. Specify the spacing +before and after the object. + + + + + + +formal.title.properties +attribute set + + +formal.title.properties +Style the title element of formal object such as a figure. + + + + +<xsl:attribute-set name="formal.title.properties" use-attribute-sets="normal.para.spacing"> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 1.2"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute> + <xsl:attribute name="space-after.optimum">0.6em</xsl:attribute> + <xsl:attribute name="space-after.maximum">0.8em</xsl:attribute> +</xsl:attribute-set> + + +Description +Specify how the title should be styled. Specify the font size and weight of the title of the formal object. + + + + + +informal.object.properties +attribute set + + +informal.object.properties +Properties associated with an informal (untitled) object, such as an informalfigure + + + +<xsl:attribute-set name="informal.object.properties"> + <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.maximum">2em</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> + <xsl:attribute name="space-after.optimum">1em</xsl:attribute> + <xsl:attribute name="space-after.maximum">2em</xsl:attribute> +</xsl:attribute-set> + +Description +The styling for informal objects in docbook. Specify the spacing before and after the object. + + + + + +monospace.properties +attribute set + + +monospace.properties +Properties of monospaced content + + + + +<xsl:attribute-set name="monospace.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$monospace.font.family"></xsl:value-of> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +Specifies the font name for monospaced output. This property set +used to set the font-size as well, but that doesn't work very well +when different fonts are used (as they are in titles and paragraphs, +for example). + +If you want to set the font-size in a customization layer, it's +probably going to be more appropriate to set font-size-adjust, if your +formatter supports it. + + + + + + +verbatim.properties +attribute set + + +verbatim.properties +Properties associated with verbatim text + + + + +<xsl:attribute-set name="verbatim.properties"> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-after.optimum">1em</xsl:attribute> + <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="wrap-option">no-wrap</xsl:attribute> + <xsl:attribute name="white-space-collapse">false</xsl:attribute> + <xsl:attribute name="white-space-treatment">preserve</xsl:attribute> + <xsl:attribute name="linefeed-treatment">preserve</xsl:attribute> + <xsl:attribute name="text-align">start</xsl:attribute> +</xsl:attribute-set> + + +Description +This attribute set is used on all verbatim environments. + + + + + + +monospace.verbatim.properties +attribute set + + +monospace.verbatim.properties +What font and size do you want for monospaced content? + + + + +<xsl:attribute-set name="monospace.verbatim.properties" use-attribute-sets="verbatim.properties monospace.properties"> + <xsl:attribute name="text-align">start</xsl:attribute> + <xsl:attribute name="wrap-option">no-wrap</xsl:attribute> +</xsl:attribute-set> + + +Description +Specify the font name and size you want for monospaced output + + + + + +sidebar.properties +attribute set + + +sidebar.properties +Attribute set for sidebar properties + + + + +<xsl:attribute-set name="sidebar.properties" use-attribute-sets="formal.object.properties"> + <xsl:attribute name="border-style">solid</xsl:attribute> + <xsl:attribute name="border-width">1pt</xsl:attribute> + <xsl:attribute name="border-color">black</xsl:attribute> + <xsl:attribute name="background-color">#DDDDDD</xsl:attribute> + <xsl:attribute name="padding-start">12pt</xsl:attribute> + <xsl:attribute name="padding-end">12pt</xsl:attribute> + <xsl:attribute name="padding-top">6pt</xsl:attribute> + <xsl:attribute name="padding-bottom">6pt</xsl:attribute> + <xsl:attribute name="margin-{$direction.align.start}">0pt</xsl:attribute> + <xsl:attribute name="margin-{$direction.align.end}">0pt</xsl:attribute> +<!-- + <xsl:attribute name="margin-top">6pt</xsl:attribute> + <xsl:attribute name="margin-bottom">6pt</xsl:attribute> +--> +</xsl:attribute-set> + + + +Description + +The styling for sidebars. + + + + + + +sidebar.title.properties +attribute set + + +sidebar.title.properties +Attribute set for sidebar titles + + + + +<xsl:attribute-set name="sidebar.title.properties"> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="text-align">start</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The styling for sidebars titles. + + + + + + +sidebar.float.type +list +none +before +left +start +right +end +inside +outside + + +sidebar.float.type +Select type of float for sidebar elements + + + + +<xsl:param name="sidebar.float.type">none</xsl:param> + + + +Description + +Selects the type of float for sidebar elements. + + + +If sidebar.float.type is +none, then +no float is used. + + + +If sidebar.float.type is +before, then +the float appears at the top of the page. On some processors, +that may be the next page rather than the current page. + + + + +If sidebar.float.type is +left, +then a left side float is used. + + + + +If sidebar.float.type is +start, +then when the text direction is left-to-right a left side float is used. +When the text direction is right-to-left, a right side float is used. + + + + +If sidebar.float.type is +right, +then a right side float is used. + + + + +If sidebar.float.type is +end, +then when the text direction is left-to-right a right side float is used. +When the text direction is right-to-left, a left side float is used. + + + + +If your XSL-FO processor supports floats positioned on the +inside or +outside +of double-sided pages, then you have those two +options for side floats as well. + + + + + + + + + +sidebar.float.width +length + + +sidebar.float.width +Set the default width for sidebars + + + + +<xsl:param name="sidebar.float.width">1in</xsl:param> + + + +Description + +Sets the default width for sidebars when used as a side float. +The width determines the degree to which the sidebar block intrudes into +the text area. + +If sidebar.float.type is +before or +none, then +this parameter is ignored. + + + + + + + +margin.note.properties +attribute set + + +margin.note.properties +Attribute set for margin.note properties + + + + +<xsl:attribute-set name="margin.note.properties"> + <xsl:attribute name="font-size">90%</xsl:attribute> + <xsl:attribute name="text-align">start</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The styling for margin notes. +By default, margin notes are not implemented for any +element. A stylesheet customization is needed to make +use of this attribute-set. + +You can use a template named floater +to create the customization. +That template can create side floats by specifying the +content and characteristics as template parameters. + + +For example: +<xsl:template match="para[@role='marginnote']"> + <xsl:call-template name="floater"> + <xsl:with-param name="position"> + <xsl:value-of select="$margin.note.float.type"/> + </xsl:with-param> + <xsl:with-param name="width"> + <xsl:value-of select="$margin.note.width"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-imports/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + + + + + + +margin.note.title.properties +attribute set + + +margin.note.title.properties +Attribute set for margin note titles + + + + +<xsl:attribute-set name="margin.note.title.properties"> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="text-align">start</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The styling for margin note titles. + + + + + + +margin.note.float.type +list +none +before +left +start +right +end +inside +outside + + +margin.note.float.type +Select type of float for margin note customizations + + + + +<xsl:param name="margin.note.float.type">none</xsl:param> + + + +Description + +Selects the type of float for margin notes. +DocBook does not define a margin note element, so this +feature must be implemented as a customization of the stylesheet. +See margin.note.properties for +an example. + + + +If margin.note.float.type is +none, then +no float is used. + + + +If margin.note.float.type is +before, then +the float appears at the top of the page. On some processors, +that may be the next page rather than the current page. + + + +If margin.note.float.type is +left or +start, then +a left side float is used. + + + +If margin.note.float.type is +right or +end, then +a right side float is used. + + + +If your XSL-FO processor supports floats positioned on the +inside or +outside +of double-sided pages, then you have those two +options for side floats as well. + + + + + + + + + +margin.note.width +length + + +margin.note.width +Set the default width for margin notes + + + + +<xsl:param name="margin.note.width">1in</xsl:param> + + + +Description + +Sets the default width for margin notes when used as a side +float. The width determines the degree to which the margin note block +intrudes into the text area. + +If margin.note.float.type is +before or +none, then +this parameter is ignored. + + + + + + + +component.title.properties +attribute set + + +component.title.properties +Properties for component titles + + + + +<xsl:attribute-set name="component.title.properties"> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master, 'pt')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master, 'pt * 0.8')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master, 'pt * 1.2')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="text-align"> + <xsl:choose> + <xsl:when test="((parent::article | parent::articleinfo | parent::info/parent::article) and not(ancestor::book) and not(self::bibliography)) or (parent::slides | parent::slidesinfo)">center</xsl:when> + <xsl:otherwise>start</xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"></xsl:value-of></xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties common to all component titles. + + + + + + +component.titlepage.properties +attribute set + + +component.titlepage.properties +Properties for component titlepages + + + + +<xsl:attribute-set name="component.titlepage.properties"> +</xsl:attribute-set> + + + +Description + +The properties that are applied to the outer block containing +all the component title page information. +Its main use is to set a span="all" +property on the block that is a direct child of the flow. + +This attribute-set also applies to index titlepages. It is empty by default. + + + + + + +section.title.properties +attribute set + + +section.title.properties +Properties for section titles + + + + +<xsl:attribute-set name="section.title.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$title.font.family"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <!-- font size is calculated dynamically by section.heading template --> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> + <xsl:attribute name="text-align">start</xsl:attribute> + <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"></xsl:value-of></xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties common to all section titles. + + + + + + +section.title.level1.properties +attribute set + + +section.title.level1.properties +Properties for level-1 section titles + + + + +<xsl:attribute-set name="section.title.level1.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 2.0736"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-1 section titles. + + + + + + + +section.title.level2.properties +attribute set + + +section.title.level2.properties +Properties for level-2 section titles + + + + +<xsl:attribute-set name="section.title.level2.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 1.728"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-2 section titles. + + + + + + +section.title.level3.properties +attribute set + + +section.title.level3.properties +Properties for level-3 section titles + + + + +<xsl:attribute-set name="section.title.level3.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 1.44"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-3 section titles. + + + + + + +section.title.level4.properties +attribute set + + +section.title.level4.properties +Properties for level-4 section titles + + + + +<xsl:attribute-set name="section.title.level4.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 1.2"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-4 section titles. + + + + + + +section.title.level5.properties +attribute set + + +section.title.level5.properties +Properties for level-5 section titles + + + + +<xsl:attribute-set name="section.title.level5.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-5 section titles. + + + + + + +section.title.level6.properties +attribute set + + +section.title.level6.properties +Properties for level-6 section titles + + + + +<xsl:attribute-set name="section.title.level6.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-6 section titles. This property set is actually +used for all titles below level 5. + + + + + + +section.properties +attribute set + + +section.properties +Properties for all section levels + + + + +<xsl:attribute-set name="section.properties"> +</xsl:attribute-set> + + + +Description + +The properties that apply to the containing +block of all section levels, and therefore apply to +the whole section. +This attribute set is inherited by the +more specific attribute sets such as +section.level1.properties. +The default is empty. + + + + + + + +section.level1.properties +attribute set + + +section.level1.properties +Properties for level-1 sections + + + + +<xsl:attribute-set name="section.level1.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> + + + +Description + +The properties that apply to the containing +block of a level-1 section, and therefore apply to +the whole section. This includes sect1 +elements and section elements at level 1. + + +For example, you could start each level-1 section on +a new page by using: +<xsl:attribute-set name="section.level1.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + + + + +section.level2.properties +attribute set + + +section.level2.properties +Properties for level-2 sections + + + + +<xsl:attribute-set name="section.level2.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> + + + +Description + +The properties that apply to the containing +block of a level-2 section, and therefore apply to +the whole section. This includes sect2 +elements and section elements at level 2. + + +For example, you could start each level-2 section on +a new page by using: +<xsl:attribute-set name="section.level2.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + + + + +section.level3.properties +attribute set + + +section.level3.properties +Properties for level-3 sections + + + + +<xsl:attribute-set name="section.level3.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> + + + +Description + +The properties that apply to the containing +block of a level-3 section, and therefore apply to +the whole section. This includes sect3 +elements and section elements at level 3. + + +For example, you could start each level-3 section on +a new page by using: +<xsl:attribute-set name="section.level3.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + + + + +section.level4.properties +attribute set + + +section.level4.properties +Properties for level-4 sections + + + + +<xsl:attribute-set name="section.level4.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> + + + +Description + +The properties that apply to the containing +block of a level-4 section, and therefore apply to +the whole section. This includes sect4 +elements and section elements at level 4. + + +For example, you could start each level-4 section on +a new page by using: +<xsl:attribute-set name="section.level4.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + + + + +section.level5.properties +attribute set + + +section.level5.properties +Properties for level-5 sections + + + + +<xsl:attribute-set name="section.level5.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> + + + +Description + +The properties that apply to the containing +block of a level-5 section, and therefore apply to +the whole section. This includes sect5 +elements and section elements at level 5. + + +For example, you could start each level-5 section on +a new page by using: +<xsl:attribute-set name="section.level5.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + + + + +section.level6.properties +attribute set + + +section.level6.properties +Properties for level-6 sections + + + + +<xsl:attribute-set name="section.level6.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> + + + +Description + +The properties that apply to the containing +block of a level 6 or lower section, and therefore apply to +the whole section. This includes +section elements at level 6 and lower. + + +For example, you could start each level-6 section on +a new page by using: +<xsl:attribute-set name="section.level6.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + + + + +figure.properties +attribute set + + +figure.properties +Properties associated with a figure + + + + +<xsl:attribute-set name="figure.properties" use-attribute-sets="formal.object.properties"></xsl:attribute-set> + + + +Description + +The styling for figures. + + + + + + +example.properties +attribute set + + +example.properties +Properties associated with a example + + + + +<xsl:attribute-set name="example.properties" use-attribute-sets="formal.object.properties"></xsl:attribute-set> + + + +Description + +The styling for examples. + + + + + + +equation.properties +attribute set + + +equation.properties +Properties associated with a equation + + + + +<xsl:attribute-set name="equation.properties" use-attribute-sets="formal.object.properties"></xsl:attribute-set> + + + +Description + +The styling for equations. + + + + + + +equation.number.properties +attribute set + + +equation.number.properties +Properties that apply to the fo:table-cell containing the number +of an equation that does not have a title. + + + +<xsl:attribute-set name="equation.number.properties"> + <xsl:attribute name="text-align">end</xsl:attribute> + <xsl:attribute name="display-align">center</xsl:attribute> +</xsl:attribute-set> + +Description +Properties that apply to the fo:table-cell containing the number +of an equation when it has no title. The number in an equation with a +title is formatted along with the title, and this attribute-set does not apply. + + + + + +table.properties +attribute set + + +table.properties +Properties associated with the block surrounding a table + + + + +<xsl:attribute-set name="table.properties" use-attribute-sets="formal.object.properties"> + <xsl:attribute name="keep-together.within-column">auto</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Block styling properties for tables. This parameter should really +have been called table.block.properties or something +like that, but we’re leaving it to avoid backwards-compatibility +problems. + +See also table.table.properties. + + + + + + +informalfigure.properties +attribute set + + +informalfigure.properties +Properties associated with an informalfigure + + + + +<xsl:attribute-set name="informalfigure.properties" use-attribute-sets="informal.object.properties"></xsl:attribute-set> + + + +Description + +The styling for informalfigures. + + + + + + +informalexample.properties +attribute set + + +informalexample.properties +Properties associated with an informalexample + + + + +<xsl:attribute-set name="informalexample.properties" use-attribute-sets="informal.object.properties"></xsl:attribute-set> + + + +Description + +The styling for informalexamples. + + + + + + +informalequation.properties +attribute set + + +informalequation.properties +Properties associated with an informalequation + + + + +<xsl:attribute-set name="informalequation.properties" use-attribute-sets="informal.object.properties"></xsl:attribute-set> + + + +Description + +The styling for informalequations. + + + + + + +informaltable.properties +attribute set + + +informaltable.properties +Properties associated with the block surrounding an informaltable + + + + +<xsl:attribute-set name="informaltable.properties" use-attribute-sets="informal.object.properties"></xsl:attribute-set> + + + +Description + +Block styling properties for informaltables. This parameter should really +have been called informaltable.block.properties or something +like that, but we’re leaving it to avoid backwards-compatibility +problems. + +See also table.table.properties. + + + + + + +procedure.properties +attribute set + + +procedure.properties +Properties associated with a procedure + + + + +<xsl:attribute-set name="procedure.properties" use-attribute-sets="formal.object.properties"> + <xsl:attribute name="keep-together.within-column">auto</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The styling for procedures. + + + + + + +root.properties +attribute set + + +root.properties +The properties of the fo:root element + + + + +<xsl:attribute-set name="root.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$body.fontset"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.size"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="text-align"> + <xsl:value-of select="$alignment"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="line-height"> + <xsl:value-of select="$line-height"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="font-selection-strategy">character-by-character</xsl:attribute> + <xsl:attribute name="line-height-shift-adjustment">disregard-shifts</xsl:attribute> + <xsl:attribute name="writing-mode"> + <xsl:value-of select="$direction.mode"></xsl:value-of> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +This property set is used on the fo:root element of +an FO file. It defines a set of default, global parameters. + + + + + + +qanda.title.properties +attribute set + + +qanda.title.properties +Properties for qanda set titles + + + + +<xsl:attribute-set name="qanda.title.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$title.font.family"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <!-- font size is calculated dynamically by qanda.heading template --> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties common to all qanda set titles. + + + + + + +qanda.title.level1.properties +attribute set + + +qanda.title.level1.properties +Properties for level-1 qanda set titles + + + + +<xsl:attribute-set name="qanda.title.level1.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 2.0736"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-1 qanda set titles. + + + + + + +qanda.title.level2.properties +attribute set + + +qanda.title.level2.properties +Properties for level-2 qanda set titles + + + + +<xsl:attribute-set name="qanda.title.level2.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 1.728"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-2 qanda set titles. + + + + + + +qanda.title.level3.properties +attribute set + + +qanda.title.level3.properties +Properties for level-3 qanda set titles + + + + +<xsl:attribute-set name="qanda.title.level3.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 1.44"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-3 qanda set titles. + + + + + + +qanda.title.level4.properties +attribute set + + +qanda.title.level4.properties +Properties for level-4 qanda set titles + + + + +<xsl:attribute-set name="qanda.title.level4.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 1.2"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-4 qanda set titles. + + + + + + +qanda.title.level5.properties +attribute set + + +qanda.title.level5.properties +Properties for level-5 qanda set titles + + + + +<xsl:attribute-set name="qanda.title.level5.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-5 qanda set titles. + + + + + + +qanda.title.level6.properties +attribute set + + +qanda.title.level6.properties +Properties for level-6 qanda set titles + + + + +<xsl:attribute-set name="qanda.title.level6.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-6 qanda set titles. +This property set is actually +used for all titles below level 5. + + + + + + +article.appendix.title.properties +attribute set + + +article.appendix.title.properties +Properties for appendix titles that appear in an article + + + + +<xsl:attribute-set name="article.appendix.title.properties" use-attribute-sets="section.title.properties section.title.level1.properties"> + <xsl:attribute name="margin-{$direction.align.start}"> + <xsl:value-of select="$title.margin.left"></xsl:value-of> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties for the title of an appendix that +appears inside an article. The default is to use +the properties of sect1 titles. + + + + + + +abstract.properties +attribute set + + +abstract.properties +Properties associated with the block surrounding an abstract + + + + +<xsl:attribute-set name="abstract.properties"> + <xsl:attribute name="start-indent">0.0in</xsl:attribute> + <xsl:attribute name="end-indent">0.0in</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Block styling properties for abstract. + +See also abstract.title.properties. + + + + + + +abstract.title.properties +attribute set + + +abstract.title.properties +Properties for abstract titles + + + + +<xsl:attribute-set name="abstract.title.properties"> + <xsl:attribute name="font-family"><xsl:value-of select="$title.fontset"></xsl:value-of></xsl:attribute> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master, 'pt')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master, 'pt * 0.8')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master, 'pt * 1.2')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="text-align">center</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties for abstract titles. + +See also abstract.properties. + + + + + + +index.page.number.properties +attribute set + + +index.page.number.properties +Properties associated with index page numbers + + + + +<xsl:attribute-set name="index.page.number.properties"> +</xsl:attribute-set> + + + +Description + +Properties associated with page numbers in indexes. +Changing color to indicate the page number is a link is +one possibility. + + + + + + + +revhistory.table.properties +attribute set + + +revhistory.table.properties +The properties of table used for formatting revhistory + + + + +<xsl:attribute-set name="revhistory.table.properties"> +</xsl:attribute-set> + + + +Description + +This property set defines appearance of revhistory table. + + + + + + +revhistory.table.cell.properties +attribute set + + +revhistory.table.cell.properties +The properties of table cells used for formatting revhistory + + + + +<xsl:attribute-set name="revhistory.table.cell.properties"> +</xsl:attribute-set> + + + +Description + +This property set defines appearance of individual cells in revhistory table. + + + + + + +revhistory.title.properties +attribute set + + +revhistory.title.properties +The properties of revhistory title + + + + +<xsl:attribute-set name="revhistory.title.properties"> +</xsl:attribute-set> + + + +Description + +This property set defines appearance of revhistory title. + + + + +Profiling + +The following parameters can be used for attribute-based +profiling of your document. For more information about profiling, see +Profiling (conditional text). + + + +profile.arch +string + + +profile.arch +Target profile for arch +attribute + + + + +<xsl:param name="profile.arch"></xsl:param> + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.audience +string + + +profile.audience +Target profile for audience +attribute + + + + +<xsl:param name="profile.audience"></xsl:param> + + + +Description + +Value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.condition +string + + +profile.condition +Target profile for condition +attribute + + + + +<xsl:param name="profile.condition"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.conformance +string + + +profile.conformance +Target profile for conformance +attribute + + + + +<xsl:param name="profile.conformance"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.lang +string + + +profile.lang +Target profile for lang +attribute + + + + +<xsl:param name="profile.lang"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.os +string + + +profile.os +Target profile for os +attribute + + + + +<xsl:param name="profile.os"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.revision +string + + +profile.revision +Target profile for revision +attribute + + + + +<xsl:param name="profile.revision"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.revisionflag +string + + +profile.revisionflag +Target profile for revisionflag +attribute + + + + +<xsl:param name="profile.revisionflag"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.role +string + + +profile.role +Target profile for role +attribute + + + + +<xsl:param name="profile.role"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + +Note that role is often +used for other purposes than profiling. For example it is commonly +used to get emphasize in bold font: + +<emphasis role="bold">very important</emphasis> + +If you are using role for +these purposes do not forget to add values like bold to +value of this parameter. If you forgot you will get document with +small pieces missing which are very hard to track. + +For this reason it is not recommended to use role attribute for profiling. You should +rather use profiling specific attributes like userlevel, os, arch, condition, etc. + + + + + + + +profile.security +string + + +profile.security +Target profile for security +attribute + + + + +<xsl:param name="profile.security"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.status +string + + +profile.status +Target profile for status +attribute + + + + +<xsl:param name="profile.status"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.userlevel +string + + +profile.userlevel +Target profile for userlevel +attribute + + + + +<xsl:param name="profile.userlevel"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.vendor +string + + +profile.vendor +Target profile for vendor +attribute + + + + +<xsl:param name="profile.vendor"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.wordsize +string + + +profile.wordsize +Target profile for wordsize +attribute + + + + +<xsl:param name="profile.wordsize"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.attribute +string + + +profile.attribute +Name of user-specified profiling attribute + + + + +<xsl:param name="profile.attribute"></xsl:param> + + + +Description + +This parameter is used in conjuction with +profile.value. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.value +string + + +profile.value +Target profile for user-specified attribute + + + + +<xsl:param name="profile.value"></xsl:param> + + + +Description + +When you are using this parameter you must also specify name of +profiling attribute with parameter +profile.attribute. + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.separator +string + + +profile.separator +Separator character for compound profile values + + + + +<xsl:param name="profile.separator">;</xsl:param> + + + +Description + +Separator character used for compound profile values. See profile.arch + + + + +Localization + + +l10n.gentext.language +string + + +l10n.gentext.language +Sets the gentext language + + + + +<xsl:param name="l10n.gentext.language"></xsl:param> + + + +Description + +If this parameter is set to any value other than the empty string, its +value will be used as the value for the language when generating text. Setting +l10n.gentext.language overrides any settings within the +document being formatted. + +It's much more likely that you might want to set the +l10n.gentext.default.language parameter. + + + + + + + l10n.gentext.default.language + string + + + l10n.gentext.default.language + Sets the default language for generated text + + + + +<xsl:param name="l10n.gentext.default.language">en</xsl:param> + + + +Description + +The value of the l10n.gentext.default.language +parameter is used as the language for generated text if no setting is provided +in the source document. + + + + + + +l10n.gentext.use.xref.language +boolean + + +l10n.gentext.use.xref.language +Use the language of target when generating cross-reference text? + + + + +<xsl:param name="l10n.gentext.use.xref.language" select="0"></xsl:param> + + + +Description + +If non-zero, the language of the target will be used when +generating cross reference text. Usually, the current +language is used when generating text (that is, the language of the +element that contains the cross-reference element). But setting this parameter +allows the language of the element pointed to to control +the generated text. + +Consider the following example: + + +<para lang="en">See also <xref linkend="chap3"/>.</para> + + + +Suppose that Chapter 3 happens to be written in German. +If l10n.gentext.use.xref.language is non-zero, the +resulting text will be something like this: + +
+See also Kapital 3. +
+ +Where the more traditional rendering would be: + +
+See also Chapter 3. +
+ +
+
+ + + +l10n.lang.value.rfc.compliant +boolean + + +l10n.lang.value.rfc.compliant +Make value of lang attribute RFC compliant? + + + + +<xsl:param name="l10n.lang.value.rfc.compliant" select="1"></xsl:param> + + + +Description + +If non-zero, ensure that the values for all lang attributes in HTML output are RFC +compliantSection 8.1.1, Language Codes, in the HTML 4.0 Recommendation states that: + +
[RFC1766] defines and explains the language codes +that must be used in HTML documents. +Briefly, language codes consist of a primary code and a possibly +empty series of subcodes: + +language-code = primary-code ( "-" subcode )* + +And in RFC 1766, Tags for the Identification +of Languages, the EBNF for "language tag" is given as: + +Language-Tag = Primary-tag *( "-" Subtag ) +Primary-tag = 1*8ALPHA +Subtag = 1*8ALPHA + +
+
. + +by taking any underscore characters in any lang values found in source documents, and +replacing them with hyphen characters in output HTML files. For +example, zh_CN in a source document becomes +zh-CN in the HTML output form that source. + + +This parameter does not cause any case change in lang values, because RFC 1766 +explicitly states that all "language tags" (as it calls them) "are +to be treated as case insensitive". + +
+ +
+
+ + + +writing.mode +string + + +writing.mode +Direction of text flow based on locale + + + + +<xsl:param name="writing.mode"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">writing-mode</xsl:with-param> + <xsl:with-param name="lang"> + <xsl:call-template name="l10n.language"> + <xsl:with-param name="target" select="/*[1]"></xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> +</xsl:param> + + + +Description + +Sets direction of text flow and text alignment based on locale. +The value is normally taken from the gentext file for the +lang attribute of the document's root element, using the +key name 'writing-mode' to look it up in the gentext file. +But the param can also be +set on the command line to override that gentext value. + +Accepted values are: + + + lr-tb + + Left-to-right text flow in each line, lines stack top to bottom. + + + + rl-tb + + Right-to-left text flow in each line, lines stack top to bottom. + + + + tb-rl + + Top-to-bottom text flow in each vertical line, lines stack right to left. + Supported by only a few XSL-FO processors. Not supported in HTML output. + + + + lr + + Shorthand for lr-tb. + + + + rl + + Shorthand for rl-tb. + + + + tb + + Shorthand for tb-rl. + + + + + + + + +
EBNF + + +ebnf.assignment +rtf + + +ebnf.assignment +The EBNF production assignment operator + + + + + +<xsl:param name="ebnf.assignment"> + <fo:inline font-family="{$monospace.font.family}"> + <xsl:text>::=</xsl:text> + </fo:inline> +</xsl:param> + + + +Description + +The ebnf.assignment parameter determines what +text is used to show assignment in productions +in productionsets. + +While ::= is common, so are several +other operators. + + + + + + +ebnf.statement.terminator +rtf + + +ebnf.statement.terminator +Punctuation that ends an EBNF statement. + + + + + +<xsl:param name="ebnf.statement.terminator"></xsl:param> + + + +Description + +The ebnf.statement.terminator parameter determines what +text is used to terminate each production +in productionset. + +Some notations end each statement with a period. + + + + +Prepress + + +crop.marks +boolean + + +crop.marks +Output crop marks? + + + + +<xsl:param name="crop.marks" select="0"></xsl:param> + + + +Description + +If non-zero, crop marks will be added to each page. Currently this +works only with XEP if you have xep.extensions set. + + + + + + +crop.mark.width +length + + +crop.mark.width +Width of crop marks. + + + + +<xsl:param name="crop.mark.width">0.5pt</xsl:param> + + + +Description + +Width of crop marks. Crop marks are controlled by +crop.marks parameter. + + + + + + +crop.mark.offset +length + + +crop.mark.offset +Length of crop marks. + + + + +<xsl:param name="crop.mark.offset">24pt</xsl:param> + + + +Description + +Length of crop marks. Crop marks are controlled by +crop.marks parameter. + + + + + + +crop.mark.bleed +length + + +crop.mark.bleed +Length of invisible part of crop marks. + + + + +<xsl:param name="crop.mark.bleed">6pt</xsl:param> + + + +Description + +Length of invisible part of crop marks. Crop marks are controlled by +crop.marks parameter. + + + + + +
+ + + + Manpages Parameter Reference + + + This is reference documentation for all user-configurable + parameters in the DocBook XSL "manpages" stylesheet (for + generating groff/nroff output). Note that the manpages + stylesheet is a customization layer of the DocBook XSL HTML + stylesheet. Therefore, you can also use a number of HTML stylesheet parameters + to control manpages output (in addition to the + manpages-specific parameters listed in this section). + + + + Hyphenation, justification, and breaking + + +man.hyphenate +boolean + + +man.hyphenate +Enable hyphenation? + + + + +<xsl:param name="man.hyphenate">0</xsl:param> + + +Description + +If non-zero, hyphenation is enabled. + + +The default value for this parameter is zero because groff is +not particularly smart about how it does hyphenation; it can end up +hyphenating a lot of things that you don't want hyphenated. To +mitigate that, the default behavior of the stylesheets is to suppress +hyphenation of computer inlines, filenames, and URLs. (You can +override the default behavior by setting non-zero values for the +man.hyphenate.urls, +man.hyphenate.filenames, and +man.hyphenate.computer.inlines parameters.) But +the best way is still to just globally disable hyphenation, as the +stylesheets do by default. + +The only good reason to enabled hyphenation is if you have also +enabled justification (which is disabled by default). The reason is +that justified text can look very bad unless you also hyphenate it; to +quote the Hypenation node from the groff info page: + +
+ Since the odds are not great for finding a set of + words, for every output line, which fit nicely on a line without + inserting excessive amounts of space between words, 'gtroff' + hyphenates words so that it can justify lines without inserting too + much space between words. +
+ +So, if you set a non-zero value for the +man.justify parameter (to enable +justification), then you should probably also set a non-zero value for +man.hyphenate (to enable hyphenation).
+
+ + +
+
+ + + +man.hyphenate.urls +boolean + + +man.hyphenate.urls +Hyphenate URLs? + + + + +<xsl:param name="man.hyphenate.urls">0</xsl:param> + + +Description + +If zero (the default), hyphenation is suppressed for output of +the ulink url attribute. + + + If hyphenation is already turned off globally (that is, if + man.hyphenate is zero, setting + man.hyphenate.urls is not necessary. + + +If man.hyphenate.urls is non-zero, URLs +will not be treated specially and are subject to hyphenation just like +other words. + + + If you are thinking about setting a non-zero value for + man.hyphenate.urls in order to make long + URLs break across lines, you'd probably be better off + experimenting with setting the + man.break.after.slash parameter first. That + will cause long URLs to be broken after slashes. + + + + + + + +man.hyphenate.filenames +boolean + + +man.hyphenate.filenames +Hyphenate filenames? + + + + +<xsl:param name="man.hyphenate.filenames">0</xsl:param> + + +Description + +If zero (the default), hyphenation is suppressed for +filename output. + + + If hyphenation is already turned off globally (that is, if + man.hyphenate is zero, setting + man.hyphenate.filenames is not + necessary. + + +If man.hyphenate.filenames is non-zero, +filenames will not be treated specially and are subject to hyphenation +just like other words. + + + If you are thinking about setting a non-zero value for + man.hyphenate.filenames in order to make long + filenames/pathnames break across lines, you'd probably be better off + experimenting with setting the + man.break.after.slash parameter first. That + will cause long pathnames to be broken after slashes. + + + + + + + +man.hyphenate.computer.inlines +boolean + + +man.hyphenate.computer.inlines +Hyphenate computer inlines? + + + + +<xsl:param name="man.hyphenate.computer.inlines">0</xsl:param> + + +Description + +If zero (the default), hyphenation is suppressed for +computer inlines such as environment variables, +constants, etc. This parameter current affects output of the following +elements: + + + classname + constant + envar + errorcode + option + replaceable + userinput + type + varname + + + + + If hyphenation is already turned off globally (that is, if + man.hyphenate is zero, setting the + man.hyphenate.computer.inlines is not + necessary. + + +If man.hyphenate.computer.inlines is +non-zero, computer inlines will not be treated specially and will be +hyphenated like other words when needed. + + + + + + +man.justify +boolean + + +man.justify +Justify text to both right and left margins? + + + + +<xsl:param name="man.justify">0</xsl:param> + + +Description + +If non-zero, text is justified to both the right and left +margins (or, in roff terminology, "adjusted and filled" to both the +right and left margins). If zero (the default), text is adjusted to +the left margin only -- producing what is traditionally called +"ragged-right" text. + + +The default value for this parameter is zero because justified +text looks good only when it is also hyphenated. Without hyphenation, +excessive amounts of space often end up getting between words, in +order to "pad" lines out to align on the right margin. + +The problem is that groff is not particularly smart about how it +does hyphenation; it can end up hyphenating a lot of things that you +don't want hyphenated. So, disabling both justification and +hyphenation ensures that hyphens won't get inserted where you don't +want to them, and you don't end up with lines containing excessive +amounts of space between words. + +However, if do you decide to set a non-zero value for the +man.justify parameter (to enable +justification), then you should probably also set a non-zero value for +man.hyphenate (to enable hyphenation). + +Yes, these default settings run counter to how most existing man +pages are formatted. But there are some notable exceptions, such as +the perl man pages. + + + + + + +man.break.after.slash +boolean + + +man.break.after.slash +Enable line-breaking after slashes? + + + + +<xsl:param name="man.break.after.slash">0</xsl:param> + + +Description + +If non-zero, line-breaking after slashes is enabled. This is +mainly useful for causing long URLs or pathnames/filenames to be +broken up or "wrapped" across lines (though it also has the side +effect of sometimes causing relatively short URLs and pathnames to be +broken up across lines too). + +If zero (the default), line-breaking after slashes is +disabled. In that case, strings containing slashes (for example, URLs +or filenames) are not broken across lines, even if they exceed the +maximum column widith. + + + If you set a non-zero value for this parameter, check your + man-page output carefuly afterwards, in order to make sure that the + setting has not introduced an excessive amount of breaking-up of URLs + or pathnames. If your content contains mostly short URLs or + pathnames, setting a non-zero value for + man.break.after.slash will probably result in + in a significant number of relatively short URLs and pathnames being + broken across lines, which is probably not what you want. + + + + + +
+ Indentation + + +man.indent.width +length + + +man.indent.width +Specifies width used for adjusted indents + + + + +<xsl:param name="man.indent.width">4</xsl:param> + + + +Description +The man.indent.width parameter specifies +the width used for adjusted indents. The value of +man.indent.width is used for indenting of +lists, verbatims, headings, and elsewhere, depending on whether the +values of certain man.indent.* boolean parameters +are non-zero. + +The value of man.indent.width should +include a valid roff measurement unit (for example, +n or u). The default value of +4n specifies a 4-en width; when viewed on a +console, that amounts to the width of four characters. For details +about roff measurment units, see the Measurements +node in the groff info page. + + + + + + +man.indent.refsect +boolean + + +man.indent.refsect +Adjust indentation of refsect* and refsection? + + + + +<xsl:param name="man.indent.refsect" select="0"></xsl:param> + + +Description + +If the value of man.indent.refsect is +non-zero, the width of the left margin for +refsect1, refsect2 and +refsect3 contents and titles (and first-level, +second-level, and third-level nested +refsectioninstances) is adjusted by the value of +the man.indent.width parameter. With +man.indent.width set to its default value of +3n, the main results are that: + + + + contents of refsect1 are output with a + left margin of three characters instead the roff default of seven + or eight characters + + + contents of refsect2 are displayed in + console output with a left margin of six characters instead the of + the roff default of seven characters + + + the contents of refsect3 and nested + refsection instances are adjusted + accordingly. + + + +If instead the value of man.indent.refsect is +zero, no margin adjustment is done for refsect* +output. + + + If your content is primarly comprised of + refsect1 and refsect2 content + (or the refsection equivalent) – with few or + no refsect3 or lower nested sections , you may be + able to “conserve” space in your output by setting + man.indent.refsect to a non-zero value. Doing + so will “squeeze” the left margin in such as way as to provide an + additional four characters of “room” per line in + refsect1 output. That extra room may be useful + if, for example, you have many verbatim sections with long lines in + them. + + + + + + + +man.indent.blurbs +boolean + + +man.indent.blurbs +Adjust indentation of blurbs? + + + + +<xsl:param name="man.indent.blurbs" select="1"></xsl:param> + + +Description + +If the value of man.indent.blurbs is +non-zero, the width of the left margin for +authorblurb, personblurb, and +contrib output is set to the value of the +man.indent.width parameter +(3n by default). If instead the value of +man.indent.blurbs is zero, the built-in roff +default width (7.2n) is used. + + + + + + +man.indent.lists +boolean + + +man.indent.lists +Adjust indentation of lists? + + + + +<xsl:param name="man.indent.lists" select="1"></xsl:param> + + +Description + +If the value of man.indent.lists is +non-zero, the width of the left margin for list items in +itemizedlist, +orderedlist, +variablelist output (and output of some other +lists) is set to the value of the +man.indent.width parameter +(4n by default). If instead the value of +man.indent.lists is zero, the built-in roff +default width (7.2n) is used. + + + + + + +man.indent.verbatims +boolean + + +man.indent.verbatims +Adjust indentation of verbatims? + + + + +<xsl:param name="man.indent.verbatims" select="1"></xsl:param> + + +Description + +If the value of man.indent.verbatims is +non-zero, the width of the left margin for output of verbatim +environments (programlisting, +screen, and so on) is set to the value of the +man.indent.width parameter +(3n by default). If instead the value of +man.indent.verbatims is zero, the built-in roff +default width (7.2n) is used. + + + + + + Fonts + + +man.font.funcprototype +string + + +man.font.funcprototype +Specifies font for funcprototype output + + + + + <xsl:param name="man.font.funcprototype">BI</xsl:param> + + + +Description + +The man.font.funcprototype parameter +specifies the font for funcprototype output. It +should be a valid roff font name, such as BI or +B. + + + + + + +man.font.funcsynopsisinfo +string + + +man.font.funcsynopsisinfo +Specifies font for funcsynopsisinfo output + + + + + <xsl:param name="man.font.funcsynopsisinfo">B</xsl:param> + + + +Description + +The man.font.funcsynopsisinfo parameter +specifies the font for funcsynopsisinfo output. It +should be a valid roff font name, such as B or +I. + + + + + + +man.font.links +string + + +man.font.links +Specifies font for links + + + + +<xsl:param name="man.font.links">B</xsl:param> + + + +Description + +The man.font.links parameter +specifies the font for output of links (ulink instances +and any instances of any element with an xlink:href attribute). + +The value of man.font.links must be + either B or I, or empty. If +the value is empty, no font formatting is applied to links. + +If you set man.endnotes.are.numbered and/or +man.endnotes.list.enabled to zero (disabled), then +you should probably also set an empty value for +man.font.links. But if +man.endnotes.are.numbered is non-zero (enabled), +you should probably keep +man.font.links set to +B or IThe + main purpose of applying a font format to links in most output +formats it to indicate that the formatted text is +“clickable”; given that links rendered in man pages are +not “real” hyperlinks that users can click on, it might +seem like there is never a good reason to have font formatting for +link contents in man output. +In fact, if you suppress the +display of inline link references (by setting +man.endnotes.are.numbered to zero), there is no +good reason to apply font formatting to links. However, if +man.endnotes.are.numbered is non-zero, having +font formatting for links (arguably) serves a purpose: It provides +“context” information about exactly what part of the text +is being “annotated” by the link. Depending on how you +mark up your content, that context information may or may not +have value.. + + +Related Parameters + man.endnotes.list.enabled, + man.endnotes.are.numbered + + + + + + +man.font.table.headings +string + + +man.font.table.headings +Specifies font for table headings + + + + + <xsl:param name="man.font.table.headings">B</xsl:param> + + + +Description + +The man.font.table.headings parameter +specifies the font for table headings. It should be +a valid roff font, such as B or +I. + + + + + + +man.font.table.title +string + + +man.font.table.title +Specifies font for table headings + + + + + <xsl:param name="man.font.table.title">B</xsl:param> + + + +Description + +The man.font.table.title parameter +specifies the font for table titles. It should be +a valid roff font, such as B or +I. + + + + + + SYNOPSIS section + + +man.funcsynopsis.style +list +ansi +kr + + +man.funcsynopsis.style +What style of funcsynopsis should be generated? + + +<xsl:param name="man.funcsynopsis.style">ansi</xsl:param> + +Description +If man.funcsynopsis.style is +ansi, ANSI-style function synopses are +generated for a funcsynopsis, otherwise K&R-style +function synopses are generated. + + + + + AUTHORS and COPYRIGHT sections + + +man.authors.section.enabled +boolean + + +man.authors.section.enabled +Display auto-generated AUTHORS section? + + + +<xsl:param name="man.authors.section.enabled">1</xsl:param> + + +Description + +If the value of +man.authors.section.enabled is non-zero +(the default), then an AUTHORS section is +generated near the end of each man page. The output of the +AUTHORS section is assembled from any +author, editor, and othercredit +metadata found in the contents of the child info or +refentryinfo (if any) of the refentry +itself, or from any author, editor, and +othercredit metadata that may appear in info +contents of any ancestors of the refentry. + +If the value of +man.authors.section.enabled is zero, the +the auto-generated AUTHORS section is +suppressed. + +Set the value of + man.authors.section.enabled to zero if + you want to have a manually created AUTHORS + section in your source, and you want it to appear in output + instead of the auto-generated AUTHORS + section. + + + + + +man.copyright.section.enabled +boolean + + +man.copyright.section.enabled +Display auto-generated COPYRIGHT section? + + + +<xsl:param name="man.copyright.section.enabled">1</xsl:param> + + +Description + +If the value of +man.copyright.section.enabled is non-zero +(the default), then a COPYRIGHT section is +generated near the end of each man page. The output of the +COPYRIGHT section is assembled from any +copyright and legalnotice metadata found in +the contents of the child info or +refentryinfo (if any) of the refentry +itself, or from any copyright and +legalnotice metadata that may appear in info +contents of any ancestors of the refentry. + +If the value of +man.copyright.section.enabled is zero, the +the auto-generated COPYRIGHT section is +suppressed. + +Set the value of + man.copyright.section.enabled to zero if + you want to have a manually created COPYRIGHT + section in your source, and you want it to appear in output + instead of the auto-generated COPYRIGHT + section. + + + + + Endnotes and link handling + + +man.endnotes.list.enabled +boolean + + +man.endnotes.list.enabled +Display endnotes list at end of man page? + + + + +<xsl:param name="man.endnotes.list.enabled">1</xsl:param> + + + +Description + +If the value of man.endnotes.list.enabled is +non-zero (the default), then an endnotes list is added to the end of +the output man page. + +If the value of man.endnotes.list.enabled is +zero, the list is suppressed — unless link numbering is enabled (that +is, if man.endnotes.are.numbered is non-zero), in +which case, that setting overrides the +man.endnotes.list.enabled setting, and the +endnotes list is still displayed. The reason is that inline +numbering of notesources associated with endnotes only makes sense +if a (numbered) list of endnotes is also generated. + + + Leaving + man.endnotes.list.enabled at its default + (non-zero) value ensures that no “out of line” information (such + as the URLs for hyperlinks and images) gets lost in your + man-page output. It just gets “rearranged”. + So if you’re thinking about disabling endnotes listing by + setting the value of + man.endnotes.list.enabled to zero: + Before you do so, first take some time to carefully consider + the information needs and experiences of your users. The “out + of line” information has value even if the presentation of it + in text output is not as interactive as it may be in other + output formats. + As far as the specific case of URLs: Even though the URLs + displayed in text output may not be “real” (clickable) + hyperlinks, many X terminals have convenience features for + recognizing URLs and can, for example, present users with + an options to open a URL in a browser with the user clicks on + the URL is a terminal window. And short of those, users with X + terminals can always manually cut and paste the URLs into a web + browser. + Also, note that various “man to html” tools, such as the + widely used man2html (VH-Man2html) + application, automatically mark up URLs with a@href markup + during conversion — resulting in “real” hyperlinks in HTML + output from those tools. + + +To “turn off” numbering of endnotes in the +endnotes list, set man.endnotes.are.numbered +to zero. The endnotes list will +still be displayed; it will just be displayed without the +numbersIt can still make sense to have +the list of endnotes displayed even if you have endnotes numbering turned +off. In that case, your endnotes list basically becomes a “list +of references” without any association with specific text in +your document. This is probably the best option if you find the inline +endnotes numbering obtrusive. Your users will still have access to all the “out of line” +such as URLs for hyperlinks. + + +The default heading for the endnotes list is +NOTES. To change that, set a non-empty +value for the man.endnotes.list.heading +parameter. + +In the case of notesources that are links: Along with the +URL for each link, the endnotes list includes the contents of the +link. The list thus includes only non-empty + +A “non-empty” link is one that looks like +this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/">manpages</ulink> +an “empty link” is on that looks like this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/> + links. + +Empty links are never included, and never numbered. They are simply +displayed inline, without any numbering. + +In addition, if there are multiple instances of links in a +refentry that have the same URL, the URL is listed only +once. The contents listed for that link in the endnotes list are +the contents of the first link which has that URL. + +If you disable endnotes listing, you should probably also set +man.links.are.underlined to zero (to disable +link underlining). + + + + + +man.endnotes.list.heading +string + + +man.endnotes.list.heading +Specifies an alternate name for endnotes list + + + + +<xsl:param name="man.endnotes.list.heading"></xsl:param> + + + +Description + +If the value of the +man.endnotes.are.numbered parameter +and/or the man.endnotes.list.enabled +parameter is non-zero (the defaults for both are non-zero), a +numbered list of endnotes is generated near the end of each man +page. The default heading for the list of endnotes is the +equivalent of the English word NOTES in +the current locale. To cause an alternate heading to be displayed, +set a non-empty value for the +man.endnotes.list.heading parameter — +for example, REFERENCES. + + + + + +man.endnotes.are.numbered +boolean + + +man.endnotes.are.numbered +Number endnotes? + + + + +<xsl:param name="man.endnotes.are.numbered">1</xsl:param> + + + +Description + +If the value of man.endnotes.are.numbered is +non-zero (the default), then for each non-empty +A “non-empty” notesource is one that looks like +this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/">manpages</ulink> +an “empty” notesource is on that looks like this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/> + “notesource”: + + + + a number (in square brackets) is displayed inline after the + rendered inline contents (if any) of the notesource + + + the contents of the notesource are included in a + numbered list of endnotes that is generated at the end of + each man page; the number for each endnote corresponds to + the inline number for the notesource with which it is + associated + + +The default heading for the list of endnotes is +NOTES. To output a different heading, set a value +for the man.endnotes.section.heading +parameter. + + + The endnotes list is also displayed (but without + numbers) if the value of + man.endnotes.list.enabled is + non-zero. + + + +If the value of man.endnotes.are.numbered is +zero, numbering of endnotess is suppressed; only inline +contents (if any) of the notesource are displayed inline. + + If you are thinking about disabling endnote numbering by setting + the value of man.endnotes.are.numbered to zero, + before you do so, first take some time to carefully + consider the information needs and experiences of your users. The + square-bracketed numbers displayed inline after notesources may seem + obstrusive and aesthetically unpleasingAs far as notesources that are links, ytou might + think it would be better to just display URLs for non-empty + links inline, after their content, rather than displaying + square-bracketed numbers all over the place. But it's not better. In + fact, it's not even practical, because many (most) URLs for links + are too long to be displayed inline. They end up overflowing the + right margin. You can set a non-zero value for + man.break.after.slash parameter to deal with + that, but it could be argued that what you end up with is at least + as ugly, and definitely more obstrusive, then having short + square-bracketed numbers displayed inline., + + but in a text-only output format, the + numbered-notesources/endnotes-listing mechanism is the only + practical way to handle this kind of content. + + Also, users of “text based” browsers such as + lynx will already be accustomed to seeing inline + numbers for links. And various "man to html" applications, such as + the widely used man2html (VH-Man2html) + application, can automatically turn URLs into "real" HTML hyperlinks + in output. So leaving man.endnotes.are.numbered + at its default (non-zero) value ensures that no information is + lost in your man-page output. It just gets + “rearranged”. + + +The handling of empty links is not affected by this +parameter. Empty links are handled simply by displaying their URLs +inline. Empty links are never auto-numbered. + +If you disable endnotes numbering, you should probably also set +man.font.links to an empty value (to +disable font formatting for links. + + +Related Parameters + man.endnotes.list.enabled, + man.font.links + + + + + + man.base.url.for.relative.links + string + + + man.base.url.for.relative.links + Specifies a base URL for relative links + + + + <xsl:param name="man.base.url.for.relative.links">[set $man.base.url.for.relative.links]/</xsl:param> + + + Description + + For any “notesource” listed in the auto-generated + “NOTES” section of output man pages (which is generated when + the value of the + man.endnotes.list.enabled parameter + is non-zero), if the notesource is a link source with a + relative URI, the URI is displayed in output with the value + of the + man.base.url.for.relative.links + parameter prepended to the value of the link URI. + + + A link source is an notesource that references an + external resource: + + + a ulink element with a url attribute + + + any element with an xlink:href attribute + + + an imagedata, audiodata, or + videodata element + + + + + + If you use relative URIs in link sources in your DocBook + refentry source, and you leave + man.base.url.for.relative.links + unset, the relative links will appear “as is” in the “Notes” + section of any man-page output generated from your source. + That’s probably not what you want, because such relative + links are only usable in the context of HTML output. So, to + make the links meaningful and usable in the context of + man-page output, set a value for + man.base.url.for.relative.links that + points to the online version of HTML output generated from + your DocBook refentry source. For + example: + <xsl:param name="man.base.url.for.relative.links" + >http://www.kernel.org/pub/software/scm/git/docs/</xsl:param> + + + + + Related Parameters + man.endnotes.list.enabled + + + + + + Lists + + +man.segtitle.suppress +boolean + + +man.segtitle.suppress +Suppress display of segtitle contents? + + + + +<xsl:param name="man.segtitle.suppress" select="0"></xsl:param> + + +Description + +If the value of man.segtitle.suppress is +non-zero, then display of segtitle contents is +suppressed in output. + + + + + + Character/string substitution + + +man.charmap.enabled +boolean + + +man.charmap.enabled +Apply character map before final output? + + + + +<xsl:param name="man.charmap.enabled" select="1"></xsl:param> + + + +Description + +If the value of the man.charmap.enabled +parameter is non-zero, a "character map" is used to substitute certain +Unicode symbols and special characters with appropriate roff/groff +equivalents, just before writing each man-page file to the +filesystem. If instead the value of +man.charmap.enabled is zero, Unicode characters +are passed through "as is". + +Details + +For converting certain Unicode symbols and special characters in +UTF-8 or UTF-16 encoded XML source to appropriate groff/roff +equivalents in man-page output, the DocBook XSL Stylesheets +distribution includes a roff character map that is compliant with the XSLT character +map format as detailed in the XSLT 2.0 specification. The map +contains more than 800 character mappings and can be considered the +standard roff character map for the distribution. + +You can use the man.charmap.uri +parameter to specify a URI for the location for an alternate roff +character map to use in place of the standard roff character map +provided in the distribution. + +You can also use a subset of a character map. For details, +see the man.charmap.use.subset, +man.charmap.subset.profile, and +man.charmap.subset.profile.english +parameters. + + + + + + + +man.charmap.uri +uri + + +man.charmap.uri +URI for custom roff character map + + + + +<xsl:param name="man.charmap.uri"></xsl:param> + + + +Description + +For converting certain Unicode symbols and special characters in +UTF-8 or UTF-16 encoded XML source to appropriate groff/roff +equivalents in man-page output, the DocBook XSL Stylesheets +distribution includes an XSLT character +map. That character map can be considered the standard roff +character map for the distribution. + +If the value of the man.charmap.uri +parameter is non-empty, that value is used as the URI for the location +for an alternate roff character map to use in place of the standard +roff character map provided in the distribution. + + +Do not set a value for man.charmap.uri +unless you have a custom roff character map that differs from the +standard one provided in the distribution. + + + + + + +man.charmap.use.subset +boolean + + +man.charmap.use.subset +Use subset of character map instead of full map? + + + + +<xsl:param name="man.charmap.use.subset" select="1"></xsl:param> + + + +Description + +If the value of the +man.charmap.use.subset parameter is non-zero, +a subset of the roff character map is used instead of the full roff +character map. The profile of the subset used is determined either +by the value of the +man.charmap.subset.profile +parameter (if the source is not in English) or the +man.charmap.subset.profile.english +parameter (if the source is in English). + + + You may want to experiment with setting a non-zero value of + man.charmap.use.subset, so that the full + character map is used. Depending on which XSLT engine you run, + setting a non-zero value for + man.charmap.use.subset may significantly + increase the time needed to process your documents. Or it may + not. For example, if you set it and run it with xsltproc, it seems + to dramatically increase processing time; on the other hand, if you + set it and run it with Saxon, it does not seem to increase + processing time nearly as much. + + If processing time is not a important concern and/or you can + tolerate the increase in processing time imposed by using the full + character map, set man.charmap.use.subset to + zero. + + +Details + +For converting certain Unicode symbols and special characters in +UTF-8 or UTF-16 encoded XML source to appropriate groff/roff +equivalents in man-page output, the DocBook XSL Stylesheets +distribution includes a roff character map that is compliant with the XSLT character +map format as detailed in the XSLT 2.0 specification. The map +contains more than 800 character mappings and can be considered the +standard roff character map for the distribution. + + +You can use the man.charmap.uri +parameter to specify a URI for the location for an alternate roff +character map to use in place of the standard roff character map +provided in the distribution. + + +Because it is not terrifically efficient to use the standard +800-character character map in full -- and for most (or all) users, +never necessary to use it in full -- the DocBook XSL Stylesheets +support a mechanism for using, within any given character map, a +subset of character mappings instead of the full set. You can use the +man.charmap.subset.profile or +man.charmap.subset.profile.english +parameter to tune the profile of that subset to use. + + + + + + + +man.charmap.subset.profile +string + + +man.charmap.subset.profile +Profile of character map subset + + + + +<xsl:param name="man.charmap.subset.profile"> +@*[local-name() = 'block'] = 'Miscellaneous Technical' or +(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and + (@*[local-name() = 'class'] = 'symbols' or + @*[local-name() = 'class'] = 'letters') +) or +@*[local-name() = 'block'] = 'Latin Extended-A' +or +(@*[local-name() = 'block'] = 'General Punctuation' and + (@*[local-name() = 'class'] = 'spaces' or + @*[local-name() = 'class'] = 'dashes' or + @*[local-name() = 'class'] = 'quotes' or + @*[local-name() = 'class'] = 'bullets' + ) +) or +@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or +@*[local-name() = 'name'] = 'WORD JOINER' or +@*[local-name() = 'name'] = 'SERVICE MARK' or +@*[local-name() = 'name'] = 'TRADE MARK SIGN' or +@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE' +</xsl:param> + + + +Description + +If the value of the +man.charmap.use.subset parameter is non-zero, +and your DocBook source is not written in English (that + is, if the lang or xml:lang attribute on the root element + in your DocBook source or on the first refentry + element in your source has a value other than + en), then the character-map subset specified + by the man.charmap.subset.profile + parameter is used instead of the full roff character map. + +Otherwise, if the lang or xml:lang attribute on the root + element in your DocBook + source or on the first refentry element in your source + has the value en or if it has no lang or xml:lang attribute, then the character-map + subset specified by the + man.charmap.subset.profile.english + parameter is used instead of + man.charmap.subset.profile. + +The difference between the two subsets is that + man.charmap.subset.profile provides + mappings for characters in Western European languages that are + not part of the Roman (English) alphabet (ASCII character set). + +The value of man.charmap.subset.profile +is a string representing an XPath expression that matches attribute +names and values for output-character +elements in the character map. + +The attributes supported in the standard roff character map included in the distribution are: + + + character + + a raw Unicode character or numeric Unicode + character-entity value (either in decimal or hex); all + characters have this attribute + + + + name + + a standard full/long ISO/Unicode character name (e.g., + "OHM SIGN"); all characters have this attribute + + + + block + + a standard Unicode "block" name (e.g., "General + Punctuation"); all characters have this attribute. For the full + list of Unicode block names supported in the standard roff + character map, see . + + + + class + + a class of characters (e.g., "spaces"). Not all + characters have this attribute; currently, it is used only with + certain characters within the "C1 Controls And Latin-1 + Supplement" and "General Punctuation" blocks. For details, see + . + + + + entity + + an ISO entity name (e.g., "ohm"); not all characters + have this attribute, because not all characters have ISO entity + names; for example, of the 800 or so characters in the standard + roff character map included in the distribution, only around 300 + have ISO entity names. + + + + + string + + a string representing an roff/groff escape-code (with + "@esc@" used in place of the backslash), or a simple ASCII + string; all characters in the roff character map have this + attribute + + + + +The value of man.charmap.subset.profile +is evaluated as an XPath expression at run-time to select a portion of +the roff character map to use. You can tune the subset used by adding +or removing parts. For example, if you need to use a wide range of +mathematical operators in a document, and you want to have them +converted into roff markup properly, you might add the following: + + @*[local-name() = 'block'] ='MathematicalOperators' + +That will cause a additional set of around 67 additional "math" +characters to be converted into roff markup. + + +Depending on which XSLT engine you use, either the EXSLT +dyn:evaluate extension function (for xsltproc or +Xalan) or saxon:evaluate extension function (for +Saxon) are used to dynamically evaluate the value of +man.charmap.subset.profile at run-time. If you +don't use xsltproc, Saxon, Xalan -- or some other XSLT engine that +supports dyn:evaluate -- you must either set the +value of the man.charmap.use.subset parameter +to zero and process your documents using the full character map +instead, or set the value of the +man.charmap.enabled parameter to zero instead +(so that character-map processing is disabled completely. + + +An alternative to using +man.charmap.subset.profile is to create your +own custom character map, and set the value of +man.charmap.uri to the URI/filename for +that. If you use a custom character map, you will probably want to +include in it just the characters you want to use, and so you will +most likely also want to set the value of +man.charmap.use.subset to zero. +You can create a +custom character map by making a copy of the standard roff character map provided in the distribution, and +then adding to, changing, and/or deleting from that. + + +If you author your DocBook XML source in UTF-8 or UTF-16 +encoding and aren't sure what OSes or environments your man-page +output might end up being viewed on, and not sure what version of +nroff/groff those environments might have, you should be careful about +what Unicode symbols and special characters you use in your source and +what parts you add to the value of +man.charmap.subset.profile. +Many of the escape codes used are specific to groff and using +them may not provide the expected output on an OS or environment that +uses nroff instead of groff. +On the other hand, if you intend for your man-page output to be +viewed only on modern systems (for example, GNU/Linux systems, FreeBSD +systems, or Cygwin environments) that have a good, up-to-date groff, +then you can safely include a wide range of Unicode symbols and +special characters in your UTF-8 or UTF-16 encoded DocBook XML source +and add any of the supported Unicode block names to the value of +man.charmap.subset.profile. + + + +For other details, see the documentation for the +man.charmap.use.subset parameter. + +Supported Unicode block names and "class" values + + + Below is the full list of Unicode block names and "class" + values supported in the standard roff stylesheet provided in the + distribution, along with a description of which codepoints from the + Unicode range corresponding to that block name or block/class + combination are supported. + + + + C1 Controls And Latin-1 Supplement (Latin-1 Supplement) (x00a0 to x00ff) + class values + + + symbols + + + letters + + + + + Latin Extended-A (x0100 to x017f, partial) + + + Spacing Modifier Letters (x02b0 to x02ee, partial) + + + Greek and Coptic (x0370 to x03ff, partial) + + + General Punctuation (x2000 to x206f, partial) + class values + + + spaces + + + dashes + + + quotes + + + daggers + + + bullets + + + leaders + + + primes + + + + + + Superscripts and Subscripts (x2070 to x209f) + + + Currency Symbols (x20a0 to x20b1) + + + Letterlike Symbols (x2100 to x214b) + + + Number Forms (x2150 to x218f) + + + Arrows (x2190 to x21ff, partial) + + + Mathematical Operators (x2200 to x22ff, partial) + + + Control Pictures (x2400 to x243f) + + + Enclosed Alphanumerics (x2460 to x24ff) + + + Geometric Shapes (x25a0 to x25f7, partial) + + + Miscellaneous Symbols (x2600 to x26ff, partial) + + + Dingbats (x2700 to x27be, partial) + + + Alphabetic Presentation Forms (xfb00 to xfb04 only) + + + + + + + + +man.charmap.subset.profile.english +string + + +man.charmap.subset.profile.english +Profile of character map subset + + + + +<xsl:param name="man.charmap.subset.profile.english"> +@*[local-name() = 'block'] = 'Miscellaneous Technical' or +(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and + @*[local-name() = 'class'] = 'symbols') +or +(@*[local-name() = 'block'] = 'General Punctuation' and + (@*[local-name() = 'class'] = 'spaces' or + @*[local-name() = 'class'] = 'dashes' or + @*[local-name() = 'class'] = 'quotes' or + @*[local-name() = 'class'] = 'bullets' + ) +) or +@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or +@*[local-name() = 'name'] = 'WORD JOINER' or +@*[local-name() = 'name'] = 'SERVICE MARK' or +@*[local-name() = 'name'] = 'TRADE MARK SIGN' or +@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE' +</xsl:param> + + + +Description + +If the value of the + man.charmap.use.subset parameter is + non-zero, and your DocBook source is written in English (that + is, if its lang or xml:lang attribute on the root element + in your DocBook source or on the first refentry + element in your source has the value en or if + it has no lang or xml:lang attribute), then the + character-map subset specified by the + man.charmap.subset.profile.english + parameter is used instead of the full roff character map. + +Otherwise, if the lang or xml:lang attribute + on the root element in your DocBook source or on the first + refentry element in your source has a value other + than en, then the character-map subset + specified by the + man.charmap.subset.profile parameter is + used instead of + man.charmap.subset.profile.english. + +The difference between the two subsets is that + man.charmap.subset.profile provides + mappings for characters in Western European languages that are + not part of the Roman (English) alphabet (ASCII character set). + +The value of man.charmap.subset.profile.english +is a string representing an XPath expression that matches attribute +names and values for output-character elements in the character map. + +For other details, see the documentation for the +man.charmap.subset.profile.english and +man.charmap.use.subset parameters. + + + + + + +man.string.subst.map.local.pre +string + + +man.string.subst.map.local.pre +Specifies “local” string substitutions + + + + + <xsl:param name="man.string.subst.map.local.pre"></xsl:param> + + + +Description + +Use the man.string.subst.map.local.pre +parameter to specify any “local” string substitutions to perform over +the entire roff source for each man page before +performing the string substitutions specified by the man.string.subst.map parameter. + +For details about the format of this parameter, see the +documentation for the man.string.subst.map +parameter. + + + + + + +man.string.subst.map +rtf + + +man.string.subst.map +Specifies a set of string substitutions + + + + +<xsl:param name="man.string.subst.map"> + + <!-- * remove no-break marker at beginning of line (stylesheet artifact) --> + <ss:substitution oldstring="▒▀" newstring="▒"></ss:substitution> + <!-- * replace U+2580 no-break marker (stylesheet-added) w/ no-break space --> + <ss:substitution oldstring="▀" newstring="\ "></ss:substitution> + + <!-- ==================================================================== --> + + <!-- * squeeze multiple newlines before a roff request --> + <ss:substitution oldstring=" + +." newstring=" +."></ss:substitution> + <!-- * remove any .sp instances that directly precede a .PP --> + <ss:substitution oldstring=".sp +.PP" newstring=".PP"></ss:substitution> + <!-- * remove any .sp instances that directly follow a .PP --> + <ss:substitution oldstring=".sp +.sp" newstring=".sp"></ss:substitution> + <!-- * squeeze multiple .sp instances into a single .sp--> + <ss:substitution oldstring=".PP +.sp" newstring=".PP"></ss:substitution> + <!-- * squeeze multiple newlines after start of no-fill (verbatim) env. --> + <ss:substitution oldstring=".nf + +" newstring=".nf +"></ss:substitution> + <!-- * squeeze multiple newlines after REstoring margin --> + <ss:substitution oldstring=".RE + +" newstring=".RE +"></ss:substitution> + <!-- * U+2591 is a marker we add before and after every Parameter in --> + <!-- * Funcprototype output --> + <ss:substitution oldstring="░" newstring=" "></ss:substitution> + <!-- * U+2592 is a marker we add for the newline before output of <sbr>; --> + <ss:substitution oldstring="▒" newstring=" +"></ss:substitution> + <!-- * --> + <!-- * Now deal with some other characters that are added by the --> + <!-- * stylesheets during processing. --> + <!-- * --> + <!-- * bullet --> + <ss:substitution oldstring="•" newstring="\(bu"></ss:substitution> + <!-- * left double quote --> + <ss:substitution oldstring="“" newstring="\(lq"></ss:substitution> + <!-- * right double quote --> + <ss:substitution oldstring="”" newstring="\(rq"></ss:substitution> + <!-- * left single quote --> + <ss:substitution oldstring="‘" newstring="\(oq"></ss:substitution> + <!-- * right single quote --> + <ss:substitution oldstring="’" newstring="\(cq"></ss:substitution> + <!-- * copyright sign --> + <ss:substitution oldstring="©" newstring="\(co"></ss:substitution> + <!-- * registered sign --> + <ss:substitution oldstring="®" newstring="\(rg"></ss:substitution> + <!-- * ...servicemark... --> + <!-- * There is no groff equivalent for it. --> + <ss:substitution oldstring="℠" newstring="(SM)"></ss:substitution> + <!-- * ...trademark... --> + <!-- * We don't do "\(tm" because for console output, --> + <!-- * groff just renders that as "tm"; that is: --> + <!-- * --> + <!-- * Product&#x2122; -> Producttm --> + <!-- * --> + <!-- * So we just make it to "(TM)" instead; thus: --> + <!-- * --> + <!-- * Product&#x2122; -> Product(TM) --> + <ss:substitution oldstring="™" newstring="(TM)"></ss:substitution> + +</xsl:param> + + + +Description + +The man.string.subst.map parameter +contains a map that specifies a set of +string substitutions to perform over the entire roff source for each +man page, either just before generating final man-page output (that +is, before writing man-page files to disk) or, if the value of the +man.charmap.enabled parameter is non-zero, +before applying the roff character map. + +You can use man.string.subst.map as a +“lightweight” character map to perform “essential” substitutions -- +that is, substitutions that are always performed, +even if the value of the man.charmap.enabled +parameter is zero. For example, you can use it to replace quotation +marks or other special characters that are generated by the DocBook +XSL stylesheets for a particular locale setting (as opposed to those +characters that are actually in source XML documents), or to replace +any special characters that may be automatically generated by a +particular customization of the DocBook XSL stylesheets. + + + Do you not change value of the + man.string.subst.map parameter unless you are + sure what you are doing. First consider adding your + string-substitution mappings to either or both of the following + parameters: + + + man.string.subst.map.local.pre + applied before + man.string.subst.map + + + man.string.subst.map.local.post + applied after + man.string.subst.map + + + By default, both of those parameters contain no + string substitutions. They are intended as a means for you to + specify your own local string-substitution mappings. + + If you remove any of default mappings from the value of the + man.string.subst.map parameter, you are + likely to end up with broken output. And be very careful about adding + anything to it; it’s used for doing string substitution over the + entire roff source of each man page – it causes target strings to be + replaced in roff requests and escapes, not just in the visible + contents of the page. + + + + + + Contents of the substitution map + + The string-substitution map contains one or more + ss:substitution elements, each of which has two + attributes: + + + oldstring + + string to replace + + + + newstring + + string with which to replace oldstring + + + + It may also include XML comments (that is, delimited with + "<!--" and "-->"). + + + + + + + + +man.string.subst.map.local.post +string + + +man.string.subst.map.local.post +Specifies “local” string substitutions + + + + +<xsl:param name="man.string.subst.map.local.post"></xsl:param> + + + +Description + +Use the man.string.subst.map.local.post +parameter to specify any “local” string substitutions to perform over +the entire roff source for each man page after +performing the string substitutions specified by the man.string.subst.map parameter. + +For details about the format of this parameter, see the +documentation for the man.string.subst.map +parameter. + + + + + + Refentry metadata gathering + + +refentry.meta.get.quietly +boolean + + +refentry.meta.get.quietly +Suppress notes and warnings when gathering refentry metadata? + + + + +<xsl:param name="refentry.meta.get.quietly" select="0"></xsl:param> + + + +Description + +If zero (the default), notes and warnings about “missing” markup +are generated during gathering of refentry metadata. If non-zero, the +metadata is gathered “quietly” -- that is, the notes and warnings are +suppressed. + + + If you are processing a large amount of refentry + content, you may be able to speed up processing significantly by + setting a non-zero value for + refentry.meta.get.quietly. + + + + + + + +refentry.date.profile +string + + +refentry.date.profile +Specifies profile for refentry "date" data + + + + +<xsl:param name="refentry.date.profile"> + (($info[//date])[last()]/date)[1]| + (($info[//pubdate])[last()]/pubdate)[1] +</xsl:param> + + + +Description + +The value of refentry.date.profile is a +string representing an XPath expression. It is evaluated at run-time +and used only if refentry.date.profile.enabled +is non-zero. Otherwise, the refentry metadata-gathering +logic "hard coded" into the stylesheets is used. + + The man(7) man page describes this content +as "the date of the last revision". In man pages, it is the content +that is usually displayed in the center footer. + + + + + + +refentry.date.profile.enabled +boolean + + +refentry.date.profile.enabled +Enable refentry "date" profiling? + + + + +<xsl:param name="refentry.date.profile.enabled">0</xsl:param> + + +Description + +If the value of +refentry.date.profile.enabled is non-zero, then +during refentry metadata gathering, the info profile +specified by the customizable +refentry.date.profile parameter is used. + +If instead the value of +refentry.date.profile.enabled is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering refentry "date" data. + +If you find that the default refentry +metadata-gathering behavior is causing incorrect "date" data to show +up in your output, then consider setting a non-zero value for +refentry.date.profile.enabled and adjusting the +value of refentry.date.profile to cause correct +data to be gathered. + +Note that the terms "source" and "date" have special meanings in +this context. For details, see the documentation for the +refentry.date.profile parameter. + + + + + + +refentry.manual.profile +string + + +refentry.manual.profile +Specifies profile for refentry "manual" data + + + + +<xsl:param name="refentry.manual.profile"> + (($info[//title])[last()]/title)[1]| + ../title/node() +</xsl:param> + + + +Description + +The value of refentry.manual.profile is +a string representing an XPath expression. It is evaluated at +run-time and used only if +refentry.manual.profile.enabled is +non-zero. Otherwise, the refentry metadata-gathering logic +"hard coded" into the stylesheets is used. + +In man pages, this content is usually displayed in the middle of +the header of the page. The man(7) man page +describes this as "the title of the manual (e.g., Linux +Programmer's Manual)". Here are some examples from +existing man pages: + + + dpkg utilities + (dpkg-name) + + + User Contributed Perl Documentation + (GET) + + + GNU Development Tools + (ld) + + + Emperor Norton Utilities + (ddate) + + + Debian GNU/Linux manual + (faked) + + + GIMP Manual Pages + (gimp) + + + KDOC Documentation System + (qt2kdoc) + + + + + + + + + +refentry.manual.profile.enabled +boolean + + +refentry.manual.profile.enabled +Enable refentry "manual" profiling? + + + + +<xsl:param name="refentry.manual.profile.enabled">0</xsl:param> + + +Description + +If the value of +refentry.manual.profile.enabled is +non-zero, then during refentry metadata gathering, the info +profile specified by the customizable +refentry.manual.profile parameter is +used. + +If instead the value of +refentry.manual.profile.enabled is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering refentry "manual" data. + +If you find that the default refentry +metadata-gathering behavior is causing incorrect "manual" data to show +up in your output, then consider setting a non-zero value for +refentry.manual.profile.enabled and adjusting +the value of refentry.manual.profile to cause +correct data to be gathered. + +Note that the term "manual" has a special meanings in this +context. For details, see the documentation for the +refentry.manual.profile parameter. + + + + + + +refentry.source.name.suppress +boolean + + +refentry.source.name.suppress +Suppress "name" part of refentry "source" contents? + + + + +<xsl:param name="refentry.source.name.suppress">0</xsl:param> + + +Description + +If the value of +refentry.source.name.suppress is non-zero, then +during refentry metadata gathering, no "source name" data +is added to the refentry "source" contents. Instead (unless +refentry.version.suppress is also non-zero), +only "version" data is added to the "source" contents. + +If you find that the refentry metadata gathering +mechanism is causing unwanted "source name" data to show up in your +output -- for example, in the footer (or possibly header) of a man +page -- then you might consider setting a non-zero value for +refentry.source.name.suppress. + +Note that the terms "source", "source name", and "version" have +special meanings in this context. For details, see the documentation +for the refentry.source.name.profile +parameter. + + + + + + +refentry.source.name.profile +string + + +refentry.source.name.profile +Specifies profile for refentry "source name" data + + + + +<xsl:param name="refentry.source.name.profile"> + (($info[//productname])[last()]/productname)[1]| + (($info[//corpname])[last()]/corpname)[1]| + (($info[//corpcredit])[last()]/corpcredit)[1]| + (($info[//corpauthor])[last()]/corpauthor)[1]| + (($info[//orgname])[last()]/orgname)[1]| + (($info[//publishername])[last()]/publishername)[1] +</xsl:param> + + + +Description + +The value of refentry.source.name.profile +is a string representing an XPath expression. It is evaluated at +run-time and used only if +refentry.source.name.profile.enabled is +non-zero. Otherwise, the refentry metadata-gathering logic +"hard coded" into the stylesheets is used. + +A "source name" is one part of a (potentially) two-part +Name Version +"source" field. In man pages, it is usually displayed in the left +footer of the page. It typically indicates the software system or +product that the item documented in the man page belongs to. The +man(7) man page describes it as "the source of +the command", and provides the following examples: + + + For binaries, use something like: GNU, NET-2, SLS + Distribution, MCC Distribution. + + + For system calls, use the version of the kernel that you + are currently looking at: Linux 0.99.11. + + + For library calls, use the source of the function: GNU, BSD + 4.3, Linux DLL 4.4.1. + + + + +In practice, there are many pages that simply have a Version +number in the "source" field. So, it looks like what we have is a +two-part field, +Name Version, +where: + + + Name + + product name (e.g., BSD) or org. name (e.g., GNU) + + + + Version + + version number + + + +Each part is optional. If the Name is a +product name, then the Version is probably +the version of the product. Or there may be no +Name, in which case, if there is a +Version, it is probably the version +of the item itself, not the product it is part of. Or, if the +Name is an organization name, then there +probably will be no Version. + + + + + +refentry.source.name.profile.enabled +boolean + + +refentry.source.name.profile.enabled +Enable refentry "source name" profiling? + + + + +<xsl:param name="refentry.source.name.profile.enabled">0</xsl:param> + + +Description + +If the value of +refentry.source.name.profile.enabled is +non-zero, then during refentry metadata gathering, the info +profile specified by the customizable +refentry.source.name.profile parameter is +used. + +If instead the value of +refentry.source.name.profile.enabled is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering refentry "source name" data. + +If you find that the default refentry +metadata-gathering behavior is causing incorrect "source name" data to +show up in your output, then consider setting a non-zero value for +refentry.source.name.profile.enabled and +adjusting the value of +refentry.source.name.profile to cause correct +data to be gathered. + +Note that the terms "source" and "source name" have special +meanings in this context. For details, see the documentation for the +refentry.source.name.profile parameter. + + + + + + +refentry.version.suppress +boolean + + +refentry.version.suppress +Suppress "version" part of refentry "source" contents? + + + + +<xsl:param name="refentry.version.suppress">0</xsl:param> + + +Description + +If the value of refentry.version.suppress +is non-zero, then during refentry metadata gathering, no +"version" data is added to the refentry "source" +contents. Instead (unless +refentry.source.name.suppress is also +non-zero), only "source name" data is added to the "source" +contents. + +If you find that the refentry metadata gathering +mechanism is causing unwanted "version" data to show up in your output +-- for example, in the footer (or possibly header) of a man page -- +then you might consider setting a non-zero value for +refentry.version.suppress. + +Note that the terms "source", "source name", and "version" have +special meanings in this context. For details, see the documentation +for the refentry.source.name.profile +parameter. + + + + + + +refentry.version.profile +string + + +refentry.version.profile +Specifies profile for refentry "version" data + + + + +<xsl:param name="refentry.version.profile"> + (($info[//productnumber])[last()]/productnumber)[1]| + (($info[//edition])[last()]/edition)[1]| + (($info[//releaseinfo])[last()]/releaseinfo)[1] +</xsl:param> + + + +Description + +The value of refentry.version.profile is +a string representing an XPath expression. It is evaluated at +run-time and used only if +refentry.version.profile.enabled is +non-zero. Otherwise, the refentry metadata-gathering logic +"hard coded" into the stylesheets is used. + +A "source.name" is one part of a (potentially) two-part +Name Version +"source" field. For more details, see the documentation for the +refentry.source.name.profile parameter. + + + + + + +refentry.version.profile.enabled +boolean + + +refentry.version.profile.enabled +Enable refentry "version" profiling? + + + + +<xsl:param name="refentry.version.profile.enabled">0</xsl:param> + + +Description + +If the value of +refentry.version.profile.enabled is +non-zero, then during refentry metadata gathering, the info +profile specified by the customizable +refentry.version.profile parameter is +used. + +If instead the value of +refentry.version.profile.enabled is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering refentry "version" data. + +If you find that the default refentry +metadata-gathering behavior is causing incorrect "version" data to show +up in your output, then consider setting a non-zero value for +refentry.version.profile.enabled and adjusting +the value of refentry.version.profile to cause +correct data to be gathered. + +Note that the terms "source" and "version" have special +meanings in this context. For details, see the documentation for the +refentry.version.profile parameter. + + + + + + +refentry.manual.fallback.profile +string + + +refentry.manual.fallback.profile +Specifies profile of "fallback" for refentry "manual" data + + + + +<xsl:param name="refentry.manual.fallback.profile"> +refmeta/refmiscinfo[not(@class = 'date')][1]/node()</xsl:param> + + + +Description + +The value of +refentry.manual.fallback.profile is a string +representing an XPath expression. It is evaluated at run-time and +used only if no "manual" data can be found by other means (that is, +either using the refentry metadata-gathering logic "hard +coded" in the stylesheets, or the value of +refentry.manual.profile, if it is +enabled). + + +Depending on which XSLT engine you run, either the EXSLT +dyn:evaluate extension function (for xsltproc or +Xalan) or saxon:evaluate extension function (for +Saxon) are used to dynamically evaluate the value of +refentry.manual.fallback.profile at +run-time. If you don't use xsltproc, Saxon, Xalan -- or some other +XSLT engine that supports dyn:evaluate -- you +must manually disable fallback processing by setting an empty value +for the refentry.manual.fallback.profile +parameter. + + + + + + + +refentry.source.fallback.profile +string + + +refentry.source.fallback.profile +Specifies profile of "fallback" for refentry "source" data + + + + +<xsl:param name="refentry.source.fallback.profile"> +refmeta/refmiscinfo[not(@class = 'date')][1]/node()</xsl:param> + + + +Description + +The value of +refentry.source.fallback.profile is a string +representing an XPath expression. It is evaluated at run-time and used +only if no "source" data can be found by other means (that is, either +using the refentry metadata-gathering logic "hard coded" in +the stylesheets, or the value of the +refentry.source.name.profile and +refentry.version.profile parameters, if those +are enabled). + + +Depending on which XSLT engine you run, either the EXSLT +dyn:evaluate extension function (for xsltproc or +Xalan) or saxon:evaluate extension function (for +Saxon) are used to dynamically evaluate the value of +refentry.source.fallback.profile at +run-time. If you don't use xsltproc, Saxon, Xalan -- or some other +XSLT engine that supports dyn:evaluate -- you +must manually disable fallback processing by setting an empty value +for the refentry.source.fallback.profile +parameter. + + + + + + + Page header/footer + + +man.th.extra1.suppress +boolean + + +man.th.extra1.suppress +Suppress extra1 part of header/footer? + + + + +<xsl:param name="man.th.extra1.suppress">0</xsl:param> + + +Description + +If the value of man.th.extra1.suppress is +non-zero, then the extra1 part of the +.TH title line header/footer is suppressed. + +The content of the extra1 field is almost +always displayed in the center footer of the page and is, universally, +a date. + + + + + + +man.th.extra2.suppress +boolean + + +man.th.extra2.suppress +Suppress extra2 part of header/footer? + + + + +<xsl:param name="man.th.extra2.suppress">0</xsl:param> + + +Description + +If the value of man.th.extra2.suppress is +non-zero, then the extra2 part of the +.TH title line header/footer is suppressed. + +The content of the extra2 field is usually +displayed in the left footer of the page and is typically "source" +data, often in the form +Name Version; +for example, "GTK+ 1.2" (from the gtk-options(7) +man page). + + + You can use the + refentry.source.name.suppress and + refentry.version.suppress parameters to + independently suppress the Name and + Version parts of the + extra2 field. + + + + + + + +man.th.extra3.suppress +boolean + + +man.th.extra3.suppress +Suppress extra3 part of header/footer? + + + + +<xsl:param name="man.th.extra3.suppress">0</xsl:param> + + +Description + +If the value of man.th.extra3.suppress is +non-zero, then the extra3 part of the +.TH title line header/footer is +suppressed. + +The content of the extra3 field is usually +displayed in the middle header of the page and is typically a "manual +name"; for example, "GTK+ User's Manual" (from the +gtk-options(7) man page). + + + + + + +man.th.title.max.length +integer + + +man.th.title.max.length +Maximum length of title in header/footer + + + + +<xsl:param name="man.th.title.max.length">20</xsl:param> + + + +Description + +Specifies the maximum permitted length of the title part of the +man-page .TH title line header/footer. If the title +exceeds the maxiumum specified, it is truncated down to the maximum +permitted length. + +Details + + +Every man page generated using the DocBook stylesheets has a +title line, specified using the TH roff +macro. Within that title line, there is always, at a minimum, a title, +followed by a section value (representing a man "section" -- usually +just a number). + +The title and section are displayed, together, in the visible +header of each page. Where in the header they are displayed depends on +OS the man page is viewed on, and on what version of nroff/groff/man +is used for viewing the page. But, at a minimum and across all +systems, the title and section are displayed on the right-hand column +of the header. On many systems -- those with a modern groff, including +Linux systems -- they are displayed twice: both in the left and right +columns of the header. + +So if the length of the title exceeds a certain percentage of +the column width in which the page is viewed, the left and right +titles can end up overlapping, making them unreadable, or breaking to +another line, which doesn't look particularly good. + +So the stylesheets provide the +man.th.title.max.length parameter as a means +for truncating titles that exceed the maximum length that can be +viewing properly in a page header. + +The default value is reasonable but somewhat arbitrary. If you +have pages with long titles, you may want to experiment with changing +the value in order to achieve the correct aesthetic results. + + + + + + + +man.th.extra2.max.length +integer + + +man.th.extra2.max.length +Maximum length of extra2 in header/footer + + + + +<xsl:param name="man.th.extra2.max.length">30</xsl:param> + + + +Description + +Specifies the maximum permitted length of the +extra2 part of the man-page part of the +.TH title line header/footer. If the +extra2 content exceeds the maxiumum specified, it +is truncated down to the maximum permitted length. + +The content of the extra2 field is usually +displayed in the left footer of the page and is typically "source" +data indicating the software system or product that the item +documented in the man page belongs to, often in the form +Name Version; +for example, "GTK+ 1.2" (from the gtk-options(7) +man page). + +The default value for this parameter is reasonable but somewhat +arbitrary. If you are processing pages with long "source" information, +you may want to experiment with changing the value in order to achieve +the correct aesthetic results. + + + + + +man.th.extra3.max.length +integer + + +man.th.extra3.max.length +Maximum length of extra3 in header/footer + + + + +<xsl:param name="man.th.extra3.max.length">30</xsl:param> + + + +Description + +Specifies the maximum permitted length of the +extra3 part of the man-page .TH +title line header/footer. If the extra3 content +exceeds the maxiumum specified, it is truncated down to the maximum +permitted length. + +The content of the extra3 field is usually +displayed in the middle header of the page and is typically a "manual +name"; for example, "GTK+ User's Manual" (from the +gtk-options(7) man page). + +The default value for this parameter is reasonable but somewhat +arbitrary. If you are processing pages with long "manual names" -- or +especially if you are processing pages that have both long "title" +parts (command/function, etc. names) and long +manual names -- you may want to experiment with changing the value in +order to achieve the correct aesthetic results. + + + + + Output + + + man.output.manifest.enabled + boolean + + + man.output.manifest.enabled + Generate a manifest file? + + + + <xsl:param name="man.output.manifest.enabled" select="0"></xsl:param> + + + Description + + If non-zero, a list of filenames for man pages generated by + the stylesheet transformation is written to the file named by the + man.output.manifest.filename parameter. + + + + + + + man.output.manifest.filename + string + + + man.output.manifest.filename + Name of manifest file + + + + <xsl:param name="man.output.manifest.filename">MAN.MANIFEST</xsl:param> + + + Description + + The man.output.manifest.filename parameter + specifies the name of the file to which the manpages manifest file + is written (if the value of the + man.output.manifest.enabled parameter is + non-zero). + + + + + + +man.output.in.separate.dir +boolean + + +man.output.in.separate.dir +Output man-page files in separate output directory? + + + + +<xsl:param name="man.output.in.separate.dir" select="0"></xsl:param> + + + +Description + +If the value of man.output.in.separate.dir +parameter is non-zero, man-page files are output in a separate +directory, specified by the man.output.base.dir +parameter; otherwise, if the value of +man.output.in.separate.dir is zero, man-page files +are not output in a separate directory. + + + + + + +man.output.lang.in.name.enabled +boolean + + +man.output.lang.in.name.enabled +Include $LANG value in man-page filename/pathname? + + + + +<xsl:param name="man.output.lang.in.name.enabled" select="0"></xsl:param> + + + +Description + + The man.output.lang.in.name.enabled + parameter specifies whether a $lang value is + included in man-page filenames and pathnames. + + If the value of + man.output.lang.in.name.enabled is non-zero, + man-page files are output with the $lang value + included in their filenames or pathnames as follows; + + + + if man.output.subdirs.enabled is + non-zero, each file is output to, e.g., a + man/$lang/man8/foo.8 + pathname + + + if man.output.subdirs.enabled is + zero, each file is output with a + foo.$lang.8 + filename + + + + + + + + + +man.output.base.dir +uri + + +man.output.base.dir +Specifies separate output directory + + + +<xsl:param name="man.output.base.dir">man/</xsl:param> + + +Description + +The man.output.base.dir parameter +specifies the base directory into which man-page files are output. The +man.output.subdirs.enabled parameter controls +whether the files are output in subdirectories within the base +directory. + + + The values of the man.output.base.dir + and man.output.subdirs.enabled parameters are + used only if the value of + man.output.in.separate.dir parameter is + non-zero. If the value of the + man.output.in.separate.dir is zero, man-page + files are not output in a separate directory. + + + + + + + +man.output.subdirs.enabled +boolean + + +man.output.subdirs.enabled +Output man-page files in subdirectories within base output directory? + + + + +<xsl:param name="man.output.subdirs.enabled" select="1"></xsl:param> + + + +Description + +The man.output.subdirs.enabled parameter +controls whether man-pages files are output in subdirectories within +the base directory specified by the directory specified by the +man.output.base.dir parameter. + + + The values of the man.output.base.dir + and man.output.subdirs.enabled parameters are + used only if the value of + man.output.in.separate.dir parameter is + non-zero. If the value of the + man.output.in.separate.dir is zero, man-page + files are not output in a separate directory. + + + + + + + +man.output.quietly +boolean + + +man.output.quietly +Suppress filename messages emitted when generating output? + + + + +<xsl:param name="man.output.quietly" select="0"></xsl:param> + + + +Description + +If zero (the default), for each man-page file created, a message +with the name of the file is emitted. If non-zero, the files are +output "quietly" -- that is, the filename messages are +suppressed. + + + If you are processing a large amount of refentry + content, you may be able to speed up processing significantly by + setting a non-zero value for + man.output.quietly. + + + + + + + +man.output.encoding +string + + +man.output.encoding +Encoding used for man-page output + + + + +<xsl:param name="man.output.encoding">UTF-8</xsl:param> + + + +Description + +This parameter specifies the encoding to use for files generated +by the manpages stylesheet. Not all processors support specification +of this parameter. + + + If the value of the man.charmap.enabled + parameter is non-zero (the default), keeping the + man.output.encoding parameter at its default + value (UTF-8) or setting it to + UTF-16 does not cause your + man pages to be output in raw UTF-8 or UTF-16 -- because + any Unicode characters for which matches are found in the enabled + character map will be replaced with roff escape sequences before the + final man-page files are generated. + + So if you want to generate "real" UTF-8 man pages, without any + character substitution being performed on your content, you need to + set man.charmap.enabled to zero (which will + completely disable character-map processing). + + You may also need to set + man.charmap.enabled to zero if you want to + output man pages in an encoding other than UTF-8 + or UTF-16. Character-map processing is based on + Unicode character values and may not work with other output + encodings. + + + + + + + +man.output.better.ps.enabled +boolean + + +man.output.better.ps.enabled +Enable enhanced print/PostScript output? + + + +<xsl:param name="man.output.better.ps.enabled">0</xsl:param> + + +Description + +If the value of the +man.output.better.ps.enabled parameter is +non-zero, certain markup is embedded in each generated man page +such that PostScript output from the man -Tps +command for that page will include a number of enhancements +designed to improve the quality of that output. + +If man.output.better.ps.enabled is +zero (the default), no such markup is embedded in generated man +pages, and no enhancements are included in the PostScript +output generated from those man pages by the man + -Tps command. + + + The enhancements provided by this parameter rely on + features that are specific to groff (GNU troff) and that are + not part of “classic” AT&T troff or any of its + derivatives. Therefore, any man pages you generate with this + parameter enabled will be readable only on systems on which + the groff (GNU troff) program is installed, such as GNU/Linux + systems. The pages will not not be + readable on systems on with the classic troff (AT&T + troff) command is installed. + + +The value of this parameter only affects PostScript output + generated from the man command. It has no + effect on output generated using the FO backend. + + + You can generate PostScript output for any man page by + running the following command: + man FOO -Tps > FOO.ps + You can then generate PDF output by running the following + command: + ps2pdf FOO.ps + + + + + + + Other + + +man.table.footnotes.divider +string + + +man.table.footnotes.divider +Specifies divider string that appears before table footnotes + + + + +<xsl:param name="man.table.footnotes.divider">----</xsl:param> + + + +Description + +In each table that contains footenotes, the string specified by +the man.table.footnotes.divider parameter is +output before the list of footnotes for the table. + + + + + + +man.subheading.divider.enabled +boolean + + +man.subheading.divider.enabled +Add divider comment to roff source before/after subheadings? + + + + +<xsl:param name="man.subheading.divider.enabled">0</xsl:param> + + + +Description + +If the value of the +man.subheading.divider.enabled parameter is +non-zero, the contents of the +man.subheading.divider parameter are used to +add a "divider" before and after subheadings in the roff +output. The divider is not visisble in the +rendered man page; it is added as a comment, in the source, +simply for the purpose of increasing reability of the source. + +If man.subheading.divider.enabled is zero +(the default), the subheading divider is suppressed. + + + + + + +man.subheading.divider +string + + +man.subheading.divider +Specifies string to use as divider comment before/after subheadings + + + + +<xsl:param name="man.subheading.divider">========================================================================</xsl:param> + + + +Description + +If the value of the +man.subheading.divider.enabled parameter is +non-zero, the contents of the +man.subheading.divider parameter are used to +add a "divider" before and after subheadings in the roff +output. The divider is not visisble in the +rendered man page; it is added as a comment, in the source, +simply for the purpose of increasing reability of the source. + +If man.subheading.divider.enabled is zero +(the default), the subheading divider is suppressed. + + + + + +
+ + + + Roundtrip Parameter Reference + + + This is reference documentation for all user-configurable + parameters in the DocBook “Roundtrip” Stylesheets (for + transforming DocBook to WordML, OpenDocument, and Apple Pages, + and for converting from those formats back to DocBook). + + + + + + +wordml.template +uri + + +wordml.template +Specify the template WordML document + + + + +<xsl:param name="wordml.template"></xsl:param> + + + +Description + +The wordml.template parameter specifies a WordML document to use as a template for the generated document. The template document is used to define the (extensive) headers for the generated document, in particular the paragraph and character styles that are used to format the various elements. Any content in the template document is ignored. + +A template document is used in order to allow maintenance of the paragraph and character styles to be done using Word itself, rather than these XSL stylesheets. + + + + + + +pages.template +uri + + +pages.template +Specify the template Pages document + + + + +<xsl:param name="pages.template"></xsl:param> + + + +Description + +The pages.template parameter specifies a Pages (the Apple word processing application) document to use as a template for the generated document. The template document is used to define the (extensive) headers for the generated document, in particular the paragraph and character styles that are used to format the various elements. Any content in the template document is ignored. + +A template document is used in order to allow maintenance of the paragraph and character styles to be done using Pages itself, rather than these XSL stylesheets. + + + + + + + Slides Parameter Reference + + + + This is reference documentation for all + user-configurable parameters in the DocBook XSL Slides + stylesheets (for generating HTML and PDF slide + presentations). + + The Slides stylesheet for HTML output is a + customization layer of the DocBook XSL HTML + stylesheet; the Slides stylesheet for FO output is a + customization layer of the DocBook XSL FO stylesheet. + Therefore, in addition to the slides-specific + parameters listed in this section, you can also use a + number of HTML stylesheet + parameters and FO + stylesheet parameters to control Slides + output. + + + +HTML: General Parameters + + +keyboard.nav +boolean + + +keyboard.nav +Enable keyboard navigation? + + + + +<xsl:param name="keyboard.nav" select="1"></xsl:param> + + + +Description + +If non-zero, JavaScript is added to the slides to enable keyboard +navigation. Pressing 'n', space, or return moves forward; pressing 'p' moves +backward. + + + + + + +css.stylesheet +uri + + +css.stylesheet +CSS stylesheet for slides + + + + +<xsl:param name="css.stylesheet">slides.css</xsl:param> + + + +Description + +Identifies the CSS stylesheet used by all the slides. This parameter +can be set in the source document with the <?dbhtml?> pseudo-attribute +css-stylesheet. + + + + + + +css.stylesheet.dir +uri + + +css.stylesheet.dir +Default directory for CSS stylesheets + + + + +<xsl:param name="css.stylesheet.dir"></xsl:param> + + + +Description + +Identifies the default directory for the CSS stylesheet +generated on all the slides. This parameter can be set in the source +document with the <?dbhtml?> pseudo-attribute +css-stylesheet-dir. + +If non-empty, this value is prepended to each of the stylesheets. + + + + + + + +titlefoil.html +filename + + +titlefoil.html +Name of title foil HTML file + + + + +<xsl:param name="titlefoil.html" select="concat('index', $html.ext)"></xsl:param> + + + +Description + +Sets the filename used for the slides titlepage. + + + + + + +toc.html +filename + + +toc.html +Name of ToC HTML file + + + + +<xsl:param name="toc.html" select="concat('toc', $html.ext)"></xsl:param> + + + +Description + +Sets the filename used for the table of contents page. + + + + + + +foilgroup.toc +boolean + + +foilgroup.toc +Put ToC on foilgroup pages? + + + + +<xsl:param name="foilgroup.toc" select="1"></xsl:param> + + + +Description + +If non-zero, a ToC will be placed on foilgroup pages (after any +other content). + + + + + + + +output.indent +list +no +yes + + +output.indent +Indent output? + + + + +<xsl:param name="output.indent">no</xsl:param> + + + +Description + +Specifies the setting of the indent +parameter on the HTML slides. For more information, see the discussion +of the xsl:output element in the XSLT specification. +Select from yes or no. + + + + + + +overlay +boolean + + +overlay +Overlay footer navigation? + + + + +<xsl:param name="overlay" select="0"></xsl:param> + + + +Description + +If non-zero, JavaScript is added to the slides to make the +bottom navigation appear at the bottom of each page. This option and +multiframe are mutually exclusive. + +If this parameter is zero, the bottom navigation simply appears +below the content of each slide. + + + + + + +show.foil.number +boolean + + +show.foil.number +Show foil number on each foil? + + + + +<xsl:param name="show.foil.number" select="0"></xsl:param> + + + +Description + +If non-zero, on each slide there will be its number. Currently +not supported in all output formats. + + + + + +HTML: Frames Parameters + + +nav.separator +boolean + + +nav.separator +Output separator between navigation and body? + + + + +<xsl:param name="nav.separator" select="1"></xsl:param> + + + +Description + +If non-zero, a separator (<HR>) is +added between the navigation links and the content of each slide. + + + + + + +toc.row.height +length + + +toc.row.height +Height of ToC rows in dynamic ToCs + + + + +<xsl:param name="toc.row.height">22</xsl:param> + + + +Description + +This parameter specifies the height of each row in the table of +contents. This is only applicable if a dynamic ToC is used. You may want to +adjust this parameter for optimal appearance with the font and image +sizes selected by your CSS +stylesheet. + + + + + + + +toc.bg.color +color + + +toc.bg.color +Background color for ToC frame + + + + +<xsl:param name="toc.bg.color">#FFFFFF</xsl:param> + + + +Description + +Specifies the background color used in the ToC frame. + + + + + + +body.bg.color +color + + +body.bg.color +Background color for body frame + + + + +<xsl:param name="body.bg.color">#FFFFFF</xsl:param> + + + +Description + +Specifies the background color used in the body column of +tabular slides. + + + + + + +toc.width +length + + +toc.width +Width of ToC frame + + + + +<xsl:param name="toc.width">250</xsl:param> +<!-- Presumably in pixels? --> + + + +Description + +Specifies the width of the ToC frame in pixels. + + + + + + +toc.hide.show +boolean + + +toc.hide.show +Enable hide/show button for ToC frame + + + + +<xsl:param name="toc.hide.show" select="0"></xsl:param> + + + +Description + +If non-zero, JavaScript (and an additional icon, see +hidetoc.image and +showtoc.image) is added to each slide +to allow the ToC panel to be toggled on each panel. + +There is a bug in Mozilla 1.0 (at least as of CR3) that causes +the browser to reload the titlepage when this feature is used. + + + + + + +dynamic.toc +boolean + + +dynamic.toc +Dynamic ToCs? + + + + +<xsl:param name="dynamic.toc" select="0"></xsl:param> + + + +Description + +If non-zero, JavaScript is used to make the ToC panel dynamic. +In a dynamic ToC, each section in the ToC can be expanded and collapsed by +clicking on the appropriate image. + + + + + + +active.toc +boolean + + +active.toc +Active ToCs? + + + + +<xsl:param name="active.toc" select="0"></xsl:param> + + + +Description + +If non-zero, JavaScript is used to keep the ToC and the current slide +in sync. That is, each time the slide changes, the corresponding +ToC entry will be underlined. + + + + + + + + +multiframe +boolean + + +multiframe +Use multiple frames for slide bodies? + + + + +<xsl:param name="multiframe" select="0"></xsl:param> + + + +Description + +If non-zero, multiple frames are used for the body of each +slide. This is one way of forcing the slide navigation elements to +appear in constant locations. The other way is with overlays. The overlay and +multiframe parameters are mutually +exclusive. + + + + + + +multiframe.top.bgcolor +color + + +multiframe.top.bgcolor +Background color for top navigation frame + + + + +<xsl:param name="multiframe.top.bgcolor">white</xsl:param> + + + +Description + +Specifies the background color of the top navigation frame when +multiframe is enabled. + + + + + + +multiframe.bottom.bgcolor +color + + +multiframe.bottom.bgcolor +Background color for bottom navigation frame + + + + +<xsl:param name="multiframe.bottom.bgcolor">white</xsl:param> + + + +Description + +Specifies the background color of the bottom navigation frame when +multiframe is enabled. + + + + + + +multiframe.navigation.height +length + + +multiframe.navigation.height +Height of navigation frames + + + + +<xsl:param name="multiframe.navigation.height">40</xsl:param> + + + +Description + +Specifies the height of the navigation frames in pixels when +multiframe is enabled. + + + + + +HTML: Graphics Parameters + + +graphics.dir +uri + + +graphics.dir +Graphics directory + + + + +<xsl:param name="graphics.dir"></xsl:param> + + + +Description + +Identifies the graphics directory for the navigation components +generated on all the slides. This parameter can be set in the source +document with the <?dbhtml?> pseudo-attribute +graphics-dir. + +If non-empty, this value is prepended to each of the graphic +image paths. + + + + + + +bullet.image +filename + + +bullet.image +Bullet image + + + + +<xsl:param name="bullet.image">toc/bullet.png</xsl:param> + + + +Description + +Specifies the filename of the bullet image used for foils in the +framed ToC. + + + + + + +next.image +filename + + +next.image +Right-arrow image + + + + +<xsl:param name="next.image">active/nav-next.png</xsl:param> + + + +Description + +Specifies the filename of the right-pointing navigation arrow. + + + + + + +prev.image +filename + + +prev.image +Left-arrow image + + + + +<xsl:param name="prev.image">active/nav-prev.png</xsl:param> + + + +Description + +Specifies the filename of the left-pointing navigation arrow. + + + + + + +up.image +filename + + +up.image +Up-arrow image + + + + +<xsl:param name="up.image">active/nav-up.png</xsl:param> + + + +Description + +Specifies the filename of the upward-pointing navigation arrow. + + + + + + +home.image +filename + + +home.image +Home image + + + + +<xsl:param name="home.image">active/nav-home.png</xsl:param> + + + +Description + +Specifies the filename of the home navigation icon. + + + + + + +toc.image +filename + + +toc.image +ToC image + + + + +<xsl:param name="toc.image">active/nav-toc.png</xsl:param> + + + +Description + +Specifies the filename of the ToC navigation icon. + + + + + + + +no.next.image +filename + + +no.next.image +Inactive right-arrow image + + + + +<xsl:param name="no.next.image">inactive/nav-next.png</xsl:param> + + + +Description + +Specifies the filename of the inactive right-pointing navigation arrow. + + + + + + +no.prev.image +filename + + +no.prev.image +Inactive left-arrow image + + + + +<xsl:param name="no.prev.image">inactive/nav-prev.png</xsl:param> + + + +Description + +Specifies the filename of the inactive left-pointing navigation arrow. + + + + + + +no.up.image +filename + + +no.up.image +Inactive up-arrow image + + + + +<xsl:param name="no.up.image">inactive/nav-up.png</xsl:param> + + + +Description + +Specifies the filename of the inactive upward-pointing navigation arrow. + + + + + + +no.home.image +filename + + +no.home.image +Inactive home image + + + + +<xsl:param name="no.home.image">inactive/nav-home.png</xsl:param> + + + +Description + +Specifies the filename of the inactive home navigation icon. + + + + + + +no.toc.image +filename + + +no.toc.image +Inactive ToC image + + + + +<xsl:param name="no.toc.image">inactive/nav-toc.png</xsl:param> + + + +Description + +Specifies the filename of the inactive ToC navigation icon. + + + + + + + +plus.image +filename + + +plus.image +Plus image + + + + +<xsl:param name="plus.image">toc/closed.png</xsl:param> + + + +Description + +Specifies the filename of the plus image; the image used in a +dynamic ToC to indicate that a section +can be expanded. + + + + + + +minus.image +filename + + +minus.image +Minus image + + + + +<xsl:param name="minus.image">toc/open.png</xsl:param> + + + +Description + +Specifies the filename of the minus image; the image used in a +dynamic ToC to indicate that a section +can be collapsed. + + + + + + +hidetoc.image +filename + + +hidetoc.image +Hide ToC image + + + + +<xsl:param name="hidetoc.image">hidetoc.gif</xsl:param> + + + +Description + +Specifies the filename of the hide ToC image. This is used +when the ToC hide/show parameter is +enabled. + + + + + + +showtoc.image +filename + + +showtoc.image +Show ToC image + + + + +<xsl:param name="showtoc.image">showtoc.gif</xsl:param> + + + +Description + +Specifies the filename of the show ToC image. This is used +when the ToC hide/show parameter is +enabled. + + + + + +HTML: JavaScript Parameters + + +script.dir +uri + + +script.dir +Script directory + + + + +<xsl:param name="script.dir"></xsl:param> + + + +Description + +Identifies the JavaScript source directory for the slides. +This parameter can be set in the source +document with the <?dbhtml?> pseudo-attribute +script-dir. + +If non-empty, this value is prepended to each of the JavaScript files. + + + + + + + +ua.js +filename + + +ua.js +UA JavaScript file + + + + +<xsl:param name="ua.js">ua.js</xsl:param> + + + +Description + +Specifies the filename of the UA JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + + + + +xbDOM.js +filename + + +xbDOM.js +xbDOM JavaScript file + + + + +<xsl:param name="xbDOM.js">xbDOM.js</xsl:param> + + + +Description + +Specifies the filename of the xbDOM JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + + + + +xbStyle.js +filename + + +xbStyle.js +xbStyle JavaScript file + + + + +<xsl:param name="xbStyle.js">xbStyle.js</xsl:param> + + + +Description + +Specifies the filename of the xbStyle JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + + + + +xbLibrary.js +filename + + +xbLibrary.js +xbLibrary JavaScript file + + + + +<xsl:param name="xbLibrary.js">xbLibrary.js</xsl:param> + + + +Description + +Specifies the filename of the xbLibrary JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + + + + +xbCollapsibleLists.js +filename + + +xbCollapsibleLists.js +xbCollapsibleLists JavaScript file + + + + +<xsl:param name="xbCollapsibleLists.js">xbCollapsibleLists.js</xsl:param> + + + +Description + +Specifies the filename of the xbCollapsibleLists JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + + + + +overlay.js +filename + + +overlay.js +Overlay JavaScript file + + + + +<xsl:param name="overlay.js">overlay.js</xsl:param> + + + +Description + +Specifies the filename of the overlay JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + + + + +slides.js +filename + + +slides.js +Slides overlay file + + + + +<xsl:param name="slides.js">slides.js</xsl:param> + + + +Description + +Specifies the filename of the slides JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + + + +HTML: Localization Parameters + + +text.home +string + + +text.home +Home + + + + +<xsl:param name="text.home">Home</xsl:param> + + + +Description + +FIXME: + + + + + + +text.toc +string + + +text.toc +FIXME: + + + + +<xsl:param name="text.toc">ToC</xsl:param> + + + +Description + +FIXME: + + + + + + +text.prev +string + + +text.prev +FIXME: + + + + +<xsl:param name="text.prev">Prev</xsl:param> + + + +Description + +FIXME: + + + + + + +text.up +string + + +text.up +FIXME: + + + + +<xsl:param name="text.up">Up</xsl:param> + + + +Description + +FIXME: + + + + + + +text.next +string + + +text.next +FIXME: + + + + +<xsl:param name="text.next">Next</xsl:param> + + + +Description + +FIXME: + + + + + + + + + FO: General Params + + +slide.title.font.family +list +open +serif +sans-serif +monospace + + +slide.title.font.family +Specifies font family to use for slide titles + + + + +<xsl:param name="slide.title.font.family">Helvetica</xsl:param> + + + +Description + +Specifies the font family to use for slides titles. + + + + + + +slide.font.family +list +open +serif +sans-serif +monospace + + +slide.font.family +Specifies font family to use for slide bodies + + + + +<xsl:param name="slide.font.family">Helvetica</xsl:param> + + + +Description + +Specifies the font family to use for slides bodies. + + + + + + +foil.title.master +number + + +foil.title.master +Specifies unitless font size to use for foil titles + + + + +<xsl:param name="foil.title.master">36</xsl:param> +<!-- Inconsistant use of point size? --> + + + +Description + +Specifies a unitless font size to use for foil titles; used in +combination with the foil.title.size +parameter. + + + + + +foil.title.size +length + + +foil.title.size +Specifies font size to use for foil titles, including units + + + + + <xsl:param name="foil.title.size"> + <xsl:value-of select="$foil.title.master"></xsl:value-of><xsl:text>pt</xsl:text> + </xsl:param> + + + +Description + +This parameter combines the value of the +foil.title.master parameter with a unit +specification. The default unit is pt +(points). + + + + + + FO: Property Sets + + +slides.properties +attribute set + + +slides.properties +Specifies properties for all slides + + + + + <xsl:attribute-set name="slides.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$slide.font.family"></xsl:value-of> + </xsl:attribute> + </xsl:attribute-set> + + + +Description + +This parameter specifies properties that are applied to all slides. + + + + + + +foilgroup.properties +attribute set + + +foilgroup.properties +Specifies properties for all foilgroups + + + + + <xsl:attribute-set name="foilgroup.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$slide.font.family"></xsl:value-of> + </xsl:attribute> + </xsl:attribute-set> + + + +Description + +This parameter specifies properties that are applied to all foilgroups. + + + + + + +foil.subtitle.properties +attribute set + + +foil.subtitle.properties +Specifies properties for all foil subtitles + + + + + <xsl:attribute-set name="foil.subtitle.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$slide.title.font.family"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="text-align">center</xsl:attribute> + <xsl:attribute name="font-size"> + <xsl:value-of select="$foil.title.master * 0.8"></xsl:value-of><xsl:text>pt</xsl:text> + </xsl:attribute> + <xsl:attribute name="space-after">12pt</xsl:attribute> + </xsl:attribute-set> + + + +Description + +This parameter specifies properties that are applied to all foil subtitles. + + + + + + +foil.properties +attribute set + + +foil.properties +Specifies properties for all foils + + + + + <xsl:attribute-set name="foil.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$slide.font.family"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="margin-{$direction.align.start}">1in</xsl:attribute> + <xsl:attribute name="margin-{$direction.align.end}">1in</xsl:attribute> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.size"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="font-weight">bold</xsl:attribute> + </xsl:attribute-set> + + + +Description + +This parameter specifies properties that are applied to all foils. + + + + + + +speakernote.properties +attribute set + + +speakernote.properties +Specifies properties for all speakernotes + + + + + <xsl:attribute-set name="speakernote.properties"> + <xsl:attribute name="font-family">Times Roman</xsl:attribute> + <xsl:attribute name="font-style">italic</xsl:attribute> + <xsl:attribute name="font-size">12pt</xsl:attribute> + <xsl:attribute name="font-weight">normal</xsl:attribute> + </xsl:attribute-set> + + + +Description + +This parameter specifies properties that are applied to all speakernotes. + + + + + + +running.foot.properties +attribute set + + +running.foot.properties +Specifies properties for running foot on each slide + + + + + <xsl:attribute-set name="running.foot.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$slide.font.family"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="font-size">14pt</xsl:attribute> + <xsl:attribute name="color">#9F9F9F</xsl:attribute> + </xsl:attribute-set> + + + +Description + +This parameter specifies properties that are applied to the +running foot area of each slide. + + + + + + + + + + Website Parameter Reference + + + This is reference documentation for all user-configurable + parameters in the DocBook XSL Website stylesheet (for + generating websites from DocBook XML sources). Note that the + Website stylesheet is a customization layer of the DocBook XSL + HTML stylesheet. Therefore, in addition to the + Website-specific parameters listed in this section, you can + also use a number of HTML + stylesheet parameters to control Website output. + + + +General Parameters + + +autolayout-file +filename + + +autolayout-file +Identifies the autolayout.xml file + + + + +<xsl:param name="autolayout-file">autolayout.xml</xsl:param> + + + +Description +When the source pages are spread over several directories, this +parameter can be set (for example, from the command line of a batch-mode +XSLT processor) to indicate the location of the autolayout.xml file. +FIXME: for browser-based use, there needs to be a PI for this... + + + + + + +body.attributes +attribute set + + +body.attributes +DEPRECATED + + + + +<xsl:attribute-set name="body.attributes"> + <xsl:attribute name="bgcolor">white</xsl:attribute> + <xsl:attribute name="text">black</xsl:attribute> + <xsl:attribute name="link">#0000FF</xsl:attribute> + <xsl:attribute name="vlink">#840084</xsl:attribute> + <xsl:attribute name="alink">#0000FF</xsl:attribute> +</xsl:attribute-set> + + + +Description +DEPRECATED + + + + + +currentpage.marker +string + + +currentpage.marker +The text symbol used to mark the current page + + + + +<xsl:param name="currentpage.marker">@</xsl:param> + + + +Description +Character to use as identifying the current page in + + + + + +dry-run +boolean + + +dry-run +Indicates that no files should be produced + + + + <xsl:param name="dry-run" select="0"></xsl:param> + + +Description +When using the XSLT processor to manage dependencies and construct +the website, this parameter can be used to suppress the generation of +new and updated files. Effectively, this allows you to see what the +stylesheet would do, without actually making any changes. +Only applies when XSLT-based chunking is being used. + + + + + +feedback.href +uri + + +feedback.href +HREF (URI) for feedback link + + + + +<xsl:param name="feedback.href"></xsl:param> + + + +Description +The feedback.href value is used as the value +for the href attribute on the feedback +link. If feedback.href +is empty, no feedback link is generated. + + + + + +feedback.link.text +string + + +feedback.link.text +The text of the feedback link + + + + +<xsl:param name="feedback.link.text">Feedback</xsl:param> + + + +Description +The contents of this variable is used as the text of the feedback +link if feedback.href is not empty. If +feedback.href is empty, no feedback link is +generated. + + + + + +feedback.with.ids +boolean + + +feedback.with.ids +Toggle use of IDs in feedback + + + + +<xsl:param name="feedback.with.ids" select="0"></xsl:param> + + + +Description +If feedback.with.ids is non-zero, the ID of the +current page will be added to the feedback link. This can be used, for +example, if the feedback.href is a CGI script. + + + + + +filename-prefix +string + + +filename-prefix +Prefix added to all filenames + + + + +<xsl:param name="filename-prefix"></xsl:param> + + + +Description +To produce the text-only (that is, non-tabular) layout +of a website simultaneously with the tabular layout, the filenames have to +be distinguished. That's accomplished by adding the +filename-prefix to the front of each filename. + + + + + +footer.hr +boolean + + +footer.hr +Toggle <HR> before footer + + + + +<xsl:param name="footer.hr" select="1"></xsl:param> + + + +Description +If non-zero, an <HR> is generated at the bottom of each web page, +before the footer. + + + + + +header.hr +boolean + + +header.hr +Toggle <HR> after header + + + + +<xsl:param name="header.hr" select="1"></xsl:param> + + + +Description +If non-zero, an <HR> is generated at the bottom of each web page, +before the footer. + + + + + +output-root +filename + + +output-root +Specifies the root directory of the website + + + + +<xsl:param name="output-root">.</xsl:param> + + + +Description +When using the XSLT processor to manage dependencies and construct +the website, this parameter can be used to indicate the root directory +where the resulting pages are placed. +Only applies when XSLT-based chunking is being used. + + + + + +rebuild-all +boolean + + +rebuild-all +Indicates that all files should be produced + + + + +<xsl:param name="rebuild-all" select="0"></xsl:param> + + + +Description +When using the XSLT processor to manage dependencies and construct +the website, this parameter can be used to regenerate the whole website, +updating even pages that don't appear to need to be updated. +The dependency extension only looks at the source documents. So +if you change something in the stylesheet, for example, that has a global +effect, you can use this parameter to force the stylesheet to rebuild the +whole website. + +Only applies when XSLT-based chunking is being used. + + + + + +sequential.links +boolean + + +sequential.links +Make sequentional links? + + + + +<xsl:param name="sequential.links" select="0"></xsl:param> + + + +Description +FIXME + + + + + +suppress.homepage.title +boolean + + +suppress.homepage.title +Suppress title on homepage? + + + + +<xsl:param name="suppress.homepage.title" select="1"></xsl:param> + + + +Description +FIXME:If non-zero, the title on the homepage is suppressed? + + + + + +table.spacer.image +filename + + +table.spacer.image +Invisible pixel for tabular accessibility + + + + +<xsl:param name="table.spacer.image">graphics/spacer.gif</xsl:param> + + + +Description +This is the 1x1 pixel, transparent pixel used for the table trick to increase the accessibility of the tabular +website presentation. + + + + +Navigation Parameters + + +banner.before.navigation +boolean + + +banner.before.navigation +Put banner before navigation? + + + + +<xsl:param name="banner.before.navigation" select="1"></xsl:param> + + + +Description +FIXME + + + + + +navbgcolor +color + + +navbgcolor +The background color of the navigation TOC + + + + +<xsl:param name="navbgcolor">#4080FF</xsl:param> + + + +Description +The background color of the navigation TOC. +Only applies with the tabular presentation is being used. + + + + + +navbodywidth +length + + +navbodywidth +Specifies the width of the navigation table body + + + + +<xsl:param name="navbodywidth"></xsl:param> + + + +Description +The width of the body column. +Only applies with the tabular presentation is being used. + + + + + +nav.table.summary +string + + +nav.table.summary +HTML Table summary attribute value for navigation tables + + + + +<xsl:param name="nav.table.summary">Navigation</xsl:param> + + + +Description +The value of this parameter is used as the value of the table +summary attribute for the navigation table. +Only applies with the tabular presentation is being used. + + + + + +navtocwidth +length + + +navtocwidth +Specifies the width of the navigation table TOC + + + + +<xsl:param name="navtocwidth">220</xsl:param> + + + +Description +The width, in pixels, of the navigation column. +Only applies with the tabular presentation is being used. + + + + + +textbgcolor +color + + +textbgcolor +The background color of the table body + + + + +<xsl:param name="textbgcolor">white</xsl:param> + + + +Description +The background color of the table body. +Only applies with the tabular presentation is being used. + + + + +ToC Parameters + + +toc.blank.graphic +boolean + + +toc.blank.graphic +Use graphic for "blanks" in TOC? + + + + +<xsl:param name="toc.blank.graphic" select="1"></xsl:param> + + + +Description +If non-zero, "blanks" in the the TOC will be accomplished +with the graphic identified by toc.spacer.image. + +Only applies with the tabular presentation is being used. + + + + + +toc.blank.image +filename + + +toc.blank.image +The image for "blanks" in the TOC + + + + +<xsl:param name="toc.blank.image">graphics/blank.gif</xsl:param> + + + +Description +If toc.blank.graphic is non-zero, this image +will be used to for "blanks" in the TOC. +Only applies with the tabular presentation is being used. + + + + + +toc.blank.text +string + + +toc.blank.text +The text for "blanks" in the TOC + + + + +<xsl:param name="toc.blank.text">   </xsl:param> + + + +Description +If toc.blank.graphic is zero, this text string +will be used for "blanks" in the TOC. +Only applies with the tabular presentation is being used. + + + + + +toc.pointer.graphic +boolean + + +toc.pointer.graphic +Use graphic for TOC pointer? + + + + +<xsl:param name="toc.pointer.graphic" select="1"></xsl:param> + + + +Description +If non-zero, the "pointer" in the TOC will be displayed +with the graphic identified by toc.pointer.image. + +Only applies with the tabular presentation is being used. + + + + + +toc.pointer.image +filename + + +toc.pointer.image +The image for the "pointer" in the TOC + + + + +<xsl:param name="toc.pointer.image">graphics/arrow.gif</xsl:param> + + + +Description +If toc.pointer.graphic is non-zero, this image +will be used for the "pointer" in the TOC. +Only applies with the tabular presentation is being used. + + + + + +toc.pointer.text +string + + +toc.pointer.text +The text for the "pointer" in the TOC + + + + +<xsl:param name="toc.pointer.text"> > </xsl:param> + + + +Description +If toc.pointer.graphic is zero, this text string +will be used to display the "pointer" in the TOC. +Only applies with the tabular presentation is being used. + + + + + +toc.spacer.graphic +boolean + + +toc.spacer.graphic +Use graphic for TOC spacer? + + + + +<xsl:param name="toc.spacer.graphic" select="1"></xsl:param> + + + +Description +If non-zero, the indentation in the TOC will be accomplished +with the graphic identified by toc.spacer.image. + +Only applies with the tabular presentation is being used. + + + + + +toc.spacer.image +filename + + +toc.spacer.image +The image for spacing the TOC + + + + +<xsl:param name="toc.spacer.image">graphics/blank.gif</xsl:param> + + + +Description +If toc.spacer.graphic is non-zero, this image +will be used to indent the TOC. +Only applies with the tabular presentation is being used. + + + + + +toc.spacer.text +string + + +toc.spacer.text +The text for spacing the TOC + + + + +<xsl:param name="toc.spacer.text">   </xsl:param> + + + +Description +If toc.spacer.graphic is zero, this text string +will be used to indent the TOC. +Only applies with the tabular presentation is being used. + + + + + +
+ DocBook XSL Stylesheets User Reference: PIs + + + + + This is generated reference documentation for all + user-specifiable processing instructions in the DocBook + XSL stylesheets. + + You add these PIs at particular points in a document to + cause specific “exceptions” to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + HTML Processing Instruction Reference + + $Id: pi.xsl 8394 2009-04-02 20:31:30Z mzjn $ + + + + Introduction + +This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for HTML output. + + +You add these PIs at particular points in a document to + cause specific “exceptions” to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + +dbhtml_background-color +Sets background color for an image + + + + dbhtml background-color="color" + + +Description + +Use the dbhtml background-color PI before or + after an image (graphic, inlinegraphic, + imagedata, or videodata element) as a + sibling to the element, to set a background color for the + image. + + Parameters + + + background-color="color" + + +An HTML color value + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Background color + + + + + +dbhtml_bgcolor +Sets background color on a CALS table row or table cell + + + + dbhtml bgcolor="color" + + +Description + +Use the dbhtml bgcolor PI as child of a CALS table row + or cell to set a background color for that table row or cell. + + Parameters + + + bgcolor="color" + + +An HTML color value + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Cell background color + + + + + +dbhtml_cellpadding +Specifies cellpadding in CALS table or qandaset output + + + + dbhtml cellpadding="number" + + +Description + +Use the dbhtml cellpadding PI as a child of a + CALS table or qandaset to specify the value + for the HTML cellpadding attribute in the + output HTML table. + + Parameters + + + cellpadding="number" + + +Specifies the cellpadding + + + + + + Related Global Parameters + +html.cellpadding + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Cell spacing and cell padding, + Q and A formatting + + + + + +dbhtml_cellspacing +Specifies cellspacing in CALS table or qandaset output + + + + dbhtml cellspacing="number" + + +Description + +Use the dbhtml cellspacing PI as a child of a + CALS table or qandaset to specify the value + for the HTML cellspacing attribute in the + output HTML table. + + Parameters + + + cellspacing="number" + + +Specifies the cellspacing + + + + + + Related Global Parameters + +html.cellspacing + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Cell spacing and cell padding, + Q and A formatting + + + + + +dbhtml_class +Set value of the class attribute for a CALS table row + + + + dbhtml class="name" + + +Description + +Use the dbhtml class PI as a child of a + row to specify a class + attribute and value in the HTML output for that row. + + Parameters + + + class="name" + + +Specifies the class name + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Table styles in HTML output + + + + + +dbhtml_dir +Specifies a directory name in which to write files + + + + dbhtml dir="path" + + +Description + +When chunking output, use the dbhtml dir PI + as a child of a chunk source to cause the output of that + chunk to be written to the specified directory; also, use it + as a child of a mediaobject to specify a + directory into which any long-description files for that + mediaobject will be written. + + Parameters + + + dir="path" + + +Specifies the pathname for the directory + + + + + + Related Global Parameters + +base.dir + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +dbhtml dir processing instruction + + + + + +dbhtml_filename +Specifies a filename for a chunk + + + + dbhtml filename="filename" + + +Description + +When chunking output, use the dbhtml filename + PI as a child of a chunk source to specify a filename for + the output file for that chunk. + + Parameters + + + filename="path" + + +Specifies the filename for the file + + + + + + Related Global Parameters + +use.id.as.filename + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +dbhtml filenames + + + + + +dbhtml_funcsynopsis-style +Specifies presentation style for a funcsynopsis + + + + dbhtml funcsynopsis-style="kr"|"ansi" + + +Description + +Use the dbhtml funcsynopsis-style PI as a child of + a funcsynopsis or anywhere within a funcsynopsis + to control the presentation style for output of all + funcprototype instances within that funcsynopsis. + + Parameters + + + funcsynopsis-style="kr" + + +Displays funcprototype output in K&R style + + + + funcsynopsis-style="ansi" + + +Displays funcprototype output in ANSI style + + + + + + Related Global Parameters + +funcsynopsis.style + + + + + +dbhtml_img.src.path +Specifies a path to the location of an image file + + + + dbhtml img.src.path="path" + + +Description + +Use the dbhtml img.src.path PI before or + after an image (graphic, + inlinegraphic, imagedata, or + videodata element) as a sibling to the element, + to specify a path to the location of the image; in HTML + output, the value specified for the + img.src.path attribute is prepended to the + filename. + + Parameters + + + img.src.path="path" + + +Specifies the pathname to prepend to the name of the image file + + + + + + Related Global Parameters + +img.src.path + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Using fileref + + + + + +dbhtml_label-width +Specifies the label width for a qandaset + + + + dbhtml label-width="width" + + +Description + +Use the dbhtml label-width PI as a child of a + qandaset to specify the width of labels. + + Parameters + + + label-width="width" + + +Specifies the label width (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Q and A formatting + + + + + +dbhtml_linenumbering.everyNth +Specifies interval for line numbers in verbatims + + + + dbhtml linenumbering.everyNth="N" + + +Description + +Use the dbhtml linenumbering.everyNth PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the interval at which lines are numbered. + + Parameters + + + linenumbering.everyNth="N" + + +Specifies numbering interval; a number is output + before every Nth line + + + + + + Related Global Parameters + +linenumbering.everyNth + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Line numbering + + + + + +dbhtml_linenumbering.separator +Specifies separator text for line numbers in verbatims + + + + dbhtml linenumbering.separator="text" + + +Description + +Use the dbhtml linenumbering.separator PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the separator text output between the line numbers and content. + + Parameters + + + linenumbering.separator="text" + + +Specifies the text (zero or more characters) + + + + + + Related Global Parameters + +linenumbering.separator + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Line numbering + + + + + +dbhtml_linenumbering.width +Specifies width for line numbers in verbatims + + + + dbhtml linenumbering.width="width" + + +Description + +Use the dbhtml linenumbering.width PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the width set aside for line numbers. + + Parameters + + + linenumbering.width="width" + + +Specifies the width (inluding units) + + + + + + Related Global Parameters + +linenumbering.width + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Line numbering + + + + + +dbhtml_list-presentation +Specifies presentation style for a variablelist or + segmentedlist + + + + dbhtml list-presentation="list"|"table" + + +Description + +Use the dbhtml list-presentation PI as a child of + a variablelist or segmentedlist to + control the presentation style for the list (to cause it, for + example, to be displayed as a table). + + Parameters + + + list-presentation="list" + + +Displays the list as a list + + + + list-presentation="table" + + +Displays the list as a table + + + + + + Related Global Parameters + + + + +variablelist.as.table + + + + +segmentedlist.as.table + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in HTML + + + + + +dbhtml_list-width +Specifies the width of a variablelist or simplelist + + + + dbhtml list-width="width" + + +Description + +Use the dbhtml list-width PI as a child of a + variablelist or a simplelist presented + as a table, to specify the output width. + + Parameters + + + list-width="width" + + +Specifies the output width (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in HTML + + + + + +dbhtml_row-height +Specifies the height for a CALS table row + + + + dbhtml row-height="height" + + +Description + +Use the dbhtml row-height PI as a child of a + row to specify the height of the row. + + Parameters + + + row-height="height" + + +Specifies the row height (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Row height + + + + + +dbhtml_start +(obsolete) Sets the starting number on an ordered list + + + + dbhtml start="character" + + +Description + +This PI is obsolete. The intent of + this PI was to provide a means for setting a specific starting + number for an ordered list. Instead of this PI, set a value + for the override attribute on the first + listitem in the list; that will have the same + effect as what this PI was intended for. + + Parameters + + + start="character" + + +Specifies the character to use as the starting + number; use 0-9, a-z, A-Z, or lowercase or uppercase + Roman numerals + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +List starting number + + + + + +dbhtml_stop-chunking +Do not chunk any descendants of this element. + + + + dbhtml stop-chunking + + +Description + +When generating chunked HTML output, adding this PI as the child of an element that contains elements that would normally be generated on separate pages if generating chunked output causes chunking to stop at this point. No descendants of the current element will be split into new HTML pages: +<section> +<title>Configuring pencil</title> +<?dbhtml stop-chunking?> + +... + +</section> + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Chunking into multiple HTML files + + + + + +dbhtml_table-summary +Specifies summary for CALS table, variablelist, segmentedlist, or qandaset output + + + + dbhtml table-summary="text" + + +Description + +Use the dbhtml table-summary PI as a child of + a CALS table, variablelist, + segmentedlist, or qandaset to specify + the text for the HTML summary attribute + in the output HTML table. + + Parameters + + + table-summary="text" + + +Specifies the summary text (zero or more characters) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in HTML, + Table summary text + + + + + +dbhtml_table-width +Specifies the width for a CALS table + + + + dbhtml table-width="width" + + +Description + +Use the dbhtml table-width PI as a child of a + CALS table to specify the width of the table in + output. + + Parameters + + + table-width="width" + + +Specifies the table width (including units or as a percentage) + + + + + + Related Global Parameters + +default.table.width + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Table width + + + + + +dbhtml_term-presentation +Sets character formatting for terms in a variablelist + + + + dbhtml term-presentation="bold"|"italic"|"bold-italic" + + +Description + +Use the dbhtml term-presentation PI as a child + of a variablelist to set character formatting for + the term output of the list. + + Parameters + + + term-presentation="bold" + + +Specifies that terms are displayed in bold + + + + term-presentation="italic" + + +Specifies that terms are displayed in italic + + + + term-presentation="bold-italic" + + +Specifies that terms are displayed in bold-italic + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in HTML + + + + + +dbhtml_term-separator +Specifies separator text among terms in a varlistentry + + + + dbhtml term-separator="text" + + +Description + +Use the dbhtml term-separator PI as a child + of a variablelist to specify the separator text + among term instances. + + Parameters + + + term-separator="text" + + +Specifies the text (zero or more characters) + + + + + + Related Global Parameters + +variablelist.term.separator + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in HTML + + + + + +dbhtml_term-width +Specifies the term width for a variablelist + + + + dbhtml term-width="width" + + +Description + +Use the dbhtml term-width PI as a child of a + variablelist to specify the width for + term output. + + Parameters + + + term-width="width" + + +Specifies the term width (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in HTML + + + + + +dbhtml_toc +Specifies whether a TOC should be generated for a qandaset + + + + dbhtml toc="0"|"1" + + +Description + +Use the dbhtml toc PI as a child of a + qandaset to specify whether a table of contents + (TOC) is generated for the qandaset. + + Parameters + + + toc="0" + + +If zero, no TOC is generated + + + + toc="1" + + +If 1 (or any non-zero value), + a TOC is generated + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Q and A list of questions, + Q and A formatting + + + + + +dbcmdlist +Generates a hyperlinked list of commands + + + + dbcmdlist + + +Description + +Use the dbcmdlist PI as the child of any + element (for example, refsynopsisdiv) containing multiple + cmdsynopsis instances; a hyperlinked navigational + “command list” will be generated at the top of output for that + element, enabling users to quickly jump + to each command synopsis. + + Parameters + +[No parameters] + + + + + +dbfunclist +Generates a hyperlinked list of functions + + + + dbfunclist + + +Description + +Use the dbfunclist PI as the child of any + element (for example, refsynopsisdiv) containing multiple + funcsynopsis instances; a hyperlinked + navigational “function list” will be generated at the top of + output for that element, enabling users to quickly + jump to to each function synopsis. + + Parameters + +[No parameters] + + + + + +dbhtml-include_href +Copies an external well-formed HTML/XML file into current doc + + + + dbhtml-include href="URI" + + +Description + +Use the dbhtml-include href PI anywhere in a + document to cause the contents of the file referenced by the + href pseudo-attribute to be copied/inserted “as + is” into your HTML output at the point in document order + where the PI occurs in the source. + + + +The referenced file may contain plain text (as long as + it is “wrapped” in an html element — see the + note below) or markup in any arbitrary vocabulary, + including HTML — but it must conform to XML + well-formedness constraints (because the feature in XSLT + 1.0 for opening external files, the + document() function, can only handle + files that meet XML well-formedness constraints). + + +Among other things, XML well-formedness constraints + require a document to have a single root + element. So if the content you want to + include is plain text or is markup that does + not have a single root element, + wrap the content in an + html element. The stylesheets will + strip out that surrounding html “wrapper” when + they find it, leaving just the content you want to + insert. + + + Parameters + + + href="URI" + + +Specifies the URI for the file to include; the URI + can be, for example, a remote http: + URI, or a local filesystem file: + URI + + + + + + Related Global Parameters + +textinsert.extension + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Inserting external HTML code, + External code files + + + + + +dbhh +Sets topic name and topic id for context-sensitive HTML Help + + + + dbhh topicname="name" topicid="id" + + +Description + +Use the dbhh PI as a child of components + that should be used as targets for context-sensitive help requests. + + Parameters + + + topicname="name" + + +Specifies a unique string constant that identifies a help topic + + + + topicid="id" + + +Specifies a unique integer value for the topicname string + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Context-sensitive help + + + + + + FO Processing Instruction Reference + + $Id: pi.xsl 8487 2009-07-14 21:43:36Z bobstayton $ + + + + + Introduction + + +This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for FO output. + + +You add these PIs at particular points in a document to + cause specific “exceptions” to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + +dbfo_background-color +Sets background color for an image + + + + dbfo background-color="color" + + +Description + +Use the dbfo background-color PI before or + after an image (graphic, inlinegraphic, + imagedata, or videodata element) as a + sibling to the element, to set a background color for the + image. + + Parameters + + + background-color="color" + + +An HTML color value + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Background color + + + + + +dbfo_bgcolor +Sets background color on a table row or table cell + + + + dbfo bgcolor="color" + + +Description + +Use the dbfo bgcolor PI as child of a table row + or cell to set a background color for that table row or cell. + + +This PI works for both CALS and HTML tables. + + Parameters + + + bgcolor="color" + + +An HTML color value + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Cell background color + + + + + +dbfo_float-type +Specifies float behavior for a sidebar + + + + dbfo float-type="margin.note" + + +Description + +Use the dbfo float-type PI to specify the float + behavior for a sidebar (to cause the sidebar to be + displayed as a marginal note). + + Parameters + + + float-type="margin.note" + + +Specifies that the sidebar should be + displayed as a marginal note. + + + + + + Related Global Parameters + +sidebar.float.type (parameter), + sidebar.float.width (parameter), + sidebar.properties (attribute-set), + sidebar.title.properties (attribute-set) + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +A sidebar as + side float + + + + + +dbfo_funcsynopsis-style +Specifies presentation style for a funcsynopsis + + + + dbfo funcsynopsis-style="kr"|"ansi" + + +Description + +Use the dbfo funcsynopsis-style PI as a child of + a funcsynopsis or anywhere within a funcsynopsis + to control the presentation style for output of all + funcprototype instances within that funcsynopsis. + + Parameters + + + funcsynopsis-style="kr" + + +Displays funcprototype output in K&R style + + + + funcsynopsis-style="ansi" + + +Displays funcprototype output in ANSI style + + + + + + Related Global Parameters + +funcsynopsis.style + + + + + +dbfo_glossary-presentation +Specifies presentation style for a glossary + + + + dbfo glossary-presentation="list"|"blocks" + + +Description + +Use the dbfo glossary-presentation PI as a child of + a glossary to control its presentation style. + + Parameters + + + glossary-presentation="list" + + +Displays the glossary as a list + + + + glossary-presentation="blocks" + + +Displays the glossary as blocks + + + + + + Related Global Parameters + +glossary.as.blocks + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Glossary + formatting in print + + + + + +dbfo_glosslist-presentation +Specifies presentation style for a glosslist + + + + dbfo glosslist-presentation="list"|"blocks" + + +Description + +Use the dbfo glosslist-presentation PI as a child of + a glosslist to control its presentation style. + + Parameters + + + glosslist-presentation="list" + + +Displays the glosslist as a list + + + + glosslist-presentation="blocks" + + +Displays the glosslist as blocks + + + + + + Related Global Parameters + +glosslist.as.blocks + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Glossary + formatting in print + + + + + +dbfo_glossterm-width +Specifies the glossterm width for a glossary or + glosslist + + + + dbfo glossterm-width="width" + + +Description + +Use the dbfo glossterm-width PI as a child of a + glossary or glosslist to specify the + width for output of glossterm instances in the + output. + + Parameters + + + glossterm-width="width" + + +Specifies the glossterm width (including units) + + + + + + Related Global Parameters + +glossterm.width, + glossterm.separation + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Glossary + formatting in print + + + + + +dbfo_keep-together +Specifies “keep” behavior for a table, example, + figure, equation, procedure, or task + + + + dbfo keep-together="auto"|"always" + + +Description + +Use the dbfo keep-together PI as a child of a + formal object (table, example, + figure, equation, procedure, or + task) to specify “keep” behavior (to allow the object to + “break” across a page). + + +The PI also works with informaltable, informalexample, + informalfigure and informalequation. + + + + Parameters + + + keep-together="auto" + + +Enables the object to break across a page + + + + keep-together="always" + + +Prevents the object from breaking across a page (the + default stylesheet behavior) + + + + + + Related Global Parameters + +formal.object.properties + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Keep-together processing instruction + + + + + +dbfo_label-width +Specifies the label width for a qandaset, itemizedlist, orderedlist + or calloutlist + + + + dbfo label-width="width" + + +Description + +Use the dbfo label-width PI as a child of a + qandaset, itemizedlist, orderedlist, + or calloutlist to specify the width of labels. + + Parameters + + + label-width="width" + + +Specifies the label width (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Q and A formatting + + + + + +dbfo_linenumbering.everyNth +Specifies interval for line numbers in verbatims + + + + dbfo linenumbering.everyNth="N" + + +Description + +Use the dbfo linenumbering.everyNth PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the interval at which lines are numbered. + + Parameters + + + linenumbering.everyNth="N" + + +Specifies numbering interval; a number is output + before every Nth line + + + + + + Related Global Parameters + +linenumbering.everyNth + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Line numbering + + + + + +dbfo_linenumbering.separator +Specifies separator text for line numbers in verbatims + + + + dbfo linenumbering.separator="text" + + +Description + +Use the dbfo linenumbering.separator PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the separator text output between the line numbers and content. + + Parameters + + + linenumbering.separator="text" + + +Specifies the text (zero or more characters) + + + + + + Related Global Parameters + +linenumbering.separator + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Line numbering + + + + + +dbfo_linenumbering.width +Specifies width for line numbers in verbatims + + + + dbfo linenumbering.width="width" + + +Description + +Use the dbfo linenumbering.width PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the width set aside for line numbers. + + Parameters + + + linenumbering.width="width" + + +Specifies the width (inluding units) + + + + + + Related Global Parameters + +linenumbering.width + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Line numbering + + + + + +dbfo_list-presentation +Specifies presentation style for a variablelist or + segmentedlist + + + + dbfo list-presentation="list"|"blocks"|"table" + + +Description + +Use the dbfo list-presentation PI as a child of + a variablelist or segmentedlist to + control the presentation style for the list (to cause it, for + example, to be displayed as a table). + + Parameters + + + list-presentation="list" + + +Displays the list as a list + + + + list-presentation="blocks" + + +(variablelist only) Displays the list as blocks + + + + list-presentation="table" + + +(segmentedlist only) Displays the list as a table + + + + + + Related Global Parameters + + + + +variablelist.as.blocks + + + + +variablelist.as.table + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in print + + + + + +dbfo_list-width +Specifies the width of a horizontal simplelist + + + + dbfo list-width="width" + + +Description + +Use the dbfo list-width PI as a child of a + simplelist whose class + value is horizontal, to specify the width + of the simplelist. + + Parameters + + + list-width="width" + + +Specifies the simplelist width (including units) + + + + + + + + + +dbfo_orientation +Specifies the orientation for a CALS table row or cell + + + + dbfo orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270" + + +Description + +Use the dbfo orientation PI as a child of a CALS + table row or cell to specify the orientation + (rotation) for the row or cell. + + Parameters + + + orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270" + + +Specifies the number of degrees by which the cell or + row is rotated + + + + + + + + + +dbfo_pgwide +Specifies if an equation or example goes across full page width + + + + dbfo pgwide="0"|"1" + + +Description + +Use the dbfo pgwide PI as a child of an + equation or example to specify that the + content should rendered across the full width of the page. + + Parameters + + + pgwide="0" + + +If zero, the content is rendered across the current + text flow + + + + pgwide="1" + + +If 1 (or any non-zero value), the + content is rendered across the full width of the page + + + + + + Related Global Parameters + +pgwide.properties + + + + + +dbfo_rotated-width +Specifies the width for a CALS table entry or + row + + + + dbfo rotated-width="width" + + +Description + +Use the dbfo rotated-width PI as a child of + entry or row instance in a CALS table to specify the + width of that the entry or row; or + use it higher up in table to cause the width to be inherited + recursively down. + + Parameters + + + rotated-width="width" + + +Specifies the width of a row or cell (including units) + + + + + + + + + +dbfo_sidebar-width +Specifies the width of a sidebar + + + + dbfo sidebar-width="width" + + +Description + +Use the dbfo sidebar-width PI as a child of a + sidebar to specify the width of the sidebar. + + Parameters + + + sidebar-width="width" + + +Specifies the sidebar width (including units) + + + + + + Related Global Parameters + +sidebar.float.type parameter, + sidebar.float.width parameter, + sidebar.properties attribute-set, + sidebar.title.properties + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +A sidebar as + side float + + + + + +dbfo_start +(obsolete) Sets the starting number on an ordered list + + + + dbfo start="character" + + +Description + +This PI is obsolete. The intent of + it was to provide a means for setting a specific starting + number for an ordered list. Instead of this PI, set a value + for the override attribute on the first + listitem in the list; that will have the same + effect as what this PI was intended for. + + Parameters + + + start="character" + + +Specifies the character to use as the starting + number; use 0-9, a-z, A-Z, or lowercase or uppercase + Roman numerals + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +List starting number + + + + + +dbfo_table-width +Specifies the width for a CALS table or for revhistory + output + + + + dbfo table-width="width" + + +Description + +Use the dbfo table-width PI as a child or + sibling of a CALS table, or as a child of an + informaltable, entrytbl, or + revhistory instance (which is rendered as a table + in output) to specify the width of the table in output. + + Parameters + + + table-width="width" + + +Specifies the table width (including units or as a percentage) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Table width + + + + + +dbfo_term-width +Specifies the term width for a variablelist + + + + dbfo term-width="width" + + +Description + +Use the dbfo term-width PI as a child of a + variablelist to specify the width for + term output. + + Parameters + + + term-width="width" + + +Specifies the term width (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in print + + + + + +dbfo_toc +Specifies whether a TOC should be generated for a qandaset + + + + dbfo toc="0"|"1" + + +Description + +Use the dbfo toc PI as a child of a + qandaset to specify whether a table of contents + (TOC) is generated for the qandaset. + + Parameters + + + toc="0" + + +If zero, no TOC is generated + + + + toc="1" + + +If 1 (or any non-zero value), + a TOC is generated + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Q and A list of questions, + Q and A formatting + + + + + +dbfo-need +Specify a need for space (a kind of soft page break) + + + + dbfo-need height="n" [space-before="n"] + + +Description + +A “need” is a request for space on a page. If the + requested space is not available, the page breaks and the + content that follows the need request appears on the next + page. If the requested space is available, then no page break + is inserted. + + Parameters + + + height="n" + + +The amount of height needed (including units) + + + + space-before="n" + + +The amount of extra vertical space to add (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Soft page breaks + + + + + +dbfo_row-height +Specifies the height for a CALS table row + + + + dbfo row-height="height" + + +Description + +Use the dbfo row-height PI as a child of a + row to specify the height of the row. + + Parameters + + + row-height="height" + + +Specifies the row height (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Row height + + + + + + manpages Processing Instruction Reference + + $Id: pi.xsl 7644 2008-01-16 11:04:07Z xmldoc $ + + + + Introduction + +This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for manpages output. + + +You add these PIs at particular points in a document to + cause specific “exceptions” to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + +dbman_funcsynopsis-style +Specifies presentation style for a funcsynopsis. + + + + dbman funcsynopsis-style="kr"|"ansi" + + +Description + +Use the dbman + funcsynopsis-style PI as a child of a + funcsynopsis or anywhere within a funcsynopsis + to control the presentation style for output of all + funcprototype instances within that funcsynopsis. + + Parameters + + + funcsynopsis-style="kr" + + +Displays the funcprototype in K&R style + + + + funcsynopsis-style="ansi" + + +Displays the funcprototype in ANSI style + + + + + + Related Global Parameters + +man.funcsynopsis.style + + + + + + Common Processing Instruction Reference + + $Id: pi.xsl 8782 2010-07-27 21:15:17Z mzjn $ + + + + Introduction + +This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the + “common” part of the DocBook XSL stylesheets. + + +You add these PIs at particular points in a document to + cause specific “exceptions” to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + +dbchoice_choice +Generates a localized choice separator + + + + dbchoice choice="and"|"or"|string" + + +Description + +Use the dbchoice choice PI to + generate an appropriate localized “choice” separator (for + example, and or or) + before the final item in an inline simplelist + + + +This PI is a less-than-ideal hack; support for it may + disappear in the future (particularly if and when a more + appropriate means for marking up "choice" lists becomes + available in DocBook). + + + Parameters + + + choice="and" + + +generates a localized and separator + + + + choice="or" + + +generates a localized or separator + + + + choice="string" + + +generates a literal string separator + + + + + + + + + +dbtimestamp +Inserts a date timestamp + + + + dbtimestamp format="formatstring" [padding="0"|"1"] + + +Description + +Use the dbtimestamp PI at any point in a + source document to cause a date timestamp (a formatted + string representing the current date and time) to be + inserted in output of the document. + + Parameters + + + format="formatstring" + + +Specifies format in which the date and time are + output + + + +For details of the content of the format string, + see Date and time. + + + + + padding="0"|"1" + + +Specifies padding behavior; if non-zero, padding is is added + + + + + + + + + +dbtex_delims +Generates delimiters around embedded TeX equations + in output + + + + dbtex delims="no"|"yes" + + +Description + +Use the dbtex delims PI as a + child of a textobject containing embedded TeX + markup, to cause that markup to be surrounded by + $ delimiter characters in output. + + + +This feature is useful for print/PDF output only if you + use the obsolete and now unsupported PassiveTeX XSL-FO + engine. + + + Parameters + + + dbtex delims="no"|"yes" + + +Specifies whether delimiters are output + + + + + + Related Global Parameters + +tex.math.delims + + + + + + DocBook XSL Stylesheets Developer Reference + + + This is technical reference documentation for + developers using the DocBook XSL Stylesheets. It is not + intended to be user documentation, but is instead + provided for developers writing customization layers for + the stylesheets. + + + + + + XSL Library Template Reference + + Introduction + This is technical reference documentation for the + vocabulary-independent “library” templates in the DocBook XSL + Stylesheets. + This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + General Library Templates + + + +dot.count +Returns the number of . characters in a string + + +Description + + Given a string, the dot.count + template returns the number of dot/period characters in the + string. This template is useful, for example, when testing the + nesting level of nested inline markup (for nested emphasis, + quotations, etc.). + + +<xsl:template name="dot.count"> + <!-- Returns the number of "." characters in a string --> + <xsl:param name="string"></xsl:param> + <xsl:param name="count" select="0"></xsl:param> + <xsl:choose> + <xsl:when test="contains($string, '.')"> + <xsl:call-template name="dot.count"> + <xsl:with-param name="string" select="substring-after($string, '.')"></xsl:with-param> + <xsl:with-param name="count" select="$count+1"></xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$count"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + + + + + + + + +copy-string +Returns count copies of a string + + +Description + + Given a string, the copy-string + template creates n copies of the + string, when the value of n is + given by the count parameter. + + +<xsl:template name="copy-string"> + <!-- returns 'count' copies of 'string' --> + <xsl:param name="string"></xsl:param> + <xsl:param name="count" select="0"></xsl:param> + <xsl:param name="result"></xsl:param> + + <xsl:choose> + <xsl:when test="$count>0"> + <xsl:call-template name="copy-string"> + <xsl:with-param name="string" select="$string"></xsl:with-param> + <xsl:with-param name="count" select="$count - 1"></xsl:with-param> + <xsl:with-param name="result"> + <xsl:value-of select="$result"></xsl:value-of> + <xsl:value-of select="$string"></xsl:value-of> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$result"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + + + + + + + + +string.subst +Substitute one text string for another in a string + + +Description + +The string.subst template replaces all +occurances of target in string +with replacement and returns the result. + + + +<xsl:template name="string.subst"> + <xsl:param name="string"></xsl:param> + <xsl:param name="target"></xsl:param> + <xsl:param name="replacement"></xsl:param> + + <xsl:choose> + <xsl:when test="contains($string, $target)"> + <xsl:variable name="rest"> + <xsl:call-template name="string.subst"> + <xsl:with-param name="string" select="substring-after($string, $target)"></xsl:with-param> + <xsl:with-param name="target" select="$target"></xsl:with-param> + <xsl:with-param name="replacement" select="$replacement"></xsl:with-param> + </xsl:call-template> + </xsl:variable> + <xsl:value-of select="concat(substring-before($string, $target), $replacement, $rest)"></xsl:value-of> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$string"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + + + + + + + + +xpointer.idref +Extract IDREF from an XPointer + + +Description + +The xpointer.idref template returns the +ID portion of an XPointer which is a pointer to an ID within the current +document, or the empty string if it is not. +In other words, xpointer.idref returns +foo when passed either #foo +or #xpointer(id('foo')), otherwise it returns +the empty string. + + +<xsl:template name="xpointer.idref"> + <xsl:param name="xpointer">http://...</xsl:param> + <xsl:choose> + <xsl:when test="starts-with($xpointer, '#xpointer(id(')"> + <xsl:variable name="rest" select="substring-after($xpointer, '#xpointer(id(')"></xsl:variable> + <xsl:variable name="quote" select="substring($rest, 1, 1)"></xsl:variable> + <xsl:value-of select="substring-before(substring-after($xpointer, $quote), $quote)"></xsl:value-of> + </xsl:when> + <xsl:when test="starts-with($xpointer, '#')"> + <xsl:value-of select="substring-after($xpointer, '#')"></xsl:value-of> + </xsl:when> + <!-- otherwise it's a pointer to some other document --> + </xsl:choose> +</xsl:template> + + + + + + + + + + +length-magnitude +Return the unqualified dimension from a length specification + + +Description + +The length-magnitude template returns the +unqualified length ("20" for "20pt") from a dimension. + + + +<xsl:template name="length-magnitude"> + <xsl:param name="length" select="'0pt'"></xsl:param> + + <xsl:choose> + <xsl:when test="string-length($length) = 0"></xsl:when> + <xsl:when test="substring($length,1,1) = '0' or substring($length,1,1) = '1' or substring($length,1,1) = '2' or substring($length,1,1) = '3' or substring($length,1,1) = '4' or substring($length,1,1) = '5' or substring($length,1,1) = '6' or substring($length,1,1) = '7' or substring($length,1,1) = '8' or substring($length,1,1) = '9' or substring($length,1,1) = '.'"> + <xsl:value-of select="substring($length,1,1)"></xsl:value-of> + <xsl:call-template name="length-magnitude"> + <xsl:with-param name="length" select="substring($length,2)"></xsl:with-param> + </xsl:call-template> + </xsl:when> + </xsl:choose> +</xsl:template> + + + + + + + + + +length-units +Return the units from a length specification + + +Description + +The length-units template returns the +units ("pt" for "20pt") from a length. If no units are supplied on the +length, the defauilt.units are returned. + + +<xsl:template name="length-units"> + <xsl:param name="length" select="'0pt'"></xsl:param> + <xsl:param name="default.units" select="'px'"></xsl:param> + <xsl:variable name="magnitude"> + <xsl:call-template name="length-magnitude"> + <xsl:with-param name="length" select="$length"></xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="units"> + <xsl:value-of select="substring($length, string-length($magnitude)+1)"></xsl:value-of> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$units = ''"> + <xsl:value-of select="$default.units"></xsl:value-of> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$units"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + + + + + + + + +length-spec +Return a fully qualified length specification + + +Description + +The length-spec template returns the +qualified length from a dimension. If an unqualified length is given, +the default.units will be added to it. + + + +<xsl:template name="length-spec"> + <xsl:param name="length" select="'0pt'"></xsl:param> + <xsl:param name="default.units" select="'px'"></xsl:param> + + <xsl:variable name="magnitude"> + <xsl:call-template name="length-magnitude"> + <xsl:with-param name="length" select="$length"></xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="units"> + <xsl:value-of select="substring($length, string-length($magnitude)+1)"></xsl:value-of> + </xsl:variable> + + <xsl:value-of select="$magnitude"></xsl:value-of> + <xsl:choose> + <xsl:when test="$units='cm' or $units='mm' or $units='in' or $units='pt' or $units='pc' or $units='px' or $units='em'"> + <xsl:value-of select="$units"></xsl:value-of> + </xsl:when> + <xsl:when test="$units = ''"> + <xsl:value-of select="$default.units"></xsl:value-of> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Unrecognized unit of measure: </xsl:text> + <xsl:value-of select="$units"></xsl:value-of> + <xsl:text>.</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + + + + + + + + +length-in-points +Returns the size, in points, of a specified length + + +Description + +The length-in-points template converts a length +specification to points and returns that value as an unqualified +number. + + + +There is no way for the template to infer the size of an +em. It relies on the default em.size +which is initially 10 (for 10pt). + +Similarly, converting pixels to points relies on the +pixels.per.inch parameter which is initially +90. + + + + +<xsl:template name="length-in-points"> + <xsl:param name="length" select="'0pt'"></xsl:param> + <xsl:param name="em.size" select="10"></xsl:param> + <xsl:param name="pixels.per.inch" select="90"></xsl:param> + + <xsl:variable name="magnitude"> + <xsl:call-template name="length-magnitude"> + <xsl:with-param name="length" select="$length"></xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="units"> + <xsl:value-of select="substring($length, string-length($magnitude)+1)"></xsl:value-of> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$units = 'pt'"> + <xsl:value-of select="$magnitude"></xsl:value-of> + </xsl:when> + <xsl:when test="$units = 'cm'"> + <xsl:value-of select="$magnitude div 2.54 * 72.0"></xsl:value-of> + </xsl:when> + <xsl:when test="$units = 'mm'"> + <xsl:value-of select="$magnitude div 25.4 * 72.0"></xsl:value-of> + </xsl:when> + <xsl:when test="$units = 'in'"> + <xsl:value-of select="$magnitude * 72.0"></xsl:value-of> + </xsl:when> + <xsl:when test="$units = 'pc'"> + <xsl:value-of select="$magnitude * 12.0"></xsl:value-of> + </xsl:when> + <xsl:when test="$units = 'px'"> + <xsl:value-of select="$magnitude div $pixels.per.inch * 72.0"></xsl:value-of> + </xsl:when> + <xsl:when test="$units = 'em'"> + <xsl:value-of select="$magnitude * $em.size"></xsl:value-of> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Unrecognized unit of measure: </xsl:text> + <xsl:value-of select="$units"></xsl:value-of> + <xsl:text>.</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + + + + + + + + +pi-attribute +Extract a pseudo-attribute from a PI + + +Description + +The pi-attribute template extracts a pseudo-attribute +from a processing instruction. For example, given the PI +<?foo bar="1" baz='red'?>, +<xsl:call-template name="pi-attribute"> + <xsl:with-param name="pis" select="processing-instruction('foo')"/> + <xsl:with-param name="attribute" select="'baz'"/> +</xsl:call-template> +will return red. This template returns the first matching +attribute that it finds. Presented with processing instructions that +contain badly formed pseudo-attributes (missing or unbalanced quotes, +for example), the template may silently return erroneous results. + + +<xsl:template name="pi-attribute"> + <xsl:param name="pis" select="processing-instruction('BOGUS_PI')"></xsl:param> + <xsl:param name="attribute">filename</xsl:param> + <xsl:param name="count">1</xsl:param> + + <xsl:choose> + <xsl:when test="$count>count($pis)"> + <!-- not found --> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="pi"> + <xsl:value-of select="$pis[$count]"></xsl:value-of> + </xsl:variable> + <xsl:variable name="pivalue"> + <xsl:value-of select="concat(' ', normalize-space($pi))"></xsl:value-of> + </xsl:variable> + <xsl:choose> + <xsl:when test="contains($pivalue,concat(' ', $attribute, '='))"> + <xsl:variable name="rest" select="substring-after($pivalue,concat(' ', $attribute,'='))"></xsl:variable> + <xsl:variable name="quote" select="substring($rest,1,1)"></xsl:variable> + <xsl:value-of select="substring-before(substring($rest,2),$quote)"></xsl:value-of> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="pi-attribute"> + <xsl:with-param name="pis" select="$pis"></xsl:with-param> + <xsl:with-param name="attribute" select="$attribute"></xsl:with-param> + <xsl:with-param name="count" select="$count + 1"></xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + + + + + + + + +lookup.key +Retrieve the value associated with a particular key in a table + + +Description + +Given a table of space-delimited key/value pairs, +the lookup.key template extracts the value associated +with a particular key. + + +<xsl:template name="lookup.key"> + <xsl:param name="key" select="''"></xsl:param> + <xsl:param name="table" select="''"></xsl:param> + + <xsl:if test="contains($table, ' ')"> + <xsl:choose> + <xsl:when test="substring-before($table, ' ') = $key"> + <xsl:variable name="rest" select="substring-after($table, ' ')"></xsl:variable> + <xsl:choose> + <xsl:when test="contains($rest, ' ')"> + <xsl:value-of select="substring-before($rest, ' ')"></xsl:value-of> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$rest"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="lookup.key"> + <xsl:with-param name="key" select="$key"></xsl:with-param> + <xsl:with-param name="table" select="substring-after(substring-after($table,' '), ' ')"></xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> +</xsl:template> + + + + + + + + + +xpath.location +Calculate the XPath child-sequence to the current node + + +Description + +The xpath.location template calculates the +absolute path from the root of the tree to the current element node. + + + +<xsl:template name="xpath.location"> + <xsl:param name="node" select="."></xsl:param> + <xsl:param name="path" select="''"></xsl:param> + + <xsl:variable name="next.path"> + <xsl:value-of select="local-name($node)"></xsl:value-of> + <xsl:if test="$path != ''">/</xsl:if> + <xsl:value-of select="$path"></xsl:value-of> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$node/parent::*"> + <xsl:call-template name="xpath.location"> + <xsl:with-param name="node" select="$node/parent::*"></xsl:with-param> + <xsl:with-param name="path" select="$next.path"></xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:text>/</xsl:text> + <xsl:value-of select="$next.path"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + + + + + + + + +comment-escape-string +Prepare a string for inclusion in an XML comment + + +Description + +The comment-escape-string template returns a string +that has been transformed so that it can safely be output as an XML comment. +Internal occurrences of "--" will be replaced with "- -" and a leading and/or +trailing space will be added to the string, if necessary. + + +<xsl:template name="comment-escape-string"> + <xsl:param name="string" select="''"></xsl:param> + + <xsl:if test="starts-with($string, '-')"> + <xsl:text> </xsl:text> + </xsl:if> + + <xsl:call-template name="comment-escape-string.recursive"> + <xsl:with-param name="string" select="$string"></xsl:with-param> + </xsl:call-template> + + <xsl:if test="substring($string, string-length($string), 1) = '-'"> + <xsl:text> </xsl:text> + </xsl:if> +</xsl:template> + + + + + + + + + +comment-escape-string.recursive +Internal function used by comment-escape-string + + +Description + +The comment-escape-string.recursive template is used +by comment-escape-string. + + +<xsl:template name="comment-escape-string.recursive"> + <xsl:param name="string" select="''"></xsl:param> + <xsl:choose> + <xsl:when test="contains($string, '--')"> + <xsl:value-of select="substring-before($string, '--')"></xsl:value-of> + <xsl:value-of select="'- -'"></xsl:value-of> + <xsl:call-template name="comment-escape-string.recursive"> + <xsl:with-param name="string" select="substring-after($string, '--')"></xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$string"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + + + + + + + +trim.text +Trim leading and trailing whitespace from a text node + + +Description + +Given a text node, this function trims leading and trailing +whitespace from it and returns the trimmed contents. + + + + <xsl:template name="trim.text"> + <xsl:param name="contents" select="."></xsl:param> + <xsl:variable name="contents-left-trimmed"> + <xsl:call-template name="trim-left"> + <xsl:with-param name="contents" select="$contents"></xsl:with-param> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="contents-trimmed"> + <xsl:call-template name="trim-right"> + <xsl:with-param name="contents" select="$contents-left-trimmed"></xsl:with-param> + </xsl:call-template> + </xsl:variable> + <xsl:value-of select="$contents-trimmed"></xsl:value-of> + </xsl:template> + + <xsl:template name="trim-left"> + <xsl:param name="contents"></xsl:param> + <xsl:choose> + <xsl:when test="starts-with($contents,' +') or starts-with($contents,' ') or starts-with($contents,' ') or starts-with($contents,' ')"> + <xsl:call-template name="trim-left"> + <xsl:with-param name="contents" select="substring($contents, 2)"></xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$contents"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="trim-right"> + <xsl:param name="contents"></xsl:param> + <xsl:variable name="last-char"> + <xsl:value-of select="substring($contents, string-length($contents), 1)"></xsl:value-of> + </xsl:variable> + <xsl:choose> + <xsl:when test="($last-char = ' +') or ($last-char = ' ') or ($last-char = ' ') or ($last-char = ' ')"> + <xsl:call-template name="trim-right"> + <xsl:with-param name="contents" select="substring($contents, 1, string-length($contents) - 1)"></xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$contents"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + + + + + + + + +str.tokenize.keep.delimiters +Tokenize a string while preserving any delimiters + +Description +Based on the occurrence of one or more delimiter characters, +this function breaks a string into a list of tokens and delimiters, +marking up each of the tokens with a token element +and preserving the delimiters as text nodes between the tokens. + + This function is a very slightly modified version of a + function from the EXSLT + site. The original is available at: + +
+ + The str.tokenize.keep.delimiters function + differs only in that it preserves the delimiters instead of + discarding them.
+
+ + <xsl:template name="str.tokenize.keep.delimiters"> + <xsl:param name="string" select="''"></xsl:param> + <xsl:param name="delimiters" select="' '"></xsl:param> + <xsl:choose> + <xsl:when test="not($string)"></xsl:when> + <xsl:when test="not($delimiters)"> + <xsl:call-template name="str.tokenize.keep.delimiters-characters"> + <xsl:with-param name="string" select="$string"></xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="str.tokenize.keep.delimiters-delimiters"> + <xsl:with-param name="string" select="$string"></xsl:with-param> + <xsl:with-param name="delimiters" select="$delimiters"></xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + <xsl:template name="str.tokenize.keep.delimiters-characters"> + <xsl:param name="string"></xsl:param> + <xsl:if test="$string"> + <ssb:token><xsl:value-of select="substring($string, 1, 1)"></xsl:value-of></ssb:token> + <xsl:call-template name="str.tokenize.keep.delimiters-characters"> + <xsl:with-param name="string" select="substring($string, 2)"></xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + <xsl:template name="str.tokenize.keep.delimiters-delimiters"> + <xsl:param name="string"></xsl:param> + <xsl:param name="delimiters"></xsl:param> + <xsl:variable name="delimiter" select="substring($delimiters, 1, 1)"></xsl:variable> + <xsl:choose> + <xsl:when test="not($delimiter)"> + <ssb:token><xsl:value-of select="$string"></xsl:value-of></ssb:token> + </xsl:when> + <xsl:when test="contains($string, $delimiter)"> + <xsl:if test="not(starts-with($string, $delimiter))"> + <xsl:call-template name="str.tokenize.keep.delimiters-delimiters"> + <xsl:with-param name="string" select="substring-before($string, $delimiter)"></xsl:with-param> + <xsl:with-param name="delimiters" select="substring($delimiters, 2)"></xsl:with-param> + </xsl:call-template> + </xsl:if> + <!-- output each delimiter --> + <xsl:value-of select="$delimiter"></xsl:value-of> + <xsl:call-template name="str.tokenize.keep.delimiters-delimiters"> + <xsl:with-param name="string" select="substring-after($string, $delimiter)"></xsl:with-param> + <xsl:with-param name="delimiters" select="$delimiters"></xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="str.tokenize.keep.delimiters-delimiters"> + <xsl:with-param name="string" select="$string"></xsl:with-param> + <xsl:with-param name="delimiters" select="substring($delimiters, 2)"></xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + +
+
+ + + + + + apply-string-subst-map + Apply a string-substitution map + + Description + This function applies a “string substitution” map. Use it when + you want to do multiple string substitutions on the same target + content. It reads in two things: content, the + content on which to perform the substitution, and + map.contents, a node set of + elements (the names of the elements don't matter), with each element + having the following attributes: + + + oldstring, a string to + be replaced + + + newstring, a string with + which to replace oldstring + + + The function uses map.contents to + do substitution on content, and then + returns the modified contents. + + This function is a very slightly modified version of Jeni + Tennison’s replace_strings function in the + multiple string replacements section of Dave Pawson’s + XSLT + FAQ. + The apply-string-subst-map function is + essentially the same function as the + apply-character-map function; the only + difference is that in the map that + apply-string-subst-map expects, oldstring and newstring attributes are used instead of + character and string attributes. + + + <xsl:template name="apply-string-subst-map"> + <xsl:param name="content"></xsl:param> + <xsl:param name="map.contents"></xsl:param> + <xsl:variable name="replaced_text"> + <xsl:call-template name="string.subst"> + <xsl:with-param name="string" select="$content"></xsl:with-param> + <xsl:with-param name="target" select="$map.contents[1]/@oldstring"></xsl:with-param> + <xsl:with-param name="replacement" select="$map.contents[1]/@newstring"></xsl:with-param> + </xsl:call-template> + </xsl:variable> + <xsl:choose> + <xsl:when test="$map.contents[2]"> + <xsl:call-template name="apply-string-subst-map"> + <xsl:with-param name="content" select="$replaced_text"></xsl:with-param> + <xsl:with-param name="map.contents" select="$map.contents[position() > 1]"></xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$replaced_text"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + + +
+Relative URI Functions + +Introduction + +These functions manipulate relative URI references. + +The following assumptions must hold true: + + + +All URIs are relative. + + +No URI contains the ../ sequence +which would effectively move up the hierarchy. + + + +If these assumptions do not hold, the results are unpredictable. + + + + + + + +count.uri.path.depth +Count the number of path components in a relative URI + + +Description + +This function counts the number of path components in a relative URI. + + +<xsl:template name="count.uri.path.depth"> + <xsl:param name="filename" select="''"></xsl:param> + <xsl:param name="count" select="0"></xsl:param> + + <xsl:choose> + <xsl:when test="contains($filename, '/')"> + <xsl:call-template name="count.uri.path.depth"> + <xsl:with-param name="filename" select="substring-after($filename, '/')"></xsl:with-param> + <xsl:with-param name="count" select="$count + 1"></xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$count"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + + + + + + + + +trim.common.uri.paths +Trim common leading path components from a relative URI + + +Description + +This function trims common leading path components from a relative URI. + + +<xsl:template name="trim.common.uri.paths"> + <xsl:param name="uriA" select="''"></xsl:param> + <xsl:param name="uriB" select="''"></xsl:param> + <xsl:param name="return" select="'A'"></xsl:param> + + <xsl:choose> + <xsl:when test="contains($uriA, '/') and contains($uriB, '/') and substring-before($uriA, '/') = substring-before($uriB, '/')"> + <xsl:call-template name="trim.common.uri.paths"> + <xsl:with-param name="uriA" select="substring-after($uriA, '/')"></xsl:with-param> + <xsl:with-param name="uriB" select="substring-after($uriB, '/')"></xsl:with-param> + <xsl:with-param name="return" select="$return"></xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$return = 'A'"> + <xsl:value-of select="$uriA"></xsl:value-of> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$uriB"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + + + + + + +
+ Common Template Reference + + + + + This is technical reference documentation for the + “base”, “refentry”, and “utility” sets of common + templates in the DocBook XSL Stylesheets. These + templates are “common” in that they are shared across + output formats (that is, they’re not + output-format-dependent) + This documentation is not intended to be user + documentation. It is provided for developers writing + customization layers for the stylesheets. + + + + + Common » Base Template Reference + + $Id: common.xsl 8784 2010-07-28 12:32:54Z mzjn $ + + + + + Introduction + +This is technical reference documentation for the “base” + set of common templates in the DocBook XSL Stylesheets. + + +This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + +is.component +Tests if a given node is a component-level element + + +<xsl:template name="is.component"> +<xsl:param name="node" select="."/> + ... +</xsl:template> + +Description + +This template returns '1' if the specified node is a component +(Chapter, Appendix, etc.), and '0' otherwise. + +Parameters + + +node + + +The node which is to be tested. + + + + + +Returns + +This template returns '1' if the specified node is a component +(Chapter, Appendix, etc.), and '0' otherwise. + + + + + +is.section +Tests if a given node is a section-level element + + +<xsl:template name="is.section"> +<xsl:param name="node" select="."/> + ... +</xsl:template> + +Description + +This template returns '1' if the specified node is a section +(Section, Sect1, Sect2, etc.), and '0' otherwise. + +Parameters + + +node + + +The node which is to be tested. + + + + + +Returns + +This template returns '1' if the specified node is a section +(Section, Sect1, Sect2, etc.), and '0' otherwise. + + + + + +section.level +Returns the hierarchical level of a section + + +<xsl:template name="section.level"> +<xsl:param name="node" select="."/> + ... +</xsl:template> + +Description + +This template calculates the hierarchical level of a section. +The element sect1 is at level 1, sect2 is +at level 2, etc. + + + +Recursive sections are calculated down to the fifth level. + +Parameters + + +node + + +The section node for which the level should be calculated. +Defaults to the context node. + + + + + +Returns + +The section level, 1, 2, etc. + + + + + + +qanda.section.level +Returns the hierarchical level of a QandASet + + +<xsl:template name="qanda.section.level"/> + +Description + +This template calculates the hierarchical level of a QandASet. + + +Returns + +The level, 1, 2, etc. + + + + + + +select.mediaobject +Selects and processes an appropriate media object from a list + + +<xsl:template name="select.mediaobject"> +<xsl:param name="olist" select="imageobject|imageobjectco |videoobject|audioobject|textobject"/> + ... +</xsl:template> + +Description + +This template takes a list of media objects (usually the +children of a mediaobject or inlinemediaobject) and processes +the "right" object. + + + +This template relies on a template named +"select.mediaobject.index" to determine which object +in the list is appropriate. + + + +If no acceptable object is located, nothing happens. + +Parameters + + +olist + + +The node list of potential objects to examine. + + + + + +Returns + +Calls <xsl:apply-templates> on the selected object. + + + + + +select.mediaobject.index +Selects the position of the appropriate media object from a list + + +<xsl:template name="select.mediaobject.index"> +<xsl:param name="olist" select="imageobject|imageobjectco |videoobject|audioobject|textobject"/> +<xsl:param name="count">1</xsl:param> + ... +</xsl:template> + +Description + +This template takes a list of media objects (usually the +children of a mediaobject or inlinemediaobject) and determines +the "right" object. It returns the position of that object +to be used by the calling template. + + + +If the parameter use.role.for.mediaobject +is nonzero, then it first checks for an object with +a role attribute of the appropriate value. It takes the first +of those. Otherwise, it takes the first acceptable object +through a recursive pass through the list. + + + +This template relies on a template named "is.acceptable.mediaobject" +to determine if a given object is an acceptable graphic. The semantics +of media objects is that the first acceptable graphic should be used. + + + + +If no acceptable object is located, no index is returned. + +Parameters + + +olist + + +The node list of potential objects to examine. + + + +count + + +The position in the list currently being considered by the +recursive process. + + + + + +Returns + +Returns the position in the original list of the selected object. + + + + + +is.acceptable.mediaobject +Returns '1' if the specified media object is recognized + + +<xsl:template name="is.acceptable.mediaobject"> +<xsl:param name="object"/> + ... +</xsl:template> + +Description + +This template examines a media object and returns '1' if the +object is recognized as a graphic. + +Parameters + + +object + + +The media object to consider. + + + + + +Returns + +0 or 1 + + + + + +check.id.unique +Warn users about references to non-unique IDs + + +<xsl:template name="check.id.unique"> +<xsl:param name="linkend"/> + ... +</xsl:template> + +Description + +If passed an ID in linkend, +check.id.unique prints +a warning message to the user if either the ID does not exist or +the ID is not unique. + + + + + +check.idref.targets +Warn users about incorrectly typed references + + +<xsl:template name="check.idref.targets"> +<xsl:param name="linkend"/> +<xsl:param name="element-list"/> + ... +</xsl:template> + +Description + +If passed an ID in linkend, +check.idref.targets makes sure that the element +pointed to by the link is one of the elements listed in +element-list and warns the user otherwise. + + + + + +copyright.years +Print a set of years with collapsed ranges + + +<xsl:template name="copyright.years"> +<xsl:param name="years"/> +<xsl:param name="print.ranges" select="1"/> +<xsl:param name="single.year.ranges" select="0"/> +<xsl:param name="firstyear" select="0"/> +<xsl:param name="nextyear" select="0"/> + ... +</xsl:template> + +Description + +This template prints a list of year elements with consecutive +years printed as a range. In other words: + + +<year>1992</year> +<year>1993</year> +<year>1994</year> + + +is printed 1992-1994, whereas: + + +<year>1992</year> +<year>1994</year> + + +is printed 1992, 1994. + + + +This template assumes that all the year elements contain only +decimal year numbers, that the elements are sorted in increasing +numerical order, that there are no duplicates, and that all the years +are expressed in full century+year +(1999 not 99) notation. + +Parameters + + +years + + +The initial set of year elements. + + + +print.ranges + + +If non-zero, multi-year ranges are collapsed. If zero, all years +are printed discretely. + + + +single.year.ranges + + +If non-zero, two consecutive years will be printed as a range, +otherwise, they will be printed discretely. In other words, a single +year range is 1991-1992 but discretely it's +1991, 1992. + + + + + +Returns + +This template returns the formatted list of years. + + + + + +find.path.params +Search in a table for the "best" match for the node + + +<xsl:template name="find.path.params"> +<xsl:param name="node" select="."/> +<xsl:param name="table" select="''"/> +<xsl:param name="location"> + <xsl:call-template name="xpath.location"> + <xsl:with-param name="node" select="$node"/> + </xsl:call-template> + </xsl:param> + ... +</xsl:template> + +Description + +This template searches in a table for the value that most-closely +(in the typical best-match sense of XSLT) matches the current (element) +node location. + + + + + +string.upper +Converts a string to all uppercase letters + + +<xsl:template name="string.upper"> +<xsl:param name="string" select="''"/> + ... +</xsl:template> + +Description + +Given a string, this template does a language-aware conversion +of that string to all uppercase letters, based on the values of the +lowercase.alpha and +uppercase.alpha gentext keys for the current +locale. It affects only those characters found in the values of +lowercase.alpha and +uppercase.alpha. All other characters are left +unchanged. + +Parameters + + +string + + +The string to convert to uppercase. + + + + + + + + + +string.lower +Converts a string to all lowercase letters + + +<xsl:template name="string.lower"> +<xsl:param name="string" select="''"/> + ... +</xsl:template> + +Description + +Given a string, this template does a language-aware conversion +of that string to all lowercase letters, based on the values of the +uppercase.alpha and +lowercase.alpha gentext keys for the current +locale. It affects only those characters found in the values of +uppercase.alpha and +lowercase.alpha. All other characters are left +unchanged. + +Parameters + + +string + + +The string to convert to lowercase. + + + + + + + + + +select.choice.separator +Returns localized choice separator + + +<xsl:template name="select.choice.separator"/> + +Description + +This template enables auto-generation of an appropriate + localized "choice" separator (for example, "and" or "or") before + the final item in an inline list (though it could also be useful + for generating choice separators for non-inline lists). + + +It currently works by evaluating a processing instruction + (PI) of the form <?dbchoice choice="foo"?> : + + + + if the value of the choice + pseudo-attribute is "and" or "or", returns a localized "and" + or "or" + + + otherwise returns the literal value of the + choice pseudo-attribute + + + + The latter is provided only as a temporary workaround because the + locale files do not currently have translations for the word + or. So if you want to generate a a + logical "or" separator in French (for example), you currently need + to do this: + <?dbchoice choice="ou"?> + + + + +The dbchoice processing instruction is + an unfortunate hack; support for it may disappear in the future + (particularly if and when a more appropriate means for marking + up "choice" lists becomes available in DocBook). + + + + + + +evaluate.info.profile +Evaluates an info profile + + +<xsl:template name="evaluate.info.profile"> +<xsl:param name="profile"/> +<xsl:param name="info"/> + ... +</xsl:template> + +Description + +This template evaluates an "info profile" matching the XPath + expression given by the profile + parameter. It relies on the XSLT evaluate() + extension function. + + + +The value of the profile parameter + can include the literal string $info. If found + in the value of the profile parameter, the + literal string $info string is replaced with + the value of the info parameter, which + should be a set of *info nodes; the + expression is then evaluated using the XSLT + evaluate() extension function. + + Parameters + + + + profile + + +A string representing an XPath expression + + + + + info + + +A set of *info nodes + + + + + + Returns + +Returns a node (the result of evaluating the + profile parameter) + + + + + + Common » Refentry Metadata Template Reference + + $Id: refentry.xsl 7867 2008-03-07 09:54:25Z xmldoc $ + + + + + Introduction + +This is technical reference documentation for the “refentry + metadata” templates in the DocBook XSL Stylesheets. + + +This is not intended to be user documentation. It is provided + for developers writing customization layers for the stylesheets. + + + +Currently, only the manpages stylesheets make use of these + templates. They are, however, potentially useful elsewhere. + + + + + + +get.refentry.metadata +Gathers metadata from a refentry and its ancestors + + +<xsl:template name="get.refentry.metadata"> +<xsl:param name="refname"/> +<xsl:param name="info"/> +<xsl:param name="prefs"/> + ... +</xsl:template> + +Description + +Reference documentation for particular commands, functions, + etc., is sometimes viewed in isolation from its greater "context". For + example, users view Unix man pages as, well, individual pages, not as + part of a "book" of some kind. Therefore, it is sometimes necessary to + embed "context" information in output for each refentry. + + + +However, one problem is that different users mark up that + context information in different ways. Often (usually), the + context information is not actually part of the content of the + refentry itself, but instead part of the content of a + parent or ancestor element to the refentry. And + even then, DocBook provides a variety of elements that users might + potentially use to mark up the same kind of information. One user + might use the productnumber element to mark up version + information about a particular product, while another might use + the releaseinfo element. + + + +Taking all that in mind, the + get.refentry.metadata template tries to gather + metadata from a refentry element and its ancestor + elements in an intelligent and user-configurable way. The basic + mechanism used in the XPath expressions throughout this stylesheet + is to select the relevant metadata from the *info element that is + closest to the actual refentry – either on the + refentry itself, or on its nearest ancestor. + + + + +The get.refentry.metadata + template is actually just sort of a "driver" template; it + calls other templates that do the actual data collection, + then returns the data as a set. + + + + Parameters + + + + refname + + +The first refname in the refentry + + + + + info + + +A set of info nodes (from a refentry + element and its ancestors) + + + + + prefs + + +A node containing user preferences (from global + stylesheet parameters) + + + + + + Returns + +Returns a node set with the following elements. The + descriptions are verbatim from the man(7) man + page. + + + + title + + +the title of the man page (e.g., MAN) + + + + + section + + +the section number the man page should be placed in (e.g., + 7) + + + + + date + + +the date of the last revision + + + + + source + + +the source of the command + + + + + manual + + +the title of the manual (e.g., Linux + Programmer's Manual) + + + + + + + + + + + +get.refentry.title +Gets title metadata for a refentry + + +<xsl:template name="get.refentry.title"> +<xsl:param name="refname"/> + ... +</xsl:template> + +Description + +The man(7) man page describes this as "the + title of the man page (e.g., MAN). This differs + from refname in that, if the refentry has a + refentrytitle, we use that as the title; + otherwise, we just use first refname in the first + refnamediv in the source. + + Parameters + + + + refname + + +The first refname in the refentry + + + + + + Returns + +Returns a title node. + + + + +get.refentry.section +Gets section metadata for a refentry + + +<xsl:template name="get.refentry.section"> +<xsl:param name="refname"/> +<xsl:param name="quiet" select="0"/> + ... +</xsl:template> + +Description + +The man(7) man page describes this as "the + section number the man page should be placed in (e.g., + 7)". If we do not find a manvolnum + specified in the source, and we find that the refentry is + for a function, we use the section number 3 + ["Library calls (functions within program libraries)"]; otherwise, we + default to using 1 ["Executable programs or shell + commands"]. + + Parameters + + + + refname + + +The first refname in the refentry + + + + + quiet + + +If non-zero, no "missing" message is emitted + + + + + + Returns + +Returns a string representing a section number. + + + + +get.refentry.date +Gets date metadata for a refentry + + +<xsl:template name="get.refentry.date"> +<xsl:param name="refname"/> +<xsl:param name="info"/> +<xsl:param name="prefs"/> + ... +</xsl:template> + +Description + +The man(7) man page describes this as "the + date of the last revision". If we cannot find a date in the source, we + generate one. + + Parameters + + + + refname + + +The first refname in the refentry + + + + + info + + +A set of info nodes (from a refentry + element and its ancestors) + + + + + prefs + + +A node containing users preferences (from global stylesheet parameters) + + + + + + Returns + +Returns a date node. + + + + + +get.refentry.source +Gets source metadata for a refentry + + +<xsl:template name="get.refentry.source"> +<xsl:param name="refname"/> +<xsl:param name="info"/> +<xsl:param name="prefs"/> + ... +</xsl:template> + +Description + +The man(7) man page describes this as "the + source of the command", and provides the following examples: + + + + +For binaries, use something like: GNU, NET-2, SLS + Distribution, MCC Distribution. + + + + +For system calls, use the version of the kernel that you are + currently looking at: Linux 0.99.11. + + + + +For library calls, use the source of the function: GNU, BSD + 4.3, Linux DLL 4.4.1. + + + + + + + + +The solbook(5) man page describes + something very much like what man(7) calls + "source", except that solbook(5) names it + "software" and describes it like this: +
+ +This is the name of the software product that the topic + discussed on the reference page belongs to. For example UNIX + commands are part of the SunOS x.x + release. + +
+
+ + + +In practice, there are many pages that simply have a version + number in the "source" field. So, it looks like what we have is a + two-part field, + Name Version, + where: + + + + Name + + +product name (e.g., BSD) or org. name (e.g., GNU) + + + + + Version + + +version name + + + + + + Each part is optional. If the Name is a + product name, then the Version is probably + the version of the product. Or there may be no + Name, in which case, if there is a + Version, it is probably the version of the + item itself, not the product it is part of. Or, if the + Name is an organization name, then there + probably will be no Version. + + +
Parameters + + + + refname + + +The first refname in the refentry + + + + + info + + +A set of info nodes (from a refentry + element and its ancestors) + + + + + prefs + + +A node containing users preferences (from global + stylesheet parameters) + + + + + + Returns + +Returns a source node. + +
+ + + +get.refentry.source.name +Gets source-name metadata for a refentry + + +<xsl:template name="get.refentry.source.name"> +<xsl:param name="refname"/> +<xsl:param name="info"/> +<xsl:param name="prefs"/> + ... +</xsl:template> + +Description + +A "source name" is one part of a (potentially) two-part + Name Version + source field. For more details, see the documentation for the + get.refentry.source template. + + Parameters + + + + refname + + +The first refname in the refentry + + + + + info + + +A set of info nodes (from a refentry + element and its ancestors) + + + + + prefs + + +A node containing users preferences (from global + stylesheet parameters) + + + + + + Returns + +Depending on what output method is used for the + current stylesheet, either returns a text node or possibly an element + node, containing "source name" data. + + + + + +get.refentry.version +Gets version metadata for a refentry + + +<xsl:template name="get.refentry.version"> +<xsl:param name="refname"/> +<xsl:param name="info"/> +<xsl:param name="prefs"/> + ... +</xsl:template> + +Description + +A "version" is one part of a (potentially) two-part + Name Version + source field. For more details, see the documentation for the + get.refentry.source template. + + Parameters + + + + refname + + +The first refname in the refentry + + + + + info + + +A set of info nodes (from a refentry + element and its ancestors) + + + + + prefs + + +A node containing users preferences (from global + stylesheet parameters) + + + + + + Returns + +Depending on what output method is used for the + current stylesheet, either returns a text node or possibly an element + node, containing "version" data. + + + + + +get.refentry.manual +Gets source metadata for a refentry + + +<xsl:template name="get.refentry.manual"> +<xsl:param name="refname"/> +<xsl:param name="info"/> +<xsl:param name="prefs"/> + ... +</xsl:template> + +Description + +The man(7) man page describes this as "the + title of the manual (e.g., Linux Programmer's + Manual)". Here are some examples from existing man pages: + + + + +dpkg utilities + (dpkg-name) + + + + +User Contributed Perl Documentation + (GET) + + + + +GNU Development Tools + (ld) + + + + +Emperor Norton Utilities + (ddate) + + + + +Debian GNU/Linux manual + (faked) + + + + +GIMP Manual Pages + (gimp) + + + + +KDOC Documentation System + (qt2kdoc) + + + + + + + + +The solbook(5) man page describes + something very much like what man(7) calls + "manual", except that solbook(5) names it + "sectdesc" and describes it like this: +
+ +This is the section title of the reference page; for + example User Commands. + +
+
+ + +
Parameters + + + + refname + + +The first refname in the refentry + + + + + info + + +A set of info nodes (from a refentry + element and its ancestors) + + + + + prefs + + +A node containing users preferences (from global + stylesheet parameters) + + + + + + Returns + +Returns a manual node. + +
+ + + +get.refentry.metadata.prefs +Gets user preferences for refentry metadata gathering + + +<xsl:template name="get.refentry.metadata.prefs"/> + +Description + +The DocBook XSL stylesheets include several user-configurable + global stylesheet parameters for controlling refentry + metadata gathering. Those parameters are not read directly by the + other refentry metadata-gathering + templates. Instead, they are read only by the + get.refentry.metadata.prefs template, + which assembles them into a structure that is then passed to + the other refentry metadata-gathering + templates. + + + +So the, get.refentry.metadata.prefs + template is the only interface to collecting stylesheet parameters for + controlling refentry metadata gathering. + + Parameters + +There are no local parameters for this template; however, it + does rely on a number of global parameters. + + Returns + +Returns a manual node. + + + + + +set.refentry.metadata +Sets content of a refentry metadata item + + +<xsl:template name="set.refentry.metadata"> +<xsl:param name="refname"/> +<xsl:param name="info"/> +<xsl:param name="contents"/> +<xsl:param name="context"/> +<xsl:param name="preferred"/> + ... +</xsl:template> + +Description + +The set.refentry.metadata template is + called each time a suitable source element is found for a certain + metadata field. + + Parameters + + + + refname + + +The first refname in the refentry + + + + + info + + +A single *info node that contains the selected source element. + + + + + contents + + +A node containing the selected source element. + + + + + context + + +A string describing the metadata context in which the + set.refentry.metadata template was + called: either "date", "source", "version", or "manual". + + + + + + Returns + +Returns formatted contents of a selected source element. + +
+ + + Common » Utility Template Reference + + $Id: utility.xsl 7101 2007-07-20 15:32:12Z xmldoc $ + + + + + Introduction + +This is technical reference documentation for the + miscellaneous utility templates in the DocBook XSL + Stylesheets. + + + +These templates are defined in a separate file from the set + of “common” templates because some of the common templates + reference DocBook XSL stylesheet parameters, requiring the + entire set of parameters to be imported/included in any + stylesheet that imports/includes the common templates. + + +The utility templates don’t import or include any DocBook + XSL stylesheet parameters, so the utility templates can be used + without importing the whole set of parameters. + + + +This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + +log.message +Logs/emits formatted notes and warnings + + +<xsl:template name="log.message"> +<xsl:param name="level"/> +<xsl:param name="source"/> +<xsl:param name="context-desc"/> +<xsl:param name="context-desc-field-length">12</xsl:param> +<xsl:param name="context-desc-padded"> + <xsl:if test="not($context-desc = '')"> + <xsl:call-template name="pad-string"> + <xsl:with-param name="leftRight">right</xsl:with-param> + <xsl:with-param name="padVar" select="substring($context-desc, 1, $context-desc-field-length)"/> + <xsl:with-param name="length" select="$context-desc-field-length"/> + </xsl:call-template> + </xsl:if> + </xsl:param> +<xsl:param name="message"/> +<xsl:param name="message-field-length" select="45"/> +<xsl:param name="message-padded"> + <xsl:variable name="spaces-for-blank-level"> + <!-- * if the level field is blank, we'll need to pad out --> + <!-- * the message field with spaces to compensate --> + <xsl:choose> + <xsl:when test="$level = ''"> + <xsl:value-of select="4 + 2"/> + <!-- * 4 = hard-coded length of comment text ("Note" or "Warn") --> + <!-- * + 2 = length of colon-plus-space separator ": " --> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="0"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="spaces-for-blank-context-desc"> + <!-- * if the context-description field is blank, we'll need --> + <!-- * to pad out the message field with spaces to compensate --> + <xsl:choose> + <xsl:when test="$context-desc = ''"> + <xsl:value-of select="$context-desc-field-length + 2"/> + <!-- * + 2 = length of colon-plus-space separator ": " --> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="0"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="extra-spaces" select="$spaces-for-blank-level + $spaces-for-blank-context-desc"/> + <xsl:call-template name="pad-string"> + <xsl:with-param name="leftRight">right</xsl:with-param> + <xsl:with-param name="padVar" select="substring($message, 1, ($message-field-length + $extra-spaces))"/> + <xsl:with-param name="length" select="$message-field-length + $extra-spaces"/> + </xsl:call-template> + </xsl:param> + ... +</xsl:template> + +Description + +The log.message template is a utility + template for logging/emitting formatted messages – that is, + notes and warnings, along with a given log “level” and an + identifier for the “source” that the message relates to. + + Parameters + + + level + + +Text to log/emit in the message-level field to + indicate the message level + (Note or + Warning) + + + + source + + +Text to log/emit in the source field to identify the + “source” to which the notification/warning relates. + This can be any arbitrary string, but because the + message lacks line and column numbers to identify the + exact part of the source document to which it + relates, the intention is that the value you pass + into the source parameter should + give the user some way to identify the portion of + their source document on which to take potentially + take action in response to the log message (for + example, to edit, change, or add content). + + +So the source value should be, + for example, an ID, book/chapter/article title, title + of some formal object, or even a string giving an + XPath expression. + + + + context-desc + + +Text to log/emit in the context-description field to + describe the context for the message. + + + + context-desc-field-length + + +Specifies length of the context-description field + (in characters); default is 12 + + +If the text specified by the + context-desc parameter is longer + than the number of characters specified in + context-desc-field-length, it is + truncated to context-desc-field-length + (12 characters by default). + + +If the specified text is shorter than + context-desc-field-length, + it is right-padded out to + context-desc-field-length (12 by + default). + + +If no value has been specified for the + context-desc parameter, the field is + left empty and the text of the log message begins with + the value of the message + parameter. + + + + message + + +Text to log/emit in the actual message field + + + + message-field-length + + +Specifies length of the message + field (in characters); default is 45 + + + + + + Returns + +Outputs a message (generally, to standard error). + + + + +get.doc.title +Gets a title from the current document + + +<xsl:template name="get.doc.title"/> + +Description + +The get.doc.title template is a + utility template for returning the first title found in the + current document. + + Returns + +Returns a string containing some identifying title for the + current document . + + + + +pad-string +Right-pads or left-pads a string out to a certain length + + +<xsl:template name="pad-string"> +<xsl:param name="padChar" select="' '"/> +<xsl:param name="leftRight">left</xsl:param> +<xsl:param name="padVar"/> +<xsl:param name="length"/> + ... +</xsl:template> + +Description + +This function takes string padVar and + pads it out in the direction rightLeft to + the string-length length, using string + padChar (a space character by default) as + the padding string (note that padChar can + be a string; it is not limited to just being a single + character). + + + +This function began as a copy of Nate Austin's + prepend-pad function in the Padding + Content section of Dave Pawson's XSLT + FAQ. + + + Returns + +Returns a (padded) string. + + + + + Common » Character-Map Template Reference + + $Id: charmap.xsl 7266 2007-08-22 11:58:42Z xmldoc $ + + + + + Introduction + +This is technical reference documentation for the + character-map templates in the DocBook XSL Stylesheets. + + + +These templates are defined in a separate file from the set + of “common” templates because some of the common templates + reference DocBook XSL stylesheet parameters, requiring the + entire set of parameters to be imported/included in any + stylesheet that imports/includes the common templates. + + +The character-map templates don’t import or include + any DocBook XSL stylesheet parameters, so the + character-map templates can be used without importing the + whole set of parameters. + + + +This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + +apply-character-map +Applies an XSLT character map + + +<xsl:template name="apply-character-map"> +<xsl:param name="content"/> +<xsl:param name="map.contents"/> + ... +</xsl:template> + +Description + +This template applies an XSLT character map; that is, it causes certain + individual characters to be substituted with strings of one + or more characters. It is useful mainly for replacing + multiple “special” characters or symbols in the same target + content. It uses the value of + map.contents to do substitution on + content, and then returns the + modified contents. + + + +This template is a very slightly modified version of + Jeni Tennison’s replace_strings + template in the multiple string replacements section of Dave Pawson’s + XSLT FAQ. + + +The apply-string-subst-map + template is essentially the same template as the + apply-character-map template; the + only difference is that in the map that + apply-string-subst-map expects, oldstring and newstring attributes are used + instead of character and string attributes. + + + Parameters + + + content + + +The content on which to perform the character-map + substitution. + + + + map.contents + + +A node set of elements, with each element having + the following attributes: + + + + character, a + character to be replaced + + + string, a + string with which to replace character + + + + + + + + + + + + + +read-character-map +Reads in all or part of an XSLT character map + + +<xsl:template name="read-character-map"> +<xsl:param name="use.subset"/> +<xsl:param name="subset.profile"/> +<xsl:param name="uri"/> + ... +</xsl:template> + +Description + +The XSLT 2.0 specification describes character maps and explains how they may be used + to allow a specific character appearing in a text or + attribute node in a final result tree to be substituted by + a specified string of characters during serialization. The + read-character-map template provides a + means for reading and using character maps with XSLT + 1.0-based tools. + + +This template reads the character-map contents from + uri (in full or in part, depending on + the value of the use.subset + parameter), then passes those contents to the + apply-character-map template, along with + content, the data on which to perform + the character substitution. + + +Using the character map “in part” means that it uses only + those output-character elements that match the + XPath expression given in the value of the + subset.profile parameter. The current + implementation of that capability here relies on the + evaluate extension XSLT function. + + Parameters + + + use.subset + + +Specifies whether to use a subset of the character + map instead of the whole map; boolean + 0 or 1 + + + + subset.profile + + +XPath expression that specifies what subset of the + character map to use + + + + uri + + +URI for a character map + + + + + + + +
+ + + + + Formatting Object Table Reference + + $Id: table.xsl 8814 2010-08-09 21:19:53Z bobstayton $ + + + + Introduction + +This is technical reference documentation for the FO + table-processing templates in the DocBook XSL Stylesheets. + + +This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + +calc.column.width +Calculate an XSL FO table column width specification from a +CALS table column width specification. + + +<xsl:template name="calc.column.width"> +<xsl:param name="colwidth">1*</xsl:param> + ... +</xsl:template> + +Description + +CALS expresses table column widths in the following basic +forms: + + + + + + +99.99units, a fixed length specifier. + + + + +99.99, a fixed length specifier without any units. + + + + +99.99*, a relative length specifier. + + + + +99.99*+99.99units, a combination of both. + + + + + + +The CALS units are points (pt), picas (pi), centimeters (cm), +millimeters (mm), and inches (in). These are the same units as XSL, +except that XSL abbreviates picas "pc" instead of "pi". If a length +specifier has no units, the CALS default unit (pt) is assumed. + + + +Relative length specifiers are represented in XSL with the +proportional-column-width() function. + + + +Here are some examples: + + + + + + +"36pt" becomes "36pt" + + + + +"3pi" becomes "3pc" + + + + +"36" becomes "36pt" + + + + +"3*" becomes "proportional-column-width(3)" + + + + +"3*+2pi" becomes "proportional-column-width(3)+2pc" + + + + +"1*+2" becomes "proportional-column-width(1)+2pt" + + + + +Parameters + + +colwidth + + +The CALS column width specification. + + + + + +Returns + +The XSL column width specification. + + + + + + + + + + Titlepage Template Stylesheet Reference + + $Id: titlepage.xsl 7058 2007-07-17 13:59:29Z xmldoc $ + + + + Introduction + +This is technical reference documentation for the + “titlepage” templates in the DocBook XSL Stylesheets. + + +This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + +t:templates +Construct a stylesheet for the templates provided + + +<xsl:template match="t:templates"/> + +Description + +The t:templates element is the root of a +set of templates. This template creates an appropriate +xsl:stylesheet for the templates. + + + +If the t:templates element has a +base-stylesheet attribute, an +xsl:import statement is constructed for it. + + + + + +xsl:* +Copy xsl: elements straight through + + +<xsl:template match="xsl:*"/> + +Description + +This template simply copies the xsl: elements +straight through into the result tree. + + + + + +t:titlepage +Create the templates necessary to construct a title page + + +<xsl:template match="t:titlepage"/> + +Description + +The t:titlepage element creates a set of +templates for processing the titlepage for an element. The +root of this template set is the template named +wrapper.titlepage. That is the +template that should be called to generate the title page. + + + + +The t:titlepage element has three attributes: + + + +element + +The name of the source document element for which +these templates apply. In other words, to make a title page for the +article element, set the +element attribute to +article. This attribute is required. + + + +wrapper + +The entire title page can be wrapped with an element. +This attribute identifies that element. + + + +class + +If the class attribute +is set, a class attribute with this +value will be added to the wrapper element that surrounds the entire +title page. + + + + + + + + + +Any other attributes are copied through literally to the +wrapper element. + + + +The content of a t:titlepage is one or +more t:titlepage-content, +t:titlepage-separator, and +t:titlepage-before elements. + + + +Each of these elements may be provided for the recto +and verso sides of the title page. + + + + + + +@* (in copy.literal.atts mode) +Copy t:titlepage attributes + + +<xsl:template match="@*" mode="copy.literal.atts"/> + +Description + +This template copies all of the other attributes +from a t:titlepage element onto the specified +wrapper. + + + + + +t:titlepage-content +Create templates for the content of one side of a title page + + +<xsl:template match="t:titlepage-content"/> + +Description + +The title page content, that is, the elements from the source +document that are rendered on the title page, can be controlled independently +for the recto and verso sides of the title page. + + + +The t:titlepage-content element has two attributes: + + + +side + +Identifies the side of the page to which this title +page content applies. The +side attribute is required and +must be set to either +recto or +verso. In addition, you must specify +exactly one t:titlepage-content for each side +within each t:titlepage. + + + +order + +Indicates how the order of the elements presented on +the title page is determined. If the +order is +document, the elements are presented +in document order. Otherwise (if the +order is +stylesheet), the elements are presented +in the order that they appear in the template (and consequently in +the stylesheet). + + + + + + + + + +The content of a t:titlepage-content element is +a list of element names. These names should be unqualified. They identify +the elements in the source document that should appear on the title page. + + + + +Each element may have a single attribute: +predicate. The value of this +attribute is used as a predicate for the expression that matches +the element on which it occurs. + + + +In other words, to put only the first three authors on the +recto-side of a title +page, you could specify: + + + <t:titlepage-contents side="recto"> + <!-- other titlepage elements --> + <author predicate="[count(previous-sibling::author)<2]"/> + <!-- other titlepage elements --> + </t:titlepage-contents> + + + + + +Usually, the elements so named are empty. But it is possible to +make one level of selection within them. Suppose that you want to +process authorgroup elements on the title page, but +you want to select only proper authors, editors, or corporate authors, +not collaborators or other credited authors. + + + +In that case, you can put a t:or group inside +the authorgroup element: + + + <t:titlepage-contents side="recto"> + <!-- other titlepage elements --> + <authorgroup> + <t:or> + <author/> + <editor/> + <corpauthor/> + </t:or> + </authorgroup> + <!-- other titlepage elements --> + </t:titlepage-contents> + + + + + +This will have the effect of automatically generating a template +for processing authorgroups in the title page mode, +selecting only the specified children. If you need more complex processing, +you'll have to construct the templates by hand. + + + + + + +t:titlepage-separator +Create templates for the separator + + +<xsl:template match="t:titlepage-separator"/> + +Description + +The title page is separated from the content which follows it by +the markup specified in the t:titlepage-separator +element. + + + + + +t:titlepage-before +Create templates for what precedes a title page + + +<xsl:template match="t:titlepage-before"/> + +Description + +Each side of the title page is preceded by the markup specified +in the t:titlepage-before element for that +side. + + + + + +* (in copy mode) +Copy elements + + +<xsl:template match="*" mode="copy"/> + +Description + +This template simply copies the elements that it applies to +straight through into the result tree. + + + + + +@* (in copy mode) +Copy attributes + + +<xsl:template match="@*" mode="copy"/> + +Description + +This template simply copies the attributes that it applies to +straight through into the result tree. + + + + + +* (in document.order mode) +Create rules to process titlepage elements in document order + + +<xsl:template match="*" mode="document.order"/> + +Description + +This template is called to process all of the children of the +t:titlepage-content element. It creates the hairy +select expression necessary to process each of those elements in +the title page. + + + +Note that this template automatically handles the case where +some DocBook elements, like title and subtitle, can occur both inside +the *info elements where metadata is usually stored and outside. + + + + +It also automatically calculates the name for the *info container +and handles elements that have historically had containers with different +names. + + + + + + +* (in document.order mode) +Create rules to process titlepage elements in stylesheet order + + +<xsl:template match="*" mode="document.order"/> + +Description + +This template is called to process all of the children of the +t:titlepage-content element. It creates the set +of xsl:apply-templates elements necessary +process each of those elements in the title page. + + + +Note that this template automatically handles the case where +some DocBook elements, like title and subtitle, can occur both inside +the *info elements where metadata is usually stored and outside. + + + + +It also automatically calculates the name for the *info container +and handles elements that have historically had containers with different +names. + + + + + + +* (in titlepage.specialrules mode) +Create templates for special rules + + +<xsl:template match="*" mode="titlepage.specialrules"/> + +Description + +This template is called to process all of the descendants of the +t:titlepage-content element that require special +processing. At present, that's just t:or elements. + + + + + + +* (in titlepage.subrules mode) +Create template for individual special rules + + +<xsl:template match="*" mode="titlepage.subrules"/> + +Description + +This template is called to process the children of special +template elements. + + + + + + +t:or +Process the t:or special rule + + +<xsl:template match="t:or"/><xsl:template match="t:or" mode="titlepage.subrules"/> + +Description + +This template processes t:or. + + + + + +t:or (in titlepage.subrules mode) +Process the t:or special rule in +titlepage.subrules mode + + +<xsl:template match="t:or" mode="titlepage.subrules"/> + +Description + +The titlepage.subrules mode doesn't apply to t:or, so just +reprocess this node in the normal mode. + + + + + +element-or-list +Construct the "or-list" used in the select attribute for +special rules. + + +<xsl:template name="element-or-list"> +<xsl:param name="elements" select="*"/> +<xsl:param name="element.count" select="count($elements)"/> +<xsl:param name="count" select="1"/> +<xsl:param name="orlist"/> + ... +</xsl:template> + +Description + +Walk through each of the children of t:or, producing the +text of the select attribute. + + + + +
+
\ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/warranty.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/warranty.xml new file mode 100644 index 000000000..3c70d323c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/docsrc/warranty.xml @@ -0,0 +1,11 @@ +Warranty +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 NORMAN WALSH OR ANY +OTHER CONTRIBUTOR 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. + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse.xsl new file mode 100644 index 000000000..07ddcea60 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse.xsl @@ -0,0 +1,306 @@ + + + + + + + + + + + + + + + + + + + Note + + + namesp. cut + + + stripped namespace before processing + + + + + + + Note + + + namesp. cut + + + processing stripped document + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + Formatting from + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + + ) + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse3.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse3.xsl new file mode 100644 index 000000000..c0d3a4ef9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/eclipse3.xsl @@ -0,0 +1,111 @@ + + + + + + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Manifest-Version: 1.0 + + Bundle-Version: 1.0 + + Bundle-Name: + + Bundle-SymbolicName: + + Bundle-Vendor: + + + + + \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/profile-eclipse.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/profile-eclipse.xsl new file mode 100644 index 000000000..5040c9ba1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/eclipse/profile-eclipse.xsl @@ -0,0 +1,269 @@ + + + + + + + + + +Note: namesp. cut : stripped namespace before processingNote: namesp. cut : processing stripped document + + + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + Formatting from + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + + ) + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/README b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/README new file mode 100644 index 000000000..5e2587a12 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/README @@ -0,0 +1,88 @@ +---------------------------------------------------------------------- + README file for the DocBook XSL Stylesheets +---------------------------------------------------------------------- + +These are XSL stylesheets for transforming DocBook XML document +instances into .epub format. + +.epub is an open standard of the The International Digital Publishing Forum (IDPF), +a the trade and standards association for the digital publishing industry. + +An alpha-quality reference implementation (dbtoepub) for a DocBook to .epub +converter (written in Ruby) is available under bin/. + +From http://idpf.org + What is EPUB, .epub, OPS/OCF & OEB? + + ".epub" is the file extension of an XML format for reflowable digital + books and publications. ".epub" is composed of three open standards, + the Open Publication Structure (OPS), Open Packaging Format (OPF) and + Open Container Format (OCF), produced by the IDPF. "EPUB" allows + publishers to produce and send a single digital publication file + through distribution and offers consumers interoperability between + software/hardware for unencrypted reflowable digital books and other + publications. The Open eBook Publication Structure or "OEB", + originally produced in 1999, is the precursor to OPS. + +---------------------------------------------------------------------- +.epub Constraints +---------------------------------------------------------------------- + +.epub does not support all of the image formats that DocBook supports. +When an image is available in an accepted format, it will be used. The +accepted @formats are: 'GIF','GIF87a','GIF89a','JPEG','JPG','PNG','SVG' +A mime-type for the image will be guessed from the file extension, +which may not work if your file extensions are non-standard. + +Non-supported elements: + * + * , , , with text/XML + @filerefs + * + * in lists (generic XHTML rendering inability) + * (just make your programlistings + siblings, rather than descendents of paras) + +---------------------------------------------------------------------- +dbtoepub Reference Implementation +---------------------------------------------------------------------- + +An alpha-quality DocBook to .epub conversion program, dbtoepub, is provided +in bin/dbtoepub. + +This tool requires: + - 'xsltproc' in your PATH + - 'zip' in your PATH + - Ruby 1.8.4+ + +Windows compatibility has not been extensively tested; bug reports encouraged. +[See http://www.zlatkovic.com/libxml.en.html and http://unxutils.sourceforge.net/] + +$ dbtoepub --help + Usage: dbtoepub [OPTIONS] [DocBook Files] + + dbtoepub converts DocBook and
s into to .epub files. + + .epub is defined by the IDPF at www.idpf.org and is made up of 3 standards: + - Open Publication Structure (OPS) + - Open Packaging Format (OPF) + - Open Container Format (OCF) + + Specific options: + -d, --debug Show debugging output. + -h, --help Display usage info + -v, --verbose Make output verbose + + +---------------------------------------------------------------------- +Validation +---------------------------------------------------------------------- + +The epubcheck project provides limited validation for .epub documents. +See http://code.google.com/p/epubcheck/ for details. + +---------------------------------------------------------------------- +Copyright information +---------------------------------------------------------------------- +See the accompanying file named COPYING. + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/dbtoepub b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/dbtoepub new file mode 100644 index 000000000..9976f816a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/dbtoepub @@ -0,0 +1,76 @@ +#!/usr/bin/env ruby +# This program converts DocBook documents into .epub files. +# +# Usage: dbtoepub [OPTIONS] [DocBook Files] +# +# .epub is defined by the IDPF at www.idpf.org and is made up of 3 standards: +# - Open Publication Structure (OPS) +# - Open Packaging Format (OPF) +# - Open Container Format (OCF) +# +# Specific options: +# -c, --css [FILE] Use FILE for CSS on generated XHTML. +# -d, --debug Show debugging output. +# -f, --font [OTF FILE] Embed OTF FILE in .epub. +# -h, --help Display usage info. +# -s, --stylesheet [XSL FILE] Use XSL FILE as a customization +# layer (imports epub/docbook.xsl). +# -v, --verbose Make output verbose. + +lib = File.expand_path(File.join(File.dirname(__FILE__), 'lib')) +$LOAD_PATH.unshift(lib) if File.exist?(lib) + +require 'fileutils' +require 'optparse' +require 'tmpdir' + +require 'docbook' + +verbose = false +debug = false +css_file = nil +otf_files = [] +customization_layer = nil +output_file = nil + +#$DEBUG=true + +# Set up the OptionParser +opts = OptionParser.new +opts.banner = "Usage: #{File.basename($0)} [OPTIONS] [DocBook Files] + +#{File.basename($0)} converts DocBook and
s into to .epub files. + +.epub is defined by the IDPF at www.idpf.org and is made up of 3 standards: +- Open Publication Structure (OPS) +- Open Packaging Format (OPF) +- Open Container Format (OCF) + +Specific options:" +opts.on("-c", "--css [FILE]", "Use FILE for CSS on generated XHTML.") {|f| css_file = f} +opts.on("-d", "--debug", "Show debugging output.") {debug = true; verbose = true} +opts.on("-f", "--font [OTF FILE]", "Embed OTF FILE in .epub.") {|f| otf_files << f} +opts.on("-h", "--help", "Display usage info.") {puts opts.to_s; exit 0} +opts.on("-o", "--output [OUTPUT FILE]", "Output ePub file as OUTPUT FILE.") {|f| output_file = f} +opts.on("-s", "--stylesheet [XSL FILE]", "Use XSL FILE as a customization layer (imports epub/docbook.xsl).") {|f| customization_layer = f} +opts.on("-v", "--verbose", "Make output verbose.") {verbose = true} + +db_files = opts.parse(ARGV) +if db_files.size == 0 + puts opts.to_s + exit 0 +end + +db_files.each {|docbook_file| + dir = File.expand_path(File.join(Dir.tmpdir, ".epubtmp#{Time.now.to_f.to_s}")) + FileUtils.mkdir_p(dir) + e = DocBook::Epub.new(docbook_file, dir, css_file, customization_layer, otf_files) + + if output_file + epub_file = output_file + else + epub_file = File.basename(docbook_file, ".xml") + ".epub" + end + puts "Rendering DocBook file #{docbook_file} to #{epub_file}" if verbose + e.render_to_file(epub_file) +} diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/lib/docbook.rb b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/lib/docbook.rb new file mode 100644 index 000000000..14110d60b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/lib/docbook.rb @@ -0,0 +1,227 @@ +require 'fileutils' +require 'rexml/parsers/pullparser' + +module DocBook + + class Epub + CHECKER = "epubcheck" + STYLESHEET = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', "docbook.xsl")) + CALLOUT_PATH = File.join('images', 'callouts') + CALLOUT_FULL_PATH = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', CALLOUT_PATH)) + CALLOUT_LIMIT = 15 + CALLOUT_EXT = ".png" + XSLT_PROCESSOR = "xsltproc" + OUTPUT_DIR = ".epubtmp#{Time.now.to_f.to_s}" + MIMETYPE = "application/epub+zip" + META_DIR = "META-INF" + OEBPS_DIR = "OEBPS" + ZIPPER = "zip" + + attr_reader :output_dir + + def initialize(docbook_file, output_dir=OUTPUT_DIR, css_file=nil, customization_layer=nil, embedded_fonts=[]) + @docbook_file = docbook_file + @output_dir = output_dir + @meta_dir = File.join(@output_dir, META_DIR) + @oebps_dir = File.join(@output_dir, OEBPS_DIR) + @css_file = css_file ? File.expand_path(css_file) : css_file + @embedded_fonts = embedded_fonts + @to_delete = [] + + if customization_layer + @stylesheet = File.expand_path(customization_layer) + else + @stylesheet = STYLESHEET + end + + unless File.exist?(@docbook_file) + raise ArgumentError.new("File #{@docbook_file} does not exist") + end + end + + def render_to_file(output_file, verbose=false) + render_to_epub(output_file, verbose) + bundle_epub(output_file, verbose) + cleanup_files(@to_delete) + end + + def self.invalid?(file) + # Obnoxiously, we can't just check for a non-zero output... + cmd = %Q(#{CHECKER} "#{file}") + output = `#{cmd} 2>&1` + + if $?.to_i == 0 + return false + else + STDERR.puts output if $DEBUG + return output + end + end + + private + def render_to_epub(output_file, verbose) + @collapsed_docbook_file = collapse_docbook() + + chunk_quietly = "--stringparam chunk.quietly " + (verbose ? '0' : '1') + callout_path = "--stringparam callout.graphics.path #{CALLOUT_PATH}/" + callout_limit = "--stringparam callout.graphics.number.limit #{CALLOUT_LIMIT}" + callout_ext = "--stringparam callout.graphics.extension #{CALLOUT_EXT}" + html_stylesheet = "--stringparam html.stylesheet #{File.basename(@css_file)}" if @css_file + base = "--stringparam base.dir #{OEBPS_DIR}/" + unless @embedded_fonts.empty? + embedded_fonts = @embedded_fonts.map {|f| File.basename(f)}.join(',') + font = "--stringparam epub.embedded.fonts \"#{embedded_fonts}\"" + end + meta = "--stringparam epub.metainf.dir #{META_DIR}/" + oebps = "--stringparam epub.oebps.dir #{OEBPS_DIR}/" + options = [chunk_quietly, + callout_path, + callout_limit, + callout_ext, + base, + font, + meta, + oebps, + html_stylesheet, + ].join(" ") + # Double-quote stylesheet & file to help Windows cmd.exe + db2epub_cmd = %Q(cd "#{@output_dir}" && #{XSLT_PROCESSOR} #{options} "#{@stylesheet}" "#{@collapsed_docbook_file}") + STDERR.puts db2epub_cmd if $DEBUG + success = system(db2epub_cmd) + raise "Could not render as .epub to #{output_file} (#{db2epub_cmd})" unless success + @to_delete << Dir["#{@meta_dir}/*"] + @to_delete << Dir["#{@oebps_dir}/*"] + end + + def bundle_epub(output_file, verbose) + + quiet = verbose ? "" : "-q" + mimetype_filename = write_mimetype() + meta = File.basename(@meta_dir) + oebps = File.basename(@oebps_dir) + images = copy_images() + csses = copy_csses() + fonts = copy_fonts() + callouts = copy_callouts() + # zip -X -r ../book.epub mimetype META-INF OEBPS + # Double-quote stylesheet & file to help Windows cmd.exe + zip_cmd = %Q(cd "#{@output_dir}" && #{ZIPPER} #{quiet} -X -r "#{File.expand_path(output_file)}" "#{mimetype_filename}" "#{meta}" "#{oebps}") + puts zip_cmd if $DEBUG + success = system(zip_cmd) + raise "Could not bundle into .epub file to #{output_file}" unless success + end + + # Input must be collapsed because REXML couldn't find figures in files that + # were XIncluded or added by ENTITY + # http://sourceforge.net/tracker/?func=detail&aid=2750442&group_id=21935&atid=373747 + def collapse_docbook + # Double-quote stylesheet & file to help Windows cmd.exe + collapsed_file = File.join(File.expand_path(File.dirname(@docbook_file)), + '.collapsed.' + File.basename(@docbook_file)) + entity_collapse_command = %Q(xmllint --loaddtd --noent -o "#{collapsed_file}" "#{@docbook_file}") + entity_success = system(entity_collapse_command) + raise "Could not collapse named entites in #{@docbook_file}" unless entity_success + + xinclude_collapse_command = %Q(xmllint --xinclude -o "#{collapsed_file}" "#{collapsed_file}") + xinclude_success = system(xinclude_collapse_command) + raise "Could not collapse XIncludes in #{@docbook_file}" unless xinclude_success + + @to_delete << collapsed_file + return collapsed_file + end + + def copy_callouts + new_callout_images = [] + if has_callouts? + calloutglob = "#{CALLOUT_FULL_PATH}/*#{CALLOUT_EXT}" + Dir.glob(calloutglob).each {|img| + img_new_filename = File.join(@oebps_dir, CALLOUT_PATH, File.basename(img)) + + # TODO: What to rescue for these two? + FileUtils.mkdir_p(File.dirname(img_new_filename)) + FileUtils.cp(img, img_new_filename) + @to_delete << img_new_filename + new_callout_images << img + } + end + return new_callout_images + end + + def copy_fonts + new_fonts = [] + @embedded_fonts.each {|font_file| + font_new_filename = File.join(@oebps_dir, File.basename(font_file)) + FileUtils.cp(font_file, font_new_filename) + new_fonts << font_file + } + return new_fonts + end + + def copy_csses + if @css_file + css_new_filename = File.join(@oebps_dir, File.basename(@css_file)) + FileUtils.cp(@css_file, css_new_filename) + end + end + + def copy_images + image_references = get_image_refs() + new_images = [] + image_references.each {|img| + # TODO: It'd be cooler if we had a filetype lookup rather than just + # extension + if img =~ /\.(svg|png|gif|jpe?g|xml)/i + img_new_filename = File.join(@oebps_dir, img) + img_full = File.join(File.expand_path(File.dirname(@docbook_file)), img) + + # TODO: What to rescue for these two? + FileUtils.mkdir_p(File.dirname(img_new_filename)) + puts(img_full + ": " + img_new_filename) if $DEBUG + FileUtils.cp(img_full, img_new_filename) + @to_delete << img_new_filename + new_images << img_full + end + } + return new_images + end + + def write_mimetype + mimetype_filename = File.join(@output_dir, "mimetype") + File.open(mimetype_filename, "w") {|f| f.print MIMETYPE} + @to_delete << mimetype_filename + return File.basename(mimetype_filename) + end + + def cleanup_files(file_list) + file_list.flatten.each {|f| + # Yikes + FileUtils.rm_r(f, :force => true ) + } + end + + # Returns an Array of all of the (image) @filerefs in a document + def get_image_refs + parser = REXML::Parsers::PullParser.new(File.new(@collapsed_docbook_file)) + image_refs = [] + while parser.has_next? + el = parser.pull + if el.start_element? and (el[0] == "imagedata" or el[0] == "graphic") + image_refs << el[1]['fileref'] + end + end + return image_refs.uniq + end + + # Returns true if the document has code callouts + def has_callouts? + parser = REXML::Parsers::PullParser.new(File.new(@collapsed_docbook_file)) + while parser.has_next? + el = parser.pull + if el.start_element? and (el[0] == "calloutlist" or el[0] == "co") + return true + end + end + return false + end + end +end diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/xslt/obfuscate.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/xslt/obfuscate.xsl new file mode 100644 index 000000000..4ea4cd557 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/bin/xslt/obfuscate.xsl @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/docbook.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/docbook.xsl new file mode 100644 index 000000000..753fcd00c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/epub/docbook.xsl @@ -0,0 +1,1690 @@ + + + + + + + + + + 1 + 2 + + book toc,title + + + + + 4 + + + + + + + + + + + + + + + ncxtoc + htmltoc + + + + + + 0 + + + + + + + + .png + + + + + + + + + + + + + + + + 1 + + + 1 + + + 1 + + + 1 + + + 0 + + + + + + + + + + + + + + + + + + Note + + + namesp. cut + + + stripped namespace before processing + + + + + + + Note + + + namesp. cut + + + processing stripped document + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + Formatting from + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + urn: + + : + + + + + urn:isbn: + + + + urn:issn: + + + + + + + + + + + + + _ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2.0 + + + + + + + + + + + + + + + + + + + + + + cover + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1.0 + + + + + + + application/oebps-package+xml + + + + + + + + + + + + + + + + + + + + + + + + + 2005-1 + + + + + + cover + + + + + + + dtb:uid + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + : + + + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + © + + + + + + + + + + + + + + + + cover + Cover + + + + + + + + + + + toc + Table of Contents + + + + + + + + + + + + + + + + + + + + + + yes + + no + + + + + + + + + + yes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + application/x-dtbncx+xml + + + + + + + application/xhtml+xml + + + + + + + + + + + text/css + css + + + + + + + + + + + application/xhtml+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/gif + + + image/gif + + + image/png + + + image/png + + + image/jpeg + + + image/jpeg + + + image/jpeg + + + image/jpeg + + + image/svg+xml + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WARNING: mediaobjectco almost certainly will not render as expected in .epub! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + application/xhtml+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + (missing alt) + + + + + + + + + + + + + + text-align: + + middle + + + + + + + + + + + + + + + + + + + + + + 1 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + 1 + + 1 + 1 + 1 + 1 + 1 + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + + No insertfile extension available. Use a different processor (with extensions) or turn on $use.extensions and $textinsert.extension (see docs for more). + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cover + + text/css + + img { max-width: 100%; } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -toc + + + + + + + + + + + + + + + + + + + + + + + + font/opentype + + + + WARNING: OpenType fonts should be supplied! ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + + + + + + + + + + clear: both + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + 1 + + + + + + + 1 + 2 + 3 + 4 + 5 + + + + + + + + + + + + + + + + + + + + + + + + 6 + 5 + 4 + 3 + 2 + 1 + + + + + title + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/LICENSE.txt b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/LICENSE.txt new file mode 100644 index 000000000..fed77d97c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/LICENSE.txt @@ -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/ + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/NOTICE.txt b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/NOTICE.txt new file mode 100644 index 000000000..35f247d3c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/NOTICE.txt @@ -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/ diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.LIBXSLT b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.LIBXSLT new file mode 100644 index 000000000..2c8027448 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.LIBXSLT @@ -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 diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.txt b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.txt new file mode 100644 index 000000000..35c6fa02c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/README.txt @@ -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. diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/docbook.py b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/docbook.py new file mode 100644 index 000000000..17241bb63 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/docbook.py @@ -0,0 +1,236 @@ +# docbook.py: extension module +# $Id: docbook.py 8353 2009-03-17 16:57:50Z mzjn $ +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 is 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 is not None: + if foStylesheet: + width = col.prop("column-width") + else: + width = col.prop("width") + + if width is None: + width = "1*" + + relPart = 0.0 + absPart = 0.0 + starPos = width.find("*") + if starPos >= 0: + relPart, absPart = width.split("*", 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 '%' not in tableWidth: + 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 '%' not in tableWidth: + 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 is not 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(r'([+-]?[\d.]+)(\S+)', length) + if m is not None and m.lastindex > 1: + unit = pixelsPerInch + if m.group(2) in unitHash: + 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 is None: + return default + + # If it's a list, get the first element + if isinstance(varString, list): + varString = varString[0] + + # If it's not a string, it must be a node, get its content + if not isinstance(varString, str): + 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 diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/xslt.py b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/xslt.py new file mode 100644 index 000000000..0a4ff9279 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/extensions/xslt.py @@ -0,0 +1,83 @@ +#!/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 name in params: + 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() diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/admon.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/admon.xsl new file mode 100644 index 000000000..4f69be4d4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/admon.xsl @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + 36pt + + + + + + + + + note + warning + caution + tip + important + note + + + + + + + + + + url( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/annotations.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/annotations.xsl new file mode 100644 index 000000000..ba6baa64a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/annotations.xsl @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kimber.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kimber.xsl new file mode 100644 index 000000000..434572f21 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kimber.xsl @@ -0,0 +1,172 @@ + + +%common.entities; + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: the 'kimber' index method requires the + Saxon version 6 or 8 XSLT processor. + + + + + + ERROR: the 'kimber' index method requires the + Innodata Isogen Java extensions for + internationalized indexes. Install those + extensions, or use a different index method. + For more information, see: + http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kosek.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kosek.xsl new file mode 100644 index 000000000..7ed54147a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-kosek.xsl @@ -0,0 +1,139 @@ + + +%common.entities; +]> + + + + + + + + + + + + + + + + ERROR: the 'kosek' index method does not + work with the xsltproc XSLT processor. + + + + + + ERROR: the 'kosek' index method does not + work with the Saxon 8 XSLT processor. + + + + + + + ERROR: the 'kosek' index method requires the + exslt:node-set() function. Use a processor that + has it, or use a different index method. + + + + + + ERROR: the 'kosek' index method requires the + index extension functions be imported: + xsl:import href="common/autoidx-kosek.xsl" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-ng.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-ng.xsl new file mode 100644 index 000000000..9407b5cf9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx-ng.xsl @@ -0,0 +1,20 @@ + + + + + + + + +kosek + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx.xsl new file mode 100644 index 000000000..920760f0e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autoidx.xsl @@ -0,0 +1,1330 @@ + + +%common.entities; +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: the 'kosek' index method does not + work with the xsltproc XSLT processor. + + + + + + + ERROR: the 'kosek' index method requires the + exslt:node-set() function. Use a processor that + has it, or use a different index method. + + + + + + ERROR: the 'kosek' index method requires the + kosek index extensions be imported: + xsl:import href="fo/autoidx-kosek.xsl" + + + + + + + + + + + + + + ERROR: the 'kimber' index method requires the + Saxon version 6 or 8 XSLT processor. + + + + + + ERROR: the 'kimber' index method requires the + kimber index extensions be imported: + xsl:import href="fo/autoidx-kimber.xsl" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + + + + + + + + + + + + + + , + + , + + + + + + + + + , + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + + + + + ) + + + + + + + + + + + + ( + + + + + + ) + + + + + + + + + + + + + + + + + <index> + + <indexdiv> + <title> + + + + </title> + + + + + + + </indexdiv> + + + + + + + + + </index> + + + + + + + + < + + > + + + + + + + + + + + + + <indexdiv> + <title> + + </title> + + + + + + + + </indexdiv> + + + + + + + + + + + + + + + + + + + + + + + + + <indexentry> + <primaryie> + <phrase> + + + + </phrase> + , + + + + + + + + + + + </primaryie> + + + + + + + + + + + + + + + + + + + + + + + + </indexentry> + + + + + + + + + + + <secondaryie> + <phrase> + + + + </phrase> + , + + + + + + + + + + + </secondaryie> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <tertiaryie> + <phrase> + + + + </phrase> + , + + + + + + + + + + + </tertiaryie> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <phrase role="pageno"> + <link linkend=" + + "> + + + - + + + </link> + </phrase> + + + <phrase role="pageno"> + + <link linkend=" + + "> + + + + + + </link> + + </phrase> + + + + + + + + + + + + + + + + + + + + + + + <phrase fole="pageno"> + + <link linkend=" + + "> + + + + + + </link> + + </phrase> + + + + + + + + + + + + + + + + + + + <phrase role="pageno"> + + <link linkend=" + + "> + + + + + + </link> + + </phrase> + + + + + + + + + + <seeie> + <phrase> + + + + </phrase> + </seeie> + + + + + + + + + <seealsoie> + <phrase> + + + + </phrase> + </seealsoie> + + + + + + + + + + + + + &lt; + + + + + + + + &amp; + + + + + + + + &lt; + + + + + + + + &amp; + + + + + + + + + + + + + + + + + + + + + + + + + + + + index + term-separator + + + + + + + + + + + + + + index + number-separator + + + + + + + + + + + + + + index + range-separator + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autotoc.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autotoc.xsl new file mode 100644 index 000000000..c1079b8b6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/autotoc.xsl @@ -0,0 +1,915 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3em + -3em + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/axf.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/axf.xsl new file mode 100644 index 000000000..e63c3a69e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/axf.xsl @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + author + + + + + + + + + + + + + + + + + + + + + keywords + + + + + , + + + + + + + + + subject + + + + + , + + + + + + + + + + + + + + crop + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio-iso690.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio-iso690.xsl new file mode 100644 index 000000000..1bc385838 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio-iso690.xsl @@ -0,0 +1,1300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + In + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio.xsl new file mode 100644 index 000000000..452461284 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/biblio.xsl @@ -0,0 +1,1169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No bibliography entry: + + found in + + + + Error: no bibliography entry: + + found in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No bibliography entry: + + found in + + + + Error: no bibliography entry: + + found in + + + + + + + + + + + + + + + + + + + + [ + + ] + + + [ + + ] + + + [ + + ] + + + [ + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + copyright + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/block.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/block.xsl new file mode 100644 index 000000000..ce19b4191 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/block.xsl @@ -0,0 +1,654 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + 0pt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + 0.5em + 0pt + + + + + 0.5em + 0pt + 0pt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + 0.5em + 0pt + + + + + 0.5em + 0pt + 0pt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/callout.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/callout.xsl new file mode 100644 index 000000000..a31f2188c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/callout.xsl @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Don't know how to do callouts with + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Error: coref link is broken: + + + + + + Error: coref doesn't point to a co: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + url( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + Don't know how to generate Unicode callouts + when $callout.unicode.start.character is + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/component.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/component.xsl new file mode 100644 index 000000000..14664136c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/component.xsl @@ -0,0 +1,887 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + 5 + 4 + 3 + 2 + 1 + + + + + + + + + + + + + inherit + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/division.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/division.xsl new file mode 100644 index 000000000..975d8c509 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/division.xsl @@ -0,0 +1,612 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl new file mode 100644 index 000000000..ee0a1eb44 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/docbook.xsl @@ -0,0 +1,335 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Element + + in namespace ' + + ' encountered + + in + + + , but no template matches. + + + + < + + > + + </ + + > + + + + + + + + + + + + + + + + + Note + + + namesp. cut + + + stripped namespace before processing + + + + + + + Note + + + namesp. cut + + + processing stripped document + + + + + + + + Unable to strip the namespace from DB5 document, + cannot proceed. + + + + + + + + + + ID ' + + ' not found in document. + + + + + ERROR: Document root element ($rootid= + + ) for FO output + must be one of the following elements: + + + + + + + + + + + + + + + + + + + + + ERROR: Document root element for FO output + must be one of the following elements: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [could not find document title] + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Making + + pages on + + paper ( + + x + + ) + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ebnf.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ebnf.xsl new file mode 100644 index 000000000..09dcb11db --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ebnf.xsl @@ -0,0 +1,325 @@ + + + + + + + + +$Id: ebnf.xsl 6910 2007-06-28 23:23:30Z xmldoc $ + +Walsh +Norman +199920002001 +Norman Walsh + + +HTML EBNF Reference + + +
Introduction + +This is technical reference documentation for the DocBook XSL +Stylesheets; it documents (some of) the parameters, templates, and +other elements of the stylesheets. + +This reference describes the templates and parameters relevant +to formatting EBNF markup. + +This is not intended to be user documentation. +It is provided for developers writing customization layers for the +stylesheets, and for anyone who's interested in how it +works. + +Although I am trying to be thorough, this documentation is known +to be incomplete. Don't forget to read the source, too :-) +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + Error: no ID for productionrecap linkend: + + . + + + + + + Warning: multiple "IDs" for productionrecap linkend: + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + production + + + + + + + + + Non-terminals with no content must point to + production elements in the current document. + + + Invalid xpointer for empty nt: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + + + + + + + + /*  + +  */ + + + + + + + + + + constraintdef + + + + + + + + + + + + + + + + + + + : + + + + + + + : + + + + + + + + + +  ] + + + + + + + + + + + + + + + + + +
diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo-rtf.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo-rtf.xsl new file mode 100644 index 000000000..4aa0f32c0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo-rtf.xsl @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo.xsl new file mode 100644 index 000000000..854098fe2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fo.xsl @@ -0,0 +1,117 @@ + + + + + + + + + + + left + left + left + right + top + left + + + + + + right + right + right + left + bottom + right + + + + + + + WARNING: FOP does not support right-to-left writing-mode + lr-tb + + + WARNING: FOP does not support right-to-left writing-mode + lr-tb + + lr-tb + rl-tb + tb-rl + lr-tb + + + + + + + + + + + + + + + + + + + bullet + + + o + © + + + ® + (SM) + " + " + ' + ' + + - + o + + + + + + + + + + + + + + + + + + + # + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/footnote.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/footnote.xsl new file mode 100644 index 000000000..cc0242d64 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/footnote.xsl @@ -0,0 +1,220 @@ + + + + + + + + + + + super + + + super + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ERROR: A footnoteref element has a linkend that points to an element that is not a footnote. +Typically this happens when an id attribute is accidentally applied to the child of a footnote element. +target element: +linkend/id: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: footnote number may not be generated + correctly; + + unexpected as first child of footnote. + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop.xsl new file mode 100644 index 000000000..c82a48df3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop.xsl @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop1.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop1.xsl new file mode 100644 index 000000000..61cb89e5b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/fop1.xsl @@ -0,0 +1,223 @@ + + + + + + + + + + hide + show + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + , + + + + + + + + + + + DocBook XSL Stylesheets with Apache FOP + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/formal.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/formal.xsl new file mode 100644 index 000000000..bb40aa90b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/formal.xsl @@ -0,0 +1,642 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + always + + + always + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Broken table: tr descendent of CALS Table. + The text in the first tr is: + + + + + + Broken table: row descendent of HTML table. + The text in the first row is: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/glossary.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/glossary.xsl new file mode 100644 index 000000000..366b3cbfc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/glossary.xsl @@ -0,0 +1,1169 @@ + + +%common.entities; +]> + + + + + + + + + + + + + + + + + + + + + + &setup-language-variable; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + &setup-language-variable; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: processing automatic glossary + without a glossary.collection file. + + + + + + Warning: processing automatic glossary but unable to + open glossary.collection file ' + + ' + + + + + + + + + + + + &setup-language-variable; + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: processing automatic glossary + without a glossary.collection file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: processing automatic glossary + without a glossary.collection file. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + &setup-language-variable; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + &setup-language-variable; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + &setup-language-variable; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + , + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glosssee @otherterm reference not found: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glossseealso @otherterm reference not found: + + + + + + + + + + + + + + + + + + + + + + + + + &setup-language-variable; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 1 + + + + + + + + + + ( + + ) + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + , + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glosssee @otherterm reference not found: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glossseealso @otherterm reference not found: + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/graphics.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/graphics.xsl new file mode 100644 index 000000000..bbbcc0dd1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/graphics.xsl @@ -0,0 +1,648 @@ + + + + ]> + + + + + + + + + + + + PNG PDF JPG JPEG linespecific + + + BMP GIF TIFF SVG PNG EPS JPG JPEG linespecific + + + BMP GIF TIFF SVG PNG EPS JPG JPEG linespecific + + + PNG PDF JPG JPEG linespecific GIF GIF87a GIF89a TIFF BMP + + + SVG PNG PDF JPG JPEG linespecific GIF GIF87a GIF89a TIFF BMP + + + PNG PDF JPG JPEG linespecific GIF GIF87a GIF89a TIFF BMP + + + + + + + 1 + + + + + + + png pdf jpg jpeg + + + bmp gif tif tiff svg png pdf jpg jpeg eps + + + bmp gif tif tiff svg png pdf jpg jpeg eps + + + png pdf jpg jpeg gif tif tiff bmp + + + svg png pdf jpg jpeg gif tif tiff bmp eps + + + svg png pdf jpg jpeg gif tif tiff bmp eps + + + + + + + + + 1 + + + + + + + + + + + + + + application/postscript + application/pdf + image/png + image/svg+xml + image/jpeg + image/gif + image/gif + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 0 + 0 + + 1 + 1 + 0 + + + + + + 0 + 1.0 + + + + 1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + auto + + + + + + + + + + + + + + + + auto + + + + + + auto + + + + + + + + + + auto + + + + + + auto + + + + + + + + + + + + % + + scale-to-fit + auto + + + + + + auto + + + + + + + + + + + + % + + scale-to-fit + auto + + + + + + + + + + + + + + + + + + + + + + + + + before + center + after + auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Don't know how to insert files with + + + + + + + + Cannot insert + . Check use.extensions and textinsert.extension parameters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Don't know how to insert files with + + + + + + + + Cannot insert + . Check use.extensions and textinsert.extension parameters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Don't know how to insert files with + + + + + + + + Cannot insert + . Check use.extensions and textinsert.extension parameters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/highlight.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/highlight.xsl new file mode 100644 index 000000000..444aef6d8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/highlight.xsl @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/htmltbl.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/htmltbl.xsl new file mode 100644 index 000000000..4918b8ab1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/htmltbl.xsl @@ -0,0 +1,425 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + fixed + + + + + + + + + + + + 100% + + + + + + + all + all + bottom + top + topbot + sides + lhs + rhs + none + all + none + + + + + + + all + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + none + none + none + + + + + none + none + none + + + + + + + + + + + + + + + + 1 + + 1 + 1 + + 1 + 0 + + + + + none + none + none + + + + + + + + + + + + + none + none + + + + + 1 + + 1 + 1 + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + none + none + + + + + + + + + + + + none + none + none + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/index.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/index.xsl new file mode 100644 index 000000000..ff298d1fa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/index.xsl @@ -0,0 +1,484 @@ + + +%common.entities; +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + body + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + body + index + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.tnacifingis + + + + + + + + + fo:wrapper + + + + + + + + + + + + + + , + + + + , + + + + + + + + + + + , + + + + , + + + + + + + + + + + + + + + + + + + + , + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + + + + + ) + + + + + + + + + ( + + + + + + ) + + + + + + + + + ( + + + + + + ) + + + + + + + + + + + + + + + 3pc + 2pc + 1pc + + + ( + + + + + + ) + + + + + + + + + + + + + fo:block + fo:wrapper + fo:inline + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/info.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/info.xsl new file mode 100644 index 000000000..7497b821f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/info.xsl @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/inline.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/inline.xsl new file mode 100644 index 000000000..cbc8cfffd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/inline.xsl @@ -0,0 +1,1288 @@ + + +%common.entities; +]> + + + + + + + + + + + + + + + + + + + + + + + + 1 + 0 + + + + + + + + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XLink to nonexistent id: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XLink to nonexistent id: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ltr + rtl + + + + + + + + + + + + + + + + + + + + + + + + + + ltr + rtl + + + + + + + + + + + + + + + + + + + + + ltr + rtl + + + + + + + + + + + + + + + + + + + + + + ltr + rtl + + + + + + + + + + + + + + + + + + + + + + ltr + rtl + + + + + + + + + + + + + + + + + + + + + + ltr + rtl + + + + + + + + + + + + + + + + + + + + + + ltr + rtl + + + + + + super + + + super + + + + + + + + + + + + + + + + + + + + + ltr + rtl + + + + + + sub + + + sub + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + , + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + There's no entry for + + in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Error: no glossentry for glossterm: + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + element + + + + + + + + + + + + + + + + + </ + + > + + + + + + + & + + ; + + + + + + + &# + + ; + + + + + + + % + + ; + + + + + + + <? + + > + + + + + + + <? + + ?> + + + + + + + < + + > + + + + + + + < + + /> + + + + + + + <!-- + + --> + + + + + + + + + + + + + + + < + + + + + + mailto: + + + + + + + + + + > + + + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + + + + + + + + + + + + + + + + + ] + + + + [ + + ] + + + + + + + + + + + + + [ + + + + + + + + + + + ] + + + + [ + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/keywords.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/keywords.xsl new file mode 100644 index 000000000..6070b91bd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/keywords.xsl @@ -0,0 +1,21 @@ + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/lists.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/lists.xsl new file mode 100644 index 000000000..51052f1bd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/lists.xsl @@ -0,0 +1,1393 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + em + + + em * 0.60 + + + + + + + + + + + + + + em + + + em * 0.60 + + + + + + + + + 1em + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.25in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100% + + + + + + + + + + + + auto + + + + + + fixed + + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100% + + + + + + + + + + + auto + + + + + + fixed + + + + + + + + + + 1 + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + 1 + 1 + + 1 + + + + + + + + + + + + + + + + + + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + 1 + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + : ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/math.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/math.xsl new file mode 100644 index 000000000..6d7d47092 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/math.xsl @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $ + + + + $ + + + + + + + + + + + + + $$ + + + + $$ + + + + + + + + + Your equation is misplaced. It should be in inlineequation, equation or informalequation. + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pagesetup.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pagesetup.xsl new file mode 100644 index 000000000..116a2caf1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pagesetup.xsl @@ -0,0 +1,2569 @@ + + + + + + + + + + , + + + + + + , + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + blank + + + + + blank-body + + + + + + + + + + + + + + + + + + + + titlepage-first + + + + + + + + + + + + + + + + + + + + + titlepage-odd + + + + + + + + + + + + + + + + + + + + + titlepage-even + + + + + + + + + + + + + + + + + + + + + + lot-first + + + + + + + + + + + + + + + + + + + + + lot-odd + + + + + + + + + + + + + + + + + + + + + lot-even + + + + + + + + + + + + + + + + + + + + + + front-first + + + + + + + + + + + + + + + + + + + + + front-odd + + + + + + + + + + + + + + + + + + + + + front-even + + + + + + + + + + + + + + + + + + + + + + + + + body-first + + + + + + + + + + + + + + + + + + + + + body-odd + + + + + + + + + + + + + + + + + + + + + body-even + + + + + + + + + + + + + + + + + + + + + + back-first + + + + + + + + + + + + + + + + + + + + + back-odd + + + + + + + + + + + + + + + + + + + + + back-even + + + + + + + + + + + + + + + + + + + + + + index-first + + + + + + + + + + + + + + + + + + + + + index-odd + + + + + + + + + + + + + + + + + + + + + index-even + + + + + + + + + + + + + + + + + + + + + + + blank-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + + titlepage-first-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + titlepage-odd-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + titlepage-even-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + + lot-first-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + lot-odd-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + lot-even-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + + front-first-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + front-odd-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + front-even-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + + body-first-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + body-odd-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + body-even-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + + back-first-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + back-odd-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + back-even-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + + index-first-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + index-odd-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + + + index-even-draft + + + + + + + + + + fixed + no-repeat + center + center + + + + + + + + + + + + + + + + + titlepage-even + titlepage-odd + + + + + + + + + + + + + + + + lot-even + lot-odd + + + + + + + + + + + + + + + + front-even + front-odd + + + + + + + + + + + + + + + + body-even + body-odd + + + + + + + + + + + + + + + + back-even + back-odd + + + + + + + + + + + + + + + + index-even + index-odd + + + + + + + + + + + + + + + + + titlepage-even-draft + titlepage-odd-draft + + + + + + + + + + + + + + + + lot-even-draft + lot-odd-draft + + + + + + + + + + + + + + + + front-even-draft + front-odd-draft + + + + + + + + + + + + + + + + body-even-draft + body-odd-draft + + + + + + + + + + + + + + + + back-even-draft + back-odd-draft + + + + + + + + + + + + + + + + index-even-draft + index-odd-draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + lot + front + front + front + back + back + back + index + back + body + + + + + -draft + + + + + + -draft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.5pt + solid + black + + + + + + + + + + 0.5pt + solid + black + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + 1 + 1 + 3 + + + + + + 3 + 3 + 1 + + + + + + + + + + + + + + proportional-column-width( + + header + + + ) + + + + + proportional-column-width( + + header + + + ) + + + + + proportional-column-width( + + header + + + ) + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Error: value in .column.widths at position is not a number. + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + 1 + 1 + 3 + + + + + + 3 + 3 + 1 + + + + + + + + + + + + + proportional-column-width( + + footer + + + ) + + + + + proportional-column-width( + + footer + + + ) + + + + + proportional-column-width( + + footer + + + ) + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + baseline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + i + i + i + i + 1 + + + + + + + + + + + + + + auto-odd + 1 + + + auto-odd + 1 + 1 + auto-odd + + + + + + + auto + 1 + auto + 1 + 1 + auto + + + + + + + + + + + + end-on-even + + no-force + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xml new file mode 100644 index 000000000..d179d3609 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xml @@ -0,0 +1,12445 @@ + + + +FO Parameter Reference + +$Id: param.xweb 8543 2009-12-02 06:05:24Z bobstayton $ + + + + Walsh + Norman + + + + 1999 + 2000 + 2001 + 2002 + 2003 + 2004 + 2005 + 2006 + 2007 + Norman Walsh + + + This is reference documentation for all user-configurable + parameters in the DocBook XSL FO stylesheets (for generating + XSL-FO output destined for final print/PDF output). + + +Admonitions + + +admon.graphics +boolean + + +admon.graphics +Use graphics in admonitions? + + + + +<xsl:param name="admon.graphics" select="0"></xsl:param> + + + +Description + +If true (non-zero), admonitions are presented in an alternate style that uses +a graphic. Default graphics are provided in the distribution. + + + + + + + +admon.graphics.extension +string + + +admon.graphics.extension +Filename extension for admonition graphics + + + + +<xsl:param name="admon.graphics.extension">.png</xsl:param> + + + +Description + +Sets the filename extension to use on admonition graphics. + + + + + + +admon.graphics.path +string + + +admon.graphics.path +Path to admonition graphics + + + +<xsl:param name="admon.graphics.path">images/</xsl:param> + + +Description + +Sets the path to the directory containing the admonition graphics +(caution.png, important.png etc). This location is normally relative +to the output html directory. See base.dir + + + + + + +admon.textlabel +boolean + + +admon.textlabel +Use text label in admonitions? + + + + +<xsl:param name="admon.textlabel" select="1"></xsl:param> + + + +Description + +If true (non-zero), admonitions are presented with a generated +text label such as Note or Warning in the appropriate language. +If zero, such labels are turned off, but any title child +of the admonition element are still output. +The default value is 1. + + + + + + + + + admonition.title.properties + attribute set + + +admonition.title.properties +To set the style for admonitions titles. + + + + +<xsl:attribute-set name="admonition.title.properties"> + <xsl:attribute name="font-size">14pt</xsl:attribute> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> + + +Description +How do you want admonitions titles styled? +Set the font-size, weight etc to the style required. + + + + + + + admonition.properties + attribute set + + +admonition.properties +To set the style for admonitions. + + + +<xsl:attribute-set name="admonition.properties"></xsl:attribute-set> + + +Description +How do you want admonitions styled? +Set the font-size, weight, etc. to the style required + + + + + + +graphical.admonition.properties +attribute set + + +graphical.admonition.properties +To add properties to the outer block of a graphical admonition. + + + +<xsl:attribute-set name="graphical.admonition.properties"> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> + <xsl:attribute name="space-after.optimum">1em</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> + + +Description +These properties are added to the outer block containing the +entire graphical admonition, including its title. +It is used when the parameter +admon.graphics is set to nonzero. +Use this attribute-set to set the space above and below, +and any indent for the whole admonition. + +In addition to these properties, a graphical admonition +also applies the admonition.title.properties +attribute-set to the title, and applies the +admonition.properties attribute-set +to the rest of the content. + + + + + + +nongraphical.admonition.properties +attribute set + + +nongraphical.admonition.properties +To add properties to the outer block of a nongraphical admonition. + + + +<xsl:attribute-set name="nongraphical.admonition.properties"> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> + <xsl:attribute name="margin-{$direction.align.start}">0.25in</xsl:attribute> + <xsl:attribute name="margin-{$direction.align.end}">0.25in</xsl:attribute> +</xsl:attribute-set> + + +Description +These properties are added to the outer block containing the +entire nongraphical admonition, including its title. +It is used when the parameter +admon.graphics is set to zero. +Use this attribute-set to set the space above and below, +and any indent for the whole admonition. + +In addition to these properties, a nongraphical admonition +also applies the admonition.title.properties +attribute-set to the title, and the +admonition.properties attribute-set +to the rest of the content. + + + + + +Callouts + + +callout.defaultcolumn +integer + + +callout.defaultcolumn +Indicates what column callouts appear in by default + + + + +<xsl:param name="callout.defaultcolumn">60</xsl:param> + + + +Description + +If a callout does not identify a column (for example, if it uses +the linerange unit), +it will appear in the default column. + + + + + + + +callout.graphics +boolean + + +callout.graphics +Use graphics for callouts? + + + + +<xsl:param name="callout.graphics" select="1"></xsl:param> + + + +Description + +If non-zero, callouts are presented with graphics (e.g., reverse-video +circled numbers instead of "(1)", "(2)", etc.). +Default graphics are provided in the distribution. + + + + + + + +callout.graphics.extension +string + + +callout.graphics.extension +Filename extension for callout graphics + + + + + +<xsl:param name="callout.graphics.extension">.svg</xsl:param> + + + +Description +Sets the filename extension to use on callout graphics. + + +The Docbook XSL distribution provides callout graphics in the following formats: +SVG (extension: .svg) +PNG (extension: .png) +GIF (extension: .gif) + + + + + + +callout.graphics.number.limit +integer + + +callout.graphics.number.limit +Number of the largest callout graphic + + + + + +<xsl:param name="callout.graphics.number.limit">30</xsl:param> + + + +Description + +If callout.graphics is non-zero, graphics +are used to represent callout numbers instead of plain text. The value +of callout.graphics.number.limit is the largest +number for which a graphic exists. If the callout number exceeds this +limit, the default presentation "(plain text instead of a graphic)" +will be used. + + + + + + + +callout.graphics.path +string + + +callout.graphics.path +Path to callout graphics + + + + +<xsl:param name="callout.graphics.path">images/callouts/</xsl:param> + + + +Description + +Sets the path to the directory holding the callout graphics. his +location is normally relative to the output html directory. see +base.dir. Always terminate the directory with / since the graphic file +is appended to this string, hence needs the separator. + + + + + + + +callout.icon.size +length + + +callout.icon.size +Specifies the size of callout marker icons + + + + +<xsl:param name="callout.icon.size">7pt</xsl:param> + + + +Description + +Specifies the size of the callout marker icons. +The default size is 7 points. + + + + + + +callout.unicode +boolean + + +callout.unicode +Use Unicode characters rather than images for callouts. + + + +<xsl:param name="callout.unicode" select="0"></xsl:param> + + +Description + +The stylesheets can use either an image of the numbers one to ten, or the single Unicode character which represents the numeral, in white on a black background. Use this to select the Unicode character option. + + + + + + + +callout.unicode.font +string + + +callout.unicode.font +Specify a font for Unicode glyphs + + + + +<xsl:param name="callout.unicode.font">ZapfDingbats</xsl:param> + + + +Description + +The name of the font to specify around Unicode callout glyphs. +If set to the empty string, no font change will occur. + + + + + + + +callout.unicode.number.limit +integer + + +callout.unicode.number.limit +Number of the largest unicode callout character + + + + +<xsl:param name="callout.unicode.number.limit">10</xsl:param> + + + +Description + +If callout.unicode +is non-zero, unicode characters are used to represent +callout numbers. The value of +callout.unicode.number.limit +is +the largest number for which a unicode character exists. If the callout number +exceeds this limit, the default presentation "(nnn)" will always +be used. + + + + + + + +callout.unicode.start.character +integer + + +callout.unicode.start.character +First Unicode character to use, decimal value. + + + + +<xsl:param name="callout.unicode.start.character">10102</xsl:param> + + + +Description + +If callout.graphics is zero and callout.unicode +is non-zero, unicode characters are used to represent +callout numbers. The value of +callout.unicode.start.character +is the decimal unicode value used for callout number one. Currently, +only 10102 is supported in the stylesheets for this parameter. + + + + + + + +callouts.extension +boolean + + +callouts.extension +Enable the callout extension + + + + +<xsl:param name="callouts.extension" select="1"></xsl:param> + + + +Description + +The callouts extension processes areaset +elements in programlistingco and other text-based +callout elements. + + + + + + +ToC/LoT/Index Generation + + +autotoc.label.separator +string + + +autotoc.label.separator +Separator between labels and titles in the ToC + + + + +<xsl:param name="autotoc.label.separator">. </xsl:param> + + + +Description + +String used to separate labels and titles in a table of contents. + + + + + + +process.empty.source.toc +boolean + + +process.empty.source.toc +Generate automated TOC if toc element occurs in a source document? + + + +<xsl:param name="process.empty.source.toc" select="0"></xsl:param> + + +Description + +Specifies that if an empty toc element is found in a +source document, an automated TOC is generated at this point in the +document. + + Depending on what the value of the + generate.toc parameter is, setting this + parameter to 1 could result in generation of + duplicate automated TOCs. So the + process.empty.source.toc is primarily useful + as an "override": by placing an empty toc in your + document and setting this parameter to 1, you can + force a TOC to be generated even if generate.toc + says not to. + + + + + + + + +process.source.toc +boolean + + +process.source.toc +Process a non-empty toc element if it occurs in a source document? + + + +<xsl:param name="process.source.toc" select="0"></xsl:param> + + +Description + +Specifies that the contents of a non-empty "hard-coded" +toc element in a source document are processed to +generate a TOC in output. + + This parameter has no effect on automated generation of + TOCs. An automated TOC may still be generated along with the + "hard-coded" TOC. To suppress automated TOC generation, adjust the + value of the generate.toc paramameter. + + The process.source.toc parameter also has + no effect if the toc element is empty; handling + for empty toc is controlled by the + process.empty.source.toc parameter. + + + + + + + + +generate.toc +table + + +generate.toc +Control generation of ToCs and LoTs + + + + + +<xsl:param name="generate.toc"> +/appendix toc,title +article/appendix nop +/article toc,title +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title +</xsl:param> + + + +Description + +This parameter has a structured value. It is a table of space-delimited +path/value pairs. Each path identifies some element in the source document +using a restricted subset of XPath (only the implicit child axis, no wildcards, +no predicates). Paths can be either relative or absolute. + +When processing a particular element, the stylesheets consult this table to +determine if a ToC (or LoT(s)) should be generated. + +For example, consider the entry: + +book toc,figure + +This indicates that whenever a book is formatted, a +Table Of Contents and a List of Figures should be generated. Similarly, + +/chapter toc + +indicates that whenever a document that has a root +of chapter is formatted, a Table of +Contents should be generated. The entry chapter would match +all chapters, but /chapter matches only chapter +document elements. + +Generally, the longest match wins. So, for example, if you want to distinguish +articles in books from articles in parts, you could use these two entries: + +book/article toc,figure +part/article toc + +Note that an article in a part can never match a book/article, +so if you want nothing to be generated for articles in parts, you can simply leave +that rule out. + +If you want to leave the rule in, to make it explicit that you're turning +something off, use the value nop. For example, the following +entry disables ToCs and LoTs for articles: + +article nop + +Do not simply leave the word article in the file +without a matching value. That'd be just begging the silly little +path/value parser to get confused. + +Section ToCs are further controlled by the +generate.section.toc.level parameter. +For a given section level to have a ToC, it must have both an entry in +generate.toc and be within the range enabled by +generate.section.toc.level. + + + + + +generate.index +boolean + + +generate.index +Do you want an index? + + + +<xsl:param name="generate.index" select="1"></xsl:param> + + +Description + +Specify if an index should be generated. + + + + + + +make.index.markup +boolean + + +make.index.markup +Generate XML index markup in the index? + + + + +<xsl:param name="make.index.markup" select="0"></xsl:param> + + + +Description + +This parameter enables a very neat trick for getting properly +merged, collated back-of-the-book indexes. G. Ken Holman suggested +this trick at Extreme Markup Languages 2002 and I'm indebted to him +for it. + +Jeni Tennison's excellent code in +autoidx.xsl does a great job of merging and +sorting indexterms in the document and building a +back-of-the-book index. However, there's one thing that it cannot +reasonably be expected to do: merge page numbers into ranges. (I would +not have thought that it could collate and suppress duplicate page +numbers, but in fact it appears to manage that task somehow.) + +Ken's trick is to produce a document in which the index at the +back of the book is displayed in XML. Because the index +is generated by the FO processor, all of the page numbers have been resolved. +It's a bit hard to explain, but what it boils down to is that instead of having +an index at the back of the book that looks like this: + +
+A +ap1, 1, 2, 3 + +
+ +you get one that looks like this: + +
+<indexdiv>A</indexdiv> +<indexentry> +<primaryie>ap1</primaryie>, +<phrase role="pageno">1</phrase>, +<phrase role="pageno">2</phrase>, +<phrase role="pageno">3</phrase> +</indexentry> +
+ +After building a PDF file with this sort of odd-looking index, you can +extract the text from the PDF file and the result is a proper index expressed in +XML. + +Now you have data that's amenable to processing and a simple Perl script +(such as fo/pdf2index) can +merge page ranges and generate a proper index. + +Finally, reformat your original document using this literal index instead of +an automatically generated one and bingo! + +
+
+ + + +index.method +list +basic +kosek +kimber + + +index.method +Select method used to group index entries in an index + + + + +<xsl:param name="index.method">basic</xsl:param> + + + +Description + +This parameter lets you select which method to use for sorting and grouping + index entries in an index. +Indexes in Latin-based languages that have accented characters typically +sort together accented words and unaccented words. +Thus Á (U+00C1 LATIN CAPITAL LETTER A WITH ACUTE) would sort together +with A (U+0041 LATIN CAPITAL LETTER A), so both would appear in the A +section of the index. +Languages using other alphabets (such as Russian, which is written in the Cyrillic alphabet) +and languages using ideographic chararacters (such as Japanese) +require grouping specific to the languages and alphabets. + + +The default indexing method is limited. +It can group accented characters in Latin-based languages only. +It cannot handle non-Latin alphabets or ideographic languages. +The other indexing methods require extensions of one type or +another, and do not work with +all XSLT processors, which is why they are not used by default. + +The three choices for indexing method are: + + +basic + + +(default) Sort and groups words based only on the Latin alphabet. +Words with accented Latin letters will group and sort with +their respective primary letter, but +words in non-Latin alphabets will be +put in the Symbols section of the index. + + + + +kosek + + +This method sorts and groups words based on letter groups configured in +the DocBook locale file for the given language. +See, for example, the French locale file common/fr.xml. +This method requires that the XSLT processor +supports the EXSLT extensions (most do). +It also requires support for using +user-defined functions in xsl:key (xsltproc does not). + +This method is suitable for any language for which you can +list all the individual characters that should appear +in each letter group in an index. +It is probably not practical to use it for ideographic languages +such as Chinese that have hundreds or thousands of characters. + + +To use the kosek method, you must: + + + +Use a processor that supports its extensions, such as +Saxon 6 or Xalan (xsltproc and Saxon 8 do not). + + + +Set the index.method parameter's value to kosek. + + + +Import the appropriate index extensions stylesheet module +fo/autoidx-kosek.xsl or +html/autoidx-kosek.xsl into your +customization. + + + + + + + +kimber + + +This method uses extensions to the Saxon processor to implement +sophisticated indexing processes. It uses its own +configuration file, which can include information for any number of +languages. Each language's configuration can group +words using one of two processes. In the +enumerated process similar to that used in the kosek method, +you indicate the groupings character-by-character. +In the between-key process, you specify the +break-points in the sort order that should start a new group. +The latter configuration is useful for ideographic languages +such as Chinese, Japanese, and Korean. +You can also define your own collation algorithms and how you +want mixed Latin-alphabet words sorted. + + +For a whitepaper describing the extensions, see: +http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf. + + + +To download the extension library, see +http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport. + + + + +To use the kimber method, you must: + + + +Use Saxon (version 6 or 8) as your XSLT processor. + + + +Install and configure the Innodata Isogen library, using +the documentation that comes with it. + + + +Set the index.method parameter's value to kimber. + + + +Import the appropriate index extensions stylesheet module +fo/autoidx-kimber.xsl or +html/autoidx-kimber.xsl into your +customization. + + + + + + + + + + + + + +index.on.type +boolean + + +index.on.type +Select indexterms based on type +attribute value + + + + +<xsl:param name="index.on.type" select="0"></xsl:param> + + + +Description + + +If non-zero, +then an index element that has a +type attribute +value will contain only those indexterm +elements with a matching type attribute value. +If an index has no type +attribute or it is blank, then the index will contain +all indexterms in the current scope. + + + +If index.on.type is zero, then the +type attribute has no effect +on selecting indexterms for an index. + + +For those using DocBook version 4.2 or earlier, +the type attribute is not available +for index terms. However, you can achieve the same +effect by using the role attribute +in the same manner on indexterm +and index, and setting the stylesheet parameter +index.on.role to a nonzero value. + + + + + + + +index.on.role +boolean + + +index.on.role +Select indexterms based on role value + + + + +<xsl:param name="index.on.role" select="0"></xsl:param> + + + +Description + + +If non-zero, +then an index element that has a +role attribute +value will contain only those indexterm +elements with a matching role value. +If an index has no role +attribute or it is blank, then the index will contain +all indexterms in the current scope. + + +If index.on.role is zero, then the +role attribute has no effect +on selecting indexterms for an index. + + +If you are using DocBook version 4.3 or later, you should +use the type attribute instead of role +on indexterm and index, +and set the index.on.type to a nonzero +value. + + + + + + + +index.preferred.page.properties +attribute set + + +index.preferred.page.properties +Properties used to emphasize page number references for +significant index terms + + + + +<xsl:attribute-set name="index.preferred.page.properties"> + <xsl:attribute name="font-weight">bold</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties used to emphasize page number references for +significant index terms (significance=preferred). Currently works only with +XEP. + + + + + + +index.entry.properties +attribute set + + +index.entry.properties +Properties applied to the formatted entries +in an index + + + + +<xsl:attribute-set name="index.entry.properties"> + <xsl:attribute name="start-indent">0pt</xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is applied to the block containing +the entries in a letter division in an index. It can be used to set the +font-size, font-family, and other inheritable properties that will be +applied to all index entries. + + + + + + +index.div.title.properties +attribute set + + +index.div.title.properties +Properties associated with the letter headings in an +index + + + + +<xsl:attribute-set name="index.div.title.properties"> + <xsl:attribute name="margin-{$direction.align.start}">0pt</xsl:attribute> + <xsl:attribute name="font-size">14.4pt</xsl:attribute> + <xsl:attribute name="font-family"><xsl:value-of select="$title.fontset"></xsl:value-of></xsl:attribute> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master,'pt')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master,'pt * 0.8')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master,'pt * 1.2')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="start-indent">0pt</xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is used on the letter headings that separate +the divisions in an index. + + + + + + +index.number.separator +string + + +index.number.separator +Override for punctuation separating page numbers in index + + + + +<xsl:param name="index.number.separator"></xsl:param> + + + +Description + +This parameter permits you to override the text to insert between +page references in a formatted index entry. Typically +that would be a comma and a space. + + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'number-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +override the gentext with the content of this parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. + + +In HTML index output, section title references are used instead of +page number references. This punctuation appears between +such section titles in an HTML index. + + + + + + + +index.range.separator +string + + +index.range.separator +Override for punctuation separating the two numbers +in a page range in index + + + + +<xsl:param name="index.range.separator"></xsl:param> + + + +Description + +This parameter permits you +to override the text to insert between +the two numbers of a page range in an index. +This parameter is only used by those XSL-FO processors +that support an extension for generating such page ranges +(such as XEP). + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'range-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +override the gentext with the content of this parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. + + +In HTML index output, section title references are used instead of +page number references. So there are no page ranges +and this parameter has no effect. + + + + + + + +index.term.separator +string + + +index.term.separator +Override for punctuation separating an index term +from its list of page references in an index + + + + +<xsl:param name="index.term.separator"></xsl:param> + + + +Description + +This parameter permits you to override +the text to insert between +the end of an index term and its list of page references. +Typically that might be a comma and a space. + + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'term-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +fill in the content for this normally empty +override parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. +For fo output, it could be an fo:leader +element to provide space of a specific length, or a dot leader. + + + + + + + +xep.index.item.properties +attribute set + + +xep.index.item.properties +Properties associated with XEP index-items + + + + +<xsl:attribute-set name="xep.index.item.properties" use-attribute-sets="index.page.number.properties"> + <xsl:attribute name="merge-subsequent-page-numbers">true</xsl:attribute> + <xsl:attribute name="link-back">true</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties associated with XEP index-items, which generate +page numbers in an index processed by XEP. For more info see +the XEP documentation section "Indexes" in +http://www.renderx.com/reference.html#Indexes. + +This attribute-set also adds by default any properties from the +index.page.number.properties +attribute-set. + + + + + +toc.section.depth +integer + + +toc.section.depth +How deep should recursive sections appear +in the TOC? + + + +<xsl:param name="toc.section.depth">2</xsl:param> + + +Description + +Specifies the depth to which recursive sections should appear in the +TOC. + + + + + + + +toc.max.depth +integer + + +toc.max.depth +How many levels should be created for each TOC? + + + +<xsl:param name="toc.max.depth">8</xsl:param> + + +Description + +Specifies the maximal depth of TOC on all levels. + + + + + + +toc.indent.width +float + + +toc.indent.width +Amount of indentation for TOC entries + + + + +<xsl:param name="toc.indent.width">24</xsl:param> +<!-- inconsistant point specification? --> + + + +Description + +Specifies, in points, the distance by which each level of the +TOC is indented from its parent. + +This value is expressed in points, without +a unit (in other words, it is a bare number). Using a bare number allows the stylesheet +to perform calculations that would otherwise have to be performed by the FO processor +because not all processors support expressions. + + + + + + +toc.line.properties +attribute set + + +toc.line.properties +Properties for lines in ToCs and LoTs + + + + +<xsl:attribute-set name="toc.line.properties"> + <xsl:attribute name="text-align-last">justify</xsl:attribute> + <xsl:attribute name="text-align">start</xsl:attribute> + <xsl:attribute name="end-indent"><xsl:value-of select="concat($toc.indent.width, 'pt')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="last-line-end-indent"><xsl:value-of select="concat('-', $toc.indent.width, 'pt')"></xsl:value-of></xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties which are applied to every line in ToC (or LoT). You can +modify them in order to change appearance of all, or some lines. For +example, in order to make lines for chapters bold, specify the +following in your customization layer: + +<xsl:attribute-set name="toc.line.properties"> + <xsl:attribute name="font-weight"> + <xsl:choose> + <xsl:when test="self::chapter">bold</xsl:when> + <xsl:otherwise>normal</xsl:otherwise> + </xsl:choose> + </xsl:attribute> +</xsl:attribute-set> + + + + + + +toc.margin.properties +attribute set + + +toc.margin.properties +Margin properties used on Tables of Contents + + + + +<xsl:attribute-set name="toc.margin.properties"> + <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.maximum">2em</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> + <xsl:attribute name="space-after.optimum">1em</xsl:attribute> + <xsl:attribute name="space-after.maximum">2em</xsl:attribute> +</xsl:attribute-set> + + + +Description +This attribute set is used on Tables of Contents. These attributes are set +on the wrapper that surrounds the ToC block, not on each individual lines. + + + + + +bridgehead.in.toc +boolean + + +bridgehead.in.toc +Should bridgehead elements appear in the TOC? + + + +<xsl:param name="bridgehead.in.toc" select="0"></xsl:param> + + +Description + +If non-zero, bridgeheads appear in the TOC. Note that +this option is not fully supported and may be removed in a future +version of the stylesheets. + + + + + + + +simplesect.in.toc +boolean + + +simplesect.in.toc +Should simplesect elements appear in the TOC? + + + +<xsl:param name="simplesect.in.toc" select="0"></xsl:param> + + +Description + +If non-zero, simplesects will be included in the TOC. + + + + + + + +generate.section.toc.level +integer + + +generate.section.toc.level +Control depth of TOC generation in sections + + + + +<xsl:param name="generate.section.toc.level" select="0"></xsl:param> + + + +Description + +The generate.section.toc.level parameter +controls the depth of section in which TOCs will be generated. Note +that this is related to, but not the same as +toc.section.depth, which controls the depth to +which TOC entries will be generated in a given TOC. +If, for example, generate.section.toc.level +is 3, TOCs will be generated in first, second, and third +level sections, but not in fourth level sections. + + + + + + + + +
+Processor Extensions + + +arbortext.extensions +boolean + + +arbortext.extensions +Enable Arbortext extensions? + + + +<xsl:param name="arbortext.extensions" select="0"></xsl:param> + + +Description + +If non-zero, +Arbortext +extensions will be used. + +This parameter can also affect which graphics file formats +are supported + + + + + + +axf.extensions +boolean + + +axf.extensions +Enable XSL Formatter extensions? + + + + +<xsl:param name="axf.extensions" select="0"></xsl:param> + + + +Description + +If non-zero, +XSL Formatter +extensions will be used. XSL Formatter extensions consists of PDF bookmarks, +document information and better index processing. + +This parameter can also affect which graphics file formats +are supported + + + + + + +fop.extensions +boolean + + +fop.extensions +Enable extensions for FOP version 0.20.5 and earlier + + + +<xsl:param name="fop.extensions" select="0"></xsl:param> + + +Description + +If non-zero, extensions intended for +FOP +version 0.20.5 and earlier will be used. +At present, this consists of PDF bookmarks. + + +This parameter can also affect which graphics file formats +are supported. + +If you are using a version of FOP beyond +version 0.20.5, then use the fop1.extensions parameter +instead. + + + + + + +fop1.extensions +boolean + + +fop1.extensions +Enable extensions for FOP version 0.90 and later + + + +<xsl:param name="fop1.extensions" select="0"></xsl:param> + + +Description + +If non-zero, extensions for +FOP +version 0.90 and later will be used. + + +This parameter can also affect which graphics file formats +are supported. + +The original fop.extensions parameter +should still be used for FOP version 0.20.5 and earlier. + + + + + + +passivetex.extensions +boolean + + +passivetex.extensions +Enable PassiveTeX extensions? + + + +<xsl:param name="passivetex.extensions" select="0"></xsl:param> + + +Description + +If non-zero, +PassiveTeX +extensions will be used. At present, this consists of PDF bookmarks +and sorted index terms. + + +This parameter can also affect which graphics file formats +are supported + + + PassiveTeX is incomplete and development has ceased. In most cases, +another XSL-FO engine is probably a better choice. + + + + + + + +tex.math.in.alt +list +plain +latex + + +tex.math.in.alt +TeX notation used for equations + + + + +<xsl:param name="tex.math.in.alt"></xsl:param> + + + +Description + +If you want type math directly in TeX notation in equations, +this parameter specifies notation used. Currently are supported two +values -- plain and latex. Empty +value means that you are not using TeX math at all. + +Preferred way for including TeX alternative of math is inside of +textobject element. Eg.: + +<inlineequation> +<inlinemediaobject> +<imageobject> +<imagedata fileref="eq1.gif"/> +</imageobject> +<textobject><phrase>E=mc squared</phrase></textobject> +<textobject role="tex"><phrase>E=mc^2</phrase></textobject> +</inlinemediaobject> +</inlineequation> + +If you are using graphic element, you can +store TeX inside alt element: + +<inlineequation> +<alt role="tex">a^2+b^2=c^2</alt> +<graphic fileref="a2b2c2.gif"/> +</inlineequation> + +If you want use this feature, you should process your FO with +PassiveTeX, which only supports TeX math notation. When calling +stylsheet, don't forget to specify also +passivetex.extensions=1. + +If you want equations in HTML, just process generated file +tex-math-equations.tex by TeX or LaTeX. Then run +dvi2bitmap program on result DVI file. You will get images for +equations in your document. + + + This feature is useful for print/PDF output only if you + use the obsolete and now unsupported PassiveTeX XSL-FO + engine. + + + + +Related Parameters + tex.math.delims, + passivetex.extensions, + tex.math.file + + + + + + +tex.math.delims +boolean + + +tex.math.delims +Should equations output for processing by TeX be +surrounded by math mode delimiters? + + + + +<xsl:param name="tex.math.delims" select="1"></xsl:param> + + + +Description + +For compatibility with DSSSL based DBTeXMath from Allin Cottrell +you should set this parameter to 0. + + + This feature is useful for print/PDF output only if you + use the obsolete and now unsupported PassiveTeX XSL-FO + engine. + + + +Related Parameters + tex.math.in.alt, + passivetex.extensions + + +See Also + You can also use the dbtex delims processing + instruction to control whether delimiters are output. + + + + + + + +xep.extensions +boolean + + +xep.extensions +Enable XEP extensions? + + + +<xsl:param name="xep.extensions" select="0"></xsl:param> + + +Description + +If non-zero, +XEP +extensions will be used. XEP extensions consists of PDF bookmarks, +document information and better index processing. + + +This parameter can also affect which graphics file formats +are supported + + + + +Stylesheet Extensions + + +linenumbering.everyNth +integer + + +linenumbering.everyNth +Indicate which lines should be numbered + + + + +<xsl:param name="linenumbering.everyNth">5</xsl:param> + + + +Description + +If line numbering is enabled, everyNth line will be +numbered. Note that numbering is one based, not zero based. + + + + + + + +linenumbering.extension +boolean + + +linenumbering.extension +Enable the line numbering extension + + + + +<xsl:param name="linenumbering.extension" select="1"></xsl:param> + + + +Description + +If non-zero, verbatim environments (address, literallayout, +programlisting, screen, synopsis) that specify line numbering will +have line numbers. + + + + + + + +linenumbering.separator +string + + +linenumbering.separator +Specify a separator between line numbers and lines + + + + +<xsl:param name="linenumbering.separator"><xsl:text> </xsl:text></xsl:param> + + + +Description + +The separator is inserted between line numbers and lines in the +verbatim environment. The default value is a single white space. + Note the interaction with linenumbering.width + + + + + + + +linenumbering.width +integer + + +linenumbering.width +Indicates the width of line numbers + + + + +<xsl:param name="linenumbering.width">3</xsl:param> + + + +Description + +If line numbering is enabled, line numbers will appear right +justified in a field "width" characters wide. + + + + + + + +tablecolumns.extension +boolean + + +tablecolumns.extension +Enable the table columns extension function + + + + +<xsl:param name="tablecolumns.extension" select="1"></xsl:param> + + + +Description + +The table columns extension function adjusts the widths of table +columns in the HTML result to more accurately reflect the specifications +in the CALS table. + + + + + + + + textinsert.extension + boolean + + + textinsert.extension + Enables the textinsert extension element + + + + <xsl:param name="textinsert.extension" select="1"></xsl:param> + + + Description + The textinsert extension element inserts the contents of + a file into the result tree (as text). + + To use the textinsert extension element, you must use + either Saxon or Xalan as your XSLT processor (it doesn’t + work with xsltproc), along with either the DocBook Saxon + extensions or DocBook Xalan extensions (for more + information about those extensions, see DocBook Saxon Extensions and DocBook Xalan Extensions), and you must set both + the use.extensions and + textinsert.extension parameters to + 1. + As an alternative to using the textinsert element, + consider using an Xinclude element with the + parse="text" attribute and value + specified, as detailed in Using XInclude for text inclusions. + + + See Also + You can also use the dbhtml-include href processing + instruction to insert external files — both files containing + plain text and files with markup content (including HTML + content). + + More information + For how-to documentation on inserting contents of + external code files and other text files into output, see + External code files. + For guidelines on inserting contents of + HTML files into output, see Inserting external HTML code. + + + + + +textdata.default.encoding +string + + +textdata.default.encoding +Default encoding of external text files which are included +using textdata element + + + + +<xsl:param name="textdata.default.encoding"></xsl:param> + + + +Description + +Specifies the encoding of any external text files included using +textdata element. This value is used only when you do +not specify encoding by the appropriate attribute +directly on textdata. An empty string is interpreted as the system +default encoding. + + + + + + +use.extensions +boolean + + +use.extensions +Enable extensions + + + + +<xsl:param name="use.extensions" select="0"></xsl:param> + + + +Description + +If non-zero, extensions may be used. Each extension is +further controlled by its own parameter. But if +use.extensions is zero, no extensions will +be used. + + + + + + +Automatic labelling + + +appendix.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +appendix.autolabel +Specifies the labeling format for Appendix titles + + + + +<xsl:param name="appendix.autolabel">A</xsl:param> + + + +Description + +If non-zero, then appendices will be numbered using the +parameter value as the number format if the value matches one of the +following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (upperalpha). + + + + + + + +chapter.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +chapter.autolabel +Specifies the labeling format for Chapter titles + + + + +<xsl:param name="chapter.autolabel" select="1"></xsl:param> + + +Description + +If non-zero, then chapters will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (arabic). + + + + + + + +part.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +part.autolabel +Specifies the labeling format for Part titles + + + + +<xsl:param name="part.autolabel">I</xsl:param> + + + +Description + +If non-zero, then parts will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (upperroman). + + + + + + + + +reference.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +reference.autolabel +Specifies the labeling format for Reference titles + + + + <xsl:param name="reference.autolabel">I</xsl:param> + + +Description +If non-zero, references will be numbered using the parameter + value as the number format if the value matches one of the + following: + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + +Any non-zero value other than the above will generate +the default number format (upperroman). + + + + + + +preface.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +preface.autolabel +Specifices the labeling format for Preface titles + + + +<xsl:param name="preface.autolabel" select="0"></xsl:param> + + +Description + +If non-zero then prefaces will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (arabic). + + + + + + + + +section.autolabel +boolean + + +section.autolabel +Are sections enumerated? + + + +<xsl:param name="section.autolabel" select="0"></xsl:param> + + +Description + +If true (non-zero), unlabeled sections will be enumerated. + + + + + + + +section.autolabel.max.depth +integer + + +section.autolabel.max.depth +The deepest level of sections that are numbered. + + + + +<xsl:param name="section.autolabel.max.depth">8</xsl:param> + + + +Description + +When section numbering is turned on by the +section.autolabel parameter, then this +parameter controls the depth of section nesting that is +numbered. Sections nested to a level deeper than this value will not +be numbered. + + + + + + + +section.label.includes.component.label +boolean + + +section.label.includes.component.label +Do section labels include the component label? + + + +<xsl:param name="section.label.includes.component.label" select="0"></xsl:param> + + +Description + +If non-zero, section labels are prefixed with the label of the +component that contains them. + + + + + + + +label.from.part +boolean + + +label.from.part +Renumber components in each part? + + + + +<xsl:param name="label.from.part" select="0"></xsl:param> + + + +Description + +If label.from.part is non-zero, then + numbering of components — preface, + chapter, appendix, and + reference (when reference occurs at the + component level) — is re-started within each + part. +If label.from.part is zero (the + default), numbering of components is not + re-started within each part; instead, components are + numbered sequentially throughout each book, + regardless of whether or not they occur within part + instances. + + + + + + +component.label.includes.part.label +boolean + + +component.label.includes.part.label +Do component labels include the part label? + + + +<xsl:param name="component.label.includes.part.label" select="0"></xsl:param> + + +Description + +If non-zero, number labels for chapter, +appendix, and other component elements are prefixed with +the label of the part element that contains them. So you might see +Chapter II.3 instead of Chapter 3. Also, the labels for formal +elements such as table and figure will include +the part label. If there is no part element container, then no prefix +is generated. + + +This feature is most useful when the +label.from.part parameter is turned on. +In that case, there would be more than one chapter +1, and the extra part label prefix will identify +each chapter unambiguously. + + + + + + +XSLT Processing + + +rootid +string + + +rootid +Specify the root element to format + + + + +<xsl:param name="rootid"></xsl:param> + + +Description + +If rootid is not empty, it must be the +value of an ID that occurs in the document being formatted. The entire +document will be loaded and parsed, but formatting will begin at the +element identified, rather than at the root. For example, this allows +you to process only chapter 4 of a book. +Because the entire document is available to the processor, automatic +numbering, cross references, and other dependencies are correctly +resolved. + + + + + +Meta/*Info + + +make.single.year.ranges +boolean + + +make.single.year.ranges +Print single-year ranges (e.g., 1998-1999) + + + + +<xsl:param name="make.single.year.ranges" select="0"></xsl:param> + + +Description + +If non-zero, year ranges that span a single year will be printed +in range notation (1998-1999) instead of discrete notation +(1998, 1999). + + + + + + +make.year.ranges +boolean + + +make.year.ranges +Collate copyright years into ranges? + + + +<xsl:param name="make.year.ranges" select="0"></xsl:param> + + +Description + +If non-zero, multiple copyright year elements will be +collated into ranges. +This works only if each year number is put into a separate +year element. The copyright element permits multiple +year elements. If a year element contains a dash or +a comma, then that year element will not be merged into +any range. + + + + + + + +author.othername.in.middle +boolean + + +author.othername.in.middle +Is othername in author a +middle name? + + + + +<xsl:param name="author.othername.in.middle" select="1"></xsl:param> + + +Description + +If non-zero, the othername of an author +appears between the firstname and +surname. Otherwise, othername +is suppressed. + + + + + + +Reference Pages + + +funcsynopsis.decoration +boolean + + +funcsynopsis.decoration +Decorate elements of a funcsynopsis? + + + + +<xsl:param name="funcsynopsis.decoration" select="1"></xsl:param> + + + +Description + +If non-zero, elements of the funcsynopsis will be +decorated (e.g. rendered as bold or italic text). The decoration is controlled by +templates that can be redefined in a customization layer. + + + + + + + +funcsynopsis.style +list +ansi +kr + + +funcsynopsis.style +What style of funcsynopsis should be generated? + + + +<xsl:param name="funcsynopsis.style">kr</xsl:param> + + +Description + +If funcsynopsis.style is ansi, +ANSI-style function synopses are generated for a +funcsynopsis, otherwise K&R-style +function synopses are generated. + + + + + + + +function.parens +boolean + + +function.parens +Generate parens after a function? + + + + +<xsl:param name="function.parens" select="0"></xsl:param> + + + +Description + +If non-zero, the formatting of a function element +will include generated parentheses. + + + + + + + +refentry.generate.name +boolean + + +refentry.generate.name +Output NAME header before refnames? + + + + +<xsl:param name="refentry.generate.name" select="1"></xsl:param> + + + +Description + +If non-zero, a "NAME" section title is output before the list +of refnames. This parameter and +refentry.generate.title are mutually +exclusive. This means that if you change this parameter to zero, you +should set refentry.generate.title to non-zero unless +you want get quite strange output. + + + + + + + +refentry.generate.title +boolean + + +refentry.generate.title +Output title before refnames? + + + + +<xsl:param name="refentry.generate.title" select="0"></xsl:param> + + + +Description + +If non-zero, the reference page title or first name is +output before the list of refnames. This parameter and +refentry.generate.name are mutually exclusive. +This means that if you change this parameter to non-zero, you +should set refentry.generate.name to zero unless +you want get quite strange output. + + + + + + + +refentry.pagebreak +boolean + + +refentry.pagebreak +Start each refentry on a new page + + + +<xsl:param name="refentry.pagebreak" select="1"></xsl:param> + + +Description + +If non-zero (the default), each refentry +element will start on a new page. If zero, a page +break will not be generated between refentry elements. +The exception is when the refentry elements are children of +a part element, in which case the page breaks are always +retained. That is because a part element does not generate +a page-sequence for its children, so each refentry must +start its own page-sequence. + + + + + + + +refentry.title.properties +attribute set + + +refentry.title.properties +Title properties for a refentry title + + + + +<xsl:attribute-set name="refentry.title.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$title.font.family"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="font-size">18pt</xsl:attribute> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="space-after">1em</xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> + <xsl:attribute name="space-after.optimum">0.5em</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute> + <xsl:attribute name="space-after.maximum">0.6em</xsl:attribute> + <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"></xsl:value-of></xsl:attribute> +</xsl:attribute-set> + + + +Description + +Formatting properties applied to the title generated for the +refnamediv part of output for +refentry when the value of the +refentry.generate.title parameter is +non-zero. The font size is supplied by the appropriate section.levelX.title.properties +attribute-set, computed from the location of the +refentry in the section hierarchy. + + + This parameter has no effect on the the title generated for + the refnamediv part of output for + refentry when the value of the + refentry.generate.name parameter is + non-zero. By default, that title is formatted with the same + properties as the titles for all other first-level children of + refentry. + + + + + + + +refentry.xref.manvolnum +boolean + + +refentry.xref.manvolnum +Output manvolnum as part of +refentry cross-reference? + + + + +<xsl:param name="refentry.xref.manvolnum" select="1"></xsl:param> + + + +Description + +if non-zero, the manvolnum is used when cross-referencing +refentrys, either with xref +or citerefentry. + + + + + + + +refclass.suppress +boolean + + +refclass.suppress +Suppress display of refclass contents? + + + + +<xsl:param name="refclass.suppress" select="0"></xsl:param> + + +Description + +If the value of refclass.suppress is +non-zero, then display of refclass contents is +suppressed in output. + + + + + +Tables + + +default.table.width +length + + +default.table.width +The default width of tables + + + +<xsl:param name="default.table.width"></xsl:param> + + +Description +If non-zero, this value will be used for the +width attribute on tables that do not specify an +alternate width (with the dbhtml table-width or +dbfo table-width processing instruction). + + + + + +nominal.table.width +length + + +nominal.table.width +The (absolute) nominal width of tables + + + + +<xsl:param name="nominal.table.width">6in</xsl:param> + + + +Description + +In order to convert CALS column widths into HTML column widths, it +is sometimes necessary to have an absolute table width to use for conversion +of mixed absolute and relative widths. This value must be an absolute +length (not a percentage). + + + + + + +default.table.frame +string + + +default.table.frame +The default framing of tables + + + + +<xsl:param name="default.table.frame">all</xsl:param> + + + +Description + +This value will be used when there is no frame attribute on the +table. + + + + + + +default.table.rules +string + + +default.table.rules +The default column and row rules for tables using HTML markup + + + + +<xsl:param name="default.table.rules">none</xsl:param> + + + +Description + +Tables using HTML markup elements can use an attribute +named rules on the table or +informaltable element +to specify whether column and row border rules should be +displayed. This parameter lets you specify a global default +style for all HTML tables that don't otherwise have +that attribute. +These are the supported values: + + +all + +Rules will appear between all rows and columns. + + + +rows + +Rules will appear between rows only. + + + +cols + +Rules will appear between columns only. + + + +groups + +Rules will appear between row groups (thead, tfoot, tbody). +No support for rules between column groups yet. + + + + +none + +No rules. This is the default value. + + + + + + +The border after the last row and the border after +the last column are not affected by +this setting. Those borders are controlled by +the frame attribute on the table element. + + + + + + + +table.cell.padding +attribute set + + +table.cell.padding +Specifies the padding of table cells + + + + +<xsl:attribute-set name="table.cell.padding"> + <xsl:attribute name="padding-start">2pt</xsl:attribute> + <xsl:attribute name="padding-end">2pt</xsl:attribute> + <xsl:attribute name="padding-top">2pt</xsl:attribute> + <xsl:attribute name="padding-bottom">2pt</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Specifies the padding of table cells. + + + + + + +table.frame.border.thickness +length + + +table.frame.border.thickness +Specifies the thickness of the frame border + + + + +<xsl:param name="table.frame.border.thickness">0.5pt</xsl:param> + + + +Description + +Specifies the thickness of the border on the table's frame. + + + + + + +table.frame.border.style +list +none +solid +dotted +dashed +double +groove +ridge +inset +outset +solid + + +table.frame.border.style +Specifies the border style of table frames + + + + +<xsl:param name="table.frame.border.style">solid</xsl:param> + + + +Description + +Specifies the border style of table frames. + + + + + + +table.frame.border.color +color + + +table.frame.border.color +Specifies the border color of table frames + + + + + +<xsl:param name="table.frame.border.color">black</xsl:param> + + + +Description + +Specifies the border color of table frames. + + + + + + +table.cell.border.thickness +length + + +table.cell.border.thickness +Specifies the thickness of table cell borders + + + + +<xsl:param name="table.cell.border.thickness">0.5pt</xsl:param> + + + +Description + +If non-zero, specifies the thickness of borders on table +cells. The units are points. See +CSS + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + + + + +table.cell.border.style +list +none +solid +dotted +dashed +double +groove +ridge +inset +outset +solid + + +table.cell.border.style +Specifies the border style of table cells + + + + +<xsl:param name="table.cell.border.style">solid</xsl:param> + + + +Description + +Specifies the border style of table cells. + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + + + + +table.cell.border.color +color + + +table.cell.border.color +Specifies the border color of table cells + + + + + +<xsl:param name="table.cell.border.color">black</xsl:param> + + + +Description + +Set the color of table cell borders. If non-zero, the value is used +for the border coloration. See CSS. A +color is either a keyword or a numerical RGB specification. +Keywords are aqua, black, blue, fuchsia, gray, green, lime, maroon, +navy, olive, orange, purple, red, silver, teal, white, and +yellow. + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + + + + +table.table.properties +attribute set + + +table.table.properties +Properties associated with a table + + + + +<xsl:attribute-set name="table.table.properties"> + <xsl:attribute name="border-before-width.conditionality">retain</xsl:attribute> + <xsl:attribute name="border-collapse">collapse</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The styling for tables. This parameter should really +have been called table.properties, but that parameter +name was inadvertently established for the block-level properties +of the table as a whole. + + +See also table.properties. + + + + + +Linking + + +current.docid +string + + +current.docid +targetdoc identifier for the document being +processed + + +<xsl:param name="current.docid"></xsl:param> + + +Description + +When olinks between documents are resolved for HTML output, the stylesheet can compute the relative path between the current document and the target document. The stylesheet needs to know the targetdoc identifiers for both documents, as they appear in the target.database.document database file. This parameter passes to the stylesheet +the targetdoc identifier of the current document, since that +identifier does not appear in the document itself. +This parameter can also be used for print output. If an olink's targetdoc id differs from the current.docid, then the stylesheet can append the target document's title to the generated olink text. That identifies to the reader that the link is to a different document, not the current document. See also olink.doctitle to enable that feature. + + + + + +collect.xref.targets +list +no +yes +only + + +collect.xref.targets +Controls whether cross reference data is +collected + + +<xsl:param name="collect.xref.targets">no</xsl:param> + + +Description + + +In order to resolve olinks efficiently, the stylesheets can +generate an external data file containing information about +all potential cross reference endpoints in a document. +This parameter determines whether the collection process is run when the document is processed by the stylesheet. The default value is no, which means the data file is not generated during processing. The other choices are yes, which means the data file is created and the document is processed for output, and only, which means the data file is created but the document is not processed for output. +See also targets.filename. + + + + + + +insert.olink.page.number +list +no +yes +maybe + + +insert.olink.page.number +Turns page numbers in olinks on and off + + + + +<xsl:param name="insert.olink.page.number">no</xsl:param> + + + +Description + +The value of this parameter determines if +cross references made between documents with +olink will +include page number citations. +In most cases this is only applicable to references in printed output. + +The parameter has three possible values. + + + +no +No page number references will be generated for olinks. + + + +yes +Page number references will be generated +for all olink references. +The style of page reference may be changed +if an xrefstyle +attribute is used. + + + +maybe +Page number references will not be generated +for an olink element unless +it has an +xrefstyle +attribute whose value specifies a page reference. + + + +Olinks that point to targets within the same document +are treated as xrefs, and controlled by +the insert.xref.page.number parameter. + + +Page number references for olinks to +external documents can only be inserted if the +information exists in the olink database. +This means each olink target element +(div or obj) +must have a page attribute +whose value is its page number in the target document. +The XSL stylesheets are not able to extract that information +during processing because pages have not yet been created in +XSLT transformation. Only the XSL-FO processor knows what +page each element is placed on. +Therefore some postprocessing must take place to populate +page numbers in the olink database. + + + + + + + + + +insert.olink.pdf.frag +boolean + + +insert.olink.pdf.frag +Add fragment identifiers for links into PDF files + + + + +<xsl:param name="insert.olink.pdf.frag" select="0"></xsl:param> + + + +Description + +The value of this parameter determines whether +the cross reference URIs to PDF documents made with +olink will +include fragment identifiers. + + +When forming a URI to link to a PDF document, +a fragment identifier (typically a '#' followed by an +id value) appended to the PDF filename can be used by +the PDF viewer to open +the PDF file to a location within the document instead of +the first page. +However, not all PDF files have id +values embedded in them, and not all PDF viewers can +handle fragment identifiers. + + +If insert.olink.pdf.frag is set +to a non-zero value, then any olink targeting a +PDF file will have the fragment identifier appended to the URI. +The URI is formed by concatenating the value of the +olink.base.uri parameter, the +value of the baseuri +attribute from the document +element in the olink database with the matching +targetdoc value, +and the value of the href +attribute for the targeted element in the olink database. +The href attribute +contains the fragment identifier. + + +If insert.olink.pdf.frag is set +to zero (the default value), then +the href attribute +from the olink database +is not appended to PDF olinks, so the fragment identifier is left off. +A PDF olink is any olink for which the +baseuri attribute +from the matching document +element in the olink database ends with '.pdf'. +Any other olinks will still have the fragment identifier added. + + + + + + +olink.base.uri +uri + + +olink.base.uri +Base URI used in olink hrefs + + +<xsl:param name="olink.base.uri"></xsl:param> + + +Description + +When cross reference data is collected for resolving olinks, it +may be necessary to prepend a base URI to each target's href. This +parameter lets you set that base URI when cross reference data is +collected. This feature is needed when you want to link to a document +that is processed without chunking. The output filename for such a +document is not known to the XSL stylesheet; the only target +information consists of fragment identifiers such as +#idref. To enable the resolution of olinks between +documents, you should pass the name of the HTML output file as the +value of this parameter. Then the hrefs recorded in the cross +reference data collection look like +outfile.html#idref, which can be reached as links +from other documents. + + + + + +olink.debug +boolean + + +olink.debug +Turn on debugging messages for olinks + + + + +<xsl:param name="olink.debug" select="0"></xsl:param> + + + +Description + +If non-zero, then each olink will generate several +messages about how it is being resolved during processing. +This is useful when an olink does not resolve properly +and the standard error messages are not sufficient to +find the problem. + + +You may need to read through the olink XSL templates +to understand the context for some of the debug messages. + + + + + + + +olink.doctitle +list +no +yes +maybe + + +olink.doctitle +show the document title for external olinks? + + + +<xsl:param name="olink.doctitle">no</xsl:param> + + +Description + +When olinks between documents are resolved, the generated text +may not make it clear that the reference is to another document. +It is possible for the stylesheets to append the other document's +title to external olinks. For this to happen, two parameters must +be set. + + +This olink.doctitle parameter +should be set to either yes or maybe +to enable this feature. + + + +And you should also set the current.docid +parameter to the document id for the document currently +being processed for output. + + + + + +Then if an olink's targetdoc id differs from +the current.docid value, the stylesheet knows +that it is a reference to another document and can +append the target document's +title to the generated olink text. + +The text for the target document's title is copied from the +olink database from the ttl element +of the top-level div for that document. +If that ttl element is missing or empty, +no title is output. + + +The supported values for olink.doctitle are: + + + +yes + + +Always insert the title to the target document if it is not +the current document. + + + + +no + + +Never insert the title to the target document, even if requested +in an xrefstyle attribute. + + + + +maybe + + +Only insert the title to the target document, if requested +in an xrefstyle attribute. + + + + +An xrefstyle attribute +may override the global setting for individual olinks. +The following values are supported in an +xrefstyle +attribute using the select: syntax: + + + + +docname + + +Insert the target document name for this olink using the +docname gentext template, but only +if the value of olink.doctitle +is not no. + + + + +docnamelong + + +Insert the target document name for this olink using the +docnamelong gentext template, but only +if the value of olink.doctitle +is not no. + + + + +nodocname + + +Omit the target document name even if +the value of olink.doctitle +is yes. + + + + +Another way of inserting the target document name +for a single olink is to employ an +xrefstyle +attribute using the template: syntax. +The %o placeholder (the letter o, not zero) +in such a template +will be filled in with the target document's title when it is processed. +This will occur regardless of +the value of olink.doctitle. + +Note that prior to version 1.66 of the XSL stylesheets, +the allowed values for this parameter were 0 and 1. Those +values are still supported and mapped to 'no' and 'yes', respectively. + + + + + + +olink.lang.fallback.sequence +string + + +olink.lang.fallback.sequence +look up translated documents if olink not found? + + + +<xsl:param name="olink.lang.fallback.sequence"></xsl:param> + + +Description + + +This parameter defines a list of lang values +to search among to resolve olinks. + + +Normally an olink tries to resolve to a document in the same +language as the olink itself. The language of an olink +is determined by its nearest ancestor element with a +lang attribute, otherwise the +value of the l10n.gentext.default.lang +parameter. + + +An olink database can contain target data for the same +document in multiple languages. Each set of data has the +same value for the targetdoc attribute in +the document element in the database, but with a +different lang attribute value. + + +When an olink is being resolved, the target is first +sought in the document with the same language as the olink. +If no match is found there, then this parameter is consulted +for additional languages to try. + +The olink.lang.fallback.sequence +must be a whitespace separated list of lang values to +try. The first one with a match in the olink database is used. +The default value is empty. + +For example, a document might be written in German +and contain an olink with +targetdoc="adminguide". +When the document is processed, the processor +first looks for a target dataset in the +olink database starting with: + +<document targetdoc="adminguide" lang="de">. + + +If there is no such element, then the +olink.lang.fallback.sequence +parameter is consulted. +If its value is, for example, fr en, then the processor next +looks for targetdoc="adminguide" lang="fr", and +then for targetdoc="adminguide" lang="en". +If there is still no match, it looks for +targetdoc="adminguide" with no +lang attribute. + + +This parameter is useful when a set of documents is only +partially translated, or is in the process of being translated. +If a target of an olink has not yet been translated, then this +parameter permits the processor to look for the document in +other languages. This assumes the reader would rather have +a link to a document in a different language than to have +a broken link. + + + + + + + +olink.properties +attribute set + + +olink.properties +Properties associated with the cross-reference +text of an olink. + + + + +<xsl:attribute-set name="olink.properties"> + <xsl:attribute name="show-destination">replace</xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is applied to the +fo:basic-link element of an olink. It is not applied to the +optional page number or optional title of the external +document. + + + + + + +prefer.internal.olink +boolean + + +prefer.internal.olink +Prefer a local olink reference to an external reference + + + + +<xsl:param name="prefer.internal.olink" select="0"></xsl:param> + + + +Description + +If you are re-using XML content modules in multiple documents, +you may want to redirect some of your olinks. This parameter +permits you to redirect an olink to the current document. + + +For example: you are writing documentation for a product, +which includes 3 manuals: a little installation +booklet (booklet.xml), a user +guide (user.xml), and a reference manual (reference.xml). +All 3 documents begin with the same introduction section (intro.xml) that +contains a reference to the customization section (custom.xml) which is +included in both user.xml and reference.xml documents. + + +How do you write the link to custom.xml in intro.xml +so that it is interpreted correctly in all 3 documents? + +If you use xref, it will fail in user.xml. + +If you use olink (pointing to reference.xml), +the reference in user.xml +will point to the customization section of the reference manual, while it is +actually available in user.xml. + + + +If you set the prefer.internal.olink +parameter to a non-zero value, then the processor will +first look in the olink database +for the olink's targetptr attribute value +in document matching the current.docid +parameter value. If it isn't found there, then +it tries the document in the database +with the targetdoc +value that matches the olink's targetdoc +attribute. + + +This feature permits an olink reference to resolve to +the current document if there is an element +with an id matching the olink's targetptr +value. The current document's olink data must be +included in the target database for this to work. + + +There is a potential for incorrect links if +the same id attribute value is used for different +content in different documents. +Some of your olinks may be redirected to the current document +when they shouldn't be. It is not possible to control +individual olink instances. + + + + + + + +target.database.document +uri + + +target.database.document +Name of master database file for resolving +olinks + + + + <xsl:param name="target.database.document">olinkdb.xml</xsl:param> + + +Description + + +To resolve olinks between documents, the stylesheets use a master +database document that identifies the target datafiles for all the +documents within the scope of the olinks. This parameter value is the +URI of the master document to be read during processing to resolve +olinks. The default value is olinkdb.xml. + +The data structure of the file is defined in the +targetdatabase.dtd DTD. The database file +provides the high level elements to record the identifiers, locations, +and relationships of documents. The cross reference data for +individual documents is generally pulled into the database using +system entity references or XIncludes. See also +targets.filename. + + + + +targets.filename +string + + +targets.filename +Name of cross reference targets data file + + +<xsl:param name="targets.filename">target.db</xsl:param> + + +Description + + +In order to resolve olinks efficiently, the stylesheets can +generate an external data file containing information about +all potential cross reference endpoints in a document. +This parameter lets you change the name of the generated +file from the default name target.db. +The name must agree with that used in the target database +used to resolve olinks during processing. +See also target.database.document. + + + + + + +use.local.olink.style +boolean + + +use.local.olink.style +Process olinks using xref style of current +document + + +<xsl:param name="use.local.olink.style" select="0"></xsl:param> + +Description + +When cross reference data is collected for use by olinks, the data for each potential target includes one field containing a completely assembled cross reference string, as if it were an xref generated in that document. Other fields record the separate title, number, and element name of each target. When an olink is formed to a target from another document, the olink resolves to that preassembled string by default. If the use.local.olink.style parameter is set to non-zero, then instead the cross +reference string is formed again from the target title, number, and +element name, using the stylesheet processing the targeting document. +Then olinks will match the xref style in the targeting document +rather than in the target document. If both documents are processed +with the same stylesheet, then the results will be the same. + + + + +Cross References + + +insert.xref.page.number +list +no +yes +maybe + + +insert.xref.page.number +Turns page numbers in xrefs on and off + + + + +<xsl:param name="insert.xref.page.number">no</xsl:param> + + + +Description + +The value of this parameter determines if +cross references (xrefs) in +printed output will +include page number citations. +It has three possible values. + + + +no +No page number references will be generated. + + + +yes +Page number references will be generated +for all xref elements. +The style of page reference may be changed +if an xrefstyle +attribute is used. + + + +maybe +Page number references will not be generated +for an xref element unless +it has an +xrefstyle +attribute whose value specifies a page reference. + + + + + + + + + +xref.properties +attribute set + + +xref.properties +Properties associated with cross-reference text + + + + +<xsl:attribute-set name="xref.properties"> +</xsl:attribute-set> + + + +Description + +This attribute set is used to set properties +on cross reference text. + + + + + + +xref.label-title.separator +string + + +xref.label-title.separator +Punctuation or space separating label from title in xref + + + +<xsl:param name="xref.label-title.separator">: </xsl:param> + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both label and title, +then the value of this parameter is inserted between +label and title in the output. + + + + + + + +xref.label-page.separator +string + + +xref.label-page.separator +Punctuation or space separating label from page number in xref + + + +<xsl:param name="xref.label-page.separator"><xsl:text> </xsl:text></xsl:param> + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both label and page +but no title, +then the value of this parameter is inserted between +label and page number in the output. +If a title is included, then other separators are used. + + + + + + + +xref.title-page.separator +string + + +xref.title-page.separator +Punctuation or space separating title from page number in xref + + + +<xsl:param name="xref.title-page.separator"><xsl:text> </xsl:text></xsl:param> + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both title and page number, +then the value of this parameter is inserted between +title and page number in the output. + + + + + + + +insert.link.page.number +list +no +yes +maybe + + +insert.link.page.number +Turns page numbers in link elements on and off + + + + +<xsl:param name="insert.link.page.number">no</xsl:param> + + + +Description + +The value of this parameter determines if +cross references using the link element in +printed output will +include standard page number citations. +It has three possible values. + + + +no +No page number references will be generated. + + + +yes +Page number references will be generated +for all link elements. +The style of page reference may be changed +if an xrefstyle +attribute is used. + + + +maybe +Page number references will not be generated +for a link element unless +it has an +xrefstyle +attribute whose value specifies a page reference. + + + + +Although the xrefstyle attribute +can be used to turn the page reference on or off, it cannot be +used to control the formatting of the page number as it +can in xref. +In link it will always format with +the style established by the +gentext template with name="page.citation" +in the l:context name="xref". + + + + + +Lists + + +compact.list.item.spacing +attribute set + + +compact.list.item.spacing +What space do you want between list items (when spacing="compact")? + + + +<xsl:attribute-set name="compact.list.item.spacing"> + <xsl:attribute name="space-before.optimum">0em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0em</xsl:attribute> + <xsl:attribute name="space-before.maximum">0.2em</xsl:attribute> +</xsl:attribute-set> + +Description +Specify what spacing you want between each list item when +spacing is +compact. + + + + + +itemizedlist.properties +attribute set + + +itemizedlist.properties +Properties that apply to each list-block generated by itemizedlist. + + + +<xsl:attribute-set name="itemizedlist.properties" use-attribute-sets="list.block.properties"> +</xsl:attribute-set> + +Description +Properties that apply to each fo:list-block generated by itemizedlist. + + + + + +itemizedlist.label.properties +attribute set + + +itemizedlist.label.properties +Properties that apply to each label inside itemized list. + + + +<xsl:attribute-set name="itemizedlist.label.properties"> +</xsl:attribute-set> + +Description +Properties that apply to each label inside itemized list. E.g.: +<xsl:attribute-set name="itemizedlist.label.properties"> + <xsl:attribute name="text-align">right</xsl:attribute> +</xsl:attribute-set> + + + + + +itemizedlist.label.width +length + + + itemizedlist.label.width +The default width of the label (bullet) in an itemized list. + + + + + <xsl:param name="itemizedlist.label.width">1.0em</xsl:param> + + + +Description +Specifies the default width of the label (usually a bullet or other +symbol) in an itemized list. You can override the default value on any +particular list with the “dbfo” processing instruction using the +“label-width” pseudoattribute. + + + + + +list.block.properties +attribute set + + +list.block.properties +Properties that apply to each list-block generated by list. + + + +<xsl:attribute-set name="list.block.properties"> + <xsl:attribute name="provisional-label-separation">0.2em</xsl:attribute> + <xsl:attribute name="provisional-distance-between-starts">1.5em</xsl:attribute> +</xsl:attribute-set> + +Description +Properties that apply to each fo:list-block generated by itemizedlist/orderedlist. + + + + + +list.block.spacing +attribute set + + +list.block.spacing +What spacing do you want before and after lists? + + + +<xsl:attribute-set name="list.block.spacing"> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> + <xsl:attribute name="space-after.optimum">1em</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> + +Description +Specify the spacing required before and after a list. It is necessary to specify the space after a list block because lists can come inside of paras. + + + + + +list.item.spacing +attribute set + + +list.item.spacing +What space do you want between list items? + + + +<xsl:attribute-set name="list.item.spacing"> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> + +Description +Specify what spacing you want between each list item. + + + + + +orderedlist.properties +attribute set + + +orderedlist.properties +Properties that apply to each list-block generated by orderedlist. + + + +<xsl:attribute-set name="orderedlist.properties" use-attribute-sets="list.block.properties"> + <xsl:attribute name="provisional-distance-between-starts">2em</xsl:attribute> +</xsl:attribute-set> + +Description +Properties that apply to each fo:list-block generated by orderedlist. + + + + + +orderedlist.label.properties +attribute set + + +orderedlist.label.properties +Properties that apply to each label inside ordered list. + + + +<xsl:attribute-set name="orderedlist.label.properties"> +</xsl:attribute-set> + +Description +Properties that apply to each label inside ordered list. E.g.: +<xsl:attribute-set name="orderedlist.label.properties"> + <xsl:attribute name="text-align">right</xsl:attribute> +</xsl:attribute-set> + + + + + +orderedlist.label.width +length + + +orderedlist.label.width +The default width of the label (number) in an ordered list. + + + + +<xsl:param name="orderedlist.label.width">1.2em</xsl:param> + + + +Description +Specifies the default width of the label (usually a number or +sequence of numbers) in an ordered list. You can override the default +value on any particular list with the “dbfo” processing instruction +using the “label-width” pseudoattribute. + + + + + +variablelist.max.termlength +number + + +variablelist.max.termlength +Specifies the longest term in variablelists + + + + +<xsl:param name="variablelist.max.termlength">24</xsl:param> + + + +Description + +In variablelists, the listitem +is indented to leave room for the +term elements. That indent may be computed +if it is not specified with a termlength +attribute on the variablelist element. + + +The computation counts characters in the +term elements in the list +to find the longest term. However, some terms are very long +and would produce extreme indents. This parameter lets you +set a maximum character count. Any terms longer than the maximum +would line wrap. The default value is 24. + + +The character counts are converted to physical widths +by multiplying by 0.50em. There will be some variability +in how many actual characters fit in the space +since some characters are wider than others. + + + + + + + +variablelist.term.separator +string + + +variablelist.term.separator +Text to separate terms within a multi-term +varlistentry + + + + +<xsl:param name="variablelist.term.separator">, </xsl:param> + + +Description + +When a varlistentry contains multiple term +elements, the string specified in the value of the +variablelist.term.separator parameter is placed +after each term except the last. + + + To generate a line break between multiple terms in + a varlistentry, set a non-zero value for the + variablelist.term.break.after parameter. If + you do so, you may also want to set the value of the + variablelist.term.separator parameter to an + empty string (to suppress rendering of the default comma and space + after each term). + + + + + + + +variablelist.term.properties +attribute set + + +variablelist.term.properties +To add properties to the term elements in a variablelist. + + + + +<xsl:attribute-set name="variablelist.term.properties"> +</xsl:attribute-set> + + +Description +These properties are added to the block containing a +term in a variablelist. +Use this attribute-set to set +font properties or alignment, for example. + + + + + + +variablelist.term.break.after +boolean + + +variablelist.term.break.after +Generate line break after each term within a +multi-term varlistentry? + + + + +<xsl:param name="variablelist.term.break.after">0</xsl:param> + + +Description + +Set a non-zero value for the +variablelist.term.break.after parameter to +generate a line break between terms in a +multi-term varlistentry. + + +If you set a non-zero value for +variablelist.term.break.after, you may also +want to set the value of the +variablelist.term.separator parameter to an +empty string (to suppress rendering of the default comma and space +after each term). + + + + + + +QAndASet + + +qandadiv.autolabel +boolean + + +qandadiv.autolabel +Are divisions in QAndASets enumerated? + + + +<xsl:param name="qandadiv.autolabel" select="1"></xsl:param> + + +Description + +If non-zero, unlabeled qandadivs will be enumerated. + + + + + + + +qanda.inherit.numeration +boolean + + +qanda.inherit.numeration +Does enumeration of QandASet components inherit the numeration of parent elements? + + + + +<xsl:param name="qanda.inherit.numeration" select="1"></xsl:param> + + + +Description + +If non-zero, numbered qandadiv elements and +question and answer inherit the enumeration of +the ancestors of the qandaset. + + + + + + + +qanda.defaultlabel +list +number +qanda +none + + +qanda.defaultlabel +Sets the default for defaultlabel on QandASet. + + + + +<xsl:param name="qanda.defaultlabel">number</xsl:param> + + + +Description + +If no defaultlabel attribute is specified on +a qandaset, this value is used. It is generally one of the legal +values for the defaultlabel attribute (none, +number or +qanda), or one of the additional stylesheet-specific values +(qnumber or qnumberanda). +The default value is 'number'. + +The values are rendered as follows: + +qanda + +questions are labeled "Q:" and +answers are labeled "A:". + + + +number + +The questions are enumerated and the answers +are not labeled. + + + +qnumber + +The questions are labeled "Q:" followed by a number, and answers are not +labeled. +When sections are numbered, adding a label +to the number distinguishes the question numbers +from the section numbers. +This value is not allowed in the +defaultlabel attribute +of a qandaset element. + + + +qnumberanda + +The questions are labeled "Q:" followed by a number, and +the answers are labeled "A:". +When sections are numbered, adding a label +to the number distinguishes the question numbers +from the section numbers. +This value is not allowed in the +defaultlabel attribute +of a qandaset element. + + + +none + +No distinguishing label precedes Questions or Answers. + + + + + + + + + + +qanda.in.toc +boolean + + +qanda.in.toc +Should qandaentry questions appear in +the document table of contents? + + + +<xsl:param name="qanda.in.toc" select="0"></xsl:param> + + +Description + +If true (non-zero), then the generated table of contents +for a document will include qandaset titles, +qandadiv titles, +and question elements. The default value (zero) excludes +them from the TOC. + +This parameter does not affect any tables of contents +that may be generated inside a qandaset or qandadiv. + + + + + + + +qanda.nested.in.toc +boolean + + +qanda.nested.in.toc +Should nested answer/qandaentry instances appear in TOC? + + + + +<xsl:param name="qanda.nested.in.toc" select="0"></xsl:param> + + + +Description + +If non-zero, instances of qandaentry +that are children of answer elements are shown in +the TOC. + + + + + +Bibliography + + +bibliography.style +list +normal +iso690 + + +bibliography.style +Style used for formatting of biblioentries. + + + + +<xsl:param name="bibliography.style">normal</xsl:param> + + + +Description + +Currently only normal and +iso690 styles are supported. + +In order to use ISO690 style to the full extent you might need +to use additional markup described on the +following WiKi page. + + + + + + +biblioentry.item.separator +string + + +biblioentry.item.separator +Text to separate bibliography entries + + + +<xsl:param name="biblioentry.item.separator">. </xsl:param> + + +Description + +Text to separate bibliography entries + + + + + + + +bibliography.collection +string + + +bibliography.collection +Name of the bibliography collection file + + + + +<xsl:param name="bibliography.collection">http://docbook.sourceforge.net/release/bibliography/bibliography.xml</xsl:param> + + + + +Description + +Maintaining bibliography entries across a set of documents is tedious, time +consuming, and error prone. It makes much more sense, usually, to store all of +the bibliography entries in a single place and simply extract +the ones you need in each document. + +That's the purpose of the +bibliography.collection parameter. To setup a global +bibliography database, follow these steps: + +First, create a stand-alone bibliography document that contains all of +the documents that you wish to reference. Make sure that each bibliography +entry (whether you use biblioentry or bibliomixed) +has an ID. + +My global bibliography, ~/bibliography.xml begins +like this: + + +<!DOCTYPE bibliography + PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> +<bibliography><title>References</title> + +<bibliomixed id="xml-rec"><abbrev>XML 1.0</abbrev>Tim Bray, +Jean Paoli, C. M. Sperberg-McQueen, and Eve Maler, editors. +<citetitle><ulink url="http://www.w3.org/TR/REC-xml">Extensible Markup +Language (XML) 1.0 Second Edition</ulink></citetitle>. +World Wide Web Consortium, 2000. +</bibliomixed> + +<bibliomixed id="xml-names"><abbrev>Namespaces</abbrev>Tim Bray, +Dave Hollander, +and Andrew Layman, editors. +<citetitle><ulink url="http://www.w3.org/TR/REC-xml-names/">Namespaces in +XML</ulink></citetitle>. +World Wide Web Consortium, 1999. +</bibliomixed> + +<!-- ... --> +</bibliography> + + + +When you create a bibliography in your document, simply +provide empty bibliomixed +entries for each document that you wish to cite. Make sure that these +elements have the same ID as the corresponding real +entry in your global bibliography. + +For example: + + +<bibliography><title>Bibliography</title> + +<bibliomixed id="xml-rec"/> +<bibliomixed id="xml-names"/> +<bibliomixed id="DKnuth86">Donald E. Knuth. <citetitle>Computers and +Typesetting: Volume B, TeX: The Program</citetitle>. Addison-Wesley, +1986. ISBN 0-201-13437-3. +</bibliomixed> +<bibliomixed id="relaxng"/> + +</bibliography> + + +Note that it's perfectly acceptable to mix entries from your +global bibliography with normal entries. You can use +xref or other elements to cross-reference your +bibliography entries in exactly the same way you do now. + +Finally, when you are ready to format your document, simply set the +bibliography.collection parameter (in either a +customization layer or directly through your processor's interface) to +point to your global bibliography. + +The stylesheets will format the bibliography in your document as if +all of the entries referenced appeared there literally. + + + + + + +bibliography.numbered +boolean + + +bibliography.numbered +Should bibliography entries be numbered? + + + + +<xsl:param name="bibliography.numbered" select="0"></xsl:param> + + + +Description + +If non-zero bibliography entries will be numbered + + + + + + + biblioentry.properties + attribute set + + +biblioentry.properties +To set the style for biblioentry. + + + +<xsl:attribute-set name="biblioentry.properties" use-attribute-sets="normal.para.spacing"> + <xsl:attribute name="start-indent">0.5in</xsl:attribute> + <xsl:attribute name="text-indent">-0.5in</xsl:attribute> +</xsl:attribute-set> + + +Description +How do you want biblioentry styled? +Set the font-size, weight, space-above and space-below, indents, etc. to the style required + + + + + +Glossary + + +glossterm.auto.link +boolean + + +glossterm.auto.link +Generate links from glossterm to glossentry automatically? + + + + +<xsl:param name="glossterm.auto.link" select="0"></xsl:param> + + + +Description + +If non-zero, links from inline glossterms to the corresponding +glossentry elements in a glossary or glosslist +will be automatically generated. This is useful when your glossterms are consistent +and you don't want to add links manually. + +The automatic link generation feature is not used on glossterm elements +that have a linkend attribute. + + + + + + +firstterm.only.link +boolean + + +firstterm.only.link +Does automatic glossterm linking only apply to firstterms? + + + + +<xsl:param name="firstterm.only.link" select="0"></xsl:param> + + + +Description + +If non-zero, only firstterms will be automatically linked +to the glossary. If glossary linking is not enabled, this parameter +has no effect. + + + + + + +glossary.collection +string + + +glossary.collection +Name of the glossary collection file + + + + +<xsl:param name="glossary.collection"></xsl:param> + + + +Description + +Glossaries maintained independently across a set of documents +are likely to become inconsistent unless considerable effort is +expended to keep them in sync. It makes much more sense, usually, to +store all of the glossary entries in a single place and simply +extract the ones you need in each document. + +That's the purpose of the +glossary.collection parameter. To setup a global +glossary database, follow these steps: + +Setting Up the Glossary Database + +First, create a stand-alone glossary document that contains all of +the entries that you wish to reference. Make sure that each glossary +entry has an ID. + +Here's an example glossary: + + + +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE glossary + PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> +<glossary> +<glossaryinfo> +<editor><firstname>Eric</firstname><surname>Raymond</surname></editor> +<title>Jargon File 4.2.3 (abridged)</title> +<releaseinfo>Just some test data</releaseinfo> +</glossaryinfo> + +<glossdiv><title>0</title> + +<glossentry> +<glossterm>0</glossterm> +<glossdef> +<para>Numeric zero, as opposed to the letter `O' (the 15th letter of +the English alphabet). In their unmodified forms they look a lot +alike, and various kluges invented to make them visually distinct have +compounded the confusion. If your zero is center-dotted and letter-O +is not, or if letter-O looks almost rectangular but zero looks more +like an American football stood on end (or the reverse), you're +probably looking at a modern character display (though the dotted zero +seems to have originated as an option on IBM 3270 controllers). If +your zero is slashed but letter-O is not, you're probably looking at +an old-style ASCII graphic set descended from the default typewheel on +the venerable ASR-33 Teletype (Scandinavians, for whom /O is a letter, +curse this arrangement). (Interestingly, the slashed zero long +predates computers; Florian Cajori's monumental "A History of +Mathematical Notations" notes that it was used in the twelfth and +thirteenth centuries.) If letter-O has a slash across it and the zero +does not, your display is tuned for a very old convention used at IBM +and a few other early mainframe makers (Scandinavians curse <emphasis>this</emphasis> +arrangement even more, because it means two of their letters collide). +Some Burroughs/Unisys equipment displays a zero with a <emphasis>reversed</emphasis> +slash. Old CDC computers rendered letter O as an unbroken oval and 0 +as an oval broken at upper right and lower left. And yet another +convention common on early line printers left zero unornamented but +added a tail or hook to the letter-O so that it resembled an inverted +Q or cursive capital letter-O (this was endorsed by a draft ANSI +standard for how to draw ASCII characters, but the final standard +changed the distinguisher to a tick-mark in the upper-left corner). +Are we sufficiently confused yet?</para> +</glossdef> +</glossentry> + +<glossentry> +<glossterm>1TBS</glossterm> +<glossdef> +<para role="accidence"> +<phrase role="pronounce"></phrase> +<phrase role="partsofspeach">n</phrase> +</para> +<para>The "One True Brace Style"</para> +<glossseealso>indent style</glossseealso> +</glossdef> +</glossentry> + +<!-- ... --> + +</glossdiv> + +<!-- ... --> + +</glossary> + + + + +Marking Up Glossary Terms + +That takes care of the glossary database, now you have to get the entries +into your document. Unlike bibliography entries, which can be empty, creating +placeholder glossary entries would be very tedious. So instead, +support for glossary.collection relies on implicit linking. + +In your source document, simply use firstterm and +glossterm to identify the terms you wish to have included +in the glossary. The stylesheets assume that you will either set the +baseform attribute correctly, or that the +content of the element exactly matches a term in your glossary. + +If you're using a glossary.collection, don't +make explicit links on the terms in your document. + +So, in your document, you might write things like this: + + +<para>This is dummy text, without any real meaning. +The point is simply to reference glossary terms like <glossterm>0</glossterm> +and the <firstterm baseform="1TBS">One True Brace Style (1TBS)</firstterm>. +The <glossterm>1TBS</glossterm>, as you can probably imagine, is a nearly +religious issue.</para> + + +If you set the firstterm.only.link parameter, +only the terms marked with firstterm will be links. +Otherwise, all the terms will be linked. + + + +Marking Up the Glossary + +The glossary itself has to be identified for the stylesheets. For lack +of a better choice, the role is used. +To identify the glossary as the target for automatic processing, set +the role to auto. The title of this +glossary (and any other information from the glossaryinfo +that's rendered by your stylesheet) will be displayed, but the entries will +come from the database. + + +Unfortunately, the glossary can't be empty, so you must put in +at least one glossentry. The content of this entry +is irrelevant, it will not be rendered: + + +<glossary role="auto"> +<glossentry> +<glossterm>Irrelevant</glossterm> +<glossdef> +<para>If you can see this, the document was processed incorrectly. Use +the <parameter>glossary.collection</parameter> parameter.</para> +</glossdef> +</glossentry> +</glossary> + + +What about glossary divisions? If your glossary database has glossary +divisions and your automatic glossary contains at least +one glossdiv, the automic glossary will have divisions. +If the glossdiv is missing from either location, no divisions +will be rendered. + +Glossary entries (and divisions, if appropriate) in the glossary will +occur in precisely the order they occur in your database. + + + +Formatting the Document + +Finally, when you are ready to format your document, simply set the +glossary.collection parameter (in either a +customization layer or directly through your processor's interface) to +point to your global glossary. + +The stylesheets will format the glossary in your document as if +all of the entries implicilty referenced appeared there literally. + + +Limitations + +Glossary cross-references within the glossary are +not supported. For example, this will not work: + + +<glossentry> +<glossterm>gloss-1</glossterm> +<glossdef><para>A description that references <glossterm>gloss-2</glossterm>.</para> +<glossseealso>gloss-2</glossseealso> +</glossdef> +</glossentry> + + +If you put glossary cross-references in your glossary that way, +you'll get the cryptic error: Warning: +glossary.collection specified, but there are 0 automatic +glossaries. + +Instead, you must do two things: + + + +Markup your glossary using glossseealso: + + +<glossentry> +<glossterm>gloss-1</glossterm> +<glossdef><para>A description that references <glossterm>gloss-2</glossterm>.</para> +<glossseealso>gloss-2</glossseealso> +</glossdef> +</glossentry> + + + + +Make sure there is at least one glossterm reference to +gloss-2 in your document. The +easiest way to do that is probably within a remark in your +automatic glossary: + + +<glossary role="auto"> +<remark>Make sure there's a reference to <glossterm>gloss-2</glossterm>.</remark> +<glossentry> +<glossterm>Irrelevant</glossterm> +<glossdef> +<para>If you can see this, the document was processed incorrectly. Use +the <parameter>glossary.collection</parameter> parameter.</para> +</glossdef> +</glossentry> +</glossary> + + + + + + + + + + +glossary.as.blocks +boolean + + +glossary.as.blocks +Present glossarys using blocks instead of lists? + + + + +<xsl:param name="glossary.as.blocks" select="0"></xsl:param> + + + +Description + +If non-zero, glossarys will be formatted as +blocks. + +If you have long glossterms, proper list +markup in the FO case may produce unattractive lists. By setting this +parameter, you can force the stylesheets to produce block markup +instead of proper lists. + +You can override this setting with a processing instruction as the +child of glossary: dbfo +glossary-presentation="blocks" or dbfo +glossary-presentation="list" + + + + + + +glosslist.as.blocks +boolean + + +glosslist.as.blocks +Use blocks for glosslists? + + + + +<xsl:param name="glosslist.as.blocks" select="0"></xsl:param> + + + +Description + +See glossary.as.blocks. + + + + + + +glossentry.list.item.properties +attribute set + + +glossentry.list.item.properties +To add properties to each glossentry in a list. + + + +<xsl:attribute-set name="glossentry.list.item.properties"> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> + + +Description +These properties are added to the fo:list-item containing a +glossentry in a glossary when the glossary.as.blocks parameter +is zero. +Use this attribute-set to set +spacing between entries, for example. + + + + + + +glossterm.block.properties +attribute set + + +glossterm.block.properties +To add properties to the block of a glossentry's glossterm. + + + +<xsl:attribute-set name="glossterm.block.properties"> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="keep-together.within-column">always</xsl:attribute> +</xsl:attribute-set> + + +Description +These properties are added to the block containing a +glossary term in a glossary when the glossary.as.blocks parameter +is non-zero. +Use this attribute-set to set the space above and below, +font properties, +and any indent for the glossary term. + + + + + + +glossdef.block.properties +attribute set + + +glossdef.block.properties +To add properties to the block of a glossary definition. + + + +<xsl:attribute-set name="glossdef.block.properties"> + <xsl:attribute name="margin-{$direction.align.start}">.25in</xsl:attribute> +</xsl:attribute-set> + + +Description +These properties are added to the block containing a +glossary definition in a glossary when +the glossary.as.blocks parameter +is non-zero. +Use this attribute-set to set the space above and below, +any font properties, +and any indent for the glossary definition. + + + + + + +glossterm.list.properties +attribute set + + +glossterm.list.properties +To add properties to the glossterm in a list. + + + + +<xsl:attribute-set name="glossterm.list.properties"> +</xsl:attribute-set> + + +Description +These properties are added to the block containing a +glossary term in a glossary when the glossary.as.blocks parameter +is zero. +Use this attribute-set to set +font properties, for example. + + + + + + +glossdef.list.properties +attribute set + + +glossdef.list.properties +To add properties to the glossary definition in a list. + + + + +<xsl:attribute-set name="glossdef.list.properties"> +</xsl:attribute-set> + + +Description +These properties are added to the block containing a +glossary definition in a glossary when +the glossary.as.blocks parameter +is zero. +Use this attribute-set to set font properties, for example. + + + + + + +glossterm.width +length + + +glossterm.width +Width of glossterm in list presentation mode + + + + +<xsl:param name="glossterm.width">2in</xsl:param> + + + +Description + +This parameter specifies the width reserved for glossary terms when +a list presentation is used. + + + + + + +glossterm.separation +length + + +glossterm.separation +Separation between glossary terms and descriptions in list mode + + + + +<xsl:param name="glossterm.separation">0.25in</xsl:param> + + + +Description + +Specifies the miminum horizontal +separation between glossary terms and descriptions when +they are presented side-by-side using lists +when the glossary.as.blocks +is zero. + + + + + + +glossentry.show.acronym +list +no +yes +primary + + +glossentry.show.acronym +Display glossentry acronyms? + + + + +<xsl:param name="glossentry.show.acronym">no</xsl:param> + + + +Description + +A setting of yes means they should be displayed; +no means they shouldn't. If primary is used, +then they are shown as the primary text for the entry. + + +This setting controls both acronym and +abbrev elements in the glossentry. + + + + + + + +glossary.sort +boolean + + +glossary.sort +Sort glossentry elements? + + + + +<xsl:param name="glossary.sort" select="0"></xsl:param> + + + +Description + +If non-zero, then the glossentry elements within a +glossary, glossdiv, or glosslist are sorted on the glossterm, using +the current lang setting. If zero (the default), then +glossentry elements are not sorted and are presented +in document order. + + + + + + +Miscellaneous + + +formal.procedures +boolean + + +formal.procedures +Selects formal or informal procedures + + + + +<xsl:param name="formal.procedures" select="1"></xsl:param> + + + +Description + +Formal procedures are numbered and always have a title. + + + + + + + +formal.title.placement +table + + +formal.title.placement +Specifies where formal object titles should occur + + + + +<xsl:param name="formal.title.placement"> +figure before +example before +equation before +table before +procedure before +task before +</xsl:param> + + + +Description + +Specifies where formal object titles should occur. For each formal object +type (figure, +example, +equation, +table, and procedure) +you can specify either the keyword +before or +after. + + + + + + +runinhead.default.title.end.punct +string + + +runinhead.default.title.end.punct +Default punctuation character on a run-in-head + + + +<xsl:param name="runinhead.default.title.end.punct">.</xsl:param> + + + +Description + +If non-zero, For a formalpara, use the specified +string as the separator between the title and following text. The period is the default value. + + + + + + +runinhead.title.end.punct +string + + +runinhead.title.end.punct +Characters that count as punctuation on a run-in-head + + + + +<xsl:param name="runinhead.title.end.punct">.!?:</xsl:param> + + + +Description + +Specify which characters are to be counted as punctuation. These +characters are checked for a match with the last character of the +title. If no match is found, the +runinhead.default.title.end.punct contents are +inserted. This is to avoid duplicated punctuation in the output. + + + + + + + +show.comments +boolean + + +show.comments +Display remark elements? + + + + +<xsl:param name="show.comments" select="1"></xsl:param> + + + +Description + +If non-zero, comments will be displayed, otherwise they +are suppressed. Comments here refers to the remark element +(which was called comment prior to DocBook +4.0), not XML comments (<-- like this -->) which are +unavailable. + + + + + + + +punct.honorific +string + + +punct.honorific +Punctuation after an honorific in a personal name. + + + + +<xsl:param name="punct.honorific">.</xsl:param> + + + +Description + +This parameter specifies the punctuation that should be added after an +honorific in a personal name. + + + + + + +segmentedlist.as.table +boolean + + +segmentedlist.as.table +Format segmented lists as tables? + + + + +<xsl:param name="segmentedlist.as.table" select="0"></xsl:param> + + + +Description + +If non-zero, segmentedlists will be formatted as +tables. + + + + + + +variablelist.as.blocks +boolean + + +variablelist.as.blocks +Format variablelists lists as blocks? + + + + +<xsl:param name="variablelist.as.blocks" select="0"></xsl:param> + + + +Description + +If non-zero, variablelists will be formatted as +blocks. + +If you have long terms, proper list markup in the FO case may produce +unattractive lists. By setting this parameter, you can force the stylesheets +to produce block markup instead of proper lists. + +You can override this setting with a processing instruction as the +child of variablelist: dbfo +list-presentation="blocks" or dbfo +list-presentation="list". + +When using list-presentation="list", +you can also control the amount of space used for the terms with +the dbfo term-width=".25in" processing instruction, +the termlength attribute on variablelist, +or allow the stylesheets to attempt to calculate the amount of space to leave based on the +number of letters in the longest term. + + + <variablelist> + <?dbfo list-presentation="list"?> + <?dbfo term-width="1.5in"?> + <?dbhtml list-presentation="table"?> + <?dbhtml term-width="1.5in"?> + <varlistentry> + <term>list</term> + <listitem> + <para> + Formatted as a list even if variablelist.as.blocks is set to 1. + </para> + </listitem> + </varlistentry> + </variablelist> + + + + + + + + + blockquote.properties + attribute set + + +blockquote.properties +To set the style for block quotations. + + + + +<xsl:attribute-set name="blockquote.properties"> +<xsl:attribute name="margin-{$direction.align.start}">0.5in</xsl:attribute> +<xsl:attribute name="margin-{$direction.align.end}">0.5in</xsl:attribute> +<xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> +<xsl:attribute name="space-after.optimum">1em</xsl:attribute> +<xsl:attribute name="space-after.maximum">2em</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The blockquote.properties attribute set specifies +the formating properties of block quotations. + + + + + + +ulink.show +boolean + + +ulink.show +Display URLs after ulinks? + + + + +<xsl:param name="ulink.show" select="1"></xsl:param> + + + +Description + +If non-zero, the URL of each ulink will +appear after the text of the link. If the text of the link and the URL +are identical, the URL is suppressed. + +See also ulink.footnotes. + +DocBook 5 does not have an ulink element. When processing +DocBoook 5 documents, ulink.show applies to all inline +elements that are marked up with xlink:href attributes +that point to external resources. + + + + + + + +ulink.footnotes +boolean + + +ulink.footnotes +Generate footnotes for ulinks? + + + + +<xsl:param name="ulink.footnotes" select="0"></xsl:param> + + + +Description + +If non-zero, and if ulink.show also is non-zero, +the URL of each ulink will appear as a footnote. + +DocBook 5 does not have an ulink element. When processing +DocBoook 5 documents, ulink.footnotes applies to all inline +elements that are marked up with xlink:href attributes +that point to external resources. + + + + + + + +ulink.hyphenate +string + + +ulink.hyphenate +Allow URLs to be automatically hyphenated + + + + +<xsl:param name="ulink.hyphenate"></xsl:param> + + + +Description + +If not empty, the specified character (or more generally, content) is +added to URLs after every character included in the string +in the ulink.hyphenate.chars parameter (default +is /). If the character in this parameter is a +Unicode soft hyphen (0x00AD) or Unicode zero-width space (0x200B), some FO +processors will be able to reasonably hyphenate long URLs. + +As of 28 Jan 2002, discretionary hyphens are more widely and correctly +supported than zero-width spaces for this purpose. + + + + + + +ulink.hyphenate.chars +string + + +ulink.hyphenate.chars +List of characters to allow ulink URLs to be automatically hyphenated on + + + + +<xsl:param name="ulink.hyphenate.chars">/</xsl:param> + + + +Description + +If the ulink.hyphenate is not empty, then +hyphenation of ulinks is turned on, and any +character contained in this parameter is treated as an allowable +hyphenation point. + +The default value is /, but the parameter +could be customized +to contain other URL characters, as for example: + +<xsl:param name="ulink.hyphenate.chars">:/@&?.#</xsl:param> + + + + + + + +shade.verbatim +boolean + + +shade.verbatim +Should verbatim environments be shaded? + + + +<xsl:param name="shade.verbatim" select="0"></xsl:param> + + +Description + +In the FO stylesheet, if this parameter is non-zero then the +shade.verbatim.style properties will be applied +to verbatim environments. + +In the HTML stylesheet, this parameter is now deprecated. Use +CSS instead. + + + + + + +shade.verbatim.style +attribute set + + +shade.verbatim.style +Properties that specify the style of shaded verbatim listings + + + + + +<xsl:attribute-set name="shade.verbatim.style"> + <xsl:attribute name="background-color">#E0E0E0</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties that specify the style of shaded verbatim listings. The +parameters specified (the border and background color) are added to +the styling of the xsl-fo output. A border might be specified as "thin +black solid" for example. See xsl-fo + + + + + + +hyphenate.verbatim +boolean + + +hyphenate.verbatim +Should verbatim environments be hyphenated on space characters? + + + +<xsl:param name="hyphenate.verbatim" select="0"></xsl:param> + + +Description + +If the lines of program listing are too long to fit into one +line it is quite common to split them at space and indicite by hook +arrow that code continues on the next line. You can turn on this +behaviour for programlisting, +screen and synopsis elements by +using this parameter. + +Note that you must also enable line wrapping for verbatim environments and +select appropriate hyphenation character (e.g. hook arrow). This can +be done using monospace.verbatim.properties +attribute set: + +<xsl:attribute-set name="monospace.verbatim.properties" + use-attribute-sets="verbatim.properties monospace.properties"> + <xsl:attribute name="wrap-option">wrap</xsl:attribute> + <xsl:attribute name="hyphenation-character">&#x25BA;</xsl:attribute> +</xsl:attribute-set> + +For a list of arrows available in Unicode see http://www.unicode.org/charts/PDF/U2190.pdf and http://www.unicode.org/charts/PDF/U2900.pdf and make sure that +selected character is available in the font you are using for verbatim +environments. + + + + + + +hyphenate.verbatim.characters +string + + +hyphenate.verbatim.characters +List of characters after which a line break can occur in listings + + + + +<xsl:param name="hyphenate.verbatim.characters"></xsl:param> + + + +Description + +If you enable hyphenate.verbatim line +breaks are allowed only on space characters. If this is not enough for +your document, you can specify list of additional characters after +which line break is allowed in this parameter. + + + + + + +use.svg +boolean + + +use.svg +Allow SVG in the result tree? + + + + +<xsl:param name="use.svg" select="1"></xsl:param> + + + +Description + +If non-zero, SVG will be considered an acceptable image format. SVG +is passed through to the result tree, so correct rendering of the resulting +diagram depends on the formatter (FO processor or web browser) that is used +to process the output from the stylesheet. + + + + + + +use.role.as.xrefstyle +boolean + + +use.role.as.xrefstyle +Use role attribute for +xrefstyle on xref? + + + + +<xsl:param name="use.role.as.xrefstyle" select="1"></xsl:param> + + + +Description + +In DocBook documents that conform to a schema older than V4.3, this parameter allows +role to serve the purpose of specifying the cross reference style. + +If non-zero, the role attribute on +xref will be used to select the cross reference style. +In DocBook V4.3, the xrefstyle attribute was added for this purpose. +If the xrefstyle attribute is present, +role will be ignored, regardless of the setting +of this parameter. + + + +Example + +The following small stylesheet shows how to configure the +stylesheets to make use of the cross reference style: + +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.0"> + +<xsl:import href="../xsl/html/docbook.xsl"/> + +<xsl:output method="html"/> + +<xsl:param name="local.l10n.xml" select="document('')"/> +<l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"> + <l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en"> + <l:context name="xref"> + <l:template name="chapter" style="title" text="Chapter %n, %t"/> + <l:template name="chapter" text="Chapter %n"/> + </l:context> + </l:l10n> +</l:i18n> + +</xsl:stylesheet> + +With this stylesheet, the cross references in the following document: + +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> +<book id="book"><title>Book</title> + +<preface> +<title>Preface</title> + +<para>Normal: <xref linkend="ch1"/>.</para> +<para>Title: <xref xrefstyle="title" linkend="ch1"/>.</para> + +</preface> + +<chapter id="ch1"> +<title>First Chapter</title> + +<para>Irrelevant.</para> + +</chapter> +</book> + +will appear as: + + +Normal: Chapter 1. +Title: Chapter 1, First Chapter. + + + + + + + +menuchoice.separator +string + + +menuchoice.separator +Separator between items of a menuchoice +other than guimenuitem and +guisubmenu + + + + +<xsl:param name="menuchoice.separator">+</xsl:param> + + + +Description + +Separator used to connect items of a menuchoice other +than guimenuitem and guisubmenu. The latter +elements are linked with menuchoice.menu.separator. + + + + + + + +menuchoice.menu.separator +string + + +menuchoice.menu.separator +Separator between items of a menuchoice +with guimenuitem or +guisubmenu + + + + +<xsl:param name="menuchoice.menu.separator"> → </xsl:param> + + + +Description + +Separator used to connect items of a menuchoice with +guimenuitem or guisubmenu. Other elements +are linked with menuchoice.separator. + +The default value is &#x2192;, which is the +&rarr; (right arrow) character entity. +The current FOP (0.20.5) requires setting the font-family +explicitly. + +The default value also includes spaces around the arrow, +which will allow a line to break. Replace the spaces with +&#xA0; (nonbreaking space) if you don't want those +spaces to break. + + + + + + + +default.float.class +string + + +default.float.class +Specifies the default float class + + + + +<xsl:param name="default.float.class"> + <xsl:choose> + <xsl:when test="contains($stylesheet.result.type,'html')">left</xsl:when> + <xsl:otherwise>before</xsl:otherwise> + </xsl:choose> +</xsl:param> + + + +Description + +Selects the direction in which a float should be placed. for +xsl-fo this is before, for html it is left. For Western texts, the +before direction is the top of the page. + + + + + + +footnote.number.format +list +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +footnote.number.format +Identifies the format used for footnote numbers + + + + +<xsl:param name="footnote.number.format">1</xsl:param> + + + +Description + +The footnote.number.format specifies the format +to use for footnote numeration (1, i, I, a, or A). + + + + + + +table.footnote.number.format +list +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +table.footnote.number.format +Identifies the format used for footnote numbers in tables + + + + +<xsl:param name="table.footnote.number.format">a</xsl:param> + + + +Description + +The table.footnote.number.format specifies the format +to use for footnote numeration (1, i, I, a, or A) in tables. + + + + + + +footnote.number.symbols + + + +footnote.number.symbols +Special characters to use as footnote markers + + + + +<xsl:param name="footnote.number.symbols"></xsl:param> + + + +Description + +If footnote.number.symbols is not the empty string, +footnotes will use the characters it contains as footnote symbols. For example, +*&#x2020;&#x2021;&#x25CA;&#x2720; will identify +footnotes with *, , , +, and . If there are more footnotes +than symbols, the stylesheets will fall back to numbered footnotes using +footnote.number.format. + +The use of symbols for footnotes depends on the ability of your +processor (or browser) to render the symbols you select. Not all systems are +capable of displaying the full range of Unicode characters. If the quoted characters +in the preceding paragraph are not displayed properly, that's a good indicator +that you may have trouble using those symbols for footnotes. + + + + + + +table.footnote.number.symbols +string + + +table.footnote.number.symbols +Special characters to use a footnote markers in tables + + + + +<xsl:param name="table.footnote.number.symbols"></xsl:param> + + + +Description + +If table.footnote.number.symbols is not the empty string, +table footnotes will use the characters it contains as footnote symbols. For example, +*&#x2020;&#x2021;&#x25CA;&#x2720; will identify +footnotes with *, , , +, and . If there are more footnotes +than symbols, the stylesheets will fall back to numbered footnotes using +table.footnote.number.format. + +The use of symbols for footnotes depends on the ability of your +processor (or browser) to render the symbols you select. Not all systems are +capable of displaying the full range of Unicode characters. If the quoted characters +in the preceding paragraph are not displayed properly, that's a good indicator +that you may have trouble using those symbols for footnotes. + + + + + + +footnote.properties +attribute set + + +footnote.properties +Properties applied to each footnote body + + + + + +<xsl:attribute-set name="footnote.properties"> + <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"></xsl:value-of></xsl:attribute> + <xsl:attribute name="font-size"><xsl:value-of select="$footnote.font.size"></xsl:value-of></xsl:attribute> + <xsl:attribute name="font-weight">normal</xsl:attribute> + <xsl:attribute name="font-style">normal</xsl:attribute> + <xsl:attribute name="text-align"><xsl:value-of select="$alignment"></xsl:value-of></xsl:attribute> + <xsl:attribute name="start-indent">0pt</xsl:attribute> + <xsl:attribute name="text-indent">0pt</xsl:attribute> + <xsl:attribute name="hyphenate"><xsl:value-of select="$hyphenate"></xsl:value-of></xsl:attribute> + <xsl:attribute name="wrap-option">wrap</xsl:attribute> + <xsl:attribute name="linefeed-treatment">treat-as-space</xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is applied to the footnote-block +for each footnote. +It can be used to set the +font-size, font-family, and other inheritable properties that will be +applied to all footnotes. + + + + + + +table.footnote.properties +attribute set + + +table.footnote.properties +Properties applied to each table footnote body + + + + + +<xsl:attribute-set name="table.footnote.properties"> + <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"></xsl:value-of></xsl:attribute> + <xsl:attribute name="font-size"><xsl:value-of select="$footnote.font.size"></xsl:value-of></xsl:attribute> + <xsl:attribute name="font-weight">normal</xsl:attribute> + <xsl:attribute name="font-style">normal</xsl:attribute> + <xsl:attribute name="space-before">2pt</xsl:attribute> + <xsl:attribute name="text-align"><xsl:value-of select="$alignment"></xsl:value-of></xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is applied to the footnote-block +for each table footnote. +It can be used to set the +font-size, font-family, and other inheritable properties that will be +applied to all table footnotes. + + + + + + +footnote.mark.properties +attribute set + + +footnote.mark.properties +Properties applied to each footnote mark + + + + + +<xsl:attribute-set name="footnote.mark.properties"> + <xsl:attribute name="font-family"><xsl:value-of select="$body.fontset"></xsl:value-of></xsl:attribute> + <xsl:attribute name="font-size">75%</xsl:attribute> + <xsl:attribute name="font-weight">normal</xsl:attribute> + <xsl:attribute name="font-style">normal</xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is applied to the footnote mark used +for each footnote. +It should contain only inline properties. + + +The property to make the mark a superscript is contained in the +footnote template itself, because the current version of FOP reports +an error if baseline-shift is used. + + + + + + + +footnote.sep.leader.properties +attribute set + + +footnote.sep.leader.properties +Properties associated with footnote separators + + + + +<xsl:attribute-set name="footnote.sep.leader.properties"> + <xsl:attribute name="color">black</xsl:attribute> + <xsl:attribute name="leader-pattern">rule</xsl:attribute> + <xsl:attribute name="leader-length">1in</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The styling for the rule line that separates the +footnotes from the body text. +These are properties applied to the fo:leader used as +the separator. + +If you want to do more than just set properties on +the leader element, then you can customize the template +named footnote.separator in +fo/pagesetup.xsl. + + + + + + +xref.with.number.and.title +boolean + + +xref.with.number.and.title +Use number and title in cross references + + + + +<xsl:param name="xref.with.number.and.title" select="1"></xsl:param> + + + +Description + +A cross reference may include the number (for example, the number of +an example or figure) and the title which is a required child of some +targets. This parameter inserts both the relevant number as well as +the title into the link. + + + + + + +superscript.properties +attribute set + + +superscript.properties +Properties associated with superscripts + + + + +<xsl:attribute-set name="superscript.properties"> + <xsl:attribute name="font-size">75%</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Specifies styling properties for superscripts. + + + + + + +subscript.properties +attribute set + + +subscript.properties +Properties associated with subscripts + + + + +<xsl:attribute-set name="subscript.properties"> + <xsl:attribute name="font-size">75%</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Specifies styling properties for subscripts. + + + + + + +pgwide.properties +attribute set + + +pgwide.properties +Properties to make a figure or table page wide. + + + + + +<xsl:attribute-set name="pgwide.properties"> + <xsl:attribute name="start-indent">0pt</xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is used to set the properties +that make a figure or table "page wide" in fo output. +It comes into effect when an attribute pgwide="1" +is used. + + + +By default, it sets start-indent +to 0pt. +In a stylesheet that sets the parameter +body.start.indent +to a non-zero value in order to indent body text, +this attribute set can be used to outdent pgwide +figures to the start margin. + + +If a document uses a multi-column page layout, +then this attribute set could try setting span +to a value of all. However, this may +not work with some processors because a span property must be on an +fo:block that is a direct child of fo:flow. It may work in +some processors anyway. + + + + + + + +highlight.source +boolean + + +highlight.source +Should the content of programlisting +be syntactically highlighted? + + + + +<xsl:param name="highlight.source" select="0"></xsl:param> + + + +Description + +When this parameter is non-zero, the stylesheets will try to do syntax highlighting of the +content of programlisting elements. You specify the language for each programlisting +by using the language attribute. The highlight.default.language +parameter can be used to specify the language for programlistings without a language +attribute. Syntax highlighting also works for screen and synopsis elements. + +The actual highlighting work is done by the XSLTHL extension module. This is an external Java library that has to be +downloaded separately (see below). + + +In order to use this extension, you must + +add xslthl-2.x.x.jar to your Java classpath. The latest version is available +from the XSLT syntax highlighting project +at SourceForge. + + +use a customization layer in which you import one of the following stylesheet modules: + + + html/highlight.xsl + + + + xhtml/highlight.xsl + + + + xhtml-1_1/highlight.xsl + + + + fo/highlight.xsl + + + + + +let either the xslthl.config Java system property or the +highlight.xslthl.config parameter point to the configuration file for syntax +highlighting (using URL syntax). DocBook XSL comes with a ready-to-use configuration file, +highlighting/xslthl-config.xml. + + + +The extension works with Saxon 6.5.x and Xalan-J. (Saxon 8.5 or later is also supported, but since it is +an XSLT 2.0 processor it is not guaranteed to work with DocBook XSL in all circumstances.) + +The following is an example of a Saxon 6 command adapted for syntax highlighting, to be used on Windows: + + +java -cp c:/Java/saxon.jar;c:/Java/xslthl-2.0.1.jar +-Dxslthl.config=file:///c:/docbook-xsl/highlighting/xslthl-config.xml com.icl.saxon.StyleSheet +-o test.html test.xml myhtml.xsl + + + + + + + +highlight.xslthl.config +uri + + +highlight.xslthl.config +Location of XSLTHL configuration file + + + + +<xsl:param name="highlight.xslthl.config"></xsl:param> + + + +Description + +This location has precedence over the corresponding Java property. + +Please note that usually you have to specify location as URL not +just as a simple path on the local +filesystem. E.g. file:///home/user/xslthl/my-xslthl-config.xml. + + + + + + + + +highlight.default.language +string + + +highlight.default.language +Default language of programlisting + + + + +<xsl:param name="highlight.default.language"></xsl:param> + + + +Description + +This language is used when there is no language attribute on programlisting. + + + + + + +email.delimiters.enabled +boolean + + +email.delimiters.enabled +Generate delimiters around email addresses? + + + + +<xsl:param name="email.delimiters.enabled" select="1"></xsl:param> + + + +Description + +If non-zero, delimiters + +For delimiters, the +stylesheets are currently hard-coded to output angle +brackets. + +are generated around e-mail addresses +(the output of the email element). + + + + + + +email.mailto.enabled +boolean + + +email.mailto.enabled +Generate mailto: links for email addresses? + + + + +<xsl:param name="email.mailto.enabled" select="0"></xsl:param> + + + +Description + +If non-zero the generated output for the email element +will be a clickable mailto: link that brings up the default mail client +on the system. + + + + + + +section.container.element +list +block +wrapper + + +section.container.element +Select XSL-FO element name to contain sections + + + + +<xsl:param name="section.container.element">block</xsl:param> + + + +Description + +Selects the element name for outer container of +each section. The choices are block (default) +or wrapper. +The fo: namespace prefix is added +by the stylesheet to form the full element name. + + +This element receives the section id +attribute and the appropriate section level attribute-set. + + +Changing this parameter to wrapper +is only necessary when producing multi-column output +that contains page-wide spans. Using fo:wrapper +avoids the nesting of fo:block +elements that prevents spans from working (the standard says +a span must be on a block that is a direct child of +fo:flow). + + +If set to wrapper, the +section attribute-sets only support properties +that are inheritable. That's because there is no +block to apply them to. Properties such as +font-family are inheritable, but properties such as +border are not. + + +Only some XSL-FO processors need to use this parameter. +The Antenna House processor, for example, will handle +spans in nested blocks without changing the element name. +The RenderX XEP product and FOP follow the XSL-FO standard +and need to use wrapper. + + + + + + + +monospace.verbatim.font.width +length + + +monospace.verbatim.font.width +Width of a single monospace font character + + + + +<xsl:param name="monospace.verbatim.font.width">0.60em</xsl:param> + + + +Description + +Specifies with em units the width of a single character +of the monospace font. The default value is 0.6em. + +This parameter is only used when a screen +or programlisting element has a +width attribute, which is +expressed as a plain integer to indicate the maximum character count +of each line. +To convert this character count to an actual maximum width +measurement, the width of the font characters must be provided. +Different monospace fonts have different character width, +so this parameter should be adjusted to fit the +monospace font being used. + + + + + + + +exsl.node.set.available +boolean + + +exsl.node.set.available +Is the test function-available('exsl:node-set') true? + + + +<xsl:param name="exsl.node.set.available"> + <xsl:choose> + <xsl:when exsl:foo="" test="function-available('exsl:node-set') or contains(system-property('xsl:vendor'), 'Apache Software Foundation')">1</xsl:when> + <xsl:otherwise>0</xsl:otherwise> + </xsl:choose> +</xsl:param> + + + +Description + +If non-zero, +then the exsl:node-set() function is available to be used in +the stylesheet. +If zero, then the function is not available. +This param automatically detects the presence of +the function and does not normally need to be set manually. + +This param was created to handle a long-standing +bug in the Xalan processor that fails to detect the +function even though it is available. + + + + + + +bookmarks.collapse +boolean + + +bookmarks.collapse +Specifies the initial state of bookmarks + + + + +<xsl:param name="bookmarks.collapse" select="1"></xsl:param> + + + +Description + +If non-zero, the bookmark tree is collapsed so that only the +top-level bookmarks are displayed initially. Otherwise, the whole tree +of bookmarks is displayed. + +This parameter currently works with FOP 0.93 or later. + + + + + +Graphics + + +graphic.default.extension +string + + +graphic.default.extension +Default extension for graphic filenames + + + +<xsl:param name="graphic.default.extension"></xsl:param> + + +Description + +If a graphic or mediaobject +includes a reference to a filename that does not include an extension, +and the format attribute is +unspecified, the default extension will be used. + + + + + + + +default.image.width +length + + +default.image.width +The default width of images + + + + +<xsl:param name="default.image.width"></xsl:param> + + + +Description + +If specified, this value will be used for the +width attribute on images that do not specify any +viewport dimensions. + + + + + + +preferred.mediaobject.role +string + + +preferred.mediaobject.role +Select which mediaobject to use based on +this value of an object's role attribute. + + + + + +<xsl:param name="preferred.mediaobject.role"></xsl:param> + + + +Description + +A mediaobject may contain several objects such as imageobjects. +If the parameter use.role.for.mediaobject is +non-zero, then the role attribute on +imageobjects and other objects within a +mediaobject container will be used to select which object +will be used. If one of the objects has a role value that matches the +preferred.mediaobject.role parameter, then it +has first priority for selection. If more than one has such a role +value, the first one is used. + + +See the use.role.for.mediaobject parameter +for the sequence of selection. + + + + + +use.role.for.mediaobject +boolean + + +use.role.for.mediaobject +Use role attribute +value for selecting which of several objects within a mediaobject to use. + + + + + +<xsl:param name="use.role.for.mediaobject" select="1"></xsl:param> + + + +Description + +If non-zero, the role attribute on +imageobjects or other objects within a mediaobject container will be used to select which object will be +used. + + +The order of selection when then parameter is non-zero is: + + + + If the stylesheet parameter preferred.mediaobject.role has a value, then the object whose role equals that value is selected. + + +Else if an object's role attribute has a value of +html for HTML processing or +fo for FO output, then the first +of such objects is selected. + + + +Else the first suitable object is selected. + + + +If the value of +use.role.for.mediaobject +is zero, then role attributes are not considered +and the first suitable object +with or without a role value is used. + + + + + + +ignore.image.scaling +boolean + + +ignore.image.scaling +Tell the stylesheets to ignore the author's image scaling attributes + + + + +<xsl:param name="ignore.image.scaling" select="0"></xsl:param> + + + +Description + +If non-zero, the scaling attributes on graphics and media objects are +ignored. + + + + + + +img.src.path +string + + +img.src.path +Path to HTML/FO image files + + + +<xsl:param name="img.src.path"></xsl:param> + + +Description + +Add a path prefix to the value of the fileref +attribute of graphic, inlinegraphic, and imagedata elements. The resulting +compound path is used in the output as the value of the src +attribute of img (HTML) or external-graphic (FO). + + + +The path given by img.src.path could be relative to the directory where the HTML/FO +files are created, or it could be an absolute URI. +The default value is empty. +Be sure to include a trailing slash if needed. + + +This prefix is not applied to any filerefs that start +with "/" or contain "//:". + + + + + + + +keep.relative.image.uris +boolean + + +keep.relative.image.uris +Should image URIs be resolved against xml:base? + + + + + +<xsl:param name="keep.relative.image.uris" select="0"></xsl:param> + + + +Description + +If non-zero, relative URIs (in, for example +fileref attributes) will be used in the generated +output. Otherwise, the URIs will be made absolute with respect to the +base URI. + +Note that the stylesheets calculate (and use) the absolute form +for some purposes, this only applies to the resulting output. + + + + + +Pagination and General Styles + +
Understanding XSL FO Margins + +To make sense of the parameters in this section, it's useful to +consider . + +
+ Page Model + + + + + + + + Figure showing page margins + + This figure shows the physical page with the various FO page regions + identified. + + +
+ +First, let's consider the regions on the page. + +The white region is the physical page. Its dimensions are determined by +the page.height and page.width +parameters. + +The yellow region is the region-body. The size and placement of +the region body is constrained by the dimensions labelled in the +figure. + +The pink region at the top of the page is the region-before. The +darker area inside the region-before is the header text. In XSL, the default +display alignment for a region is before, but the +DocBook stylesheets still explicitly make it before. That's +why the darker area is at the top. + +The pink region at the bottom of the page is the region-after. +The darker area is the footer text. In XSL, the default display +alignment for a region is before, +but the DocBook stylesheets explicitly make it +after. That's why the darker area is at the bottom. + +The dimensions in the figure are: + + +The page-master margin-top. + +The region-before extent. + +The region-body margin-top. + +The region-after extent. + +The page-master margin-bottom. + +The region-body margin-bottom. + +The sum of the page-master margin-left and the +region-body margin-left. In DocBook, the region-body margin-left is +zero by default, so this is simply the page-master margin-left. + +The sum of the page-master margin-right and the +region-body margin-right. In DocBook, the region-body margin-right is +zero by default, so this is simply the page-master margin-right. + + + +
+
+ + + +page.height +length + + +page.height +The height of the physical page + + + +<xsl:param name="page.height"> + <xsl:choose> + <xsl:when test="$page.orientation = 'portrait'"> + <xsl:value-of select="$page.height.portrait"></xsl:value-of> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$page.width.portrait"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> +</xsl:param> + + +Description + +The page height is generally calculated from the +paper.type and +page.orientation parameters. + + + + + + + +page.height.portrait +length + + +page.height.portrait +Specify the physical size of the long edge of the page + + + +<xsl:param name="page.height.portrait"> + <xsl:choose> + <xsl:when test="$paper.type = 'A4landscape'">210mm</xsl:when> + <xsl:when test="$paper.type = 'USletter'">11in</xsl:when> + <xsl:when test="$paper.type = 'USlandscape'">8.5in</xsl:when> + <xsl:when test="$paper.type = '4A0'">2378mm</xsl:when> + <xsl:when test="$paper.type = '2A0'">1682mm</xsl:when> + <xsl:when test="$paper.type = 'A0'">1189mm</xsl:when> + <xsl:when test="$paper.type = 'A1'">841mm</xsl:when> + <xsl:when test="$paper.type = 'A2'">594mm</xsl:when> + <xsl:when test="$paper.type = 'A3'">420mm</xsl:when> + <xsl:when test="$paper.type = 'A4'">297mm</xsl:when> + <xsl:when test="$paper.type = 'A5'">210mm</xsl:when> + <xsl:when test="$paper.type = 'A6'">148mm</xsl:when> + <xsl:when test="$paper.type = 'A7'">105mm</xsl:when> + <xsl:when test="$paper.type = 'A8'">74mm</xsl:when> + <xsl:when test="$paper.type = 'A9'">52mm</xsl:when> + <xsl:when test="$paper.type = 'A10'">37mm</xsl:when> + <xsl:when test="$paper.type = 'B0'">1414mm</xsl:when> + <xsl:when test="$paper.type = 'B1'">1000mm</xsl:when> + <xsl:when test="$paper.type = 'B2'">707mm</xsl:when> + <xsl:when test="$paper.type = 'B3'">500mm</xsl:when> + <xsl:when test="$paper.type = 'B4'">353mm</xsl:when> + <xsl:when test="$paper.type = 'B5'">250mm</xsl:when> + <xsl:when test="$paper.type = 'B6'">176mm</xsl:when> + <xsl:when test="$paper.type = 'B7'">125mm</xsl:when> + <xsl:when test="$paper.type = 'B8'">88mm</xsl:when> + <xsl:when test="$paper.type = 'B9'">62mm</xsl:when> + <xsl:when test="$paper.type = 'B10'">44mm</xsl:when> + <xsl:when test="$paper.type = 'C0'">1297mm</xsl:when> + <xsl:when test="$paper.type = 'C1'">917mm</xsl:when> + <xsl:when test="$paper.type = 'C2'">648mm</xsl:when> + <xsl:when test="$paper.type = 'C3'">458mm</xsl:when> + <xsl:when test="$paper.type = 'C4'">324mm</xsl:when> + <xsl:when test="$paper.type = 'C5'">229mm</xsl:when> + <xsl:when test="$paper.type = 'C6'">162mm</xsl:when> + <xsl:when test="$paper.type = 'C7'">114mm</xsl:when> + <xsl:when test="$paper.type = 'C8'">81mm</xsl:when> + <xsl:when test="$paper.type = 'C9'">57mm</xsl:when> + <xsl:when test="$paper.type = 'C10'">40mm</xsl:when> + <xsl:otherwise>11in</xsl:otherwise> + </xsl:choose> +</xsl:param> + + +Description + +The portrait page height is the length of the long +edge of the physical page. + + + + + + + +page.margin.bottom +length + + +page.margin.bottom +The bottom margin of the page + + + + +<xsl:param name="page.margin.bottom">0.5in</xsl:param> + + + +Description + +The bottom page margin is the distance from the bottom of the region-after +to the physical bottom of the page. + + + + + + + +page.margin.inner +length + + +page.margin.inner +The inner page margin + + + +<xsl:param name="page.margin.inner"> + <xsl:choose> + <xsl:when test="$double.sided != 0">1.25in</xsl:when> + <xsl:otherwise>1in</xsl:otherwise> + </xsl:choose> +</xsl:param> + + +Description + +The inner page margin is the distance from bound edge of the +page to the first column of text. + +The inner page margin is the distance from bound edge of the +page to the outer edge of the first column of text. + +In left-to-right text direction, +this is the left margin of recto (front side) pages. +For single-sided output, it is the left margin +of all pages. + +In right-to-left text direction, +this is the right margin of recto pages. +For single-sided output, this is the +right margin of all pages. + + +Current versions (at least as of version 4.13) +of the XEP XSL-FO processor do not +correctly handle these margin settings for documents +with right-to-left text direction. +The workaround in that situation is to reverse +the values for page.margin.inner +and page.margin.outer, until +this bug is fixed by RenderX. It does not affect documents +with left-to-right text direction. + + + + + + + +page.margin.outer +length + + +page.margin.outer +The outer page margin + + + +<xsl:param name="page.margin.outer"> + <xsl:choose> + <xsl:when test="$double.sided != 0">0.75in</xsl:when> + <xsl:otherwise>1in</xsl:otherwise> + </xsl:choose> +</xsl:param> + + +Description + +The outer page margin is the distance from non-bound edge of the +page to the outer edge of the last column of text. + +In left-to-right text direction, +this is the right margin of recto (front side) pages. +For single-sided output, it is the right margin +of all pages. + +In right-to-left text direction, +this is the left margin of recto pages. +For single-sided output, this is the +left margin of all pages. + + +Current versions (at least as of version 4.13) +of the XEP XSL-FO processor do not +correctly handle these margin settings for documents +with right-to-left text direction. +The workaround in that situation is to reverse +the values for page.margin.inner +and page.margin.outer, until +this bug is fixed by RenderX. It does not affect documents +with left-to-right text direction. + + + + + + + +page.margin.top +length + + +page.margin.top +The top margin of the page + + + + +<xsl:param name="page.margin.top">0.5in</xsl:param> + + + +Description + +The top page margin is the distance from the physical top of the +page to the top of the region-before. + + + + + + +page.orientation +list +portrait +landscape + + +page.orientation +Select the page orientation + + + + +<xsl:param name="page.orientation">portrait</xsl:param> + + + +Description + + Select one from portrait or landscape. +In portrait orientation, the short edge is horizontal; in +landscape orientation, it is vertical. + + + + + + + +page.width +length + + +page.width +The width of the physical page + + + +<xsl:param name="page.width"> + <xsl:choose> + <xsl:when test="$page.orientation = 'portrait'"> + <xsl:value-of select="$page.width.portrait"></xsl:value-of> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$page.height.portrait"></xsl:value-of> + </xsl:otherwise> + </xsl:choose> +</xsl:param> + + +Description + +The page width is generally calculated from the +paper.type and +page.orientation parameters. + + + + + + +page.width.portrait +length + + +page.width.portrait +Specify the physical size of the short edge of the page + + + +<xsl:param name="page.width.portrait"> + <xsl:choose> + <xsl:when test="$paper.type = 'USletter'">8.5in</xsl:when> + <xsl:when test="$paper.type = '4A0'">1682mm</xsl:when> + <xsl:when test="$paper.type = '2A0'">1189mm</xsl:when> + <xsl:when test="$paper.type = 'A0'">841mm</xsl:when> + <xsl:when test="$paper.type = 'A1'">594mm</xsl:when> + <xsl:when test="$paper.type = 'A2'">420mm</xsl:when> + <xsl:when test="$paper.type = 'A3'">297mm</xsl:when> + <xsl:when test="$paper.type = 'A4'">210mm</xsl:when> + <xsl:when test="$paper.type = 'A5'">148mm</xsl:when> + <xsl:when test="$paper.type = 'A6'">105mm</xsl:when> + <xsl:when test="$paper.type = 'A7'">74mm</xsl:when> + <xsl:when test="$paper.type = 'A8'">52mm</xsl:when> + <xsl:when test="$paper.type = 'A9'">37mm</xsl:when> + <xsl:when test="$paper.type = 'A10'">26mm</xsl:when> + <xsl:when test="$paper.type = 'B0'">1000mm</xsl:when> + <xsl:when test="$paper.type = 'B1'">707mm</xsl:when> + <xsl:when test="$paper.type = 'B2'">500mm</xsl:when> + <xsl:when test="$paper.type = 'B3'">353mm</xsl:when> + <xsl:when test="$paper.type = 'B4'">250mm</xsl:when> + <xsl:when test="$paper.type = 'B5'">176mm</xsl:when> + <xsl:when test="$paper.type = 'B6'">125mm</xsl:when> + <xsl:when test="$paper.type = 'B7'">88mm</xsl:when> + <xsl:when test="$paper.type = 'B8'">62mm</xsl:when> + <xsl:when test="$paper.type = 'B9'">44mm</xsl:when> + <xsl:when test="$paper.type = 'B10'">31mm</xsl:when> + <xsl:when test="$paper.type = 'C0'">917mm</xsl:when> + <xsl:when test="$paper.type = 'C1'">648mm</xsl:when> + <xsl:when test="$paper.type = 'C2'">458mm</xsl:when> + <xsl:when test="$paper.type = 'C3'">324mm</xsl:when> + <xsl:when test="$paper.type = 'C4'">229mm</xsl:when> + <xsl:when test="$paper.type = 'C5'">162mm</xsl:when> + <xsl:when test="$paper.type = 'C6'">114mm</xsl:when> + <xsl:when test="$paper.type = 'C7'">81mm</xsl:when> + <xsl:when test="$paper.type = 'C8'">57mm</xsl:when> + <xsl:when test="$paper.type = 'C9'">40mm</xsl:when> + <xsl:when test="$paper.type = 'C10'">28mm</xsl:when> + <xsl:otherwise>8.5in</xsl:otherwise> + </xsl:choose> +</xsl:param> + + +Description + +The portrait page width is the length of the short +edge of the physical page. + + + + + + + +paper.type +list +open +open +USletter8.5x11in +USlandscape11x8.5in +USlegal8.5inx14in +USlegallandscape14inx8.5in +4A02378x1682mm +2A01682x1189mm +A01189x841mm +A1841x594mm +A2594x420mm +A3420x297mm +A4297x210mm +A5210x148mm +A6148x105mm +A7105x74mm +A874x52mm +A952x37mm +A1037x26mm +B01414x1000mm +B11000x707mm +B2707x500mm +B3500x353mm +B4353x250mm +B5250x176mm +B6176x125mm +B7125x88mm +B888x62mm +B962x44mm +B1044x31mm +C01297x917mm +C1917x648mm +C2648x458mm +C3458x324mm +C4324x229mm +C5229x162mm +C6162x114mm +C7114x81mm +C881x57mm +C957x40mm +C1040x28mm + + +paper.type +Select the paper type + + + + +<xsl:param name="paper.type">USletter</xsl:param> + + + +Description + +The paper type is a convenient way to specify the paper size. +The list of known paper sizes includes USletter and most of the A, +B, and C sizes. See page.width.portrait, for example. + + + + + + + + + +double.sided +boolean + + +double.sided +Is the document to be printed double sided? + + + + +<xsl:param name="double.sided" select="0"></xsl:param> + + + +Description + +Double-sided documents are printed with a slightly wider margin +on the binding edge of the page. + +FIXME: The current set of parameters does not take writing direction +into account. + + + + + + +body.margin.bottom +length + + +body.margin.bottom +The bottom margin of the body text + + + + +<xsl:param name="body.margin.bottom">0.5in</xsl:param> + + + +Description + +The body bottom margin is the distance from the last line of text +in the page body to the bottom of the region-after. + + + + + + + +body.margin.top +length + + +body.margin.top +To specify the size of the top margin of a page + + + + +<xsl:param name="body.margin.top">0.5in</xsl:param> + + + +Description + +The body top margin is the distance from the top of the +region-before to the first line of text in the page body. + + + + + + +body.start.indent +length + + +body.start.indent +The start-indent for the body text + + + + +<xsl:param name="body.start.indent"> + <xsl:choose> + <xsl:when test="$fop.extensions != 0">0pt</xsl:when> + <xsl:when test="$passivetex.extensions != 0">0pt</xsl:when> + <xsl:otherwise>4pc</xsl:otherwise> + </xsl:choose> +</xsl:param> + + + +Description + +This parameter provides +the means of indenting the body text relative to +section titles. +For left-to-right text direction, it indents the left side. +For right-to-left text direction, it indents the right side. +It is used in place of the +title.margin.left for +all XSL-FO processors except FOP 0.25. +It enables support for side floats to appear +in the indented margin area. + +This start-indent property is added to the fo:flow +for certain page sequences. Which page-sequences it is +applied to is determined by the template named +set.flow.properties. +By default, that template adds it to the flow +for page-sequences using the body +master-reference, as well as appendixes and prefaces. + +If this parameter is used, section titles should have +a start-indent value of 0pt if they are to be +outdented relative to the body text. + + +If you are using FOP, then set this parameter to a zero +width value and set the title.margin.left +parameter to the negative value of the desired indent. + + +See also body.end.indent and +title.margin.left. + + + + + + + +body.end.indent +length + + +body.end.indent +The end-indent for the body text + + + + +<xsl:param name="body.end.indent">0pt</xsl:param> + + + +Description + +This end-indent property is added to the fo:flow +for certain page sequences. Which page-sequences it is +applied to is determined by the template named +set.flow.properties. +By default, that template adds it to the flow +for page-sequences using the body +master-reference, as well as appendixes and prefaces. + + +See also body.start.indent. + + + + + + + +alignment + list + open + left + start + right + end + center + justify + + +alignment +Specify the default text alignment + + + +<xsl:param name="alignment">justify</xsl:param> + + +Description + +The default text alignment is used for most body text. +Allowed values are +left, +right, +start, +end, +center, +justify. +The default value is justify. + + + + + + + +hyphenate +list +closed +true +false + + +hyphenate +Specify hyphenation behavior + + + +<xsl:param name="hyphenate">true</xsl:param> + + +Description + +If true, words may be hyphenated. Otherwise, they may not. + + + + + + + +line-height +string + + +line-height +Specify the line-height property + + + + +<xsl:param name="line-height">normal</xsl:param> + + + +Description + +Sets the line-height property. + + + + + + +column.count.back +integer + + +column.count.back +Number of columns on back matter pages + + + + +<xsl:param name="column.count.back" select="1"></xsl:param> + + + +Description + +Number of columns on back matter (appendix, glossary, etc.) pages. + + + + + + +column.count.body +integer + + +column.count.body +Number of columns on body pages + + + + +<xsl:param name="column.count.body" select="1"></xsl:param> + + + +Description + +Number of columns on body pages. + + + + + + +column.count.front +integer + + +column.count.front +Number of columns on front matter pages + + + + +<xsl:param name="column.count.front" select="1"></xsl:param> + + + +Description + +Number of columns on front matter (dedication, preface, etc.) pages. + + + + + + +column.count.index +integer + + +column.count.index +Number of columns on index pages + + + + +<xsl:param name="column.count.index">2</xsl:param> + + + +Description + +Number of columns on index pages. + + + + + + +column.count.lot +integer + + +column.count.lot +Number of columns on a 'List-of-Titles' page + + + + +<xsl:param name="column.count.lot" select="1"></xsl:param> + + + +Description + +Number of columns on a page sequence containing the Table of Contents, +List of Figures, etc. + + + + + + +column.count.titlepage +integer + + +column.count.titlepage +Number of columns on a title page + + + + +<xsl:param name="column.count.titlepage" select="1"></xsl:param> + + + +Description + +Number of columns on a title page + + + + + + +column.gap.back +length + + +column.gap.back +Gap between columns in back matter + + + + +<xsl:param name="column.gap.back">12pt</xsl:param> + + + +Description + +Specifies the gap between columns in back matter (if +column.count.back is greater than one). + + + + + + +column.gap.body +length + + +column.gap.body +Gap between columns in the body + + + + +<xsl:param name="column.gap.body">12pt</xsl:param> + + + +Description + +Specifies the gap between columns in body matter (if +column.count.body is greater than one). + + + + + + +column.gap.front +length + + +column.gap.front +Gap between columns in the front matter + + + + +<xsl:param name="column.gap.front">12pt</xsl:param> + + + +Description + +Specifies the gap between columns in front matter (if +column.count.front is greater than one). + + + + + + +column.gap.index +length + + +column.gap.index +Gap between columns in the index + + + + +<xsl:param name="column.gap.index">12pt</xsl:param> + + + +Description + +Specifies the gap between columns in indexes (if +column.count.index is greater than one). + + + + + + +column.gap.lot +length + + +column.gap.lot +Gap between columns on a 'List-of-Titles' page + + + + +<xsl:param name="column.gap.lot">12pt</xsl:param> + + + +Description + +Specifies the gap between columns on 'List-of-Titles' pages (if +column.count.lot is greater than one). + + + + + + +column.gap.titlepage +length + + +column.gap.titlepage +Gap between columns on title pages + + + + +<xsl:param name="column.gap.titlepage">12pt</xsl:param> + + + +Description + +Specifies the gap between columns on title pages (if +column.count.titlepage is greater than one). + + + + + + + +region.after.extent +length + + +region.after.extent +Specifies the height of the footer. + + + + +<xsl:param name="region.after.extent">0.4in</xsl:param> + + + +Description + +The region after extent is the height of the area where footers +are printed. + + + + + + + +region.before.extent +length + + +region.before.extent +Specifies the height of the header + + + + +<xsl:param name="region.before.extent">0.4in</xsl:param> + + + +Description + +The region before extent is the height of the area where headers +are printed. + + + + + + + +default.units +list +cm +mm +in +pt +pc +px +em + + +default.units +Default units for an unqualified dimension + + + + +<xsl:param name="default.units">pt</xsl:param> + + + +Description + +If an unqualified dimension is encountered (for example, in a +graphic width), the default.units will be used for the +units. Unqualified dimensions are not allowed in XSL Formatting Objects. + + + + + + + +normal.para.spacing +attribute set + + +normal.para.spacing +What space do you want between normal paragraphs + + + +<xsl:attribute-set name="normal.para.spacing"> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> + +Description +Specify the spacing required between normal paragraphs + + + + + +body.font.master + number + + +body.font.master +Specifies the default point size for body text + + + + +<xsl:param name="body.font.master">10</xsl:param> + + + +Description + +The body font size is specified in two parameters +(body.font.master and body.font.size) +so that math can be performed on the font size by XSLT. + + + + + + + +body.font.size +length + + +body.font.size +Specifies the default font size for body text + + + + +<xsl:param name="body.font.size"> + <xsl:value-of select="$body.font.master"></xsl:value-of><xsl:text>pt</xsl:text> +</xsl:param> + + +Description + +The body font size is specified in two parameters +(body.font.master and body.font.size) +so that math can be performed on the font size by XSLT. + + + + + + + +footnote.font.size +length + + +footnote.font.size +The font size for footnotes + + + +<xsl:param name="footnote.font.size"> + <xsl:value-of select="$body.font.master * 0.8"></xsl:value-of><xsl:text>pt</xsl:text> +</xsl:param> + + +Description + +The footnote font size is used for...footnotes! + + + + + + + +title.margin.left +length + + +title.margin.left +Adjust the left margin for titles + + + + +<xsl:param name="title.margin.left"> + <xsl:choose> + <xsl:when test="$fop.extensions != 0">-4pc</xsl:when> + <xsl:when test="$passivetex.extensions != 0">0pt</xsl:when> + <xsl:otherwise>0pt</xsl:otherwise> + </xsl:choose> +</xsl:param> + + + +Description + +This parameter provides +the means of adjusting the left margin for titles +when the XSL-FO processor being used is +an old version of FOP (0.25 and earlier). +It is only useful when the fop.extensions +is nonzero. + +The left margin of the body region +is calculated to include this space, +and titles are outdented to the left outside +the body region by this amount, +effectively leaving titles at the intended left margin +and the body text indented. +Currently this method is only used for old FOP because +it cannot properly use the body.start.indent +parameter. + + +The default value when the fop.extensions +parameter is nonzero is -4pc, which means the +body text is indented 4 picas relative to +the titles. +The default value when the fop.extensions +parameter equals zero is 0pt, and +the body indent should instead be specified +using the body.start.indent +parameter. + + +If you set the value to zero, be sure to still include +a unit indicator such as 0pt, or +the FO processor will report errors. + + + + + + + +draft.mode +list +no +yes +maybe + + +draft.mode +Select draft mode + + + + +<xsl:param name="draft.mode">no</xsl:param> + + + +Description + +Selects draft mode. If draft.mode is +yes, the entire document will be treated +as a draft. If it is no, the entire document +will be treated as a final copy. If it is maybe, +individual sections will be treated as draft or final independently, depending +on how their status attribute is set. + + + + + + + +draft.watermark.image +uri + + +draft.watermark.image +The URI of the image to be used for draft watermarks + + + + +<xsl:param name="draft.watermark.image">images/draft.png</xsl:param> + + + +Description + +The image to be used for draft watermarks. + + + + + + +headers.on.blank.pages +boolean + + +headers.on.blank.pages +Put headers on blank pages? + + + + +<xsl:param name="headers.on.blank.pages" select="1"></xsl:param> + + + +Description + +If non-zero, headers will be placed on blank pages. + + + + + + +footers.on.blank.pages +boolean + + +footers.on.blank.pages +Put footers on blank pages? + + + + +<xsl:param name="footers.on.blank.pages" select="1"></xsl:param> + + + +Description + +If non-zero, footers will be placed on blank pages. + + + + + + +header.rule +boolean + + +header.rule +Rule under headers? + + + + +<xsl:param name="header.rule" select="1"></xsl:param> + + + +Description + +If non-zero, a rule will be drawn below the page headers. + + + + + + +footer.rule +boolean + + +footer.rule +Rule over footers? + + + + +<xsl:param name="footer.rule" select="1"></xsl:param> + + + +Description + +If non-zero, a rule will be drawn above the page footers. + + + + + + +header.column.widths +string + + +header.column.widths +Specify relative widths of header areas + + + +<xsl:param name="header.column.widths">1 1 1</xsl:param> + + +Description + +Page headers in print output use a three column table +to position text at the left, center, and right side of +the header on the page. +This parameter lets you specify the relative sizes of the +three columns. The default value is +"1 1 1". + +The parameter value must be three numbers, separated +by white space. The first number represents the relative +width of the inside header for +double-sided output. The second number is the relative +width of the center header. The third number is the +relative width of the outside header for +double-sided output. + +For single-sided output, the first number is the +relative width of left header for left-to-right +text direction, or the right header for right-to-left +text direction. +The third number is the +relative width of right header for left-to-right +text direction, or the left header for right-to-left +text direction. + +The numbers are used to specify the column widths +for the table that makes up the header area. +In the FO output, this looks like: + + + +<fo:table-column column-number="1" + column-width="proportional-column-width(1)"/> + + + +The proportional-column-width() +function computes a column width by dividing its +argument by the total of the arguments for all the columns, and +then multiplying the result by the width of the whole table +(assuming all the column specs use the function). +Its argument can be any positive integer or floating point number. +Zero is an acceptable value, although some FO processors +may warn about it, in which case using a very small number might +be more satisfactory. + + +For example, the value "1 2 1" means the center +header should have twice the width of the other areas. +A value of "0 0 1" means the entire header area +is reserved for the right (or outside) header text. +Note that to keep the center area centered on +the page, the left and right values must be +the same. A specification like "1 2 3" means the +center area is no longer centered on the page +since the right area is three times the width of the left area. + + + + + + + +footer.column.widths +string + + +footer.column.widths +Specify relative widths of footer areas + + + +<xsl:param name="footer.column.widths">1 1 1</xsl:param> + + +Description + +Page footers in print output use a three column table +to position text at the left, center, and right side of +the footer on the page. +This parameter lets you specify the relative sizes of the +three columns. The default value is +"1 1 1". + +The parameter value must be three numbers, separated +by white space. The first number represents the relative +width of the inside footer for +double-sided output. The second number is the relative +width of the center footer. The third number is the +relative width of the outside footer for +double-sided output. + +For single-sided output, the first number is the +relative width of left footer for left-to-right +text direction, or the right footer for right-to-left +text direction. +The third number is the +relative width of right footer for left-to-right +text direction, or the left footer for right-to-left +text direction. + +The numbers are used to specify the column widths +for the table that makes up the footer area. +In the FO output, this looks like: + + + +<fo:table-column column-number="1" + column-width="proportional-column-width(1)"/> + + + +The proportional-column-width() +function computes a column width by dividing its +argument by the total of the arguments for all the columns, and +then multiplying the result by the width of the whole table +(assuming all the column specs use the function). +Its argument can be any positive integer or floating point number. +Zero is an acceptable value, although some FO processors +may warn about it, in which case using a very small number might +be more satisfactory. + + +For example, the value "1 2 1" means the center +footer should have twice the width of the other areas. +A value of "0 0 1" means the entire footer area +is reserved for the right (or outside) footer text. +Note that to keep the center area centered on +the page, the left and right values must be +the same. A specification like "1 2 3" means the +center area is no longer centered on the page +since the right area is three times the width of the left area. + + + + + + + +header.table.properties +attribute set + + +header.table.properties +Apply properties to the header layout table + + + + +<xsl:attribute-set name="header.table.properties"> + <xsl:attribute name="table-layout">fixed</xsl:attribute> + <xsl:attribute name="width">100%</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties applied to the table that lays out the page header. + + + + + + +header.table.height +length + + +header.table.height +Specify the minimum height of the table containing the running page headers + + + +<xsl:param name="header.table.height">14pt</xsl:param> + + +Description + +Page headers in print output use a three column table +to position text at the left, center, and right side of +the header on the page. +This parameter lets you specify the minimum height +of the single row in the table. +Since this specifies only the minimum height, +the table should automatically grow to fit taller content. +The default value is "14pt". + + + + + + +footer.table.properties +attribute set + + +footer.table.properties +Apply properties to the footer layout table + + + + +<xsl:attribute-set name="footer.table.properties"> + <xsl:attribute name="table-layout">fixed</xsl:attribute> + <xsl:attribute name="width">100%</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties applied to the table that lays out the page footer. + + + + + + +footer.table.height +length + + +footer.table.height +Specify the minimum height of the table containing the running page footers + + + +<xsl:param name="footer.table.height">14pt</xsl:param> + + +Description + +Page footers in print output use a three column table +to position text at the left, center, and right side of +the footer on the page. +This parameter lets you specify the minimum height +of the single row in the table. +Since this specifies only the minimum height, +the table should automatically grow to fit taller content. +The default value is "14pt". + + + + + + +header.content.properties +attribute set + + +header.content.properties +Properties of page header content + + + + +<xsl:attribute-set name="header.content.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$body.fontset"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="margin-left"> + <xsl:value-of select="$title.margin.left"></xsl:value-of> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties of page header content. + + + + + + +footer.content.properties +attribute set + + +footer.content.properties +Properties of page footer content + + + + +<xsl:attribute-set name="footer.content.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$body.fontset"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="margin-left"> + <xsl:value-of select="$title.margin.left"></xsl:value-of> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +Properties of page footer content. + + + + + + +marker.section.level +integer + + +marker.section.level +Control depth of sections shown in running headers or footers + + + + +<xsl:param name="marker.section.level">2</xsl:param> + + + +Description + +The marker.section.level parameter +controls the depth of section levels that may be displayed +in running headers and footers. For example, if the value +is 2 (the default), then titles from sect1 and +sect2 or equivalent section +elements are candidates for use in running headers and +footers. + +Each candidate title is marked in the FO output with a +<fo:marker marker-class-name="section.head.marker"> +element. + +In order for such titles to appear in headers +or footers, the header.content +or footer.content template +must be customized to retrieve the marker using +an output element such as: + + +<fo:retrieve-marker retrieve-class-name="section.head.marker" + retrieve-position="first-including-carryover" + retrieve-boundary="page-sequence"/> + + + + + + +
+Font Families + + +body.font.family +list +open +serif +sans-serif +monospace + + +body.font.family +The default font family for body text + + + + +<xsl:param name="body.font.family">serif</xsl:param> + + + +Description + +The body font family is the default font used for text in the page body. + + + + + + + +dingbat.font.family +list +open +serif +sans-serif +monospace + + +dingbat.font.family +The font family for copyright, quotes, and other symbols + + + + +<xsl:param name="dingbat.font.family">serif</xsl:param> + + + +Description + +The dingbat font family is used for dingbats. If it is defined +as the empty string, no font change is effected around dingbats. + + + + + + + +monospace.font.family +string + + +monospace.font.family +The default font family for monospace environments + + + + +<xsl:param name="monospace.font.family">monospace</xsl:param> + + + +Description + +The monospace font family is used for verbatim environments +(program listings, screens, etc.). + + + + + + + +sans.font.family +string + + +sans.font.family +The default sans-serif font family + + + + +<xsl:param name="sans.font.family">sans-serif</xsl:param> + + + +Description + +The default sans-serif font family. At the present, this isn't +actually used by the stylesheets. + + + + + + + +title.font.family +list +open +serif +sans-serif +monospace + + +title.font.family +The default font family for titles + + + + +<xsl:param name="title.font.family">sans-serif</xsl:param> + + + +Description + +The title font family is used for titles (chapter, section, figure, +etc.) + + + + + + + +symbol.font.family +list +open +serif +sans-serif +monospace + + +symbol.font.family +The font families to be searched for symbols outside + of the body font + + + + +<xsl:param name="symbol.font.family">Symbol,ZapfDingbats</xsl:param> + + + +Description + +A typical body or title font does not contain all +the character glyphs that DocBook supports. This parameter +specifies additional fonts that should be searched for +special characters not in the normal font. +These symbol font names are automatically appended +to the body or title font family name when fonts +are specified in a +font-family +property in the FO output. + +The symbol font names should be entered as a +comma-separated list. The default value is +Symbol,ZapfDingbats. + + + + + + +Property Sets + + +formal.object.properties +attribute set + + +formal.object.properties +Properties associated with a formal object such as a figure, or other component that has a title + + + + +<xsl:attribute-set name="formal.object.properties"> + <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.maximum">2em</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> + <xsl:attribute name="space-after.optimum">1em</xsl:attribute> + <xsl:attribute name="space-after.maximum">2em</xsl:attribute> + <xsl:attribute name="keep-together.within-column">always</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The styling for formal objects in docbook. Specify the spacing +before and after the object. + + + + + + +formal.title.properties +attribute set + + +formal.title.properties +Style the title element of formal object such as a figure. + + + + +<xsl:attribute-set name="formal.title.properties" use-attribute-sets="normal.para.spacing"> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 1.2"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute> + <xsl:attribute name="space-after.optimum">0.6em</xsl:attribute> + <xsl:attribute name="space-after.maximum">0.8em</xsl:attribute> +</xsl:attribute-set> + + +Description +Specify how the title should be styled. Specify the font size and weight of the title of the formal object. + + + + + +informal.object.properties +attribute set + + +informal.object.properties +Properties associated with an informal (untitled) object, such as an informalfigure + + + +<xsl:attribute-set name="informal.object.properties"> + <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.maximum">2em</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.5em</xsl:attribute> + <xsl:attribute name="space-after.optimum">1em</xsl:attribute> + <xsl:attribute name="space-after.maximum">2em</xsl:attribute> +</xsl:attribute-set> + +Description +The styling for informal objects in docbook. Specify the spacing before and after the object. + + + + + +monospace.properties +attribute set + + +monospace.properties +Properties of monospaced content + + + + +<xsl:attribute-set name="monospace.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$monospace.font.family"></xsl:value-of> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +Specifies the font name for monospaced output. This property set +used to set the font-size as well, but that doesn't work very well +when different fonts are used (as they are in titles and paragraphs, +for example). + +If you want to set the font-size in a customization layer, it's +probably going to be more appropriate to set font-size-adjust, if your +formatter supports it. + + + + + + +verbatim.properties +attribute set + + +verbatim.properties +Properties associated with verbatim text + + + + +<xsl:attribute-set name="verbatim.properties"> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> + <xsl:attribute name="space-after.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-after.optimum">1em</xsl:attribute> + <xsl:attribute name="space-after.maximum">1.2em</xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="wrap-option">no-wrap</xsl:attribute> + <xsl:attribute name="white-space-collapse">false</xsl:attribute> + <xsl:attribute name="white-space-treatment">preserve</xsl:attribute> + <xsl:attribute name="linefeed-treatment">preserve</xsl:attribute> + <xsl:attribute name="text-align">start</xsl:attribute> +</xsl:attribute-set> + + +Description +This attribute set is used on all verbatim environments. + + + + + + +monospace.verbatim.properties +attribute set + + +monospace.verbatim.properties +What font and size do you want for monospaced content? + + + + +<xsl:attribute-set name="monospace.verbatim.properties" use-attribute-sets="verbatim.properties monospace.properties"> + <xsl:attribute name="text-align">start</xsl:attribute> + <xsl:attribute name="wrap-option">no-wrap</xsl:attribute> +</xsl:attribute-set> + + +Description +Specify the font name and size you want for monospaced output + + + + + +sidebar.properties +attribute set + + +sidebar.properties +Attribute set for sidebar properties + + + + +<xsl:attribute-set name="sidebar.properties" use-attribute-sets="formal.object.properties"> + <xsl:attribute name="border-style">solid</xsl:attribute> + <xsl:attribute name="border-width">1pt</xsl:attribute> + <xsl:attribute name="border-color">black</xsl:attribute> + <xsl:attribute name="background-color">#DDDDDD</xsl:attribute> + <xsl:attribute name="padding-start">12pt</xsl:attribute> + <xsl:attribute name="padding-end">12pt</xsl:attribute> + <xsl:attribute name="padding-top">6pt</xsl:attribute> + <xsl:attribute name="padding-bottom">6pt</xsl:attribute> + <xsl:attribute name="margin-{$direction.align.start}">0pt</xsl:attribute> + <xsl:attribute name="margin-{$direction.align.end}">0pt</xsl:attribute> +<!-- + <xsl:attribute name="margin-top">6pt</xsl:attribute> + <xsl:attribute name="margin-bottom">6pt</xsl:attribute> +--> +</xsl:attribute-set> + + + +Description + +The styling for sidebars. + + + + + + +sidebar.title.properties +attribute set + + +sidebar.title.properties +Attribute set for sidebar titles + + + + +<xsl:attribute-set name="sidebar.title.properties"> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="text-align">start</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The styling for sidebars titles. + + + + + + +sidebar.float.type +list +none +before +left +start +right +end +inside +outside + + +sidebar.float.type +Select type of float for sidebar elements + + + + +<xsl:param name="sidebar.float.type">none</xsl:param> + + + +Description + +Selects the type of float for sidebar elements. + + + +If sidebar.float.type is +none, then +no float is used. + + + +If sidebar.float.type is +before, then +the float appears at the top of the page. On some processors, +that may be the next page rather than the current page. + + + + +If sidebar.float.type is +left, +then a left side float is used. + + + + +If sidebar.float.type is +start, +then when the text direction is left-to-right a left side float is used. +When the text direction is right-to-left, a right side float is used. + + + + +If sidebar.float.type is +right, +then a right side float is used. + + + + +If sidebar.float.type is +end, +then when the text direction is left-to-right a right side float is used. +When the text direction is right-to-left, a left side float is used. + + + + +If your XSL-FO processor supports floats positioned on the +inside or +outside +of double-sided pages, then you have those two +options for side floats as well. + + + + + + + + + +sidebar.float.width +length + + +sidebar.float.width +Set the default width for sidebars + + + + +<xsl:param name="sidebar.float.width">1in</xsl:param> + + + +Description + +Sets the default width for sidebars when used as a side float. +The width determines the degree to which the sidebar block intrudes into +the text area. + +If sidebar.float.type is +before or +none, then +this parameter is ignored. + + + + + + + +margin.note.properties +attribute set + + +margin.note.properties +Attribute set for margin.note properties + + + + +<xsl:attribute-set name="margin.note.properties"> + <xsl:attribute name="font-size">90%</xsl:attribute> + <xsl:attribute name="text-align">start</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The styling for margin notes. +By default, margin notes are not implemented for any +element. A stylesheet customization is needed to make +use of this attribute-set. + +You can use a template named floater +to create the customization. +That template can create side floats by specifying the +content and characteristics as template parameters. + + +For example: +<xsl:template match="para[@role='marginnote']"> + <xsl:call-template name="floater"> + <xsl:with-param name="position"> + <xsl:value-of select="$margin.note.float.type"/> + </xsl:with-param> + <xsl:with-param name="width"> + <xsl:value-of select="$margin.note.width"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-imports/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + + + + + + +margin.note.title.properties +attribute set + + +margin.note.title.properties +Attribute set for margin note titles + + + + +<xsl:attribute-set name="margin.note.title.properties"> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="text-align">start</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The styling for margin note titles. + + + + + + +margin.note.float.type +list +none +before +left +start +right +end +inside +outside + + +margin.note.float.type +Select type of float for margin note customizations + + + + +<xsl:param name="margin.note.float.type">none</xsl:param> + + + +Description + +Selects the type of float for margin notes. +DocBook does not define a margin note element, so this +feature must be implemented as a customization of the stylesheet. +See margin.note.properties for +an example. + + + +If margin.note.float.type is +none, then +no float is used. + + + +If margin.note.float.type is +before, then +the float appears at the top of the page. On some processors, +that may be the next page rather than the current page. + + + +If margin.note.float.type is +left or +start, then +a left side float is used. + + + +If margin.note.float.type is +right or +end, then +a right side float is used. + + + +If your XSL-FO processor supports floats positioned on the +inside or +outside +of double-sided pages, then you have those two +options for side floats as well. + + + + + + + + + +margin.note.width +length + + +margin.note.width +Set the default width for margin notes + + + + +<xsl:param name="margin.note.width">1in</xsl:param> + + + +Description + +Sets the default width for margin notes when used as a side +float. The width determines the degree to which the margin note block +intrudes into the text area. + +If margin.note.float.type is +before or +none, then +this parameter is ignored. + + + + + + + +component.title.properties +attribute set + + +component.title.properties +Properties for component titles + + + + +<xsl:attribute-set name="component.title.properties"> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master, 'pt')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master, 'pt * 0.8')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master, 'pt * 1.2')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="text-align"> + <xsl:choose> + <xsl:when test="((parent::article | parent::articleinfo | parent::info/parent::article) and not(ancestor::book) and not(self::bibliography)) or (parent::slides | parent::slidesinfo)">center</xsl:when> + <xsl:otherwise>start</xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"></xsl:value-of></xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties common to all component titles. + + + + + + +component.titlepage.properties +attribute set + + +component.titlepage.properties +Properties for component titlepages + + + + +<xsl:attribute-set name="component.titlepage.properties"> +</xsl:attribute-set> + + + +Description + +The properties that are applied to the outer block containing +all the component title page information. +Its main use is to set a span="all" +property on the block that is a direct child of the flow. + +This attribute-set also applies to index titlepages. It is empty by default. + + + + + + +section.title.properties +attribute set + + +section.title.properties +Properties for section titles + + + + +<xsl:attribute-set name="section.title.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$title.font.family"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <!-- font size is calculated dynamically by section.heading template --> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> + <xsl:attribute name="text-align">start</xsl:attribute> + <xsl:attribute name="start-indent"><xsl:value-of select="$title.margin.left"></xsl:value-of></xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties common to all section titles. + + + + + + +section.title.level1.properties +attribute set + + +section.title.level1.properties +Properties for level-1 section titles + + + + +<xsl:attribute-set name="section.title.level1.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 2.0736"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-1 section titles. + + + + + + + +section.title.level2.properties +attribute set + + +section.title.level2.properties +Properties for level-2 section titles + + + + +<xsl:attribute-set name="section.title.level2.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 1.728"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-2 section titles. + + + + + + +section.title.level3.properties +attribute set + + +section.title.level3.properties +Properties for level-3 section titles + + + + +<xsl:attribute-set name="section.title.level3.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 1.44"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-3 section titles. + + + + + + +section.title.level4.properties +attribute set + + +section.title.level4.properties +Properties for level-4 section titles + + + + +<xsl:attribute-set name="section.title.level4.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 1.2"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-4 section titles. + + + + + + +section.title.level5.properties +attribute set + + +section.title.level5.properties +Properties for level-5 section titles + + + + +<xsl:attribute-set name="section.title.level5.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-5 section titles. + + + + + + +section.title.level6.properties +attribute set + + +section.title.level6.properties +Properties for level-6 section titles + + + + +<xsl:attribute-set name="section.title.level6.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-6 section titles. This property set is actually +used for all titles below level 5. + + + + + + +section.properties +attribute set + + +section.properties +Properties for all section levels + + + + +<xsl:attribute-set name="section.properties"> +</xsl:attribute-set> + + + +Description + +The properties that apply to the containing +block of all section levels, and therefore apply to +the whole section. +This attribute set is inherited by the +more specific attribute sets such as +section.level1.properties. +The default is empty. + + + + + + + +section.level1.properties +attribute set + + +section.level1.properties +Properties for level-1 sections + + + + +<xsl:attribute-set name="section.level1.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> + + + +Description + +The properties that apply to the containing +block of a level-1 section, and therefore apply to +the whole section. This includes sect1 +elements and section elements at level 1. + + +For example, you could start each level-1 section on +a new page by using: +<xsl:attribute-set name="section.level1.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + + + + +section.level2.properties +attribute set + + +section.level2.properties +Properties for level-2 sections + + + + +<xsl:attribute-set name="section.level2.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> + + + +Description + +The properties that apply to the containing +block of a level-2 section, and therefore apply to +the whole section. This includes sect2 +elements and section elements at level 2. + + +For example, you could start each level-2 section on +a new page by using: +<xsl:attribute-set name="section.level2.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + + + + +section.level3.properties +attribute set + + +section.level3.properties +Properties for level-3 sections + + + + +<xsl:attribute-set name="section.level3.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> + + + +Description + +The properties that apply to the containing +block of a level-3 section, and therefore apply to +the whole section. This includes sect3 +elements and section elements at level 3. + + +For example, you could start each level-3 section on +a new page by using: +<xsl:attribute-set name="section.level3.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + + + + +section.level4.properties +attribute set + + +section.level4.properties +Properties for level-4 sections + + + + +<xsl:attribute-set name="section.level4.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> + + + +Description + +The properties that apply to the containing +block of a level-4 section, and therefore apply to +the whole section. This includes sect4 +elements and section elements at level 4. + + +For example, you could start each level-4 section on +a new page by using: +<xsl:attribute-set name="section.level4.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + + + + +section.level5.properties +attribute set + + +section.level5.properties +Properties for level-5 sections + + + + +<xsl:attribute-set name="section.level5.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> + + + +Description + +The properties that apply to the containing +block of a level-5 section, and therefore apply to +the whole section. This includes sect5 +elements and section elements at level 5. + + +For example, you could start each level-5 section on +a new page by using: +<xsl:attribute-set name="section.level5.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + + + + +section.level6.properties +attribute set + + +section.level6.properties +Properties for level-6 sections + + + + +<xsl:attribute-set name="section.level6.properties" use-attribute-sets="section.properties"> +</xsl:attribute-set> + + + +Description + +The properties that apply to the containing +block of a level 6 or lower section, and therefore apply to +the whole section. This includes +section elements at level 6 and lower. + + +For example, you could start each level-6 section on +a new page by using: +<xsl:attribute-set name="section.level6.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + + + + +figure.properties +attribute set + + +figure.properties +Properties associated with a figure + + + + +<xsl:attribute-set name="figure.properties" use-attribute-sets="formal.object.properties"></xsl:attribute-set> + + + +Description + +The styling for figures. + + + + + + +example.properties +attribute set + + +example.properties +Properties associated with a example + + + + +<xsl:attribute-set name="example.properties" use-attribute-sets="formal.object.properties"></xsl:attribute-set> + + + +Description + +The styling for examples. + + + + + + +equation.properties +attribute set + + +equation.properties +Properties associated with a equation + + + + +<xsl:attribute-set name="equation.properties" use-attribute-sets="formal.object.properties"></xsl:attribute-set> + + + +Description + +The styling for equations. + + + + + + +equation.number.properties +attribute set + + +equation.number.properties +Properties that apply to the fo:table-cell containing the number +of an equation that does not have a title. + + + +<xsl:attribute-set name="equation.number.properties"> + <xsl:attribute name="text-align">end</xsl:attribute> + <xsl:attribute name="display-align">center</xsl:attribute> +</xsl:attribute-set> + +Description +Properties that apply to the fo:table-cell containing the number +of an equation when it has no title. The number in an equation with a +title is formatted along with the title, and this attribute-set does not apply. + + + + + +table.properties +attribute set + + +table.properties +Properties associated with the block surrounding a table + + + + +<xsl:attribute-set name="table.properties" use-attribute-sets="formal.object.properties"> + <xsl:attribute name="keep-together.within-column">auto</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Block styling properties for tables. This parameter should really +have been called table.block.properties or something +like that, but we’re leaving it to avoid backwards-compatibility +problems. + +See also table.table.properties. + + + + + + +informalfigure.properties +attribute set + + +informalfigure.properties +Properties associated with an informalfigure + + + + +<xsl:attribute-set name="informalfigure.properties" use-attribute-sets="informal.object.properties"></xsl:attribute-set> + + + +Description + +The styling for informalfigures. + + + + + + +informalexample.properties +attribute set + + +informalexample.properties +Properties associated with an informalexample + + + + +<xsl:attribute-set name="informalexample.properties" use-attribute-sets="informal.object.properties"></xsl:attribute-set> + + + +Description + +The styling for informalexamples. + + + + + + +informalequation.properties +attribute set + + +informalequation.properties +Properties associated with an informalequation + + + + +<xsl:attribute-set name="informalequation.properties" use-attribute-sets="informal.object.properties"></xsl:attribute-set> + + + +Description + +The styling for informalequations. + + + + + + +informaltable.properties +attribute set + + +informaltable.properties +Properties associated with the block surrounding an informaltable + + + + +<xsl:attribute-set name="informaltable.properties" use-attribute-sets="informal.object.properties"></xsl:attribute-set> + + + +Description + +Block styling properties for informaltables. This parameter should really +have been called informaltable.block.properties or something +like that, but we’re leaving it to avoid backwards-compatibility +problems. + +See also table.table.properties. + + + + + + +procedure.properties +attribute set + + +procedure.properties +Properties associated with a procedure + + + + +<xsl:attribute-set name="procedure.properties" use-attribute-sets="formal.object.properties"> + <xsl:attribute name="keep-together.within-column">auto</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The styling for procedures. + + + + + + +root.properties +attribute set + + +root.properties +The properties of the fo:root element + + + + +<xsl:attribute-set name="root.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$body.fontset"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.size"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="text-align"> + <xsl:value-of select="$alignment"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="line-height"> + <xsl:value-of select="$line-height"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="font-selection-strategy">character-by-character</xsl:attribute> + <xsl:attribute name="line-height-shift-adjustment">disregard-shifts</xsl:attribute> + <xsl:attribute name="writing-mode"> + <xsl:value-of select="$direction.mode"></xsl:value-of> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +This property set is used on the fo:root element of +an FO file. It defines a set of default, global parameters. + + + + + + +qanda.title.properties +attribute set + + +qanda.title.properties +Properties for qanda set titles + + + + +<xsl:attribute-set name="qanda.title.properties"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$title.font.family"></xsl:value-of> + </xsl:attribute> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <!-- font size is calculated dynamically by qanda.heading template --> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute> + <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute> + <xsl:attribute name="space-before.maximum">1.2em</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties common to all qanda set titles. + + + + + + +qanda.title.level1.properties +attribute set + + +qanda.title.level1.properties +Properties for level-1 qanda set titles + + + + +<xsl:attribute-set name="qanda.title.level1.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 2.0736"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-1 qanda set titles. + + + + + + +qanda.title.level2.properties +attribute set + + +qanda.title.level2.properties +Properties for level-2 qanda set titles + + + + +<xsl:attribute-set name="qanda.title.level2.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 1.728"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-2 qanda set titles. + + + + + + +qanda.title.level3.properties +attribute set + + +qanda.title.level3.properties +Properties for level-3 qanda set titles + + + + +<xsl:attribute-set name="qanda.title.level3.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 1.44"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-3 qanda set titles. + + + + + + +qanda.title.level4.properties +attribute set + + +qanda.title.level4.properties +Properties for level-4 qanda set titles + + + + +<xsl:attribute-set name="qanda.title.level4.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master * 1.2"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-4 qanda set titles. + + + + + + +qanda.title.level5.properties +attribute set + + +qanda.title.level5.properties +Properties for level-5 qanda set titles + + + + +<xsl:attribute-set name="qanda.title.level5.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-5 qanda set titles. + + + + + + +qanda.title.level6.properties +attribute set + + +qanda.title.level6.properties +Properties for level-6 qanda set titles + + + + +<xsl:attribute-set name="qanda.title.level6.properties"> + <xsl:attribute name="font-size"> + <xsl:value-of select="$body.font.master"></xsl:value-of> + <xsl:text>pt</xsl:text> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties of level-6 qanda set titles. +This property set is actually +used for all titles below level 5. + + + + + + +article.appendix.title.properties +attribute set + + +article.appendix.title.properties +Properties for appendix titles that appear in an article + + + + +<xsl:attribute-set name="article.appendix.title.properties" use-attribute-sets="section.title.properties section.title.level1.properties"> + <xsl:attribute name="margin-{$direction.align.start}"> + <xsl:value-of select="$title.margin.left"></xsl:value-of> + </xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties for the title of an appendix that +appears inside an article. The default is to use +the properties of sect1 titles. + + + + + + +abstract.properties +attribute set + + +abstract.properties +Properties associated with the block surrounding an abstract + + + + +<xsl:attribute-set name="abstract.properties"> + <xsl:attribute name="start-indent">0.0in</xsl:attribute> + <xsl:attribute name="end-indent">0.0in</xsl:attribute> +</xsl:attribute-set> + + + +Description + +Block styling properties for abstract. + +See also abstract.title.properties. + + + + + + +abstract.title.properties +attribute set + + +abstract.title.properties +Properties for abstract titles + + + + +<xsl:attribute-set name="abstract.title.properties"> + <xsl:attribute name="font-family"><xsl:value-of select="$title.fontset"></xsl:value-of></xsl:attribute> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> + <xsl:attribute name="space-before.optimum"><xsl:value-of select="concat($body.font.master, 'pt')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="space-before.minimum"><xsl:value-of select="concat($body.font.master, 'pt * 0.8')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="space-before.maximum"><xsl:value-of select="concat($body.font.master, 'pt * 1.2')"></xsl:value-of></xsl:attribute> + <xsl:attribute name="hyphenate">false</xsl:attribute> + <xsl:attribute name="text-align">center</xsl:attribute> +</xsl:attribute-set> + + + +Description + +The properties for abstract titles. + +See also abstract.properties. + + + + + + +index.page.number.properties +attribute set + + +index.page.number.properties +Properties associated with index page numbers + + + + +<xsl:attribute-set name="index.page.number.properties"> +</xsl:attribute-set> + + + +Description + +Properties associated with page numbers in indexes. +Changing color to indicate the page number is a link is +one possibility. + + + + + + + +revhistory.table.properties +attribute set + + +revhistory.table.properties +The properties of table used for formatting revhistory + + + + +<xsl:attribute-set name="revhistory.table.properties"> +</xsl:attribute-set> + + + +Description + +This property set defines appearance of revhistory table. + + + + + + +revhistory.table.cell.properties +attribute set + + +revhistory.table.cell.properties +The properties of table cells used for formatting revhistory + + + + +<xsl:attribute-set name="revhistory.table.cell.properties"> +</xsl:attribute-set> + + + +Description + +This property set defines appearance of individual cells in revhistory table. + + + + + + +revhistory.title.properties +attribute set + + +revhistory.title.properties +The properties of revhistory title + + + + +<xsl:attribute-set name="revhistory.title.properties"> +</xsl:attribute-set> + + + +Description + +This property set defines appearance of revhistory title. + + + + + +Profiling + +The following parameters can be used for attribute-based +profiling of your document. For more information about profiling, see +Profiling (conditional text). + + + +profile.arch +string + + +profile.arch +Target profile for arch +attribute + + + + +<xsl:param name="profile.arch"></xsl:param> + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.audience +string + + +profile.audience +Target profile for audience +attribute + + + + +<xsl:param name="profile.audience"></xsl:param> + + + +Description + +Value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.condition +string + + +profile.condition +Target profile for condition +attribute + + + + +<xsl:param name="profile.condition"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.conformance +string + + +profile.conformance +Target profile for conformance +attribute + + + + +<xsl:param name="profile.conformance"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.lang +string + + +profile.lang +Target profile for lang +attribute + + + + +<xsl:param name="profile.lang"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.os +string + + +profile.os +Target profile for os +attribute + + + + +<xsl:param name="profile.os"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.revision +string + + +profile.revision +Target profile for revision +attribute + + + + +<xsl:param name="profile.revision"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.revisionflag +string + + +profile.revisionflag +Target profile for revisionflag +attribute + + + + +<xsl:param name="profile.revisionflag"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.role +string + + +profile.role +Target profile for role +attribute + + + + +<xsl:param name="profile.role"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + +Note that role is often +used for other purposes than profiling. For example it is commonly +used to get emphasize in bold font: + +<emphasis role="bold">very important</emphasis> + +If you are using role for +these purposes do not forget to add values like bold to +value of this parameter. If you forgot you will get document with +small pieces missing which are very hard to track. + +For this reason it is not recommended to use role attribute for profiling. You should +rather use profiling specific attributes like userlevel, os, arch, condition, etc. + + + + + + + +profile.security +string + + +profile.security +Target profile for security +attribute + + + + +<xsl:param name="profile.security"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.status +string + + +profile.status +Target profile for status +attribute + + + + +<xsl:param name="profile.status"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.userlevel +string + + +profile.userlevel +Target profile for userlevel +attribute + + + + +<xsl:param name="profile.userlevel"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.vendor +string + + +profile.vendor +Target profile for vendor +attribute + + + + +<xsl:param name="profile.vendor"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.wordsize +string + + +profile.wordsize +Target profile for wordsize +attribute + + + + +<xsl:param name="profile.wordsize"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.attribute +string + + +profile.attribute +Name of user-specified profiling attribute + + + + +<xsl:param name="profile.attribute"></xsl:param> + + + +Description + +This parameter is used in conjuction with +profile.value. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.value +string + + +profile.value +Target profile for user-specified attribute + + + + +<xsl:param name="profile.value"></xsl:param> + + + +Description + +When you are using this parameter you must also specify name of +profiling attribute with parameter +profile.attribute. + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.separator +string + + +profile.separator +Separator character for compound profile values + + + + +<xsl:param name="profile.separator">;</xsl:param> + + + +Description + +Separator character used for compound profile values. See profile.arch + + + + + +Localization + + +l10n.gentext.language +string + + +l10n.gentext.language +Sets the gentext language + + + + +<xsl:param name="l10n.gentext.language"></xsl:param> + + + +Description + +If this parameter is set to any value other than the empty string, its +value will be used as the value for the language when generating text. Setting +l10n.gentext.language overrides any settings within the +document being formatted. + +It's much more likely that you might want to set the +l10n.gentext.default.language parameter. + + + + + + + l10n.gentext.default.language + string + + + l10n.gentext.default.language + Sets the default language for generated text + + + + +<xsl:param name="l10n.gentext.default.language">en</xsl:param> + + + +Description + +The value of the l10n.gentext.default.language +parameter is used as the language for generated text if no setting is provided +in the source document. + + + + + + +l10n.gentext.use.xref.language +boolean + + +l10n.gentext.use.xref.language +Use the language of target when generating cross-reference text? + + + + +<xsl:param name="l10n.gentext.use.xref.language" select="0"></xsl:param> + + + +Description + +If non-zero, the language of the target will be used when +generating cross reference text. Usually, the current +language is used when generating text (that is, the language of the +element that contains the cross-reference element). But setting this parameter +allows the language of the element pointed to to control +the generated text. + +Consider the following example: + + +<para lang="en">See also <xref linkend="chap3"/>.</para> + + + +Suppose that Chapter 3 happens to be written in German. +If l10n.gentext.use.xref.language is non-zero, the +resulting text will be something like this: + +
+See also Kapital 3. +
+ +Where the more traditional rendering would be: + +
+See also Chapter 3. +
+ +
+
+ + + +l10n.lang.value.rfc.compliant +boolean + + +l10n.lang.value.rfc.compliant +Make value of lang attribute RFC compliant? + + + + +<xsl:param name="l10n.lang.value.rfc.compliant" select="1"></xsl:param> + + + +Description + +If non-zero, ensure that the values for all lang attributes in HTML output are RFC +compliantSection 8.1.1, Language Codes, in the HTML 4.0 Recommendation states that: + +
[RFC1766] defines and explains the language codes +that must be used in HTML documents. +Briefly, language codes consist of a primary code and a possibly +empty series of subcodes: + +language-code = primary-code ( "-" subcode )* + +And in RFC 1766, Tags for the Identification +of Languages, the EBNF for "language tag" is given as: + +Language-Tag = Primary-tag *( "-" Subtag ) +Primary-tag = 1*8ALPHA +Subtag = 1*8ALPHA + +
+
. + +by taking any underscore characters in any lang values found in source documents, and +replacing them with hyphen characters in output HTML files. For +example, zh_CN in a source document becomes +zh-CN in the HTML output form that source. + + +This parameter does not cause any case change in lang values, because RFC 1766 +explicitly states that all "language tags" (as it calls them) "are +to be treated as case insensitive". + +
+ +
+
+ + + +writing.mode +string + + +writing.mode +Direction of text flow based on locale + + + + +<xsl:param name="writing.mode"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">writing-mode</xsl:with-param> + <xsl:with-param name="lang"> + <xsl:call-template name="l10n.language"> + <xsl:with-param name="target" select="/*[1]"></xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> +</xsl:param> + + + +Description + +Sets direction of text flow and text alignment based on locale. +The value is normally taken from the gentext file for the +lang attribute of the document's root element, using the +key name 'writing-mode' to look it up in the gentext file. +But the param can also be +set on the command line to override that gentext value. + +Accepted values are: + + + lr-tb + + Left-to-right text flow in each line, lines stack top to bottom. + + + + rl-tb + + Right-to-left text flow in each line, lines stack top to bottom. + + + + tb-rl + + Top-to-bottom text flow in each vertical line, lines stack right to left. + Supported by only a few XSL-FO processors. Not supported in HTML output. + + + + lr + + Shorthand for lr-tb. + + + + rl + + Shorthand for rl-tb. + + + + tb + + Shorthand for tb-rl. + + + + + + + + +
+EBNF + + +ebnf.assignment +rtf + + +ebnf.assignment +The EBNF production assignment operator + + + + + +<xsl:param name="ebnf.assignment"> + <fo:inline font-family="{$monospace.font.family}"> + <xsl:text>::=</xsl:text> + </fo:inline> +</xsl:param> + + + +Description + +The ebnf.assignment parameter determines what +text is used to show assignment in productions +in productionsets. + +While ::= is common, so are several +other operators. + + + + + + +ebnf.statement.terminator +rtf + + +ebnf.statement.terminator +Punctuation that ends an EBNF statement. + + + + + +<xsl:param name="ebnf.statement.terminator"></xsl:param> + + + +Description + +The ebnf.statement.terminator parameter determines what +text is used to terminate each production +in productionset. + +Some notations end each statement with a period. + + + + + +Prepress + + +crop.marks +boolean + + +crop.marks +Output crop marks? + + + + +<xsl:param name="crop.marks" select="0"></xsl:param> + + + +Description + +If non-zero, crop marks will be added to each page. Currently this +works only with XEP if you have xep.extensions set. + + + + + + +crop.mark.width +length + + +crop.mark.width +Width of crop marks. + + + + +<xsl:param name="crop.mark.width">0.5pt</xsl:param> + + + +Description + +Width of crop marks. Crop marks are controlled by +crop.marks parameter. + + + + + + +crop.mark.offset +length + + +crop.mark.offset +Length of crop marks. + + + + +<xsl:param name="crop.mark.offset">24pt</xsl:param> + + + +Description + +Length of crop marks. Crop marks are controlled by +crop.marks parameter. + + + + + + +crop.mark.bleed +length + + +crop.mark.bleed +Length of invisible part of crop marks. + + + + +<xsl:param name="crop.mark.bleed">6pt</xsl:param> + + + +Description + +Length of invisible part of crop marks. Crop marks are controlled by +crop.marks parameter. + + + + + + +The Stylesheet + +The param.xsl stylesheet is just a wrapper +around all these parameters. + + +<xsl:stylesheet exclude-result-prefixes="src" version="1.0"> + +<!-- This file is generated from param.xweb --> + +<!-- ******************************************************************** + $Id: param.xweb 8543 2009-12-02 06:05:24Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<src:fragref linkend="abstract.properties.frag"></src:fragref> +<src:fragref linkend="abstract.title.properties.frag"></src:fragref> +<src:fragref linkend="admon.graphics.extension.frag"></src:fragref> +<src:fragref linkend="admon.graphics.frag"></src:fragref> +<src:fragref linkend="admon.graphics.path.frag"></src:fragref> +<src:fragref linkend="admon.textlabel.frag"></src:fragref> +<src:fragref linkend="admonition.properties.frag"></src:fragref> +<src:fragref linkend="admonition.title.properties.frag"></src:fragref> +<src:fragref linkend="graphical.admonition.properties.frag"></src:fragref> +<src:fragref linkend="nongraphical.admonition.properties.frag"></src:fragref> +<src:fragref linkend="alignment.frag"></src:fragref> +<src:fragref linkend="appendix.autolabel.frag"></src:fragref> +<src:fragref linkend="arbortext.extensions.frag"></src:fragref> +<src:fragref linkend="article.appendix.title.properties.frag"></src:fragref> +<src:fragref linkend="author.othername.in.middle.frag"></src:fragref> +<src:fragref linkend="autotoc.label.separator.frag"></src:fragref> +<src:fragref linkend="axf.extensions.frag"></src:fragref> +<src:fragref linkend="biblioentry.item.separator.frag"></src:fragref> +<src:fragref linkend="biblioentry.properties.frag"></src:fragref> +<src:fragref linkend="bibliography.collection.frag"></src:fragref> +<src:fragref linkend="bibliography.numbered.frag"></src:fragref> +<src:fragref linkend="bibliography.style.frag"></src:fragref> +<src:fragref linkend="blockquote.properties.frag"></src:fragref> +<src:fragref linkend="body.font.family.frag"></src:fragref> +<src:fragref linkend="body.font.master.frag"></src:fragref> +<src:fragref linkend="body.font.size.frag"></src:fragref> +<src:fragref linkend="body.margin.bottom.frag"></src:fragref> +<src:fragref linkend="body.margin.top.frag"></src:fragref> +<src:fragref linkend="body.start.indent.frag"></src:fragref> +<src:fragref linkend="body.end.indent.frag"></src:fragref> +<src:fragref linkend="bookmarks.collapse.frag"></src:fragref> +<src:fragref linkend="bridgehead.in.toc.frag"></src:fragref> +<src:fragref linkend="callout.defaultcolumn.frag"></src:fragref> +<src:fragref linkend="callout.graphics.extension.frag"></src:fragref> +<src:fragref linkend="callout.graphics.frag"></src:fragref> +<src:fragref linkend="callout.icon.size.frag"></src:fragref> +<src:fragref linkend="callout.graphics.number.limit.frag"></src:fragref> +<src:fragref linkend="callout.graphics.path.frag"></src:fragref> +<src:fragref linkend="callout.unicode.font.frag"></src:fragref> +<src:fragref linkend="callout.unicode.frag"></src:fragref> +<src:fragref linkend="callout.unicode.number.limit.frag"></src:fragref> +<src:fragref linkend="callout.unicode.start.character.frag"></src:fragref> +<src:fragref linkend="callouts.extension.frag"></src:fragref> +<src:fragref linkend="chapter.autolabel.frag"></src:fragref> +<src:fragref linkend="collect.xref.targets.frag"></src:fragref> +<src:fragref linkend="column.count.back.frag"></src:fragref> +<src:fragref linkend="column.count.body.frag"></src:fragref> +<src:fragref linkend="column.count.front.frag"></src:fragref> +<src:fragref linkend="column.count.index.frag"></src:fragref> +<src:fragref linkend="column.count.lot.frag"></src:fragref> +<src:fragref linkend="column.count.titlepage.frag"></src:fragref> +<src:fragref linkend="column.gap.back.frag"></src:fragref> +<src:fragref linkend="column.gap.body.frag"></src:fragref> +<src:fragref linkend="column.gap.front.frag"></src:fragref> +<src:fragref linkend="column.gap.index.frag"></src:fragref> +<src:fragref linkend="column.gap.lot.frag"></src:fragref> +<src:fragref linkend="column.gap.titlepage.frag"></src:fragref> +<src:fragref linkend="compact.list.item.spacing.frag"></src:fragref> +<src:fragref linkend="component.label.includes.part.label.frag"></src:fragref> +<src:fragref linkend="component.title.properties.frag"></src:fragref> +<src:fragref linkend="component.titlepage.properties.frag"></src:fragref> +<src:fragref linkend="crop.marks.frag"></src:fragref> +<src:fragref linkend="crop.mark.width.frag"></src:fragref> +<src:fragref linkend="crop.mark.offset.frag"></src:fragref> +<src:fragref linkend="crop.mark.bleed.frag"></src:fragref> +<src:fragref linkend="current.docid.frag"></src:fragref> +<src:fragref linkend="default.float.class.frag"></src:fragref> +<src:fragref linkend="default.image.width.frag"></src:fragref> +<src:fragref linkend="default.table.width.frag"></src:fragref> +<src:fragref linkend="default.table.frame.frag"></src:fragref> +<src:fragref linkend="default.table.rules.frag"></src:fragref> +<src:fragref linkend="default.units.frag"></src:fragref> +<src:fragref linkend="dingbat.font.family.frag"></src:fragref> +<src:fragref linkend="double.sided.frag"></src:fragref> +<src:fragref linkend="draft.mode.frag"></src:fragref> +<src:fragref linkend="draft.watermark.image.frag"></src:fragref> +<src:fragref linkend="ebnf.assignment.frag"></src:fragref> +<src:fragref linkend="ebnf.statement.terminator.frag"></src:fragref> +<src:fragref linkend="email.delimiters.enabled.frag"></src:fragref> +<src:fragref linkend="email.mailto.enabled.frag"></src:fragref> +<src:fragref linkend="equation.properties.frag"></src:fragref> +<src:fragref linkend="equation.number.properties.frag"></src:fragref> +<src:fragref linkend="example.properties.frag"></src:fragref> +<src:fragref linkend="exsl.node.set.available.frag"></src:fragref> +<src:fragref linkend="figure.properties.frag"></src:fragref> +<src:fragref linkend="firstterm.only.link.frag"></src:fragref> +<src:fragref linkend="footer.content.properties.frag"></src:fragref> +<src:fragref linkend="footer.rule.frag"></src:fragref> +<src:fragref linkend="footer.column.widths.frag"></src:fragref> +<src:fragref linkend="footer.table.height.frag"></src:fragref> +<src:fragref linkend="footer.table.properties.frag"></src:fragref> +<src:fragref linkend="footers.on.blank.pages.frag"></src:fragref> +<src:fragref linkend="footnote.font.size.frag"></src:fragref> +<src:fragref linkend="footnote.number.format.frag"></src:fragref> +<src:fragref linkend="footnote.number.symbols.frag"></src:fragref> +<src:fragref linkend="footnote.mark.properties.frag"></src:fragref> +<src:fragref linkend="footnote.properties.frag"></src:fragref> +<src:fragref linkend="footnote.sep.leader.properties.frag"></src:fragref> +<src:fragref linkend="fop.extensions.frag"></src:fragref> +<src:fragref linkend="fop1.extensions.frag"></src:fragref> +<src:fragref linkend="formal.object.properties.frag"></src:fragref> +<src:fragref linkend="formal.procedures.frag"></src:fragref> +<src:fragref linkend="formal.title.placement.frag"></src:fragref> +<src:fragref linkend="formal.title.properties.frag"></src:fragref> +<src:fragref linkend="funcsynopsis.decoration.frag"></src:fragref> +<src:fragref linkend="funcsynopsis.style.frag"></src:fragref> +<src:fragref linkend="function.parens.frag"></src:fragref> +<src:fragref linkend="generate.index.frag"></src:fragref> +<src:fragref linkend="generate.section.toc.level.frag"></src:fragref> +<src:fragref linkend="generate.toc.frag"></src:fragref> +<src:fragref linkend="glossary.as.blocks.frag"></src:fragref> +<src:fragref linkend="glossary.collection.frag"></src:fragref> +<src:fragref linkend="glossary.sort.frag"></src:fragref> +<src:fragref linkend="glossentry.show.acronym.frag"></src:fragref> +<src:fragref linkend="glosslist.as.blocks.frag"></src:fragref> +<src:fragref linkend="glossterm.auto.link.frag"></src:fragref> +<src:fragref linkend="glossterm.separation.frag"></src:fragref> +<src:fragref linkend="glossterm.width.frag"></src:fragref> +<src:fragref linkend="glossentry.list.item.properties.frag"></src:fragref> +<src:fragref linkend="glossterm.list.properties.frag"></src:fragref> +<src:fragref linkend="glossterm.block.properties.frag"></src:fragref> +<src:fragref linkend="glossdef.list.properties.frag"></src:fragref> +<src:fragref linkend="glossdef.block.properties.frag"></src:fragref> +<src:fragref linkend="graphic.default.extension.frag"></src:fragref> +<src:fragref linkend="header.content.properties.frag"></src:fragref> +<src:fragref linkend="header.rule.frag"></src:fragref> +<src:fragref linkend="header.column.widths.frag"></src:fragref> +<src:fragref linkend="header.table.height.frag"></src:fragref> +<src:fragref linkend="header.table.properties.frag"></src:fragref> +<src:fragref linkend="headers.on.blank.pages.frag"></src:fragref> +<src:fragref linkend="highlight.default.language.frag"></src:fragref> +<src:fragref linkend="highlight.source.frag"></src:fragref> +<src:fragref linkend="highlight.xslthl.config.frag"></src:fragref> +<src:fragref linkend="hyphenate.frag"></src:fragref> +<src:fragref linkend="hyphenate.verbatim.frag"></src:fragref> +<src:fragref linkend="hyphenate.verbatim.characters.frag"></src:fragref> +<src:fragref linkend="ignore.image.scaling.frag"></src:fragref> +<src:fragref linkend="img.src.path.frag"></src:fragref> +<src:fragref linkend="index.method.frag"></src:fragref> +<src:fragref linkend="index.on.role.frag"></src:fragref> +<src:fragref linkend="index.on.type.frag"></src:fragref> +<src:fragref linkend="index.page.number.properties.frag"></src:fragref> +<src:fragref linkend="informalequation.properties.frag"></src:fragref> +<src:fragref linkend="informalexample.properties.frag"></src:fragref> +<src:fragref linkend="informalfigure.properties.frag"></src:fragref> +<src:fragref linkend="informal.object.properties.frag"></src:fragref> +<src:fragref linkend="informaltable.properties.frag"></src:fragref> +<src:fragref linkend="index.preferred.page.properties.frag"></src:fragref> +<src:fragref linkend="index.div.title.properties.frag"></src:fragref> +<src:fragref linkend="index.entry.properties.frag"></src:fragref> +<src:fragref linkend="index.number.separator.frag"></src:fragref> +<src:fragref linkend="index.range.separator.frag"></src:fragref> +<src:fragref linkend="index.term.separator.frag"></src:fragref> +<src:fragref linkend="insert.link.page.number.frag"></src:fragref> +<src:fragref linkend="insert.xref.page.number.frag"></src:fragref> +<src:fragref linkend="itemizedlist.properties.frag"></src:fragref> +<src:fragref linkend="itemizedlist.label.properties.frag"></src:fragref> +<src:fragref linkend="itemizedlist.label.width.frag"></src:fragref> +<src:fragref linkend="keep.relative.image.uris.frag"></src:fragref> +<src:fragref linkend="l10n.gentext.default.language.frag"></src:fragref> +<src:fragref linkend="l10n.gentext.language.frag"></src:fragref> +<src:fragref linkend="l10n.gentext.use.xref.language.frag"></src:fragref> +<src:fragref linkend="l10n.lang.value.rfc.compliant.frag"></src:fragref> +<src:fragref linkend="label.from.part.frag"></src:fragref> +<src:fragref linkend="line-height.frag"></src:fragref> +<src:fragref linkend="linenumbering.everyNth.frag"></src:fragref> +<src:fragref linkend="linenumbering.extension.frag"></src:fragref> +<src:fragref linkend="linenumbering.separator.frag"></src:fragref> +<src:fragref linkend="linenumbering.width.frag"></src:fragref> +<src:fragref linkend="list.block.properties.frag"></src:fragref> +<src:fragref linkend="list.block.spacing.frag"></src:fragref> +<src:fragref linkend="list.item.spacing.frag"></src:fragref> +<src:fragref linkend="make.index.markup.frag"></src:fragref> +<src:fragref linkend="make.single.year.ranges.frag"></src:fragref> +<src:fragref linkend="make.year.ranges.frag"></src:fragref> +<src:fragref linkend="margin.note.properties.frag"></src:fragref> +<src:fragref linkend="margin.note.title.properties.frag"></src:fragref> +<src:fragref linkend="margin.note.float.type.frag"></src:fragref> +<src:fragref linkend="margin.note.width.frag"></src:fragref> +<src:fragref linkend="marker.section.level.frag"></src:fragref> +<src:fragref linkend="menuchoice.menu.separator.frag"></src:fragref> +<src:fragref linkend="menuchoice.separator.frag"></src:fragref> +<src:fragref linkend="monospace.font.family.frag"></src:fragref> +<src:fragref linkend="monospace.properties.frag"></src:fragref> +<src:fragref linkend="monospace.verbatim.properties.frag"></src:fragref> +<src:fragref linkend="monospace.verbatim.font.width.frag"></src:fragref> +<src:fragref linkend="nominal.table.width.frag"></src:fragref> +<src:fragref linkend="normal.para.spacing.frag"></src:fragref> +<src:fragref linkend="olink.doctitle.frag"></src:fragref> +<src:fragref linkend="olink.base.uri.frag"></src:fragref> +<src:fragref linkend="olink.debug.frag"></src:fragref> +<src:fragref linkend="olink.properties.frag"></src:fragref> +<src:fragref linkend="olink.lang.fallback.sequence.frag"></src:fragref> +<src:fragref linkend="orderedlist.properties.frag"></src:fragref> +<src:fragref linkend="orderedlist.label.properties.frag"></src:fragref> +<src:fragref linkend="orderedlist.label.width.frag"></src:fragref> +<src:fragref linkend="prefer.internal.olink.frag"></src:fragref> +<src:fragref linkend="insert.olink.page.number.frag"></src:fragref> +<src:fragref linkend="insert.olink.pdf.frag.frag"></src:fragref> +<src:fragref linkend="page.height.frag"></src:fragref> +<src:fragref linkend="page.height.portrait.frag"></src:fragref> +<src:fragref linkend="page.margin.bottom.frag"></src:fragref> +<src:fragref linkend="page.margin.inner.frag"></src:fragref> +<src:fragref linkend="page.margin.outer.frag"></src:fragref> +<src:fragref linkend="page.margin.top.frag"></src:fragref> +<src:fragref linkend="page.orientation.frag"></src:fragref> +<src:fragref linkend="page.width.frag"></src:fragref> +<src:fragref linkend="page.width.portrait.frag"></src:fragref> +<src:fragref linkend="paper.type.frag"></src:fragref> +<src:fragref linkend="part.autolabel.frag"></src:fragref> +<src:fragref linkend="passivetex.extensions.frag"></src:fragref> +<src:fragref linkend="pgwide.properties.frag"></src:fragref> +<src:fragref linkend="preface.autolabel.frag"></src:fragref> +<src:fragref linkend="preferred.mediaobject.role.frag"></src:fragref> +<src:fragref linkend="procedure.properties.frag"></src:fragref> +<src:fragref linkend="process.empty.source.toc.frag"></src:fragref> +<src:fragref linkend="process.source.toc.frag"></src:fragref> +<src:fragref linkend="profile.arch.frag"></src:fragref> +<src:fragref linkend="profile.audience.frag"></src:fragref> +<src:fragref linkend="profile.attribute.frag"></src:fragref> +<src:fragref linkend="profile.condition.frag"></src:fragref> +<src:fragref linkend="profile.conformance.frag"></src:fragref> +<src:fragref linkend="profile.lang.frag"></src:fragref> +<src:fragref linkend="profile.os.frag"></src:fragref> +<src:fragref linkend="profile.revision.frag"></src:fragref> +<src:fragref linkend="profile.revisionflag.frag"></src:fragref> +<src:fragref linkend="profile.role.frag"></src:fragref> +<src:fragref linkend="profile.security.frag"></src:fragref> +<src:fragref linkend="profile.separator.frag"></src:fragref> +<src:fragref linkend="profile.status.frag"></src:fragref> +<src:fragref linkend="profile.userlevel.frag"></src:fragref> +<src:fragref linkend="profile.value.frag"></src:fragref> +<src:fragref linkend="profile.vendor.frag"></src:fragref> +<src:fragref linkend="profile.wordsize.frag"></src:fragref> +<src:fragref linkend="punct.honorific.frag"></src:fragref> +<src:fragref linkend="qanda.defaultlabel.frag"></src:fragref> +<src:fragref linkend="qanda.in.toc.frag"></src:fragref> +<src:fragref linkend="qanda.nested.in.toc.frag"></src:fragref> +<src:fragref linkend="qanda.inherit.numeration.frag"></src:fragref> +<src:fragref linkend="qandadiv.autolabel.frag"></src:fragref> +<src:fragref linkend="qanda.title.level1.properties.frag"></src:fragref> +<src:fragref linkend="qanda.title.level2.properties.frag"></src:fragref> +<src:fragref linkend="qanda.title.level3.properties.frag"></src:fragref> +<src:fragref linkend="qanda.title.level4.properties.frag"></src:fragref> +<src:fragref linkend="qanda.title.level5.properties.frag"></src:fragref> +<src:fragref linkend="qanda.title.level6.properties.frag"></src:fragref> +<src:fragref linkend="qanda.title.properties.frag"></src:fragref> +<src:fragref linkend="refentry.generate.name.frag"></src:fragref> +<src:fragref linkend="refentry.generate.title.frag"></src:fragref> +<src:fragref linkend="refentry.pagebreak.frag"></src:fragref> +<src:fragref linkend="refentry.title.properties.frag"></src:fragref> +<src:fragref linkend="refentry.xref.manvolnum.frag"></src:fragref> +<src:fragref linkend="reference.autolabel.frag"></src:fragref> +<src:fragref linkend="refclass.suppress.frag"></src:fragref> +<src:fragref linkend="region.after.extent.frag"></src:fragref> +<src:fragref linkend="region.before.extent.frag"></src:fragref> +<src:fragref linkend="revhistory.table.properties.frag"></src:fragref> +<src:fragref linkend="revhistory.table.cell.properties.frag"></src:fragref> +<src:fragref linkend="revhistory.title.properties.frag"></src:fragref> +<src:fragref linkend="root.properties.frag"></src:fragref> +<src:fragref linkend="rootid.frag"></src:fragref> +<src:fragref linkend="runinhead.default.title.end.punct.frag"></src:fragref> +<src:fragref linkend="runinhead.title.end.punct.frag"></src:fragref> +<src:fragref linkend="sans.font.family.frag"></src:fragref> +<src:fragref linkend="section.autolabel.frag"></src:fragref> +<src:fragref linkend="section.autolabel.max.depth.frag"></src:fragref> +<src:fragref linkend="section.container.element.frag"></src:fragref> +<src:fragref linkend="section.label.includes.component.label.frag"></src:fragref> +<src:fragref linkend="section.title.level1.properties.frag"></src:fragref> +<src:fragref linkend="section.title.level2.properties.frag"></src:fragref> +<src:fragref linkend="section.title.level3.properties.frag"></src:fragref> +<src:fragref linkend="section.title.level4.properties.frag"></src:fragref> +<src:fragref linkend="section.title.level5.properties.frag"></src:fragref> +<src:fragref linkend="section.title.level6.properties.frag"></src:fragref> +<src:fragref linkend="section.title.properties.frag"></src:fragref> +<src:fragref linkend="section.level1.properties.frag"></src:fragref> +<src:fragref linkend="section.level2.properties.frag"></src:fragref> +<src:fragref linkend="section.level3.properties.frag"></src:fragref> +<src:fragref linkend="section.level4.properties.frag"></src:fragref> +<src:fragref linkend="section.level5.properties.frag"></src:fragref> +<src:fragref linkend="section.level6.properties.frag"></src:fragref> +<src:fragref linkend="section.properties.frag"></src:fragref> +<src:fragref linkend="segmentedlist.as.table.frag"></src:fragref> +<src:fragref linkend="shade.verbatim.frag"></src:fragref> +<src:fragref linkend="shade.verbatim.style.frag"></src:fragref> +<src:fragref linkend="show.comments.frag"></src:fragref> +<src:fragref linkend="sidebar.properties.frag"></src:fragref> +<src:fragref linkend="sidebar.title.properties.frag"></src:fragref> +<src:fragref linkend="sidebar.float.type.frag"></src:fragref> +<src:fragref linkend="sidebar.float.width.frag"></src:fragref> +<src:fragref linkend="simplesect.in.toc.frag"></src:fragref> +<src:fragref linkend="subscript.properties.frag"></src:fragref> +<src:fragref linkend="superscript.properties.frag"></src:fragref> +<src:fragref linkend="symbol.font.family.frag"></src:fragref> +<src:fragref linkend="table.cell.border.color.frag"></src:fragref> +<src:fragref linkend="table.cell.border.style.frag"></src:fragref> +<src:fragref linkend="table.cell.border.thickness.frag"></src:fragref> +<src:fragref linkend="table.cell.padding.frag"></src:fragref> +<src:fragref linkend="table.footnote.number.format.frag"></src:fragref> +<src:fragref linkend="table.footnote.number.symbols.frag"></src:fragref> +<src:fragref linkend="table.footnote.properties.frag"></src:fragref> +<src:fragref linkend="table.frame.border.color.frag"></src:fragref> +<src:fragref linkend="table.frame.border.style.frag"></src:fragref> +<src:fragref linkend="table.frame.border.thickness.frag"></src:fragref> +<src:fragref linkend="table.properties.frag"></src:fragref> +<src:fragref linkend="tablecolumns.extension.frag"></src:fragref> +<src:fragref linkend="table.table.properties.frag"></src:fragref> +<src:fragref linkend="target.database.document.frag"></src:fragref> +<src:fragref linkend="targets.filename.frag"></src:fragref> +<src:fragref linkend="textdata.default.encoding.frag"></src:fragref> +<src:fragref linkend="tex.math.delims.frag"></src:fragref> +<src:fragref linkend="tex.math.in.alt.frag"></src:fragref> +<src:fragref linkend="textinsert.extension.frag"></src:fragref> +<src:fragref linkend="title.font.family.frag"></src:fragref> +<src:fragref linkend="title.margin.left.frag"></src:fragref> +<src:fragref linkend="toc.indent.width.frag"></src:fragref> +<src:fragref linkend="toc.line.properties.frag"></src:fragref> +<src:fragref linkend="toc.margin.properties.frag"></src:fragref> +<src:fragref linkend="toc.max.depth.frag"></src:fragref> +<src:fragref linkend="toc.section.depth.frag"></src:fragref> +<src:fragref linkend="ulink.footnotes.frag"></src:fragref> +<src:fragref linkend="ulink.hyphenate.frag"></src:fragref> +<src:fragref linkend="ulink.hyphenate.chars.frag"></src:fragref> +<src:fragref linkend="ulink.show.frag"></src:fragref> +<src:fragref linkend="use.extensions.frag"></src:fragref> +<src:fragref linkend="use.local.olink.style.frag"></src:fragref> +<src:fragref linkend="use.role.as.xrefstyle.frag"></src:fragref> +<src:fragref linkend="use.role.for.mediaobject.frag"></src:fragref> +<src:fragref linkend="use.svg.frag"></src:fragref> +<src:fragref linkend="variablelist.as.blocks.frag"></src:fragref> +<src:fragref linkend="variablelist.max.termlength.frag"></src:fragref> +<src:fragref linkend="variablelist.term.separator.frag"></src:fragref> +<src:fragref linkend="variablelist.term.properties.frag"></src:fragref> +<src:fragref linkend="variablelist.term.break.after.frag"></src:fragref> +<src:fragref linkend="verbatim.properties.frag"></src:fragref> +<src:fragref linkend="writing.mode.frag"></src:fragref> +<src:fragref linkend="xep.extensions.frag"></src:fragref> +<src:fragref linkend="xep.index.item.properties.frag"></src:fragref> +<src:fragref linkend="xref.label-page.separator.frag"></src:fragref> +<src:fragref linkend="xref.label-title.separator.frag"></src:fragref> +<src:fragref linkend="xref.properties.frag"></src:fragref> +<src:fragref linkend="xref.title-page.separator.frag"></src:fragref> +<src:fragref linkend="xref.with.number.and.title.frag"></src:fragref> + +</xsl:stylesheet> + + + +
diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xsl new file mode 100644 index 000000000..b65ac4d53 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/param.xsl @@ -0,0 +1,946 @@ + + + + + + + + + 0.0in + 0.0in + + + + bold + always + always + + + + false + center + +.png + +images/ + + + + 14pt + bold + false + always + + + 1em + 0.8em + 1.2em + 1em + 0.8em + 1.2em + + + 0.8em + 1em + 1.2em + 0.25in + 0.25in + +justify +A + + + + + + + +. + +. + + 0.5in + -0.5in + +http://docbook.sourceforge.net/release/bibliography/bibliography.xml + + +normal + +0.5in +0.5in +0.5em +1em +2em + +serif +10 + + pt + +0.5in +0.5in + + + 0pt + 0pt + 4pc + + +0pt + + +60 + +.svg + +7pt + +30 +images/callouts/ +ZapfDingbats + +10 +10102 + + +no + + + +2 + + +12pt +12pt +12pt +12pt +12pt +12pt + + 0em + 0em + 0.2em + + + + always + + + + false + + + center + start + + + + + + + +0.5pt +24pt +6pt + + + + left + before + + + + +all +none +pt +serif + +no +images/draft.png + + + + ::= + + + + + + + + + end + center + + + + + 1 + 0 + + + + + + + + + + + + + +1 1 1 +14pt + + fixed + 100% + + + + pt + +1 + + + + 75% + normal + normal + + + + + normal + normal + + 0pt + 0pt + + wrap + treat-as-space + + + black + rule + 1in + + + + + 0.5em + 1em + 2em + 0.5em + 1em + 2em + always + + + +figure before +example before +equation before +table before +procedure before +task before + + + bold + + + pt + + false + 0.4em + 0.6em + 0.8em + + +kr + + + + + +/appendix toc,title +article/appendix nop +/article toc,title +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title + + + + +no + + +0.25in +2in + + 1em + 0.8em + 1.2em + + + + + 1em + 0.8em + 1.2em + always + always + + + + + .25in + + + + + + + + + + + +1 1 1 +14pt + + fixed + 100% + + + + + +true + + + + +basic + + + + + + + + + 0.5em + 1em + 2em + 0.5em + 1em + 2em + + + + bold + + + 0pt + 14.4pt + + bold + always + + + + 0pt + + + 0pt + + + + +no +no + + + + + 1.0em + + + +en + + + + +normal +5 + + +3 + + 0.2em + 1.5em + + + 1em + 0.8em + 1.2em + 1em + 0.8em + 1.2em + + + 1em + 0.8em + 1.2em + + + + + + 90% + start + + + bold + false + start + always + +none +1in +2 + ++ +monospace + + + + + + + start + no-wrap + +0.60em +6in + + 1em + 0.8em + 1.2em + +no + + + + replace + + + + 2em + + + +1.2em + +no + + + + + + + + + + + + + + 210mm + 11in + 8.5in + 2378mm + 1682mm + 1189mm + 841mm + 594mm + 420mm + 297mm + 210mm + 148mm + 105mm + 74mm + 52mm + 37mm + 1414mm + 1000mm + 707mm + 500mm + 353mm + 250mm + 176mm + 125mm + 88mm + 62mm + 44mm + 1297mm + 917mm + 648mm + 458mm + 324mm + 229mm + 162mm + 114mm + 81mm + 57mm + 40mm + 11in + + +0.5in + + + 1.25in + 1in + + + + + 0.75in + 1in + + +0.5in +portrait + + + + + + + + + + + + + 8.5in + 1682mm + 1189mm + 841mm + 594mm + 420mm + 297mm + 210mm + 148mm + 105mm + 74mm + 52mm + 37mm + 26mm + 1000mm + 707mm + 500mm + 353mm + 250mm + 176mm + 125mm + 88mm + 62mm + 44mm + 31mm + 917mm + 648mm + 458mm + 324mm + 229mm + 162mm + 114mm + 81mm + 57mm + 40mm + 28mm + 8.5in + + +USletter +I + + + 0pt + + + + + auto + + + + + + + + + + + + + + +; + + + + + +. +number + + + + + + + + pt + + + + + + pt + + + + + + pt + + + + + + pt + + + + + + pt + + + + + + pt + + + + + + + bold + + always + 0.8em + 1.0em + 1.2em + + + + + + + + + 18pt + bold + 1em + false + always + 0.8em + 1.0em + 1.2em + 0.5em + 0.4em + 0.6em + + + + I + +0.4in +0.4in + + + + + + + + + + + + + + + + + + + + character-by-character + disregard-shifts + + + + + +. +.!?: +sans-serif + +8 +block + + + + + pt + + + + + + pt + + + + + + pt + + + + + + pt + + + + + + pt + + + + + + pt + + + + + + + bold + + always + 0.8em + 1.0em + 1.2em + start + + + + + + + + + + + + + + + + + + + + + #E0E0E0 + + + + solid + 1pt + black + #DDDDDD + 12pt + 12pt + 6pt + 6pt + 0pt + 0pt + + + + bold + false + start + always + +none +1in + + + 75% + + + 75% + +Symbol,ZapfDingbats + +black +solid +0.5pt + + 2pt + 2pt + 2pt + 2pt + +a + + + + + normal + normal + 2pt + + + +black +solid +0.5pt + + auto + + + + retain + collapse + + olinkdb.xml +target.db + + + + +sans-serif + + + -4pc + 0pt + 0pt + + +24 + + + justify + start + + + + + 0.5em + 1em + 2em + 0.5em + 1em + 2em + +8 +2 + + +/ + + + + + + + +24 +, + + +0 + + 0.8em + 1em + 1.2em + 0.8em + 1em + 1.2em + false + no-wrap + false + preserve + preserve + start + + + + writing-mode + + + + + + + + + + true + true + + +: + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/passivetex.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/passivetex.xsl new file mode 100644 index 000000000..9fa28ec50 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/passivetex.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pdf2index b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pdf2index new file mode 100644 index 000000000..c14d8ecdb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pdf2index @@ -0,0 +1,140 @@ +#!/usr/bin/perl -- # -*- Perl -*- + +# this needs some cleanup... + +my $PSTOTEXT = "pstotext"; + +my $pdf = shift @ARGV; + +my $index = ""; +my $inindex = 0; +open (F, "$PSTOTEXT $pdf |"); +while () { + if (/^<\/index/) { + $index .= $_; + $inindex = 0; + } + $inindex = 1 if /^.*?<\/phrase>\s*)+)/s) { + $cindex .= $1; + $_ = $2; + $index = $'; # ' + + my @pages = m/.*?<\/phrase>\s*/sg; + + # Expand ranges + if ($#pages >= 0) { + my @mpages = (); + foreach my $page (@pages) { + my $pageno = &pageno($page); + if ($pageno =~ /^([0-9]+)[^0-9]([0-9]+)$/) { # funky - + for (my $count = $1; $count <= $2; $count++) { + push (@mpages, "$count"); + } + } else { + push (@mpages, $page); + } + } + @pages = sort rangesort @mpages; + } + + # Remove duplicates... + if ($#pages > 0) { + my @mpages = (); + my $current = ""; + foreach my $page (@pages) { + my $pageno = &pageno($page); + if ($pageno ne $current) { + push (@mpages, $page); + $current = $pageno; + } + } + @pages = @mpages; + } + + # Collapse ranges... + if ($#pages > 1) { + my @cpages = (); + while (@pages) { + my $count = 0; + my $len = &rangelen($count, @pages); + if ($len <= 2) { + my $page = shift @pages; + push (@cpages, $page); + } else { + my $fpage = shift @pages; + my $lpage = ""; + while ($len > 1) { + $lpage = shift @pages; + $len--; + } + my $fpno = &pageno($fpage); + my $lpno = &pageno($lpage); + $fpage =~ s/>$fpno${fpno}-$lpno//; + $page =~ s/^//; + + return $1 if $page =~ /^([^<>]+)/; + return "?"; +} + +sub rangesort { + my $apno = &pageno($a); + my $bpno = &pageno($b); + + # Make sure roman pages come before arabic ones, otherwise sort them in order + return -1 if ($apno !~ /^\d+/ && $bpno =~ /^\d+/); + return 1 if ($apno =~ /^\d+/ && $bpno !~ /^\d+/); + return $apno <=> $bpno; +} + +sub rangelen { + my $count = shift; + my @pages = @_; + my $len = 1; + my $inrange = 1; + + my $current = &pageno($pages[$count]); + while ($count < $#pages && $inrange) { + $count++; + my $next = &pageno($pages[$count]); + if ($current + 1 eq $next) { + $current = $next; + $inrange = 1; + $len++; + } else { + $inrange = 0; + } + } + + return $len; +} diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xml new file mode 100644 index 000000000..701d414cf --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xml @@ -0,0 +1,1002 @@ + + +FO Processing Instruction Reference + + $Id: pi.xsl 8487 2009-07-14 21:43:36Z bobstayton $ + + + + + Introduction + + +This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for FO output. + + +You add these PIs at particular points in a document to + cause specific “exceptions†to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + +dbfo_background-color +Sets background color for an image + + + + dbfo background-color="color" + + +Description + +Use the dbfo background-color PI before or + after an image (graphic, inlinegraphic, + imagedata, or videodata element) as a + sibling to the element, to set a background color for the + image. + + Parameters + + + background-color="color" + + +An HTML color value + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Background color + + + + + +dbfo_bgcolor +Sets background color on a table row or table cell + + + + dbfo bgcolor="color" + + +Description + +Use the dbfo bgcolor PI as child of a table row + or cell to set a background color for that table row or cell. + + +This PI works for both CALS and HTML tables. + + Parameters + + + bgcolor="color" + + +An HTML color value + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Cell background color + + + + + +dbfo_float-type +Specifies float behavior for a sidebar + + + + dbfo float-type="margin.note" + + +Description + +Use the dbfo float-type PI to specify the float + behavior for a sidebar (to cause the sidebar to be + displayed as a marginal note). + + Parameters + + + float-type="margin.note" + + +Specifies that the sidebar should be + displayed as a marginal note. + + + + + + Related Global Parameters + +sidebar.float.type (parameter), + sidebar.float.width (parameter), + sidebar.properties (attribute-set), + sidebar.title.properties (attribute-set) + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +A sidebar as + side float + + + + + +dbfo_funcsynopsis-style +Specifies presentation style for a funcsynopsis + + + + dbfo funcsynopsis-style="kr"|"ansi" + + +Description + +Use the dbfo funcsynopsis-style PI as a child of + a funcsynopsis or anywhere within a funcsynopsis + to control the presentation style for output of all + funcprototype instances within that funcsynopsis. + + Parameters + + + funcsynopsis-style="kr" + + +Displays funcprototype output in K&R style + + + + funcsynopsis-style="ansi" + + +Displays funcprototype output in ANSI style + + + + + + Related Global Parameters + +funcsynopsis.style + + + + + +dbfo_glossary-presentation +Specifies presentation style for a glossary + + + + dbfo glossary-presentation="list"|"blocks" + + +Description + +Use the dbfo glossary-presentation PI as a child of + a glossary to control its presentation style. + + Parameters + + + glossary-presentation="list" + + +Displays the glossary as a list + + + + glossary-presentation="blocks" + + +Displays the glossary as blocks + + + + + + Related Global Parameters + +glossary.as.blocks + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Glossary + formatting in print + + + + + +dbfo_glosslist-presentation +Specifies presentation style for a glosslist + + + + dbfo glosslist-presentation="list"|"blocks" + + +Description + +Use the dbfo glosslist-presentation PI as a child of + a glosslist to control its presentation style. + + Parameters + + + glosslist-presentation="list" + + +Displays the glosslist as a list + + + + glosslist-presentation="blocks" + + +Displays the glosslist as blocks + + + + + + Related Global Parameters + +glosslist.as.blocks + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Glossary + formatting in print + + + + + +dbfo_glossterm-width +Specifies the glossterm width for a glossary or + glosslist + + + + dbfo glossterm-width="width" + + +Description + +Use the dbfo glossterm-width PI as a child of a + glossary or glosslist to specify the + width for output of glossterm instances in the + output. + + Parameters + + + glossterm-width="width" + + +Specifies the glossterm width (including units) + + + + + + Related Global Parameters + +glossterm.width, + glossterm.separation + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Glossary + formatting in print + + + + + +dbfo_keep-together +Specifies “keep†behavior for a table, example, + figure, equation, procedure, or task + + + + dbfo keep-together="auto"|"always" + + +Description + +Use the dbfo keep-together PI as a child of a + formal object (table, example, + figure, equation, procedure, or + task) to specify “keep†behavior (to allow the object to + “break†across a page). + + +The PI also works with informaltable, informalexample, + informalfigure and informalequation. + + + + Parameters + + + keep-together="auto" + + +Enables the object to break across a page + + + + keep-together="always" + + +Prevents the object from breaking across a page (the + default stylesheet behavior) + + + + + + Related Global Parameters + +formal.object.properties + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Keep-together processing instruction + + + + + +dbfo_label-width +Specifies the label width for a qandaset, itemizedlist, orderedlist + or calloutlist + + + + dbfo label-width="width" + + +Description + +Use the dbfo label-width PI as a child of a + qandaset, itemizedlist, orderedlist, + or calloutlist to specify the width of labels. + + Parameters + + + label-width="width" + + +Specifies the label width (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Q and A formatting + + + + + +dbfo_linenumbering.everyNth +Specifies interval for line numbers in verbatims + + + + dbfo linenumbering.everyNth="N" + + +Description + +Use the dbfo linenumbering.everyNth PI as a child + of a “verbatim†element – programlisting, + screen, synopsis — to specify + the interval at which lines are numbered. + + Parameters + + + linenumbering.everyNth="N" + + +Specifies numbering interval; a number is output + before every Nth line + + + + + + Related Global Parameters + +linenumbering.everyNth + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Line numbering + + + + + +dbfo_linenumbering.separator +Specifies separator text for line numbers in verbatims + + + + dbfo linenumbering.separator="text" + + +Description + +Use the dbfo linenumbering.separator PI as a child + of a “verbatim†element – programlisting, + screen, synopsis — to specify + the separator text output between the line numbers and content. + + Parameters + + + linenumbering.separator="text" + + +Specifies the text (zero or more characters) + + + + + + Related Global Parameters + +linenumbering.separator + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Line numbering + + + + + +dbfo_linenumbering.width +Specifies width for line numbers in verbatims + + + + dbfo linenumbering.width="width" + + +Description + +Use the dbfo linenumbering.width PI as a child + of a “verbatim†element – programlisting, + screen, synopsis — to specify + the width set aside for line numbers. + + Parameters + + + linenumbering.width="width" + + +Specifies the width (inluding units) + + + + + + Related Global Parameters + +linenumbering.width + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Line numbering + + + + + +dbfo_list-presentation +Specifies presentation style for a variablelist or + segmentedlist + + + + dbfo list-presentation="list"|"blocks"|"table" + + +Description + +Use the dbfo list-presentation PI as a child of + a variablelist or segmentedlist to + control the presentation style for the list (to cause it, for + example, to be displayed as a table). + + Parameters + + + list-presentation="list" + + +Displays the list as a list + + + + list-presentation="blocks" + + +(variablelist only) Displays the list as blocks + + + + list-presentation="table" + + +(segmentedlist only) Displays the list as a table + + + + + + Related Global Parameters + + + + +variablelist.as.blocks + + + + +variablelist.as.table + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in print + + + + + +dbfo_list-width +Specifies the width of a horizontal simplelist + + + + dbfo list-width="width" + + +Description + +Use the dbfo list-width PI as a child of a + simplelist whose class + value is horizontal, to specify the width + of the simplelist. + + Parameters + + + list-width="width" + + +Specifies the simplelist width (including units) + + + + + + + + + +dbfo_orientation +Specifies the orientation for a CALS table row or cell + + + + dbfo orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270" + + +Description + +Use the dbfo orientation PI as a child of a CALS + table row or cell to specify the orientation + (rotation) for the row or cell. + + Parameters + + + orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270" + + +Specifies the number of degrees by which the cell or + row is rotated + + + + + + + + + +dbfo_pgwide +Specifies if an equation or example goes across full page width + + + + dbfo pgwide="0"|"1" + + +Description + +Use the dbfo pgwide PI as a child of an + equation or example to specify that the + content should rendered across the full width of the page. + + Parameters + + + pgwide="0" + + +If zero, the content is rendered across the current + text flow + + + + pgwide="1" + + +If 1 (or any non-zero value), the + content is rendered across the full width of the page + + + + + + Related Global Parameters + +pgwide.properties + + + + + +dbfo_rotated-width +Specifies the width for a CALS table entry or + row + + + + dbfo rotated-width="width" + + +Description + +Use the dbfo rotated-width PI as a child of + entry or row instance in a CALS table to specify the + width of that the entry or row; or + use it higher up in table to cause the width to be inherited + recursively down. + + Parameters + + + rotated-width="width" + + +Specifies the width of a row or cell (including units) + + + + + + + + + +dbfo_sidebar-width +Specifies the width of a sidebar + + + + dbfo sidebar-width="width" + + +Description + +Use the dbfo sidebar-width PI as a child of a + sidebar to specify the width of the sidebar. + + Parameters + + + sidebar-width="width" + + +Specifies the sidebar width (including units) + + + + + + Related Global Parameters + +sidebar.float.type parameter, + sidebar.float.width parameter, + sidebar.properties attribute-set, + sidebar.title.properties + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +A sidebar as + side float + + + + + +dbfo_start +(obsolete) Sets the starting number on an ordered list + + + + dbfo start="character" + + +Description + +This PI is obsolete. The intent of + it was to provide a means for setting a specific starting + number for an ordered list. Instead of this PI, set a value + for the override attribute on the first + listitem in the list; that will have the same + effect as what this PI was intended for. + + Parameters + + + start="character" + + +Specifies the character to use as the starting + number; use 0-9, a-z, A-Z, or lowercase or uppercase + Roman numerals + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +List starting number + + + + + +dbfo_table-width +Specifies the width for a CALS table or for revhistory + output + + + + dbfo table-width="width" + + +Description + +Use the dbfo table-width PI as a child or + sibling of a CALS table, or as a child of an + informaltable, entrytbl, or + revhistory instance (which is rendered as a table + in output) to specify the width of the table in output. + + Parameters + + + table-width="width" + + +Specifies the table width (including units or as a percentage) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Table width + + + + + +dbfo_term-width +Specifies the term width for a variablelist + + + + dbfo term-width="width" + + +Description + +Use the dbfo term-width PI as a child of a + variablelist to specify the width for + term output. + + Parameters + + + term-width="width" + + +Specifies the term width (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in print + + + + + +dbfo_toc +Specifies whether a TOC should be generated for a qandaset + + + + dbfo toc="0"|"1" + + +Description + +Use the dbfo toc PI as a child of a + qandaset to specify whether a table of contents + (TOC) is generated for the qandaset. + + Parameters + + + toc="0" + + +If zero, no TOC is generated + + + + toc="1" + + +If 1 (or any non-zero value), + a TOC is generated + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Q and A list of questions, + Q and A formatting + + + + + +dbfo-need +Specify a need for space (a kind of soft page break) + + + + dbfo-need height="n" [space-before="n"] + + +Description + +A “need†is a request for space on a page. If the + requested space is not available, the page breaks and the + content that follows the need request appears on the next + page. If the requested space is available, then no page break + is inserted. + + Parameters + + + height="n" + + +The amount of height needed (including units) + + + + space-before="n" + + +The amount of extra vertical space to add (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Soft page breaks + + + + + +dbfo_row-height +Specifies the height for a CALS table row + + + + dbfo row-height="height" + + +Description + +Use the dbfo row-height PI as a child of a + row to specify the height of the row. + + Parameters + + + row-height="height" + + +Specifies the row height (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Row height + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xsl new file mode 100644 index 000000000..c5f258b81 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/pi.xsl @@ -0,0 +1,1092 @@ + + + + + +FO Processing Instruction Reference + + $Id: pi.xsl 8487 2009-07-14 21:43:36Z bobstayton $ + + + + + Introduction + + This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for FO output. + + You add these PIs at particular points in a document to + cause specific “exceptions†to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + + Sets background color for an image + + Use the dbfo background-color PI before or + after an image (graphic, inlinegraphic, + imagedata, or videodata element) as a + sibling to the element, to set a background color for the + image. + + + dbfo background-color="color" + + + + background-color="color" + + An HTML color value + + + + + + Background color + + + + + + + + + + + + Sets background color on a table row or table cell + + Use the dbfo bgcolor PI as child of a table row + or cell to set a background color for that table row or cell. + This PI works for both CALS and HTML tables. + + + dbfo bgcolor="color" + + + + bgcolor="color" + + An HTML color value + + + + + + Cell background color + + + + + + + + + + + + Specifies float behavior for a sidebar + + Use the dbfo float-type PI to specify the float + behavior for a sidebar (to cause the sidebar to be + displayed as a marginal note). + + + dbfo float-type="margin.note" + + + + float-type="margin.note" + + Specifies that the sidebar should be + displayed as a marginal note. + + + + + + sidebar.float.type (parameter), + sidebar.float.width (parameter), + sidebar.properties (attribute-set), + sidebar.title.properties (attribute-set) + + + + A sidebar as + side float + + + + + + + + + + + + Specifies presentation style for a funcsynopsis + + Use the dbfo funcsynopsis-style PI as a child of + a funcsynopsis or anywhere within a funcsynopsis + to control the presentation style for output of all + funcprototype instances within that funcsynopsis. + + + dbfo funcsynopsis-style="kr"|"ansi" + + + + funcsynopsis-style="kr" + + Displays funcprototype output in K&R style + + + funcsynopsis-style="ansi" + + Displays funcprototype output in ANSI style + + + + + + funcsynopsis.style + + + + + + + + + + + + Specifies presentation style for a glossary + + Use the dbfo glossary-presentation PI as a child of + a glossary to control its presentation style. + + + dbfo glossary-presentation="list"|"blocks" + + + + glossary-presentation="list" + + Displays the glossary as a list + + + glossary-presentation="blocks" + + Displays the glossary as blocks + + + + + + glossary.as.blocks + + + Glossary + formatting in print + + + + + + + + + + + + Specifies presentation style for a glosslist + + Use the dbfo glosslist-presentation PI as a child of + a glosslist to control its presentation style. + + + dbfo glosslist-presentation="list"|"blocks" + + + + glosslist-presentation="list" + + Displays the glosslist as a list + + + glosslist-presentation="blocks" + + Displays the glosslist as blocks + + + + + + glosslist.as.blocks + + + Glossary + formatting in print + + + + + + + + + + + + Specifies the glossterm width for a glossary or + glosslist + + Use the dbfo glossterm-width PI as a child of a + glossary or glosslist to specify the + width for output of glossterm instances in the + output. + + + dbfo glossterm-width="width" + + + + glossterm-width="width" + + Specifies the glossterm width (including units) + + + + + + glossterm.width, + glossterm.separation + + + + Glossary + formatting in print + + + + + + + + + + + + Specifies “keep†behavior for a table, example, + figure, equation, procedure, or task + + Use the dbfo keep-together PI as a child of a + formal object (table, example, + figure, equation, procedure, or + task) to specify “keep†behavior (to allow the object to + “break†across a page). + The PI also works with informaltable, informalexample, + informalfigure and informalequation. + + + + + dbfo keep-together="auto"|"always" + + + + keep-together="auto" + + Enables the object to break across a page + + + keep-together="always" + + Prevents the object from breaking across a page (the + default stylesheet behavior) + + + + + + formal.object.properties + + + Keep-together processing instruction + + + + + + + + + + + + Specifies the label width for a qandaset, itemizedlist, orderedlist + or calloutlist + + Use the dbfo label-width PI as a child of a + qandaset, itemizedlist, orderedlist, + or calloutlist to specify the width of labels. + + + dbfo label-width="width" + + + + label-width="width" + + Specifies the label width (including units) + + + + + + Q and A formatting + + + + + + + + + + + + Specifies interval for line numbers in verbatims + + Use the dbfo linenumbering.everyNth PI as a child + of a “verbatim†element – programlisting, + screen, synopsis — to specify + the interval at which lines are numbered. + + + dbfo linenumbering.everyNth="N" + + + + linenumbering.everyNth="N" + + Specifies numbering interval; a number is output + before every Nth line + + + + + + linenumbering.everyNth + + + Line numbering + + + + + + + + + + + + Specifies separator text for line numbers in verbatims + + Use the dbfo linenumbering.separator PI as a child + of a “verbatim†element – programlisting, + screen, synopsis — to specify + the separator text output between the line numbers and content. + + + dbfo linenumbering.separator="text" + + + + linenumbering.separator="text" + + Specifies the text (zero or more characters) + + + + + + linenumbering.separator + + + Line numbering + + + + + + + + + + + + Specifies width for line numbers in verbatims + + Use the dbfo linenumbering.width PI as a child + of a “verbatim†element – programlisting, + screen, synopsis — to specify + the width set aside for line numbers. + + + dbfo linenumbering.width="width" + + + + linenumbering.width="width" + + Specifies the width (inluding units) + + + + + + linenumbering.width + + + Line numbering + + + + + + + + + + + + Specifies presentation style for a variablelist or + segmentedlist + + Use the dbfo list-presentation PI as a child of + a variablelist or segmentedlist to + control the presentation style for the list (to cause it, for + example, to be displayed as a table). + + + dbfo list-presentation="list"|"blocks"|"table" + + + + list-presentation="list" + + Displays the list as a list + + + list-presentation="blocks" + + (variablelist only) Displays the list as blocks + + + list-presentation="table" + + (segmentedlist only) Displays the list as a table + + + + + + + + variablelist.as.blocks + + + variablelist.as.table + + + + + Variable list formatting in print + + + + + + + + + + + + Specifies the width of a horizontal simplelist + + Use the dbfo list-width PI as a child of a + simplelist whose class + value is horizontal, to specify the width + of the simplelist. + + + dbfo list-width="width" + + + + list-width="width" + + Specifies the simplelist width (including units) + + + + + + + + + + + + + + + Specifies the orientation for a CALS table row or cell + + Use the dbfo orientation PI as a child of a CALS + table row or cell to specify the orientation + (rotation) for the row or cell. + + + dbfo orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270" + + + + orientation="0"|"90"|"180"|"270"|"-90"|"-180"|"-270" + + Specifies the number of degrees by which the cell or + row is rotated + + + + + + + + + + + + + + + Specifies if an equation or example goes across full page width + + Use the dbfo pgwide PI as a child of an + equation or example to specify that the + content should rendered across the full width of the page. + + + dbfo pgwide="0"|"1" + + + + pgwide="0" + + If zero, the content is rendered across the current + text flow + + + pgwide="1" + + If 1 (or any non-zero value), the + content is rendered across the full width of the page + + + + + + pgwide.properties + + + + + + + + + + + + Specifies the width for a CALS table entry or + row + + Use the dbfo rotated-width PI as a child of + entry or row instance in a CALS table to specify the + width of that the entry or row; or + use it higher up in table to cause the width to be inherited + recursively down. + + + dbfo rotated-width="width" + + + + rotated-width="width" + + Specifies the width of a row or cell (including units) + + + + + + + + + + + + + + + Specifies the width of a sidebar + + Use the dbfo sidebar-width PI as a child of a + sidebar to specify the width of the sidebar. + + + dbfo sidebar-width="width" + + + + sidebar-width="width" + + Specifies the sidebar width (including units) + + + + + + sidebar.float.type parameter, + sidebar.float.width parameter, + sidebar.properties attribute-set, + sidebar.title.properties + + + + A sidebar as + side float + + + + + + + + + + + + (obsolete) Sets the starting number on an ordered list + + This PI is obsolete. The intent of + it was to provide a means for setting a specific starting + number for an ordered list. Instead of this PI, set a value + for the override attribute on the first + listitem in the list; that will have the same + effect as what this PI was intended for. + + + dbfo start="character" + + + + start="character" + + Specifies the character to use as the starting + number; use 0-9, a-z, A-Z, or lowercase or uppercase + Roman numerals + + + + + + List starting number + + + + + + + + + + + + Specifies the width for a CALS table or for revhistory + output + + Use the dbfo table-width PI as a child or + sibling of a CALS table, or as a child of an + informaltable, entrytbl, or + revhistory instance (which is rendered as a table + in output) to specify the width of the table in output. + + + dbfo table-width="width" + + + + table-width="width" + + Specifies the table width (including units or as a percentage) + + + + + + Table width + + + + + + + + + + + + Specifies the term width for a variablelist + + Use the dbfo term-width PI as a child of a + variablelist to specify the width for + term output. + + + dbfo term-width="width" + + + + term-width="width" + + Specifies the term width (including units) + + + + + + Variable list formatting in print + + + + + + + + + + + + Specifies whether a TOC should be generated for a qandaset + + Use the dbfo toc PI as a child of a + qandaset to specify whether a table of contents + (TOC) is generated for the qandaset. + + + dbfo toc="0"|"1" + + + + toc="0" + + If zero, no TOC is generated + + + toc="1" + + If 1 (or any non-zero value), + a TOC is generated + + + + + + Q and A list of questions, + Q and A formatting + + + + + + + + + + + + Specify a need for space (a kind of soft page break) + + A “need†is a request for space on a page. If the + requested space is not available, the page breaks and the + content that follows the need request appears on the next + page. If the requested space is available, then no page break + is inserted. + + + dbfo-need height="n" [space-before="n"] + + + + height="n" + + The amount of height needed (including units) + + + space-before="n" + + The amount of extra vertical space to add (including units) + + + + + + Soft page breaks + + + + + Specifies the height for a CALS table row + + Use the dbfo row-height PI as a child of a + row to specify the height of the row. + + + dbfo row-height="height" + + + + row-height="height" + + Specifies the row height (including units) + + + + + + Row height + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + filename + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/profile-docbook.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/profile-docbook.xsl new file mode 100644 index 000000000..3b9b9c16c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/profile-docbook.xsl @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Element + + in namespace ' + + ' encountered + + in + + + , but no template matches. + + + + < + + > + + </ + + > + + + + + + +Note: namesp. cut : stripped namespace before processingNote: namesp. cut : processing stripped document + + + + + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + ERROR: Document root element ($rootid= + + ) for FO output + must be one of the following elements: + + + + + + + + + + + + + + + + + + + + + ERROR: Document root element for FO output + must be one of the following elements: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [could not find document title] + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Making + + pages on + + paper ( + + x + + ) + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ptc.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ptc.xsl new file mode 100644 index 000000000..a8874d88e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/ptc.xsl @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/qandaset.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/qandaset.xsl new file mode 100644 index 000000000..cbf118ae2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/qandaset.xsl @@ -0,0 +1,395 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2.5em + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + em * 0.50 + + + 5em + + + 4em + + + 3em + + 2.5em + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2.5em + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/refentry.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/refentry.xsl new file mode 100644 index 000000000..1a3569391 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/refentry.xsl @@ -0,0 +1,638 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + page + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1em + + + + + + + + + + + , + + + + + + + + + em-dash + + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/sections.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/sections.xsl new file mode 100644 index 000000000..4569f2d09 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/sections.xsl @@ -0,0 +1,764 @@ + + + + + + + + + + + + + + + + + + + + 1 + 2 + 3 + 4 + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 2 + 3 + 4 + 5 + + + + + + + + + + + + + + + + + + + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + + + 2 + + + + + + 1 + 2 + 3 + 4 + 5 + + + + + + + + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/spaces.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/spaces.xsl new file mode 100644 index 000000000..d34c9cd96 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/spaces.xsl @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + +0.5em +1em +0.5em +1em +0.33em +0.25em +0.16em + + +0.2em +0.1em + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/synop.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/synop.xsl new file mode 100644 index 000000000..92afc2081 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/synop.xsl @@ -0,0 +1,1007 @@ + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + +   + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + (void); + + + (); + + + + + + (...); + + + + + + + + + + + + ( + + + + + + + + + + + , + + + ); + + + + + + + + + + + + + + + , + + + + + + + ; + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + +java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unrecognized language on + + : + + + + + + + + + + + + &RE; + + + + + + + + + + extends + + + &RE;     + + + + implements + + + &RE;     + + + + throws + + +  {&RE; + + } + + + + + + + + + + + , + + + + + + + + + + + +   + + + + + + , + + + + + + + , + + + + + + + , + + + + + + +    + + ; + + + + + + +   + + + + +   + + + + + + + + + void  + + + + + + + + 0 + + ,&RE; + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + + + ) + + &RE;    throws  + + + + + + + ; + + + + + + + + + + + : + + + &RE;     + + + + implements + + + &RE;     + + + + throws + + +  {&RE; + + } + + + + + + + + + + , + + + + + + + +   + + + + + + , + + + + + + + , + + + + + + + , + + + + + + +    + + ; + + + + + + +   + + + + +   + + + + + + + + + void  + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + &RE;    throws  + + + + + + + ; + + + + + + + + + interface + + + : + + + &RE;     + + + + implements + + + &RE;     + + + + throws + + +  {&RE; + + } + + + + + + + + + + , + + + + + + + +   + + + + + + , + + + + + + + , + + + + + + + , + + + + + + +    + + ; + + + + + + +   + + + + +   + + + + + + + + + void  + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + &RE;    raises( + + ) + + + + + + ; + + + + + + + + + package + + ;&RE; + + + @ISA = ( + + );&RE; + + + + + + + + + + + + + , + + + + + + + +   + + + + + + , + + + + + + + , + + + + + + + , + + + + + + +    + + ; + + + + + + +   + + + + +   + + + + + + + + + void  + + + + + + + + + , + + + + + + + + + + + + + + + sub + + + { ... }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xml new file mode 100644 index 000000000..f29952ab2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xml @@ -0,0 +1,135 @@ + + + + + + Formatting Object Table Reference + + $Id: table.xsl 8814 2010-08-09 21:19:53Z bobstayton $ + + + + Introduction + +This is technical reference documentation for the FO + table-processing templates in the DocBook XSL Stylesheets. + + +This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + +calc.column.width +Calculate an XSL FO table column width specification from a +CALS table column width specification. + + +<xsl:template name="calc.column.width"> +<xsl:param name="colwidth">1*</xsl:param> + ... +</xsl:template> + +Description + +CALS expresses table column widths in the following basic +forms: + + + + + + +99.99units, a fixed length specifier. + + + + +99.99, a fixed length specifier without any units. + + + + +99.99*, a relative length specifier. + + + + +99.99*+99.99units, a combination of both. + + + + + + +The CALS units are points (pt), picas (pi), centimeters (cm), +millimeters (mm), and inches (in). These are the same units as XSL, +except that XSL abbreviates picas "pc" instead of "pi". If a length +specifier has no units, the CALS default unit (pt) is assumed. + + + +Relative length specifiers are represented in XSL with the +proportional-column-width() function. + + + +Here are some examples: + + + + + + +"36pt" becomes "36pt" + + + + +"3pi" becomes "3pc" + + + + +"36" becomes "36pt" + + + + +"3*" becomes "proportional-column-width(3)" + + + + +"3*+2pi" becomes "proportional-column-width(3)+2pc" + + + + +"1*+2" becomes "proportional-column-width(1)+2pt" + + + + +Parameters + + +colwidth + + +The CALS column width specification. + + + + + +Returns + +The XSL column width specification. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xsl new file mode 100644 index 000000000..c9a60c9e6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/table.xsl @@ -0,0 +1,1681 @@ + + + + + + + + + + + Formatting Object Table Reference + + $Id: table.xsl 8814 2010-08-09 21:19:53Z bobstayton $ + + + + Introduction + This is technical reference documentation for the FO + table-processing templates in the DocBook XSL Stylesheets. + This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0pt + none + 0pt + 0pt + 0pt + 0pt + 0pt + 0pt + + + 0pt + none + 0pt + 0pt + 0pt + 0pt + 0pt + 0pt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + always + + + + + + + + + + + + + + + + + + + + + + + + + + + + + all + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + none + none + + + + + + + + + + + + + + + + + + none + none + + + + + + + + + + + + + + + + + + none + none + none + + + + + + + + + + + + none + none + none + + + + + + + + + none + none + + + + none + + + + + + + + + none + none + + + + + + + + + + + + + + + + + + + + + none + none + none + none + + + + Impossible frame on table: + + + none + none + none + none + + + + + + + + + + + + + + + + + + + + + + + + + + Error: CALS tables must specify the number of columns. + + + + + + + + + + + + + + + + + + + + + + + + + fixed + + + + + + + + + + + + + + + + + + + + + No adjustColumnWidths function available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NOWIDTH + NOWIDTH + + + + + + + + + + + + + + + + + + NOWIDTH + NOWIDTH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100% + + + + 100% + + + auto + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: overlapped row contains content! + + + + This row intentionally left blank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + always + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + fixed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + center + after + + + Unexpected valign value: + + , center used. + + center + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + center + after + + + Unexpected valign value: + + , center used. + + center + + + + + + + + + + + + + + + + + + bold + + + + bold + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + : + + + + + + + + 0: + + + + + + + + + + + + + + + 0 + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + 1* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Calculate an XSL FO table column width specification from a +CALS table column width specification. + + +CALS expresses table column widths in the following basic +forms: + + + +99.99units, a fixed length specifier. + + +99.99, a fixed length specifier without any units. + + +99.99*, a relative length specifier. + + +99.99*+99.99units, a combination of both. + + + +The CALS units are points (pt), picas (pi), centimeters (cm), +millimeters (mm), and inches (in). These are the same units as XSL, +except that XSL abbreviates picas "pc" instead of "pi". If a length +specifier has no units, the CALS default unit (pt) is assumed. + +Relative length specifiers are represented in XSL with the +proportional-column-width() function. + +Here are some examples: + + + +"36pt" becomes "36pt" + + +"3pi" becomes "3pc" + + +"36" becomes "36pt" + + +"3*" becomes "proportional-column-width(3)" + + +"3*+2pi" becomes "proportional-column-width(3)+2pc" + + +"1*+2" becomes "proportional-column-width(1)+2pt" + + + + + + +colwidth + +The CALS column width specification. + + + + + + +The XSL column width specification. + + + + + 1* + + + + + + + + + + + + proportional-column-width( + + + + + + 1.00 + + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pc + pt + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/task.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/task.xsl new file mode 100644 index 000000000..c864bc69c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/task.xsl @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xml new file mode 100644 index 000000000..e3434bc30 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xml @@ -0,0 +1,1354 @@ + + + + + + + + + + + + +]> + + + + + + + + + + + + + <subtitle/> + + <corpauthor space-before="0.5em" + font-size="&hsize2;"/> + <authorgroup space-before="0.5em" + font-size="&hsize2;"/> + <author space-before="0.5em" + font-size="&hsize2;"/> + + <!-- If you add editor, include this t:predicate attribute + because only the first editor generates the list of editors. + <editor t:predicate="[position() = 1]"/> + --> + <othercredit space-before="0.5em"/> + <releaseinfo space-before="0.5em"/> + <copyright space-before="0.5em"/> + <legalnotice text-align="start" + margin-left="0.5in" + margin-right="0.5in" + font-family="{$body.fontset}"/> + <pubdate space-before="0.5em"/> + <revision space-before="0.5em"/> + <revhistory space-before="0.5em"/> + <abstract space-before="0.5em" + text-align="start" + margin-left="0.5in" + margin-right="0.5in" + font-family="{$body.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="set" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:named-template="division.title" + param:node="ancestor-or-self::set[1]" + text-align="center" + font-size="&hsize5;" + space-before="&hsize5space;" + font-weight="bold" + font-family="{$title.fontset}"/> + <subtitle + font-family="{$title.fontset}" + text-align="center"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="book" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:named-template="division.title" + param:node="ancestor-or-self::book[1]" + text-align="center" + font-size="&hsize5;" + space-before="&hsize5space;" + font-weight="bold" + font-family="{$title.fontset}"/> + <subtitle + text-align="center" + font-size="&hsize4;" + space-before="&hsize4space;" + font-family="{$title.fontset}"/> + <corpauthor font-size="&hsize3;" + keep-with-next.within-column="always" + space-before="2in"/> + <authorgroup space-before="2in"/> + <author font-size="&hsize3;" + space-before="&hsize2space;" + keep-with-next.within-column="always"/> + <!-- If you add editor, include this t:predicate attribute + because only the first editor generates the list of editors. + <editor t:predicate="[position() = 1]"/> + --> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + <title + t:named-template="book.verso.title" + font-size="&hsize2;" + font-weight="bold" + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup t:named-template="verso.authorgroup"/> + <author/> + <!-- If you add editor, include this t:predicate attribute + because only the first editor generates the list of editors. + <editor t:predicate="[position() = 1]"/> + --> + <othercredit/> + <releaseinfo space-before="0.5em"/> + <pubdate space-before="1em"/> + <copyright/> + <abstract/> + <legalnotice font-size="8pt"/> + </t:titlepage-content> + + <t:titlepage-separator> + <fo:block break-after="page"/> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + <fo:block break-after="page"/> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="part" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:named-template="division.title" + param:node="ancestor-or-self::part[1]" + text-align="center" + font-size="&hsize5;" + space-before="&hsize5space;" + font-weight="bold" + font-family="{$title.fontset}"/> + <subtitle + text-align="center" + font-size="&hsize4;" + space-before="&hsize4space;" + font-weight='bold' + font-style='italic' + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="partintro" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + text-align="center" + font-size="&hsize5;" + font-weight="bold" + space-before="1em" + font-family="{$title.fontset}"/> + <subtitle + text-align="center" + font-size="&hsize2;" + font-weight="bold" + font-style="italic" + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="reference" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:named-template="division.title" + param:node="ancestor-or-self::reference[1]" + text-align="center" + font-size="&hsize5;" + space-before="&hsize5space;" + font-weight="bold" + font-family="{$title.fontset}"/> + <subtitle + font-family="{$title.fontset}" + text-align="center"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsynopsisdiv" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsection" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsect1" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsect2" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refsect3" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="dedication" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::dedication[1]" + margin-left="{$title.margin.left}" + font-size="&hsize5;" + font-family="{$title.fontset}" + font-weight="bold"/> + <subtitle + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<!-- Same formatting as dedication --> + <t:titlepage t:element="acknowledgements" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::acknowledgements[1]" + margin-left="{$title.margin.left}" + font-size="&hsize5;" + font-family="{$title.fontset}" + font-weight="bold"/> + <subtitle + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + + +<!-- ==================================================================== --> + + <t:titlepage t:element="preface" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::preface[1]" + margin-left="{$title.margin.left}" + font-size="&hsize5;" + font-family="{$title.fontset}" + font-weight="bold"/> + <subtitle + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="chapter" t:wrapper="fo:block" + font-family="{$title.fontset}"> + <t:titlepage-content t:side="recto" margin-left="{$title.margin.left}"> + <title t:named-template="component.title" + param:node="ancestor-or-self::chapter[1]" + font-size="&hsize5;" + font-weight="bold"/> + + <subtitle space-before="0.5em" + font-style="italic" + font-size="&hsize2;" + font-weight="bold"/> + + <corpauthor space-before="0.5em" + space-after="0.5em" + font-size="&hsize2;"/> + + <authorgroup space-before="0.5em" + space-after="0.5em" + font-size="&hsize2;"/> + + <author space-before="0.5em" + space-after="0.5em" + font-size="&hsize2;"/> + + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="appendix" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:named-template="component.title" + param:node="ancestor-or-self::appendix[1]" + margin-left="{$title.margin.left}" + font-size="&hsize5;" + font-weight="bold" + font-family="{$title.fontset}"/> + <subtitle + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="section" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + margin-left="{$title.margin.left}" + font-family="{$title.fontset}"/> + <subtitle + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect1" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + margin-left="{$title.margin.left}" + font-family="{$title.fontset}"/> + <subtitle + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect2" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + margin-left="{$title.margin.left}" + font-family="{$title.fontset}"/> + <subtitle + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect3" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + margin-left="{$title.margin.left}" + font-family="{$title.fontset}"/> + <subtitle + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect4" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + margin-left="{$title.margin.left}" + font-family="{$title.fontset}"/> + <subtitle + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect5" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + margin-left="{$title.margin.left}" + font-family="{$title.fontset}"/> + <subtitle + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="simplesect" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + margin-left="{$title.margin.left}" + font-family="{$title.fontset}"/> + <subtitle + font-family="{$title.fontset}"/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="bibliography" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::bibliography[1]" + margin-left="{$title.margin.left}" + font-size="&hsize5;" + font-family="{$title.fontset}" + font-weight="bold"/> + <subtitle + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="bibliodiv" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title t:named-template="component.title" + param:node="ancestor-or-self::bibliodiv[1]" + margin-left="{$title.margin.left}" + font-size="&hsize4;" + font-family="{$title.fontset}" + font-weight="bold"/> + <subtitle + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="glossary" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::glossary[1]" + margin-left="{$title.margin.left}" + font-size="&hsize5;" + font-family="{$title.fontset}" + font-weight="bold"/> + <subtitle + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="glossdiv" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title t:named-template="component.title" + param:node="ancestor-or-self::glossdiv[1]" + margin-left="{$title.margin.left}" + font-size="&hsize4;" + font-family="{$title.fontset}" + font-weight="bold"/> + <subtitle + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="index" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::index[1]" + param:pagewide="1" + margin-left="0pt" + font-size="&hsize5;" + font-family="{$title.fontset}" + font-weight="bold"/> + <subtitle + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + +<!-- ==================================================================== --> + + <!-- The indexdiv.title template is used so that manual and --> + <!-- automatically generated indexdiv titles get the same --> + <!-- formatting. --> + + <t:titlepage t:element="indexdiv" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title t:force="1" + t:named-template="indexdiv.title" + param:title="title"/> + <subtitle + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="setindex" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::setindex[1]" + param:pagewide="1" + margin-left="0pt" + font-size="&hsize5;" + font-family="{$title.fontset}" + font-weight="bold"/> + <subtitle + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="colophon" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::colophon[1]" + margin-left="{$title.margin.left}" + font-size="&hsize5;" + font-family="{$title.fontset}" + font-weight="bold"/> + <subtitle + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="sidebar" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + font-family="{$title.fontset}" + font-weight="bold"/> + <subtitle + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + +<!-- ==================================================================== --> +<t:titlepage t:element="qandaset" t:wrapper="fo:block" + font-family="{$title.fontset}"> + + <t:titlepage-content t:side="recto" + start-indent="0pt" + text-align="center"> + + <title t:named-template="component.title" + param:node="ancestor-or-self::qandaset[1]" + keep-with-next.within-column="always" + font-size="&hsize5;" + font-weight="bold"/> + + <subtitle/> + + <corpauthor space-before="0.5em" + font-size="&hsize2;"/> + <authorgroup space-before="0.5em" + font-size="&hsize2;"/> + <author space-before="0.5em" + font-size="&hsize2;"/> + + <othercredit space-before="0.5em"/> + <releaseinfo space-before="0.5em"/> + <copyright space-before="0.5em"/> + <legalnotice text-align="start" + margin-left="0.5in" + margin-right="0.5in" + font-family="{$body.fontset}"/> + <pubdate space-before="0.5em"/> + <revision space-before="0.5em"/> + <revhistory space-before="0.5em"/> + <abstract space-before="0.5em" + text-align="start" + margin-left="0.5in" + margin-right="0.5in" + font-family="{$body.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="table.of.contents" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="gentext" + param:key="'TableofContents'" + space-before.minimum="1em" + space-before.optimum="1.5em" + space-before.maximum="2em" + space-after="0.5em" + margin-left="{$title.margin.left}" + start-indent="0pt" + font-size="&hsize3;" + font-weight="bold" + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + + <t:titlepage t:element="list.of.tables" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="gentext" + param:key="'ListofTables'" + space-before.minimum="1em" + space-before.optimum="1.5em" + space-before.maximum="2em" + space-after="0.5em" + margin-left="{$title.margin.left}" + start-indent="0pt" + font-size="&hsize3;" + font-weight="bold" + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + + <t:titlepage t:element="list.of.figures" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="gentext" + param:key="'ListofFigures'" + space-before.minimum="1em" + space-before.optimum="1.5em" + space-before.maximum="2em" + space-after="0.5em" + margin-left="{$title.margin.left}" + start-indent="0pt" + font-size="&hsize3;" + font-weight="bold" + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + + <t:titlepage t:element="list.of.examples" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="gentext" + param:key="'ListofExamples'" + space-before.minimum="1em" + space-before.optimum="1.5em" + space-before.maximum="2em" + space-after="0.5em" + margin-left="{$title.margin.left}" + start-indent="0pt" + font-size="&hsize3;" + font-weight="bold" + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + + <t:titlepage t:element="list.of.equations" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="gentext" + param:key="'ListofEquations'" + space-before.minimum="1em" + space-before.optimum="1.5em" + space-before.maximum="2em" + space-after="0.5em" + margin-left="{$title.margin.left}" + start-indent="0pt" + font-size="&hsize3;" + font-weight="bold" + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + + <t:titlepage t:element="list.of.procedures" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="gentext" + param:key="'ListofProcedures'" + space-before.minimum="1em" + space-before.optimum="1.5em" + space-before.maximum="2em" + space-after="0.5em" + margin-left="{$title.margin.left}" + start-indent="0pt" + font-size="&hsize3;" + font-weight="bold" + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + + <t:titlepage t:element="list.of.unknowns" t:wrapper="fo:block"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="gentext" + param:key="'ListofUnknown'" + space-before.minimum="1em" + space-before.optimum="1.5em" + space-before.maximum="2em" + space-after="0.5em" + margin-left="{$title.margin.left}" + start-indent="0pt" + font-size="&hsize3;" + font-weight="bold" + font-family="{$title.fontset}"/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> + </t:titlepage> + +<!-- ==================================================================== --> + +</t:templates> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xsl new file mode 100644 index 000000000..0b9cafa1e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.templates.xsl @@ -0,0 +1,5182 @@ +<?xml version="1.0"?> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" version="1.0" exclude-result-prefixes="exsl"> + +<!-- This stylesheet was created by template/titlepage.xsl--> + +<xsl:template name="article.titlepage.recto"> + <xsl:choose> + <xsl:when test="articleinfo/title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/> + </xsl:when> + <xsl:when test="artheader/title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="articleinfo/subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/> + </xsl:when> + <xsl:when test="artheader/subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revision"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revision"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revhistory"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revhistory"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/abstract"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/abstract"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="article.titlepage.verso"> +</xsl:template> + +<xsl:template name="article.titlepage.separator"> +</xsl:template> + +<xsl:template name="article.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="article.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="article.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}"> + <xsl:variable name="recto.content"> + <xsl:call-template name="article.titlepage.before.recto"/> + <xsl:call-template name="article.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="article.titlepage.before.verso"/> + <xsl:call-template name="article.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="article.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="article.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="article.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::article[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="article.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style" space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="set.titlepage.recto"> + <xsl:choose> + <xsl:when test="setinfo/title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="setinfo/subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="set.titlepage.verso"> +</xsl:template> + +<xsl:template name="set.titlepage.separator"> +</xsl:template> + +<xsl:template name="set.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="set.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="set.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="set.titlepage.before.recto"/> + <xsl:call-template name="set.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="set.titlepage.before.verso"/> + <xsl:call-template name="set.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="set.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="set.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="set.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::set[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style" font-family="{$title.fontset}" text-align="center"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="book.titlepage.recto"> + <xsl:choose> + <xsl:when test="bookinfo/title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="bookinfo/subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/authorgroup"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/author"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/author"/> +</xsl:template> + +<xsl:template name="book.titlepage.verso"> + <xsl:choose> + <xsl:when test="bookinfo/title"> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/corpauthor"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/authorgroup"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/author"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/author"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/othercredit"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/releaseinfo"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/pubdate"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/copyright"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/abstract"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/abstract"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="bookinfo/legalnotice"/> + <xsl:apply-templates mode="book.titlepage.verso.auto.mode" select="info/legalnotice"/> +</xsl:template> + +<xsl:template name="book.titlepage.separator"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/> +</xsl:template> + +<xsl:template name="book.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="book.titlepage.before.verso"><fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/> +</xsl:template> + +<xsl:template name="book.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="book.titlepage.before.recto"/> + <xsl:call-template name="book.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="book.titlepage.before.verso"/> + <xsl:call-template name="book.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="book.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::book[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" text-align="center" font-size="20.736pt" space-before="15.552pt" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" font-size="17.28pt" keep-with-next.within-column="always" space-before="2in"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" space-before="2in"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="book.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.recto.style" font-size="17.28pt" space-before="10.8pt" keep-with-next.within-column="always"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="title" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" font-size="14.4pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="book.verso.title"> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:call-template name="verso.authorgroup"> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" space-before="1em"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="book.titlepage.verso.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="book.titlepage.verso.style" font-size="8pt"> +<xsl:apply-templates select="." mode="book.titlepage.verso.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="part.titlepage.recto"> + <xsl:choose> + <xsl:when test="partinfo/title"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="partinfo/subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="part.titlepage.verso"> +</xsl:template> + +<xsl:template name="part.titlepage.separator"> +</xsl:template> + +<xsl:template name="part.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="part.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="part.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="part.titlepage.before.recto"/> + <xsl:call-template name="part.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="part.titlepage.before.verso"/> + <xsl:call-template name="part.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="part.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="part.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="part.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="part.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::part[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="part.titlepage.recto.style" text-align="center" font-size="20.736pt" space-before="15.552pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="partintro.titlepage.recto"> + <xsl:choose> + <xsl:when test="partintroinfo/title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="partintroinfo/subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="partintro.titlepage.verso"> +</xsl:template> + +<xsl:template name="partintro.titlepage.separator"> +</xsl:template> + +<xsl:template name="partintro.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="partintro.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="partintro.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="partintro.titlepage.before.recto"/> + <xsl:call-template name="partintro.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="partintro.titlepage.before.verso"/> + <xsl:call-template name="partintro.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="partintro.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="partintro.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="partintro.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="24.8832pt" font-weight="bold" space-before="1em" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style" text-align="center" font-size="14.4pt" font-weight="bold" font-style="italic" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="reference.titlepage.recto"> + <xsl:choose> + <xsl:when test="referenceinfo/title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="referenceinfo/subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/authorgroup"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/author"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/othercredit"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/releaseinfo"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/copyright"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/legalnotice"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/pubdate"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revision"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revhistory"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/abstract"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="reference.titlepage.verso"> +</xsl:template> + +<xsl:template name="reference.titlepage.separator"> +</xsl:template> + +<xsl:template name="reference.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="reference.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="reference.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="reference.titlepage.before.recto"/> + <xsl:call-template name="reference.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="reference.titlepage.before.verso"/> + <xsl:call-template name="reference.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="reference.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="reference.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="reference.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" text-align="center" font-size="24.8832pt" space-before="18.6624pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::reference[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style" font-family="{$title.fontset}" text-align="center"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.recto"> + <xsl:choose> + <xsl:when test="refsynopsisdivinfo/title"> + <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="refsynopsisdivinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="refsynopsisdiv.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsynopsisdiv.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="refsynopsisdiv.titlepage.before.recto"/> + <xsl:call-template name="refsynopsisdiv.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="refsynopsisdiv.titlepage.before.verso"/> + <xsl:call-template name="refsynopsisdiv.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="refsynopsisdiv.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsynopsisdiv.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsynopsisdiv.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsynopsisdiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsynopsisdiv.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsynopsisdiv.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsection.titlepage.recto"> + <xsl:choose> + <xsl:when test="refsectioninfo/title"> + <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="refsectioninfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="refsection.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="refsection.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsection.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsection.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsection.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsection.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="refsection.titlepage.before.recto"/> + <xsl:call-template name="refsection.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="refsection.titlepage.before.verso"/> + <xsl:call-template name="refsection.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="refsection.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsection.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsection.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsection.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsection.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsection.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsect1.titlepage.recto"> + <xsl:choose> + <xsl:when test="refsect1info/title"> + <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="refsect1info/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="refsect1.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="refsect1.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsect1.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsect1.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsect1.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsect1.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="refsect1.titlepage.before.recto"/> + <xsl:call-template name="refsect1.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="refsect1.titlepage.before.verso"/> + <xsl:call-template name="refsect1.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="refsect1.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsect1.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsect1.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect1.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsect2.titlepage.recto"> + <xsl:choose> + <xsl:when test="refsect2info/title"> + <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="refsect2info/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="refsect2.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="refsect2.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsect2.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsect2.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsect2.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsect2.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="refsect2.titlepage.before.recto"/> + <xsl:call-template name="refsect2.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="refsect2.titlepage.before.verso"/> + <xsl:call-template name="refsect2.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="refsect2.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsect2.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsect2.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect2.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="refsect3.titlepage.recto"> + <xsl:choose> + <xsl:when test="refsect3info/title"> + <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="refsect3info/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="refsect3.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="refsect3.titlepage.verso"> +</xsl:template> + +<xsl:template name="refsect3.titlepage.separator"> +</xsl:template> + +<xsl:template name="refsect3.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refsect3.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refsect3.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="refsect3.titlepage.before.recto"/> + <xsl:call-template name="refsect3.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="refsect3.titlepage.before.verso"/> + <xsl:call-template name="refsect3.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="refsect3.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="refsect3.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refsect3.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="refsect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="refsect3.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="refsect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="dedication.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/> +</xsl:call-template></fo:block> + <xsl:choose> + <xsl:when test="dedicationinfo/subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="dedication.titlepage.verso"> +</xsl:template> + +<xsl:template name="dedication.titlepage.separator"> +</xsl:template> + +<xsl:template name="dedication.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="dedication.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="dedication.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="dedication.titlepage.before.recto"/> + <xsl:call-template name="dedication.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="dedication.titlepage.before.verso"/> + <xsl:call-template name="dedication.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="dedication.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="dedication.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="dedication.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="dedication.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="acknowledgements.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::acknowledgements[1]"/> +</xsl:call-template></fo:block> + <xsl:choose> + <xsl:when test="acknowledgementsinfo/subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="acknowledgementsinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.verso"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.separator"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="acknowledgements.titlepage.before.recto"/> + <xsl:call-template name="acknowledgements.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="acknowledgements.titlepage.before.verso"/> + <xsl:call-template name="acknowledgements.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="acknowledgements.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="acknowledgements.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="acknowledgements.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="acknowledgements.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="acknowledgements.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="acknowledgements.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="preface.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::preface[1]"/> +</xsl:call-template></fo:block> + <xsl:choose> + <xsl:when test="prefaceinfo/subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="preface.titlepage.verso"> +</xsl:template> + +<xsl:template name="preface.titlepage.separator"> +</xsl:template> + +<xsl:template name="preface.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="preface.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="preface.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="preface.titlepage.before.recto"/> + <xsl:call-template name="preface.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="preface.titlepage.before.verso"/> + <xsl:call-template name="preface.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="preface.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="preface.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="preface.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="chapter.titlepage.recto"> + <xsl:choose> + <xsl:when test="chapterinfo/title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="chapterinfo/subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revhistory"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/abstract"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="chapter.titlepage.verso"> +</xsl:template> + +<xsl:template name="chapter.titlepage.separator"> +</xsl:template> + +<xsl:template name="chapter.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="chapter.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="chapter.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}"> + <xsl:variable name="recto.content"> + <xsl:call-template name="chapter.titlepage.before.recto"/> + <xsl:call-template name="chapter.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block margin-left="{$title.margin.left}"><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="chapter.titlepage.before.verso"/> + <xsl:call-template name="chapter.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="chapter.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="chapter.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="chapter.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" font-size="24.8832pt" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" font-style="italic" font-size="14.4pt" font-weight="bold"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style" space-before="0.5em" space-after="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="appendix.titlepage.recto"> + <xsl:choose> + <xsl:when test="appendixinfo/title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="appendixinfo/subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="appendix.titlepage.verso"> +</xsl:template> + +<xsl:template name="appendix.titlepage.separator"> +</xsl:template> + +<xsl:template name="appendix.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="appendix.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="appendix.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="appendix.titlepage.before.recto"/> + <xsl:call-template name="appendix.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="appendix.titlepage.before.verso"/> + <xsl:call-template name="appendix.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="appendix.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="appendix.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="appendix.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::appendix[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="section.titlepage.recto"> + <xsl:choose> + <xsl:when test="sectioninfo/title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sectioninfo/subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="section.titlepage.verso"> +</xsl:template> + +<xsl:template name="section.titlepage.separator"> +</xsl:template> + +<xsl:template name="section.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="section.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="section.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="section.titlepage.before.recto"/> + <xsl:call-template name="section.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="section.titlepage.before.verso"/> + <xsl:call-template name="section.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="section.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="section.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="section.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect1.titlepage.recto"> + <xsl:choose> + <xsl:when test="sect1info/title"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sect1info/subtitle"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect1.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect1.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect1.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect1.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect1.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect1.titlepage.before.recto"/> + <xsl:call-template name="sect1.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect1.titlepage.before.verso"/> + <xsl:call-template name="sect1.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="sect1.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect1.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect1.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect2.titlepage.recto"> + <xsl:choose> + <xsl:when test="sect2info/title"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sect2info/subtitle"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect2.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect2.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect2.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect2.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect2.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect2.titlepage.before.recto"/> + <xsl:call-template name="sect2.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect2.titlepage.before.verso"/> + <xsl:call-template name="sect2.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="sect2.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect2.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect2.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect3.titlepage.recto"> + <xsl:choose> + <xsl:when test="sect3info/title"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sect3info/subtitle"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect3.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect3.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect3.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect3.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect3.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect3.titlepage.before.recto"/> + <xsl:call-template name="sect3.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect3.titlepage.before.verso"/> + <xsl:call-template name="sect3.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="sect3.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect3.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect3.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect4.titlepage.recto"> + <xsl:choose> + <xsl:when test="sect4info/title"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sect4info/subtitle"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect4.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect4.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect4.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect4.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect4.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect4.titlepage.before.recto"/> + <xsl:call-template name="sect4.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect4.titlepage.before.verso"/> + <xsl:call-template name="sect4.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="sect4.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect4.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect4.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sect5.titlepage.recto"> + <xsl:choose> + <xsl:when test="sect5info/title"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sect5info/subtitle"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect5.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect5.titlepage.separator"> +</xsl:template> + +<xsl:template name="sect5.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect5.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect5.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect5.titlepage.before.recto"/> + <xsl:call-template name="sect5.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect5.titlepage.before.verso"/> + <xsl:call-template name="sect5.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="sect5.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sect5.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect5.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="simplesect.titlepage.recto"> + <xsl:choose> + <xsl:when test="simplesectinfo/title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="simplesectinfo/subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="simplesect.titlepage.verso"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.separator"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="simplesect.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="simplesect.titlepage.before.recto"/> + <xsl:call-template name="simplesect.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="simplesect.titlepage.before.verso"/> + <xsl:call-template name="simplesect.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="simplesect.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="simplesect.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="simplesect.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" margin-left="{$title.margin.left}" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="bibliography.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/> +</xsl:call-template></fo:block> + <xsl:choose> + <xsl:when test="bibliographyinfo/subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="bibliography.titlepage.verso"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.separator"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="bibliography.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="bibliography.titlepage.before.recto"/> + <xsl:call-template name="bibliography.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="bibliography.titlepage.before.verso"/> + <xsl:call-template name="bibliography.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="bibliography.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="bibliography.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="bibliography.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliography.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.recto"> + <xsl:choose> + <xsl:when test="bibliodivinfo/title"> + <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="bibliodivinfo/subtitle"> + <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="bibliodivinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="bibliodiv.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.verso"> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.separator"> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="bibliodiv.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="bibliodiv.titlepage.before.recto"/> + <xsl:call-template name="bibliodiv.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="bibliodiv.titlepage.before.verso"/> + <xsl:call-template name="bibliodiv.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="bibliodiv.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="bibliodiv.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="bibliodiv.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="bibliodiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::bibliodiv[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="bibliodiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="bibliodiv.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="bibliodiv.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="glossary.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/> +</xsl:call-template></fo:block> + <xsl:choose> + <xsl:when test="glossaryinfo/subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="glossary.titlepage.verso"> +</xsl:template> + +<xsl:template name="glossary.titlepage.separator"> +</xsl:template> + +<xsl:template name="glossary.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="glossary.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="glossary.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="glossary.titlepage.before.recto"/> + <xsl:call-template name="glossary.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="glossary.titlepage.before.verso"/> + <xsl:call-template name="glossary.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="glossary.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="glossary.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="glossary.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossary.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="glossdiv.titlepage.recto"> + <xsl:choose> + <xsl:when test="glossdivinfo/title"> + <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="glossdivinfo/subtitle"> + <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="glossdivinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="glossdiv.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="glossdiv.titlepage.verso"> +</xsl:template> + +<xsl:template name="glossdiv.titlepage.separator"> +</xsl:template> + +<xsl:template name="glossdiv.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="glossdiv.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="glossdiv.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="glossdiv.titlepage.before.recto"/> + <xsl:call-template name="glossdiv.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="glossdiv.titlepage.before.verso"/> + <xsl:call-template name="glossdiv.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="glossdiv.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="glossdiv.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="glossdiv.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="glossdiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="20.736pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::glossdiv[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="glossdiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="glossdiv.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="glossdiv.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="index.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::index[1]"/> +<xsl:with-param name="pagewide" select="1"/> +</xsl:call-template></fo:block> + <xsl:choose> + <xsl:when test="indexinfo/subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="index.titlepage.verso"> +</xsl:template> + +<xsl:template name="index.titlepage.separator"> +</xsl:template> + +<xsl:template name="index.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="index.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="index.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="index.titlepage.before.recto"/> + <xsl:call-template name="index.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="index.titlepage.before.verso"/> + <xsl:call-template name="index.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="index.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="index.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="index.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="index.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="indexdiv.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style"> +<xsl:call-template name="indexdiv.title"> +<xsl:with-param name="title" select="title"/> +</xsl:call-template></fo:block> + <xsl:choose> + <xsl:when test="indexdivinfo/subtitle"> + <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="indexdivinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="indexdiv.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="indexdiv.titlepage.verso"> +</xsl:template> + +<xsl:template name="indexdiv.titlepage.separator"> +</xsl:template> + +<xsl:template name="indexdiv.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="indexdiv.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="indexdiv.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="indexdiv.titlepage.before.recto"/> + <xsl:call-template name="indexdiv.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="indexdiv.titlepage.before.verso"/> + <xsl:call-template name="indexdiv.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="indexdiv.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="indexdiv.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="indexdiv.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="indexdiv.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="indexdiv.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="indexdiv.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="setindex.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" margin-left="0pt" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/> +<xsl:with-param name="pagewide" select="1"/> +</xsl:call-template></fo:block> + <xsl:choose> + <xsl:when test="setindexinfo/subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="setindex.titlepage.verso"> +</xsl:template> + +<xsl:template name="setindex.titlepage.separator"> +</xsl:template> + +<xsl:template name="setindex.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="setindex.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="setindex.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="setindex.titlepage.before.recto"/> + <xsl:call-template name="setindex.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="setindex.titlepage.before.verso"/> + <xsl:call-template name="setindex.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="setindex.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="setindex.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="setindex.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="setindex.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="colophon.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" margin-left="{$title.margin.left}" font-size="24.8832pt" font-family="{$title.fontset}" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::colophon[1]"/> +</xsl:call-template></fo:block> + <xsl:choose> + <xsl:when test="colophoninfo/subtitle"> + <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="colophoninfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="colophon.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="colophon.titlepage.verso"> +</xsl:template> + +<xsl:template name="colophon.titlepage.separator"> +</xsl:template> + +<xsl:template name="colophon.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="colophon.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="colophon.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="colophon.titlepage.before.recto"/> + <xsl:call-template name="colophon.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="colophon.titlepage.before.verso"/> + <xsl:call-template name="colophon.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="colophon.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="colophon.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="colophon.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="colophon.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="colophon.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="colophon.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="sidebar.titlepage.recto"> + <xsl:choose> + <xsl:when test="sidebarinfo/title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sidebarinfo/subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="sidebar.titlepage.verso"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.separator"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sidebar.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sidebar.titlepage.before.recto"/> + <xsl:call-template name="sidebar.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sidebar.titlepage.before.verso"/> + <xsl:call-template name="sidebar.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="sidebar.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="sidebar.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sidebar.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sidebar.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}" font-weight="bold"> +<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="sidebar.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="sidebar.titlepage.recto.style" font-family="{$title.fontset}"> +<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="qandaset.titlepage.recto"> + <xsl:choose> + <xsl:when test="qandasetinfo/title"> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/title"/> + </xsl:when> + <xsl:when test="blockinfo/title"> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="qandasetinfo/subtitle"> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/subtitle"/> + </xsl:when> + <xsl:when test="blockinfo/subtitle"> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/corpauthor"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/corpauthor"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/authorgroup"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/authorgroup"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/author"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/author"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/othercredit"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/othercredit"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/releaseinfo"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/releaseinfo"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/copyright"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/copyright"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/legalnotice"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/legalnotice"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/pubdate"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/pubdate"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revision"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revision"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/revhistory"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/revhistory"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="qandasetinfo/abstract"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="blockinfo/abstract"/> + <xsl:apply-templates mode="qandaset.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="qandaset.titlepage.verso"> +</xsl:template> + +<xsl:template name="qandaset.titlepage.separator"> +</xsl:template> + +<xsl:template name="qandaset.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="qandaset.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="qandaset.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="{$title.fontset}"> + <xsl:variable name="recto.content"> + <xsl:call-template name="qandaset.titlepage.before.recto"/> + <xsl:call-template name="qandaset.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block start-indent="0pt" text-align="center"><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="qandaset.titlepage.before.verso"/> + <xsl:call-template name="qandaset.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="qandaset.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="qandaset.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="qandaset.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" keep-with-next.within-column="always" font-size="24.8832pt" font-weight="bold"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::qandaset[1]"/> +</xsl:call-template> +</fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="corpauthor" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="authorgroup" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="author" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" font-size="14.4pt"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="othercredit" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="releaseinfo" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="copyright" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="legalnotice" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="pubdate" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revision" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="revhistory" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template match="abstract" mode="qandaset.titlepage.recto.auto.mode"> +<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="qandaset.titlepage.recto.style" space-before="0.5em" text-align="start" margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"> +<xsl:apply-templates select="." mode="qandaset.titlepage.recto.mode"/> +</fo:block> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="table.of.contents.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'TableofContents'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.verso"> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.separator"> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="table.of.contents.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="table.of.contents.titlepage.before.recto"/> + <xsl:call-template name="table.of.contents.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="table.of.contents.titlepage.before.verso"/> + <xsl:call-template name="table.of.contents.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="table.of.contents.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="table.of.contents.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="table.of.contents.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.tables.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofTables'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.tables.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="list.of.tables.titlepage.before.recto"/> + <xsl:call-template name="list.of.tables.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="list.of.tables.titlepage.before.verso"/> + <xsl:call-template name="list.of.tables.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="list.of.tables.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.tables.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.tables.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.figures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofFigures'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.figures.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="list.of.figures.titlepage.before.recto"/> + <xsl:call-template name="list.of.figures.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="list.of.figures.titlepage.before.verso"/> + <xsl:call-template name="list.of.figures.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="list.of.figures.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.figures.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.figures.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.examples.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofExamples'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.examples.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="list.of.examples.titlepage.before.recto"/> + <xsl:call-template name="list.of.examples.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="list.of.examples.titlepage.before.verso"/> + <xsl:call-template name="list.of.examples.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="list.of.examples.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.examples.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.examples.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.equations.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofEquations'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.equations.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="list.of.equations.titlepage.before.recto"/> + <xsl:call-template name="list.of.equations.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="list.of.equations.titlepage.before.verso"/> + <xsl:call-template name="list.of.equations.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="list.of.equations.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.equations.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.equations.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.procedures.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofProcedures'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.procedures.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="list.of.procedures.titlepage.before.recto"/> + <xsl:call-template name="list.of.procedures.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="list.of.procedures.titlepage.before.verso"/> + <xsl:call-template name="list.of.procedures.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="list.of.procedures.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.procedures.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.procedures.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.recto"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="list.of.unknowns.titlepage.recto.style" space-before.minimum="1em" space-before.optimum="1.5em" space-before.maximum="2em" space-after="0.5em" margin-left="{$title.margin.left}" start-indent="0pt" font-size="17.28pt" font-weight="bold" font-family="{$title.fontset}"> +<xsl:call-template name="gentext"> +<xsl:with-param name="key" select="'ListofUnknown'"/> +</xsl:call-template></fo:block> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.verso"> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.separator"> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="list.of.unknowns.titlepage"> + <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <xsl:variable name="recto.content"> + <xsl:call-template name="list.of.unknowns.titlepage.before.recto"/> + <xsl:call-template name="list.of.unknowns.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <fo:block><xsl:copy-of select="$recto.content"/></fo:block> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="list.of.unknowns.titlepage.before.verso"/> + <xsl:call-template name="list.of.unknowns.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <fo:block><xsl:copy-of select="$verso.content"/></fo:block> + </xsl:if> + <xsl:call-template name="list.of.unknowns.titlepage.separator"/> + </fo:block> +</xsl:template> + +<xsl:template match="*" mode="list.of.unknowns.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="list.of.unknowns.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +</xsl:stylesheet> + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.xsl new file mode 100644 index 000000000..2e2ec752f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/titlepage.xsl @@ -0,0 +1,767 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:fo="http://www.w3.org/1999/XSL/Format" + version='1.0'> + +<!-- ******************************************************************** + $Id: titlepage.xsl 8804 2010-08-09 16:41:43Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:attribute-set name="book.titlepage.recto.style"> + <xsl:attribute name="font-family"> + <xsl:value-of select="$title.fontset"/> + </xsl:attribute> + <xsl:attribute name="font-weight">bold</xsl:attribute> + <xsl:attribute name="font-size">12pt</xsl:attribute> + <xsl:attribute name="text-align">center</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="book.titlepage.verso.style"> + <xsl:attribute name="font-size">10pt</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="article.titlepage.recto.style"/> +<xsl:attribute-set name="article.titlepage.verso.style"/> + +<xsl:attribute-set name="set.titlepage.recto.style"/> +<xsl:attribute-set name="set.titlepage.verso.style"/> + +<xsl:attribute-set name="part.titlepage.recto.style"> + <xsl:attribute name="text-align">center</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="part.titlepage.verso.style"/> + +<xsl:attribute-set name="partintro.titlepage.recto.style"/> +<xsl:attribute-set name="partintro.titlepage.verso.style"/> + +<xsl:attribute-set name="reference.titlepage.recto.style"/> +<xsl:attribute-set name="reference.titlepage.verso.style"/> + +<xsl:attribute-set name="dedication.titlepage.recto.style"/> +<xsl:attribute-set name="dedication.titlepage.verso.style"/> + +<xsl:attribute-set name="acknowledgements.titlepage.recto.style"/> +<xsl:attribute-set name="acknowledgements.titlepage.verso.style"/> + +<xsl:attribute-set name="preface.titlepage.recto.style"/> +<xsl:attribute-set name="preface.titlepage.verso.style"/> + +<xsl:attribute-set name="chapter.titlepage.recto.style"/> +<xsl:attribute-set name="chapter.titlepage.verso.style"/> + +<xsl:attribute-set name="appendix.titlepage.recto.style"/> +<xsl:attribute-set name="appendix.titlepage.verso.style"/> + +<xsl:attribute-set name="bibliography.titlepage.recto.style"/> +<xsl:attribute-set name="bibliography.titlepage.verso.style"/> + +<xsl:attribute-set name="bibliodiv.titlepage.recto.style"/> +<xsl:attribute-set name="bibliodiv.titlepage.verso.style"/> + +<xsl:attribute-set name="glossary.titlepage.recto.style"/> +<xsl:attribute-set name="glossary.titlepage.verso.style"/> + +<xsl:attribute-set name="glossdiv.titlepage.recto.style"/> +<xsl:attribute-set name="glossdiv.titlepage.verso.style"/> + +<xsl:attribute-set name="index.titlepage.recto.style"/> +<xsl:attribute-set name="index.titlepage.verso.style"/> + +<xsl:attribute-set name="setindex.titlepage.recto.style"/> +<xsl:attribute-set name="setindex.titlepage.verso.style"/> + +<xsl:attribute-set name="indexdiv.titlepage.recto.style"/> +<xsl:attribute-set name="indexdiv.titlepage.verso.style"/> + +<xsl:attribute-set name="colophon.titlepage.recto.style"/> +<xsl:attribute-set name="colophon.titlepage.verso.style"/> + +<xsl:attribute-set name="sidebar.titlepage.recto.style"/> +<xsl:attribute-set name="sidebar.titlepage.verso.style"/> + +<xsl:attribute-set name="qandaset.titlepage.recto.style"/> +<xsl:attribute-set name="qandaset.titlepage.verso.style"/> + +<xsl:attribute-set name="section.titlepage.recto.style"> + <xsl:attribute name="keep-together.within-column">always</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="section.titlepage.verso.style"> + <xsl:attribute name="keep-together.within-column">always</xsl:attribute> + <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute> +</xsl:attribute-set> + +<xsl:attribute-set name="sect1.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect1.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect2.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect2.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect3.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect3.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect4.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect4.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect5.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect5.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="simplesect.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="simplesect.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refnamediv.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refnamediv.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsynopsisdiv.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsynopsisdiv.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsection.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsection.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsect1.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsect1.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsect2.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsect2.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="refsect3.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="refsect3.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="table.of.contents.titlepage.recto.style"/> +<xsl:attribute-set name="table.of.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.tables.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.tables.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.figures.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.figures.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.equations.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.equations.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.examples.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.examples.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.procedures.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.procedures.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.unknowns.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.unknowns.contents.titlepage.verso.style"/> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="titlepage.mode"> + <!-- if an element isn't found in this mode, try the default mode --> + <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="abbrev" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="abstract" mode="titlepage.mode"> + <fo:block xsl:use-attribute-sets="abstract.properties"> + <fo:block xsl:use-attribute-sets="abstract.title.properties"> + <xsl:choose> + <xsl:when test="title|info/title"> + <xsl:apply-templates select="title|info/title"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Abstract'"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </fo:block> + <xsl:apply-templates select="*[not(self::title)]" mode="titlepage.mode"/> + </fo:block> +</xsl:template> + +<xsl:template match="abstract/title" mode="titlepage.mode"/> + +<xsl:template match="abstract/title" mode="titlepage.abstract.title.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="address" mode="titlepage.mode"> + <!-- use the normal address handling code --> + <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="affiliation" mode="titlepage.mode"> + <fo:block> + <xsl:apply-templates mode="titlepage.mode"/> + </fo:block> +</xsl:template> + +<xsl:template match="artpagenums" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="author" mode="titlepage.mode"> + <fo:block> + <xsl:call-template name="anchor"/> + <xsl:choose> + <xsl:when test="orgname"> + <xsl:apply-templates/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="person.name"/> + <xsl:if test="affiliation/orgname"> + <xsl:text>, </xsl:text> + <xsl:apply-templates select="affiliation/orgname" mode="titlepage.mode"/> + </xsl:if> + <xsl:if test="email|affiliation/address/email"> + <xsl:text> </xsl:text> + <xsl:apply-templates select="(email|affiliation/address/email)[1]"/> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </fo:block> +</xsl:template> + +<xsl:template match="authorblurb" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="authorgroup" mode="titlepage.mode"> + <fo:wrapper> + <xsl:call-template name="anchor"/> + <xsl:apply-templates mode="titlepage.mode"/> + </fo:wrapper> +</xsl:template> + +<xsl:template match="authorinitials" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="bibliomisc" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="bibliomset" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="collab" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="confgroup" mode="titlepage.mode"> + <fo:block> + <xsl:apply-templates mode="titlepage.mode"/> + </fo:block> +</xsl:template> + +<xsl:template match="confdates" mode="titlepage.mode"> + <fo:block> + <xsl:apply-templates mode="titlepage.mode"/> + </fo:block> +</xsl:template> + +<xsl:template match="conftitle" mode="titlepage.mode"> + <fo:block> + <xsl:apply-templates mode="titlepage.mode"/> + </fo:block> +</xsl:template> + +<xsl:template match="confnum" mode="titlepage.mode"> + <!-- suppress --> +</xsl:template> + +<xsl:template match="contractnum" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="contractsponsor" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="contrib" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="copyright" mode="titlepage.mode"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Copyright'"/> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:call-template name="dingbat"> + <xsl:with-param name="dingbat">copyright</xsl:with-param> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:call-template name="copyright.years"> + <xsl:with-param name="years" select="year"/> + <xsl:with-param name="print.ranges" select="$make.year.ranges"/> + <xsl:with-param name="single.year.ranges" + select="$make.single.year.ranges"/> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:apply-templates select="holder" mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="year" mode="titlepage.mode"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="holder" mode="titlepage.mode"> + <xsl:apply-templates/> + <xsl:if test="position() < last()"> + <xsl:text>, </xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template match="corpauthor" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="corpcredit" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="corpname" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="date" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="edition" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> + <xsl:call-template name="gentext.space"/> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Edition'"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="editor" mode="titlepage.mode"> + <!-- The first editor is dealt with in the following template, + which in turn displays all editors of the same mode. --> +</xsl:template> + +<xsl:template match="editor[1]" priority="2" mode="titlepage.mode"> + <xsl:call-template name="gentext.edited.by"/> + <xsl:call-template name="gentext.space"/> + <xsl:call-template name="person.name.list"> + <xsl:with-param name="person.list" select="../editor"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="firstname" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="graphic" mode="titlepage.mode"> + <!-- use the normal graphic handling code --> + <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="honorific" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="isbn" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="issn" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="biblioid" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="itermset" mode="titlepage.mode"> + <!-- discard --> +</xsl:template> + +<xsl:template match="invpartnumber" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="issuenum" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="jobtitle" mode="titlepage.mode"> + <fo:block> + <xsl:apply-templates mode="titlepage.mode"/> + </fo:block> +</xsl:template> + +<xsl:template match="keywordset" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="legalnotice" mode="titlepage.mode"> + + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + + <fo:block id="{$id}"> + <xsl:if test="title"> <!-- FIXME: add param for using default title? --> + <xsl:call-template name="formal.object.heading"/> + </xsl:if> + <xsl:apply-templates mode="titlepage.mode"/> + </fo:block> +</xsl:template> + +<xsl:template match="legalnotice/title" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="lineage" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="modespec" mode="titlepage.mode"> + <!-- discard --> +</xsl:template> + +<xsl:template match="orgdiv" mode="titlepage.mode"> + <xsl:if test="preceding-sibling::*[1][self::orgname]"> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="orgname" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="othercredit" mode="titlepage.mode"> + <xsl:variable name="contrib" select="string(contrib)"/> + <xsl:choose> + <xsl:when test="contrib"> + <xsl:if test="not(preceding-sibling::othercredit[string(contrib)=$contrib])"> + <fo:block> + <xsl:apply-templates mode="titlepage.mode" select="contrib"/> + <xsl:text>: </xsl:text> + <xsl:call-template name="person.name"/> + <xsl:apply-templates mode="titlepage.mode" select="affiliation"/> + <xsl:apply-templates select="following-sibling::othercredit[string(contrib)=$contrib]" mode="titlepage.othercredits"/> + </fo:block> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <fo:block><xsl:call-template name="person.name"/></fo:block> + <xsl:apply-templates mode="titlepage.mode" select="./affiliation"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="othercredit" mode="titlepage.othercredits"> + <xsl:text>, </xsl:text> + <xsl:call-template name="person.name"/> +</xsl:template> + +<xsl:template match="othername" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="pagenums" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="printhistory" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="productname" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="productnumber" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="pubdate" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="publisher" mode="titlepage.mode"> + <fo:block> + <xsl:apply-templates mode="titlepage.mode"/> + </fo:block> +</xsl:template> + +<xsl:template match="publishername" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="pubsnumber" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="releaseinfo" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revhistory" mode="titlepage.mode"> + + <xsl:variable name="explicit.table.width"> + <xsl:call-template name="pi.dbfo_table-width"/> + </xsl:variable> + + <xsl:variable name="table.width"> + <xsl:choose> + <xsl:when test="$explicit.table.width != ''"> + <xsl:value-of select="$explicit.table.width"/> + </xsl:when> + <xsl:when test="$default.table.width = ''"> + <xsl:text>100%</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$default.table.width"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <fo:table table-layout="fixed" width="{$table.width}" xsl:use-attribute-sets="revhistory.table.properties"> + <fo:table-column column-number="1" column-width="proportional-column-width(1)"/> + <fo:table-column column-number="2" column-width="proportional-column-width(1)"/> + <fo:table-column column-number="3" column-width="proportional-column-width(1)"/> + <fo:table-body start-indent="0pt" end-indent="0pt"> + <fo:table-row> + <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties"> + <fo:block xsl:use-attribute-sets="revhistory.title.properties"> + <xsl:choose> + <xsl:when test="title|info/title"> + <xsl:apply-templates select="title|info/title" mode="titlepage.mode"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'RevHistory'"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </fo:block> + </fo:table-cell> + </fo:table-row> + <xsl:apply-templates select="*[not(self::title)]" mode="titlepage.mode"/> + </fo:table-body> + </fo:table> + +</xsl:template> + + +<xsl:template match="revhistory/revision" mode="titlepage.mode"> + <xsl:variable name="revnumber" select="revnumber"/> + <xsl:variable name="revdate" select="date"/> + <xsl:variable name="revauthor" select="authorinitials|author"/> + <xsl:variable name="revremark" select="revremark|revdescription"/> + <fo:table-row> + <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> + <fo:block> + <xsl:if test="$revnumber"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Revision'"/> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:apply-templates select="$revnumber[1]" mode="titlepage.mode"/> + </xsl:if> + </fo:block> + </fo:table-cell> + <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> + <fo:block> + <xsl:apply-templates select="$revdate[1]" mode="titlepage.mode"/> + </fo:block> + </fo:table-cell> + <fo:table-cell xsl:use-attribute-sets="revhistory.table.cell.properties"> + <fo:block> + <xsl:for-each select="$revauthor"> + <xsl:apply-templates select="." mode="titlepage.mode"/> + <xsl:if test="position() != last()"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + </fo:block> + </fo:table-cell> + </fo:table-row> + <xsl:if test="$revremark"> + <fo:table-row> + <fo:table-cell number-columns-spanned="3" xsl:use-attribute-sets="revhistory.table.cell.properties"> + <fo:block> + <xsl:apply-templates select="$revremark[1]" mode="titlepage.mode"/> + </fo:block> + </fo:table-cell> + </fo:table-row> + </xsl:if> +</xsl:template> + +<xsl:template match="revision/revnumber" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/date" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/authorinitials" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/author" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/revremark" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/revdescription" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="seriesvolnums" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="shortaffil" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subjectset" mode="titlepage.mode"> + <!-- discard --> +</xsl:template> + +<xsl:template match="subtitle" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="surname" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="titleabbrev" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="volumenum" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Book templates --> + +<!-- Note: these templates cannot use *.titlepage.recto.mode or + *.titlepage.verso.mode. If they do then subsequent use of a custom + titlepage.templates.xml file will not work correctly. --> + +<!-- book recto --> + +<xsl:template match="bookinfo/authorgroup|book/info/authorgroup" + mode="titlepage.mode" priority="2"> + <fo:block> + <xsl:call-template name="anchor"/> + <xsl:apply-templates mode="titlepage.mode"/> + </fo:block> +</xsl:template> + +<!-- book verso --> + +<xsl:template name="book.verso.title"> + <fo:block> + <xsl:apply-templates mode="titlepage.mode"/> + + <xsl:if test="following-sibling::subtitle + |following-sibling::info/subtitle + |following-sibling::bookinfo/subtitle"> + <xsl:text>: </xsl:text> + + <xsl:apply-templates select="(following-sibling::subtitle + |following-sibling::info/subtitle + |following-sibling::bookinfo/subtitle)[1]" + mode="book.verso.subtitle.mode"/> + </xsl:if> + </fo:block> +</xsl:template> + +<xsl:template match="subtitle" mode="book.verso.subtitle.mode"> + <xsl:apply-templates mode="titlepage.mode"/> + <xsl:if test="following-sibling::subtitle"> + <xsl:text>: </xsl:text> + <xsl:apply-templates select="following-sibling::subtitle[1]" + mode="book.verso.subtitle.mode"/> + </xsl:if> +</xsl:template> + +<xsl:template name="verso.authorgroup"> + <fo:block> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'by'"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:call-template name="person.name.list"> + <xsl:with-param name="person.list" select="author|corpauthor|editor"/> + </xsl:call-template> + </fo:block> + <xsl:apply-templates select="othercredit" mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="bookinfo/author|book/info/author" + mode="titlepage.mode" priority="2"> + <fo:block> + <xsl:call-template name="person.name"/> + </fo:block> +</xsl:template> + +<xsl:template match="bookinfo/corpauthor|book/info/corpauthor" + mode="titlepage.mode" priority="2"> + <fo:block> + <xsl:apply-templates/> + </fo:block> +</xsl:template> + +<xsl:template match="bookinfo/pubdate|book/info/pubdate" + mode="titlepage.mode" priority="2"> + <fo:block> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'pubdate'"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:apply-templates mode="titlepage.mode"/> + </fo:block> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/toc.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/toc.xsl new file mode 100644 index 000000000..cf327242e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/toc.xsl @@ -0,0 +1,332 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:fo="http://www.w3.org/1999/XSL/Format" + version='1.0'> + +<!-- ******************************************************************** + $Id: toc.xsl 8323 2009-03-12 22:52:17Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- only set, book and part puts toc in its own page sequence --> + +<xsl:template match="set/toc | book/toc | part/toc"> + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="node" select="parent::*"/> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + + <!-- Do not output the toc element if one is already generated + by the use of $generate.toc parameter, or if + generating a source toc is turned off --> + <xsl:if test="not(contains($toc.params, 'toc')) and + ($process.source.toc != 0 or $process.empty.source.toc != 0)"> + <!-- Don't generate a page sequence unless there is content --> + <xsl:variable name="content"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <xsl:apply-templates /> + </xsl:when> + <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0"> + <!-- trick to switch context node to parent element --> + <xsl:for-each select="parent::*"> + <xsl:choose> + <xsl:when test="self::set"> + <xsl:call-template name="set.toc"> + <xsl:with-param name="toc.title.p" + select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="self::book"> + <xsl:call-template name="division.toc"> + <xsl:with-param name="toc.title.p" + select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="self::part"> + <xsl:call-template name="division.toc"> + <xsl:with-param name="toc.title.p" + select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:when> + </xsl:choose> + </xsl:for-each> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:if test="string-length(normalize-space($content)) != 0"> + <xsl:variable name="lot-master-reference"> + <xsl:call-template name="select.pagemaster"> + <xsl:with-param name="pageclass" select="'lot'"/> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="page.sequence"> + <xsl:with-param name="master-reference" + select="$lot-master-reference"/> + <xsl:with-param name="element" select="'toc'"/> + <xsl:with-param name="gentext-key" select="'TableofContents'"/> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + </xsl:if> + </xsl:if> +</xsl:template> + +<xsl:template match="chapter/toc | appendix/toc | preface/toc | article/toc"> + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="node" select="parent::*"/> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + + <!-- Do not output the toc element if one is already generated + by the use of $generate.toc parameter, or if + generating a source toc is turned off --> + <xsl:if test="not(contains($toc.params, 'toc')) and + ($process.source.toc != 0 or $process.empty.source.toc != 0)"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <fo:block> + <xsl:apply-templates/> + </fo:block> + </xsl:when> + <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0"> + <!-- trick to switch context node to section element --> + <xsl:for-each select="parent::*"> + <xsl:call-template name="component.toc"> + <xsl:with-param name="toc.title.p" + select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:for-each> + </xsl:when> + </xsl:choose> + <xsl:call-template name="component.toc.separator"/> + </xsl:if> +</xsl:template> + +<xsl:template match="section/toc + |sect1/toc + |sect2/toc + |sect3/toc + |sect4/toc + |sect5/toc"> + + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="node" select="parent::*"/> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + + <!-- Do not output the toc element if one is already generated + by the use of $generate.toc parameter, or if + generating a source toc is turned off --> + <xsl:if test="not(contains($toc.params, 'toc')) and + ($process.source.toc != 0 or $process.empty.source.toc != 0)"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <fo:block> + <xsl:apply-templates/> + </fo:block> + </xsl:when> + <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0"> + <!-- trick to switch context node to section element --> + <xsl:for-each select="parent::*"> + <xsl:call-template name="section.toc"> + <xsl:with-param name="toc.title.p" + select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:for-each> + </xsl:when> + </xsl:choose> + <xsl:call-template name="section.toc.separator"/> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="tocpart|tocchap + |toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"> + <xsl:apply-templates select="tocentry"/> + <xsl:if test="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"> + <fo:block start-indent="{count(ancestor::*)*2}pc"> + <xsl:apply-templates select="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"/> + </fo:block> + </xsl:if> +</xsl:template> + +<xsl:template match="tocentry|lotentry|tocdiv|tocfront|tocback"> + <fo:block text-align-last="justify" + end-indent="2pc" + last-line-end-indent="-2pc"> + <fo:inline keep-with-next.within-line="always"> + <xsl:choose> + <xsl:when test="@linkend"> + <fo:basic-link internal-destination="{@linkend}"> + <xsl:apply-templates/> + </fo:basic-link> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </fo:inline> + + <xsl:choose> + <xsl:when test="@linkend"> + <fo:inline keep-together.within-line="always"> + <xsl:text> </xsl:text> + <fo:leader leader-pattern="dots" + keep-with-next.within-line="always"/> + <xsl:text> </xsl:text> + <fo:basic-link internal-destination="{@linkend}"> + <xsl:choose> + <xsl:when test="@pagenum"> + <xsl:value-of select="@pagenum"/> + </xsl:when> + <xsl:otherwise> + <fo:page-number-citation ref-id="{@linkend}"/> + </xsl:otherwise> + </xsl:choose> + </fo:basic-link> + </fo:inline> + </xsl:when> + <xsl:when test="@pagenum"> + <fo:inline keep-together.within-line="always"> + <xsl:text> </xsl:text> + <fo:leader leader-pattern="dots" + keep-with-next.within-line="always"/> + <xsl:text> </xsl:text> + <xsl:value-of select="@pagenum"/> + </fo:inline> + </xsl:when> + <xsl:otherwise> + <!-- just the leaders, what else can I do? --> + <fo:inline keep-together.within-line="always"> + <xsl:text> </xsl:text> + <fo:leader leader-pattern="space" + keep-with-next.within-line="always"/> + </fo:inline> + </xsl:otherwise> + </xsl:choose> + </fo:block> +</xsl:template> + +<xsl:template match="toc/title"> + <fo:block font-weight="bold"> + <xsl:apply-templates/> + </fo:block> +</xsl:template> + +<xsl:template match="toc/subtitle"> + <fo:block font-weight="bold"> + <xsl:apply-templates/> + </fo:block> +</xsl:template> + +<xsl:template match="toc/titleabbrev"> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- A lot element must have content, because there is no attribute + to select what kind of list should be generated --> +<xsl:template match="book/lot | part/lot"> + <!-- Don't generate a page sequence unless there is content --> + <xsl:variable name="content"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <xsl:apply-templates /> + </xsl:when> + <xsl:when test="not(child::*) and $process.empty.source.toc != 0"> + <xsl:call-template name="process.empty.lot"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:if test="string-length(normalize-space($content)) != 0"> + <xsl:variable name="lot-master-reference"> + <xsl:call-template name="select.pagemaster"> + <xsl:with-param name="pageclass" select="'lot'"/> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="page.sequence"> + <xsl:with-param name="master-reference" + select="$lot-master-reference"/> + <xsl:with-param name="element" select="'toc'"/> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + </xsl:if> +</xsl:template> + +<xsl:template match="chapter/lot | appendix/lot | preface/lot | article/lot"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <fo:block> + <xsl:apply-templates/> + </fo:block> + <xsl:call-template name="component.toc.separator"/> + </xsl:when> + <xsl:when test="not(child::*) and $process.empty.source.toc != 0"> + <xsl:call-template name="process.empty.lot"/> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template match="section/lot + |sect1/lot + |sect2/lot + |sect3/lot + |sect4/lot + |sect5/lot"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <fo:block> + <xsl:apply-templates/> + </fo:block> + <xsl:call-template name="section.toc.separator"/> + </xsl:when> + <xsl:when test="not(child::*) and $process.empty.source.toc != 0"> + <xsl:call-template name="process.empty.lot"/> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template name="process.empty.lot"> + <!-- An empty lot element does not provide any information to indicate + what should be included in it. You can customize this + template to generate a lot based on @role or something --> + <xsl:message> + <xsl:text>Warning: don't know what to generate for </xsl:text> + <xsl:text>lot that has no children.</xsl:text> + </xsl:message> +</xsl:template> + +<xsl:template match="lot/title"> + <fo:block font-weight="bold"> + <xsl:apply-templates/> + </fo:block> +</xsl:template> + +<xsl:template match="lot/subtitle"> + <fo:block font-weight="bold"> + <xsl:apply-templates/> + </fo:block> +</xsl:template> + +<xsl:template match="lot/titleabbrev"> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/verbatim.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/verbatim.xsl new file mode 100644 index 000000000..098489a5c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/verbatim.xsl @@ -0,0 +1,465 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:fo="http://www.w3.org/1999/XSL/Format" + xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" + xmlns:xverb="com.nwalsh.xalan.Verbatim" + xmlns:lxslt="http://xml.apache.org/xslt" + xmlns:exsl="http://exslt.org/common" + exclude-result-prefixes="sverb xverb lxslt exsl" + version='1.0'> + +<!-- ******************************************************************** + $Id: verbatim.xsl 8344 2009-03-16 06:35:43Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- XSLTHL highlighting is turned off by default. See highlighting/README + for instructions on how to turn on XSLTHL --> +<xsl:template name="apply-highlighting"> + <xsl:apply-templates/> +</xsl:template> + +<lxslt:component prefix="xverb" + functions="numberLines"/> + +<xsl:template match="programlisting|screen|synopsis"> + <xsl:param name="suppress-numbers" select="'0'"/> + <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + + <xsl:variable name="content"> + <xsl:choose> + <xsl:when test="$suppress-numbers = '0' + and @linenumbering = 'numbered' + and $use.extensions != '0' + and $linenumbering.extension != '0'"> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf"> + <xsl:choose> + <xsl:when test="$highlight.source != 0"> + <xsl:call-template name="apply-highlighting"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$highlight.source != 0"> + <xsl:call-template name="apply-highlighting"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="block.content"> + <xsl:choose> + <xsl:when test="$shade.verbatim != 0"> + <fo:block id="{$id}" + xsl:use-attribute-sets="monospace.verbatim.properties shade.verbatim.style"> + <xsl:choose> + <xsl:when test="$hyphenate.verbatim != 0 and + $exsl.node.set.available != 0"> + <xsl:apply-templates select="exsl:node-set($content)" + mode="hyphenate.verbatim"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$content"/> + </xsl:otherwise> + </xsl:choose> + </fo:block> + </xsl:when> + <xsl:otherwise> + <fo:block id="{$id}" + xsl:use-attribute-sets="monospace.verbatim.properties"> + <xsl:choose> + <xsl:when test="$hyphenate.verbatim != 0 and + $exsl.node.set.available != 0"> + <xsl:apply-templates select="exsl:node-set($content)" + mode="hyphenate.verbatim"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$content"/> + </xsl:otherwise> + </xsl:choose> + </fo:block> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <!-- Need a block-container for these features --> + <xsl:when test="@width != '' or + (self::programlisting and + starts-with($writing.mode, 'rl'))"> + <fo:block-container start-indent="0pt" end-indent="0pt"> + <xsl:if test="@width != ''"> + <xsl:attribute name="width"> + <xsl:value-of select="concat(@width, '*', $monospace.verbatim.font.width)"/> + </xsl:attribute> + </xsl:if> + <!-- All known program code is left-to-right --> + <xsl:if test="self::programlisting and + starts-with($writing.mode, 'rl')"> + <xsl:attribute name="writing-mode">lr-tb</xsl:attribute> + </xsl:if> + <xsl:copy-of select="$block.content"/> + </fo:block-container> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$block.content"/> + </xsl:otherwise> + </xsl:choose> + +</xsl:template> + +<xsl:template match="literallayout"> + <xsl:param name="suppress-numbers" select="'0'"/> + + <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + + <xsl:variable name="content"> + <xsl:choose> + <xsl:when test="$suppress-numbers = '0' + and @linenumbering = 'numbered' + and $use.extensions != '0' + and $linenumbering.extension != '0'"> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf"> + <xsl:apply-templates/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="@class='monospaced'"> + <xsl:choose> + <xsl:when test="$shade.verbatim != 0"> + <fo:block id="{$id}" + xsl:use-attribute-sets="monospace.verbatim.properties shade.verbatim.style"> + + <xsl:copy-of select="$content"/> + </fo:block> + </xsl:when> + <xsl:otherwise> + <fo:block id="{$id}" + xsl:use-attribute-sets="monospace.verbatim.properties"> + <xsl:copy-of select="$content"/> + </fo:block> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$shade.verbatim != 0"> + <fo:block id="{$id}" + xsl:use-attribute-sets="verbatim.properties shade.verbatim.style"> + <xsl:copy-of select="$content"/> + </fo:block> + </xsl:when> + <xsl:otherwise> + <fo:block id="{$id}" + xsl:use-attribute-sets="verbatim.properties"> + <xsl:copy-of select="$content"/> + </fo:block> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="address"> + <xsl:param name="suppress-numbers" select="'0'"/> + + <xsl:variable name="content"> + <xsl:choose> + <xsl:when test="$suppress-numbers = '0' + and @linenumbering = 'numbered' + and $use.extensions != '0' + and $linenumbering.extension != '0'"> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf"> + <xsl:apply-templates/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <fo:block xsl:use-attribute-sets="verbatim.properties"> + <xsl:copy-of select="$content"/> + </fo:block> +</xsl:template> + +<xsl:template name="number.rtf.lines"> + <xsl:param name="rtf" select="''"/> + <xsl:param name="pi.context" select="."/> + + <!-- Save the global values --> + <xsl:variable name="global.linenumbering.everyNth" + select="$linenumbering.everyNth"/> + + <xsl:variable name="global.linenumbering.separator" + select="$linenumbering.separator"/> + + <xsl:variable name="global.linenumbering.width" + select="$linenumbering.width"/> + + <!-- Extract the <?dbfo linenumbering.*?> PI values --> + <xsl:variable name="pi.linenumbering.everyNth"> + <xsl:call-template name="pi.dbfo_linenumbering.everyNth"> + <xsl:with-param name="node" select="$pi.context"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="pi.linenumbering.separator"> + <xsl:call-template name="pi.dbfo_linenumbering.separator"> + <xsl:with-param name="node" select="$pi.context"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="pi.linenumbering.width"> + <xsl:call-template name="pi.dbfo_linenumbering.width"> + <xsl:with-param name="node" select="$pi.context"/> + </xsl:call-template> + </xsl:variable> + + <!-- Construct the 'in-context' values --> + <xsl:variable name="linenumbering.everyNth"> + <xsl:choose> + <xsl:when test="$pi.linenumbering.everyNth != ''"> + <xsl:value-of select="$pi.linenumbering.everyNth"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$global.linenumbering.everyNth"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="linenumbering.separator"> + <xsl:choose> + <xsl:when test="$pi.linenumbering.separator != ''"> + <xsl:value-of select="$pi.linenumbering.separator"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$global.linenumbering.separator"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="linenumbering.width"> + <xsl:choose> + <xsl:when test="$pi.linenumbering.width != ''"> + <xsl:value-of select="$pi.linenumbering.width"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$global.linenumbering.width"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="linenumbering.startinglinenumber"> + <xsl:choose> + <xsl:when test="$pi.context/@startinglinenumber"> + <xsl:value-of select="$pi.context/@startinglinenumber"/> + </xsl:when> + <xsl:when test="$pi.context/@continuation='continues'"> + <xsl:variable name="lastLine"> + <xsl:choose> + <xsl:when test="$pi.context/self::programlisting"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" + select="preceding::programlisting[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$pi.context/self::screen"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" + select="preceding::screen[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$pi.context/self::literallayout"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" + select="preceding::literallayout[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$pi.context/self::address"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" + select="preceding::address[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$pi.context/self::synopsis"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" + select="preceding::synopsis[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Unexpected verbatim environment: </xsl:text> + <xsl:value-of select="local-name(.)"/> + </xsl:message> + <xsl:value-of select="0"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:value-of select="$lastLine + 1"/> + </xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="function-available('sverb:numberLines')"> + <xsl:copy-of select="sverb:numberLines($rtf)"/> + </xsl:when> + <xsl:when test="function-available('xverb:numberLines')"> + <xsl:copy-of select="xverb:numberLines($rtf)"/> + </xsl:when> + <xsl:otherwise> + <xsl:message terminate="yes"> + <xsl:text>No numberLines function available.</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ======================================================================== --> + +<xsl:template name="lastLineNumber"> + <xsl:param name="listings"/> + <xsl:param name="number" select="0"/> + + <xsl:variable name="lines"> + <xsl:call-template name="countLines"> + <xsl:with-param name="listing" select="string($listings[1])"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="not($listings)"> + <xsl:value-of select="$number"/> + </xsl:when> + <xsl:when test="$listings[1]/@startinglinenumber"> + <xsl:value-of select="$number + $listings[1]/@startinglinenumber + $lines - 1"/> + </xsl:when> + <xsl:when test="$listings[1]/@continuation='continues'"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" select="listings[position() > 1]"/> + <xsl:with-param name="number" select="$number + $lines"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$lines"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="countLines"> + <xsl:param name="listing"/> + <xsl:param name="count" select="1"/> + + <xsl:choose> + <xsl:when test="contains($listing, ' ')"> + <xsl:call-template name="countLines"> + <xsl:with-param name="listing" select="substring-after($listing, ' ')"/> + <xsl:with-param name="count" select="$count + 1"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$count"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ======================================================================== --> + +<xsl:template match="node()|@*" mode="hyphenate.verbatim"> + <xsl:copy> + <xsl:copy-of select="@*"/> + <xsl:apply-templates mode="hyphenate.verbatim"/> + </xsl:copy> +</xsl:template> + +<xsl:template match="text()" mode="hyphenate.verbatim" priority="2"> + <xsl:call-template name="hyphenate.verbatim.block"> + <xsl:with-param name="content" select="."/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="hyphenate.verbatim.block"> + <xsl:param name="content" select="''"/> + <xsl:param name="count" select="1"/> + + <!-- recurse on lines first to keep recursion depth reasonable --> + <xsl:choose> + <xsl:when test="contains($content, ' ')"> + <xsl:variable name="line" select="substring-before($content, ' ')"/> + <xsl:variable name="rest" select="substring-after($content, ' ')"/> + <xsl:call-template name="hyphenate.verbatim"> + <xsl:with-param name="content" select="concat($line, ' ')"/> + </xsl:call-template> + <xsl:call-template name="hyphenate.verbatim.block"> + <xsl:with-param name="content" select="$rest"/> + <xsl:with-param name="count" select="$count + 1"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="hyphenate.verbatim"> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + +</xsl:template> + +<xsl:template name="hyphenate.verbatim"> + <xsl:param name="content"/> + <xsl:variable name="head" select="substring($content, 1, 1)"/> + <xsl:variable name="tail" select="substring($content, 2)"/> + <xsl:choose> + <!-- Place soft-hyphen after space or non-breakable space. --> + <xsl:when test="$head = ' ' or $head = ' '"> + <xsl:text> </xsl:text> + <xsl:text>­</xsl:text> + </xsl:when> + <xsl:when test="$hyphenate.verbatim.characters != '' and + translate($head, $hyphenate.verbatim.characters, '') = '' and not($tail = '')"> + <xsl:value-of select="$head"/> + <xsl:text>­</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$head"/> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="$tail"> + <xsl:call-template name="hyphenate.verbatim"> + <xsl:with-param name="content" select="$tail"/> + </xsl:call-template> + </xsl:if> +</xsl:template> + + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xep.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xep.xsl new file mode 100644 index 000000000..14ce59fd5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xep.xsl @@ -0,0 +1,180 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:fo="http://www.w3.org/1999/XSL/Format" + xmlns:rx="http://www.renderx.com/XSL/Extensions" + version='1.0'> + +<!-- ******************************************************************** + $Id: xep.xsl 7531 2007-10-17 18:06:49Z dcramer $ + ******************************************************************** + (c) Stephane Bline Peregrine Systems 2001 + Implementation of xep extensions: + * Pdf bookmarks (based on the XEP 2.5 implementation) + * Document information (XEP 2.5 meta information extensions) + ******************************************************************** --> + +<!-- FIXME: Norm, I changed things so that the top-level element (book or set) + does not appear in the TOC. Is this the right thing? --> + +<xsl:template name="xep-document-information"> + <rx:meta-info> + <xsl:variable name="authors" + select="(//author|//editor|//corpauthor|//authorgroup)[1]"/> + <xsl:if test="$authors"> + <xsl:variable name="author"> + <xsl:choose> + <xsl:when test="$authors[self::authorgroup]"> + <xsl:call-template name="person.name.list"> + <xsl:with-param name="person.list" + select="$authors/*[self::author|self::corpauthor| + self::othercredit|self::editor]"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$authors[self::corpauthor]"> + <xsl:value-of select="$authors"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="person.name"> + <xsl:with-param name="node" select="$authors"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:element name="rx:meta-field"> + <xsl:attribute name="name">author</xsl:attribute> + <xsl:attribute name="value"> + <xsl:value-of select="normalize-space($author)"/> + </xsl:attribute> + </xsl:element> + </xsl:if> + + <xsl:variable name="title"> + <xsl:apply-templates select="/*[1]" mode="label.markup"/> + <xsl:apply-templates select="/*[1]" mode="title.markup"/> + </xsl:variable> + + <xsl:element name="rx:meta-field"> + <xsl:attribute name="name">creator</xsl:attribute> + <xsl:attribute name="value"> + <xsl:text>DocBook </xsl:text> + <xsl:value-of select="$DistroTitle"/> + <xsl:text> V</xsl:text> + <xsl:value-of select="$VERSION"/> + </xsl:attribute> + </xsl:element> + + <xsl:element name="rx:meta-field"> + <xsl:attribute name="name">title</xsl:attribute> + <xsl:attribute name="value"> + <xsl:value-of select="normalize-space($title)"/> + </xsl:attribute> + </xsl:element> + + <xsl:if test="//keyword"> + <xsl:element name="rx:meta-field"> + <xsl:attribute name="name">keywords</xsl:attribute> + <xsl:attribute name="value"> + <xsl:for-each select="//keyword"> + <xsl:value-of select="normalize-space(.)"/> + <xsl:if test="position() != last()"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + </xsl:attribute> + </xsl:element> + </xsl:if> + + <xsl:if test="//subjectterm"> + <xsl:element name="rx:meta-field"> + <xsl:attribute name="name">subject</xsl:attribute> + <xsl:attribute name="value"> + <xsl:for-each select="//subjectterm"> + <xsl:value-of select="normalize-space(.)"/> + <xsl:if test="position() != last()"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + </xsl:attribute> + </xsl:element> + </xsl:if> + </rx:meta-info> +</xsl:template> + +<!-- ******************************************************************** + Pdf bookmarks + ******************************************************************** --> + +<xsl:template match="*" mode="xep.outline"> + <xsl:apply-templates select="*" mode="xep.outline"/> +</xsl:template> + +<xsl:template match="set|book|part|reference|preface|chapter|appendix|article + |glossary|bibliography|index|setindex + |refentry|refsynopsisdiv + |refsect1|refsect2|refsect3|refsection + |sect1|sect2|sect3|sect4|sect5|section" + mode="xep.outline"> + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + <xsl:variable name="bookmark-label"> + <xsl:apply-templates select="." mode="object.title.markup"/> + </xsl:variable> + + <!-- Put the root element bookmark at the same level as its children --> + <!-- If the object is a set or book, generate a bookmark for the toc --> + <xsl:choose> + <xsl:when test="self::index and $generate.index = 0"/> + <xsl:when test="parent::*"> + <rx:bookmark internal-destination="{$id}"> + <rx:bookmark-label> + <xsl:value-of select="normalize-space($bookmark-label)"/> + </rx:bookmark-label> + <xsl:apply-templates select="*" mode="xep.outline"/> + </rx:bookmark> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$bookmark-label != ''"> + <rx:bookmark internal-destination="{$id}"> + <rx:bookmark-label> + <xsl:value-of select="normalize-space($bookmark-label)"/> + </rx:bookmark-label> + </rx:bookmark> + </xsl:if> + + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + <xsl:if test="contains($toc.params, 'toc') + and set|book|part|reference|section|sect1|refentry + |article|bibliography|glossary|chapter + |appendix"> + <rx:bookmark internal-destination="toc...{$id}"> + <rx:bookmark-label> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'TableofContents'"/> + </xsl:call-template> + </rx:bookmark-label> + </rx:bookmark> + </xsl:if> + <xsl:apply-templates select="*" mode="xep.outline"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="xep-pis"> + <xsl:if test="$crop.marks != 0"> + <xsl:processing-instruction name="xep-pdf-crop-mark-width"><xsl:value-of select="$crop.mark.width"/></xsl:processing-instruction> + <xsl:processing-instruction name="xep-pdf-crop-offset"><xsl:value-of select="$crop.mark.offset"/></xsl:processing-instruction> + <xsl:processing-instruction name="xep-pdf-bleed"><xsl:value-of select="$crop.mark.bleed"/></xsl:processing-instruction> + </xsl:if> + + <xsl:call-template name="user-xep-pis"/> +</xsl:template> + +<!-- Placeholder for user defined PIs --> +<xsl:template name="user-xep-pis"/> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xref.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xref.xsl new file mode 100644 index 000000000..771d39bed --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/fo/xref.xsl @@ -0,0 +1,1538 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:fo="http://www.w3.org/1999/XSL/Format" + xmlns:exsl="http://exslt.org/common" + xmlns:xlink='http://www.w3.org/1999/xlink' + exclude-result-prefixes="exsl xlink" + version='1.0'> + +<!-- ******************************************************************** + $Id: xref.xsl 8913 2010-10-01 04:44:57Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- Use internal variable for olink xlink role for consistency --> +<xsl:variable + name="xolink.role">http://docbook.org/xlink/role/olink</xsl:variable> + +<!-- ==================================================================== --> + +<xsl:template match="anchor"> + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + <fo:inline id="{$id}"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="xref" name="xref"> + <xsl:param name="xhref" select="@xlink:href"/> + <!-- is the @xlink:href a local idref link? --> + <xsl:param name="xlink.idref"> + <xsl:if test="starts-with($xhref,'#') + and (not(contains($xhref,'(')) + or starts-with($xhref, '#xpointer(id('))"> + <xsl:call-template name="xpointer.idref"> + <xsl:with-param name="xpointer" select="$xhref"/> + </xsl:call-template> + </xsl:if> + </xsl:param> + <xsl:param name="xlink.targets" select="key('id',$xlink.idref)"/> + <xsl:param name="linkend.targets" select="key('id',@linkend)"/> + <xsl:param name="target" select="($xlink.targets | $linkend.targets)[1]"/> + <xsl:param name="refelem" select="local-name($target)"/> + + <xsl:variable name="xrefstyle"> + <xsl:choose> + <xsl:when test="@role and not(@xrefstyle) + and $use.role.as.xrefstyle != 0"> + <xsl:value-of select="@role"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@xrefstyle"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="content"> + <fo:inline xsl:use-attribute-sets="xref.properties"> + <xsl:choose> + <xsl:when test="@endterm"> + <xsl:variable name="etargets" select="key('id',@endterm)"/> + <xsl:variable name="etarget" select="$etargets[1]"/> + <xsl:choose> + <xsl:when test="count($etarget) = 0"> + <xsl:message> + <xsl:value-of select="count($etargets)"/> + <xsl:text>Endterm points to nonexistent ID: </xsl:text> + <xsl:value-of select="@endterm"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$etarget" mode="endterm"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + + <xsl:when test="$target/@xreflabel"> + <xsl:call-template name="xref.xreflabel"> + <xsl:with-param name="target" select="$target"/> + </xsl:call-template> + </xsl:when> + + <xsl:when test="$target"> + <xsl:if test="not(parent::citation)"> + <xsl:apply-templates select="$target" mode="xref-to-prefix"/> + </xsl:if> + + <xsl:apply-templates select="$target" mode="xref-to"> + <xsl:with-param name="referrer" select="."/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + </xsl:apply-templates> + + <xsl:if test="not(parent::citation)"> + <xsl:apply-templates select="$target" mode="xref-to-suffix"/> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>ERROR: xref linking to </xsl:text> + <xsl:value-of select="@linkend|@xlink:href"/> + <xsl:text> has no generated link text.</xsl:text> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:otherwise> + </xsl:choose> + </fo:inline> + </xsl:variable> + + <!-- Convert it into an active link --> + <xsl:call-template name="simple.xlink"> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + + <!-- Add standard page reference? --> + <xsl:choose> + <xsl:when test="not($target)"> + <!-- page numbers only for local targets --> + </xsl:when> + <xsl:when test="starts-with(normalize-space($xrefstyle), 'select:') + and contains($xrefstyle, 'nopage')"> + <!-- negative xrefstyle in instance turns it off --> + </xsl:when> + <!-- positive xrefstyle already handles it --> + <xsl:when test="not(starts-with(normalize-space($xrefstyle), 'select:') + and (contains($xrefstyle, 'page') + or contains($xrefstyle, 'Page'))) + and ( $insert.xref.page.number = 'yes' + or $insert.xref.page.number = '1') + or (local-name($target) = 'para' and + $xrefstyle = '')"> + <xsl:apply-templates select="$target" mode="page.citation"> + <xsl:with-param name="id" select="$target/@id|$target/@xml:id"/> + </xsl:apply-templates> + </xsl:when> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- Handled largely like an xref --> +<!-- To be done: add support for begin, end, and units attributes --> +<xsl:template match="biblioref" name="biblioref"> + <xsl:variable name="targets" select="key('id',@linkend)"/> + <xsl:variable name="target" select="$targets[1]"/> + <xsl:variable name="refelem" select="local-name($target)"/> + + <xsl:call-template name="check.id.unique"> + <xsl:with-param name="linkend" select="@linkend"/> + </xsl:call-template> + + <xsl:choose> + <xsl:when test="$refelem=''"> + <xsl:message> + <xsl:text>XRef to nonexistent id: </xsl:text> + <xsl:value-of select="@linkend"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:when> + + <xsl:when test="@endterm"> + <fo:basic-link internal-destination="{@linkend}" + xsl:use-attribute-sets="xref.properties"> + <xsl:variable name="etargets" select="key('id',@endterm)"/> + <xsl:variable name="etarget" select="$etargets[1]"/> + <xsl:choose> + <xsl:when test="count($etarget) = 0"> + <xsl:message> + <xsl:value-of select="count($etargets)"/> + <xsl:text>Endterm points to nonexistent ID: </xsl:text> + <xsl:value-of select="@endterm"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$etarget" mode="endterm"/> + </xsl:otherwise> + </xsl:choose> + </fo:basic-link> + </xsl:when> + + <xsl:when test="$target/@xreflabel"> + <fo:basic-link internal-destination="{@linkend}" + xsl:use-attribute-sets="xref.properties"> + <xsl:call-template name="xref.xreflabel"> + <xsl:with-param name="target" select="$target"/> + </xsl:call-template> + </fo:basic-link> + </xsl:when> + + <xsl:otherwise> + <xsl:if test="not(parent::citation)"> + <xsl:apply-templates select="$target" mode="xref-to-prefix"/> + </xsl:if> + + <fo:basic-link internal-destination="{@linkend}" + xsl:use-attribute-sets="xref.properties"> + <xsl:apply-templates select="$target" mode="xref-to"> + <xsl:with-param name="referrer" select="."/> + <xsl:with-param name="xrefstyle"> + <xsl:choose> + <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0"> + <xsl:value-of select="@role"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@xrefstyle"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:apply-templates> + </fo:basic-link> + + <xsl:if test="not(parent::citation)"> + <xsl:apply-templates select="$target" mode="xref-to-suffix"/> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="endterm"> + <!-- Process the children of the endterm element --> + <xsl:variable name="endterm"> + <xsl:apply-templates select="child::node()"/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$exsl.node.set.available != 0"> + <xsl:apply-templates select="exsl:node-set($endterm)" mode="remove-ids"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$endterm"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="remove-ids"> + <xsl:copy> + <xsl:for-each select="@*"> + <xsl:choose> + <xsl:when test="name(.) != 'id'"> + <xsl:copy/> + </xsl:when> + <xsl:otherwise> + <xsl:message>removing <xsl:value-of select="name(.)"/></xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + <xsl:apply-templates mode="remove-ids"/> + </xsl:copy> +</xsl:template> + +<!--- ==================================================================== --> + +<xsl:template match="*" mode="xref-to-prefix"/> +<xsl:template match="*" mode="xref-to-suffix"/> + +<xsl:template match="*" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + + <xsl:if test="$verbose != 0"> + <xsl:message> + <xsl:text>Don't know what gentext to create for xref to: "</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:text>"</xsl:text> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template match="title" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <!-- if you xref to a title, xref to the parent... --> + <xsl:choose> + <!-- FIXME: how reliable is this? --> + <xsl:when test="contains(local-name(parent::*), 'info')"> + <xsl:apply-templates select="parent::*[2]" mode="xref-to"> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="parent::*" mode="xref-to"> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="abstract|article|authorblurb|bibliodiv|bibliomset + |biblioset|blockquote|calloutlist|caution|colophon + |constraintdef|formalpara|glossdiv|important|indexdiv + |itemizedlist|legalnotice|lot|msg|msgexplan|msgmain + |msgrel|msgset|msgsub|note|orderedlist|partintro + |productionset|qandadiv|refsynopsisdiv|segmentedlist + |set|setindex|sidebar|tip|toc|variablelist|warning" + mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <!-- catch-all for things with (possibly optional) titles --> + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="author|editor|othercredit|personname" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:call-template name="person.name"/> +</xsl:template> + +<xsl:template match="authorgroup" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:call-template name="person.name.list"/> +</xsl:template> + +<xsl:template match="figure|example|table|equation" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="procedure" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="task" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="cmdsynopsis" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="(.//command)[1]" mode="xref"/> +</xsl:template> + +<xsl:template match="funcsynopsis" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="(.//function)[1]" mode="xref"/> +</xsl:template> + +<xsl:template match="dedication|acknowledgements|preface|chapter|appendix" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="bibliography" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="xref-to-prefix"> + <xsl:text>[</xsl:text> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="xref-to-suffix"> + <xsl:text>]</xsl:text> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <!-- handles both biblioentry and bibliomixed --> + <xsl:choose> + <xsl:when test="string(.) = ''"> + <xsl:variable name="bib" select="document($bibliography.collection,.)"/> + <xsl:variable name="id" select="(@id|@xml:id)[1]"/> + <xsl:variable name="entry" select="$bib/bibliography/ + *[@id=$id or @xml:id=$id][1]"/> + <xsl:choose> + <xsl:when test="$entry"> + <xsl:choose> + <xsl:when test="$bibliography.numbered != 0"> + <xsl:number from="bibliography" count="biblioentry|bibliomixed" + level="any" format="1"/> + </xsl:when> + <xsl:when test="local-name($entry/*[1]) = 'abbrev'"> + <xsl:apply-templates select="$entry/*[1]"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>No bibliography entry: </xsl:text> + <xsl:value-of select="$id"/> + <xsl:text> found in </xsl:text> + <xsl:value-of select="$bibliography.collection"/> + </xsl:message> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$bibliography.numbered != 0"> + <xsl:number from="bibliography" count="biblioentry|bibliomixed" + level="any" format="1"/> + </xsl:when> + <xsl:when test="local-name(*[1]) = 'abbrev'"> + <xsl:apply-templates select="*[1]"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="glossary" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="glossentry" mode="xref-to"> + <xsl:choose> + <xsl:when test="$glossentry.show.acronym = 'primary'"> + <xsl:choose> + <xsl:when test="acronym|abbrev"> + <xsl:apply-templates select="(acronym|abbrev)[1]"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="glossterm[1]" mode="xref-to"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="glossterm[1]" mode="xref-to"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="glossterm|firstterm" mode="xref-to"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="index" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="listitem" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="section|simplesect + |sect1|sect2|sect3|sect4|sect5 + |refsect1|refsect2|refsect3|refsection" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + <!-- What about "in Chapter X"? --> +</xsl:template> + +<xsl:template match="bridgehead" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + <!-- What about "in Chapter X"? --> +</xsl:template> + +<xsl:template match="qandaset" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="qandadiv" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="qandaentry" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="question[1]" mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="question|answer" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:choose> + <xsl:when test="string-length(label) != 0"> + <xsl:apply-templates select="." mode="label.markup"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="part|reference" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="refentry" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:choose> + <xsl:when test="refmeta/refentrytitle"> + <xsl:apply-templates select="refmeta/refentrytitle"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="refnamediv/refname[1]"/> + </xsl:otherwise> + </xsl:choose> + <xsl:apply-templates select="refmeta/manvolnum"/> +</xsl:template> + +<xsl:template match="refnamediv" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="refname[1]" mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="refname" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="step" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Step'"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:apply-templates select="." mode="number"/> +</xsl:template> + +<xsl:template match="varlistentry" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="term[1]" mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="varlistentry/term" mode="xref-to"> + <xsl:param name="verbose" select="1"/> + <!-- to avoid the comma that will be generated if there are several terms --> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="co" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="callout-bug"/> +</xsl:template> + +<xsl:template match="area|areaset" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <xsl:call-template name="callout-bug"> + <xsl:with-param name="conum"> + <xsl:apply-templates select="." mode="conumber"/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template match="book" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<!-- These are elements for which no link text exists, so an xref to one + uses the xrefstyle attribute if specified, or if not it falls back + to the container element's link text --> +<xsl:template match="para|phrase|simpara|anchor|quote" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose"/> + + <xsl:variable name="context" select="(ancestor::simplesect + |ancestor::section + |ancestor::sect1 + |ancestor::sect2 + |ancestor::sect3 + |ancestor::sect4 + |ancestor::sect5 + |ancestor::refsection + |ancestor::refsect1 + |ancestor::refsect2 + |ancestor::refsect3 + |ancestor::chapter + |ancestor::appendix + |ancestor::preface + |ancestor::partintro + |ancestor::dedication + |ancestor::acknowledgements + |ancestor::colophon + |ancestor::bibliography + |ancestor::index + |ancestor::glossary + |ancestor::glossentry + |ancestor::listitem + |ancestor::varlistentry)[last()]"/> + + <xsl:choose> + <xsl:when test="$xrefstyle != ''"> + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$verbose != 0"> + <xsl:message> + <xsl:text>WARNING: xref to <</xsl:text> + <xsl:value-of select="local-name()"/> + <xsl:text> id="</xsl:text> + <xsl:value-of select="@id|@xml:id"/> + <xsl:text>"> has no generated text. Trying its ancestor elements.</xsl:text> + </xsl:message> + </xsl:if> + <xsl:apply-templates select="$context" mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="indexterm" mode="xref-to"> + <xsl:value-of select="primary"/> +</xsl:template> + +<xsl:template match="primary|secondary|tertiary" mode="xref-to"> + <xsl:value-of select="."/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="link" name="link"> + <xsl:param name="linkend" select="@linkend"/> + <xsl:param name="targets" select="key('id',$linkend)"/> + <xsl:param name="target" select="$targets[1]"/> + + <xsl:variable name="xrefstyle"> + <xsl:choose> + <xsl:when test="@role and not(@xrefstyle) + and $use.role.as.xrefstyle != 0"> + <xsl:value-of select="@role"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@xrefstyle"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="content"> + <fo:inline xsl:use-attribute-sets="xref.properties"> + <xsl:choose> + <xsl:when test="count(child::node()) > 0"> + <!-- If it has content, use it --> + <xsl:apply-templates/> + </xsl:when> + <!-- look for an endterm --> + <xsl:when test="@endterm"> + <xsl:variable name="etargets" select="key('id',@endterm)"/> + <xsl:variable name="etarget" select="$etargets[1]"/> + <xsl:choose> + <xsl:when test="count($etarget) = 0"> + <xsl:message> + <xsl:value-of select="count($etargets)"/> + <xsl:text>Endterm points to nonexistent ID: </xsl:text> + <xsl:value-of select="@endterm"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$etarget" mode="endterm"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <!-- Use the xlink:href if no other text --> + <xsl:when test="@xlink:href"> + <xsl:call-template name="hyphenate-url"> + <xsl:with-param name="url" select="@xlink:href"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Link element has no content and no Endterm. </xsl:text> + <xsl:text>Nothing to show in the link to </xsl:text> + <xsl:value-of select="$target"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:otherwise> + </xsl:choose> + </fo:inline> + </xsl:variable> + + <xsl:call-template name="simple.xlink"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="linkend" select="$linkend"/> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + + <!-- Add standard page reference? --> + <xsl:choose> + <!-- page numbering on link only enabled for @linkend --> + <!-- There is no link element in DB5 with xlink:href --> + <xsl:when test="not($linkend)"> + </xsl:when> + <!-- negative xrefstyle in instance turns it off --> + <xsl:when test="starts-with(normalize-space($xrefstyle), 'select:') + and contains($xrefstyle, 'nopage')"> + </xsl:when> + <xsl:when test="(starts-with(normalize-space($xrefstyle), 'select:') + and $insert.link.page.number = 'maybe' + and (contains($xrefstyle, 'page') + or contains($xrefstyle, 'Page'))) + or ( $insert.link.page.number = 'yes' + or $insert.link.page.number = '1') + or local-name($target) = 'para'"> + <xsl:apply-templates select="$target" mode="page.citation"> + <xsl:with-param name="id" select="$linkend"/> + </xsl:apply-templates> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template match="ulink" name="ulink"> + <xsl:param name="url" select="@url"/> + + <xsl:variable name ="ulink.url"> + <xsl:call-template name="fo-external-image"> + <xsl:with-param name="filename" select="$url"/> + </xsl:call-template> + </xsl:variable> + + <fo:basic-link xsl:use-attribute-sets="xref.properties" + external-destination="{$ulink.url}"> + <xsl:choose> + <xsl:when test="count(child::node())=0 or (string(.) = $url)"> + <xsl:call-template name="hyphenate-url"> + <xsl:with-param name="url" select="$url"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </fo:basic-link> + <!-- * Call the template for determining whether the URL for this --> + <!-- * hyperlink is displayed, and how to display it (either inline or --> + <!-- * as a numbered footnote). --> + <xsl:call-template name="hyperlink.url.display"> + <xsl:with-param name="url" select="$url"/> + <xsl:with-param name="ulink.url" select="$ulink.url"/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="hyperlink.url.display"> + <!-- * This template is called for all external hyperlinks (ulinks and --> + <!-- * for all simple xlinks); it determines whether the URL for the --> + <!-- * hyperlink is displayed, and how to display it (either inline or --> + <!-- * as a numbered footnote). --> + <xsl:param name="url"/> + <xsl:param name="ulink.url"> + <!-- * ulink.url is just the value of the URL wrapped in 'url(...)' --> + <xsl:call-template name="fo-external-image"> + <xsl:with-param name="filename" select="$url"/> + </xsl:call-template> + </xsl:param> + + <xsl:if test="count(child::node()) != 0 + and string(.) != $url + and $ulink.show != 0"> + <!-- * Display the URL for this hyperlink only if it is non-empty, --> + <!-- * and the value of its content is not a URL that is the same as --> + <!-- * URL it links to, and if ulink.show is non-zero. --> + <xsl:choose> + <xsl:when test="$ulink.footnotes != 0 and not(ancestor::footnote)"> + <!-- * ulink.show and ulink.footnote are both non-zero; that --> + <!-- * means we display the URL as a footnote (instead of inline) --> + <fo:footnote> + <xsl:call-template name="ulink.footnote.number"/> + <fo:footnote-body xsl:use-attribute-sets="footnote.properties"> + <fo:block> + <xsl:call-template name="ulink.footnote.number"/> + <xsl:text> </xsl:text> + <fo:basic-link external-destination="{$ulink.url}"> + <xsl:value-of select="$url"/> + </fo:basic-link> + </fo:block> + </fo:footnote-body> + </fo:footnote> + </xsl:when> + <xsl:otherwise> + <!-- * ulink.show is non-zero, but ulink.footnote is not; that --> + <!-- * means we display the URL inline --> + <fo:inline hyphenate="false"> + <!-- * put square brackets around the URL --> + <xsl:text> [</xsl:text> + <fo:basic-link external-destination="{$ulink.url}"> + <xsl:call-template name="hyphenate-url"> + <xsl:with-param name="url" select="$url"/> + </xsl:call-template> + </fo:basic-link> + <xsl:text>]</xsl:text> + </fo:inline> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + +</xsl:template> + +<xsl:template name="ulink.footnote.number"> + <fo:inline xsl:use-attribute-sets="footnote.mark.properties"> + <xsl:choose> + <xsl:when test="$fop.extensions != 0"> + <xsl:attribute name="vertical-align">super</xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="baseline-shift">super</xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <xsl:variable name="fnum"> + <!-- * Determine the footnote number to display for this hyperlink, --> + <!-- * by counting all foonotes, ulinks, and any elements that have --> + <!-- * an xlink:href attribute that meets the following criteria: --> + <!-- * --> + <!-- * - the content of the element is not a URI that is the same --> + <!-- * URI as the value of the href attribute --> + <!-- * - the href attribute is not an internal ID reference (does --> + <!-- * not start with a hash sign) --> + <!-- * - the href is not part of an olink reference (the element --> + <!-- * - does not have an xlink:role attribute that indicates it is --> + <!-- * an olink, and the href does not contain a hash sign) --> + <!-- * - the element either has no xlink:type attribute or has --> + <!-- * an xlink:type attribute whose value is 'simple' --> + <!-- FIXME: list in @from is probably not complete --> + <xsl:number level="any" + from="chapter|appendix|preface|article|refentry|bibliography[not(parent::article)]" + count="footnote[not(@label)][not(ancestor::tgroup)] + |ulink[node()][@url != .][not(ancestor::footnote)] + |*[node()][@xlink:href][not(@xlink:href = .)][not(starts-with(@xlink:href,'#'))] + [not(contains(@xlink:href,'#') and @xlink:role = $xolink.role)] + [not(@xlink:type) or @xlink:type='simple'] + [not(ancestor::footnote)]" + format="1"/> + </xsl:variable> + <xsl:choose> + <xsl:when test="string-length($footnote.number.symbols) >= $fnum"> + <xsl:value-of select="substring($footnote.number.symbols, $fnum, 1)"/> + </xsl:when> + <xsl:otherwise> + <xsl:number value="$fnum" format="{$footnote.number.format}"/> + </xsl:otherwise> + </xsl:choose> + </fo:inline> +</xsl:template> + +<xsl:template name="hyphenate-url"> + <xsl:param name="url" select="''"/> + <xsl:choose> + <xsl:when test="$ulink.hyphenate = ''"> + <xsl:value-of select="$url"/> + </xsl:when> + <xsl:when test="string-length($url) > 1"> + <xsl:variable name="char" select="substring($url, 1, 1)"/> + <xsl:value-of select="$char"/> + <xsl:if test="contains($ulink.hyphenate.chars, $char)"> + <!-- Do not hyphen in-between // --> + <xsl:if test="not($char = '/' and substring($url,2,1) = '/')"> + <xsl:copy-of select="$ulink.hyphenate"/> + </xsl:if> + </xsl:if> + <!-- recurse to the next character --> + <xsl:call-template name="hyphenate-url"> + <xsl:with-param name="url" select="substring($url, 2)"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$url"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="olink" name="olink"> + <!-- olink content may be passed in from xlink olink --> + <xsl:param name="content" select="NOTANELEMENT"/> + + <xsl:variable name="localinfo" select="@localinfo"/> + + <xsl:choose> + <!-- olinks resolved by stylesheet and target database --> + <xsl:when test="@targetdoc or @targetptr or + (@xlink:role=$xolink.role and + contains(@xlink:href, '#') )" > + + <xsl:variable name="targetdoc.att"> + <xsl:choose> + <xsl:when test="@targetdoc != ''"> + <xsl:value-of select="@targetdoc"/> + </xsl:when> + <xsl:when test="@xlink:role=$xolink.role and + contains(@xlink:href, '#')" > + <xsl:value-of select="substring-before(@xlink:href, '#')"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="targetptr.att"> + <xsl:choose> + <xsl:when test="@targetptr != ''"> + <xsl:value-of select="@targetptr"/> + </xsl:when> + <xsl:when test="@xlink:role=$xolink.role and + contains(@xlink:href, '#')" > + <xsl:value-of select="substring-after(@xlink:href, '#')"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="olink.lang"> + <xsl:call-template name="l10n.language"> + <xsl:with-param name="xref-context" select="true()"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="target.database.filename"> + <xsl:call-template name="select.target.database"> + <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> + <xsl:with-param name="targetptr.att" select="$targetptr.att"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="target.database" + select="document($target.database.filename, /)"/> + + <xsl:if test="$olink.debug != 0"> + <xsl:message> + <xsl:text>Olink debug: root element of target.database is '</xsl:text> + <xsl:value-of select="local-name($target.database/*[1])"/> + <xsl:text>'.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:variable name="olink.key"> + <xsl:call-template name="select.olink.key"> + <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> + <xsl:with-param name="targetptr.att" select="$targetptr.att"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:variable> + + <xsl:if test="string-length($olink.key) = 0"> + <xsl:message> + <xsl:text>Error: unresolved olink: </xsl:text> + <xsl:text>targetdoc/targetptr = '</xsl:text> + <xsl:value-of select="$targetdoc.att"/> + <xsl:text>/</xsl:text> + <xsl:value-of select="$targetptr.att"/> + <xsl:text>'.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:variable name="href"> + <xsl:call-template name="make.olink.href"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:variable> + + <!-- Olink that points to internal id can be a link --> + <xsl:variable name="linkend"> + <xsl:call-template name="olink.as.linkend"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="hottext"> + <xsl:choose> + <xsl:when test="string-length($content) != 0"> + <xsl:copy-of select="$content"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="olink.hottext"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="olink.docname.citation"> + <xsl:call-template name="olink.document.citation"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="target.database" select="$target.database"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="olink.page.citation"> + <xsl:call-template name="olink.page.citation"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="target.database" select="$target.database"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + <xsl:with-param name="linkend" select="$linkend"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$linkend != ''"> + <fo:basic-link internal-destination="{$linkend}" + xsl:use-attribute-sets="xref.properties"> + <xsl:call-template name="anchor"/> + <xsl:copy-of select="$hottext"/> + <xsl:copy-of select="$olink.page.citation"/> + </fo:basic-link> + </xsl:when> + <xsl:when test="$href != ''"> + <xsl:choose> + <xsl:when test="$fop1.extensions != 0"> + <xsl:variable name="mybeg" select="substring-before($href,'#')"/> + <xsl:variable name="myend" select="substring-after($href,'#')"/> + <fo:basic-link external-destination="url({concat($mybeg,'#dest=',$myend)})" + xsl:use-attribute-sets="olink.properties"> + <xsl:copy-of select="$hottext"/> + </fo:basic-link> + <xsl:copy-of select="$olink.page.citation"/> + <xsl:copy-of select="$olink.docname.citation"/> + </xsl:when> + <xsl:when test="$xep.extensions != 0"> + <fo:basic-link external-destination="url({$href})" + xsl:use-attribute-sets="olink.properties"> + <xsl:call-template name="anchor"/> + <xsl:copy-of select="$hottext"/> + </fo:basic-link> + <xsl:copy-of select="$olink.page.citation"/> + <xsl:copy-of select="$olink.docname.citation"/> + </xsl:when> + <xsl:when test="$axf.extensions != 0"> + <fo:basic-link external-destination="{$href}" + xsl:use-attribute-sets="olink.properties"> + <xsl:copy-of select="$hottext"/> + </fo:basic-link> + <xsl:copy-of select="$olink.page.citation"/> + <xsl:copy-of select="$olink.docname.citation"/> + </xsl:when> + <xsl:otherwise> + <fo:basic-link external-destination="{$href}" + xsl:use-attribute-sets="olink.properties"> + <xsl:copy-of select="$hottext"/> + </fo:basic-link> + <xsl:copy-of select="$olink.page.citation"/> + <xsl:copy-of select="$olink.docname.citation"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$hottext"/> + <xsl:copy-of select="$olink.page.citation"/> + <xsl:copy-of select="$olink.docname.citation"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + + <!-- olink never implemented in FO for old olink entity syntax --> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="insert.olink.docname.markup"> + <xsl:param name="docname" select="''"/> + + <fo:inline font-style="italic"> + <xsl:value-of select="$docname"/> + </fo:inline> + +</xsl:template> + +<!-- This prevents error message when processing olinks with xrefstyle --> +<xsl:template match="olink" mode="object.xref.template"/> + + +<xsl:template name="olink.as.linkend"> + <xsl:param name="olink.key" select="''"/> + <xsl:param name="olink.lang" select="''"/> + <xsl:param name="target.database" select="NotANode"/> + + <xsl:variable name="targetdoc"> + <xsl:value-of select="substring-before($olink.key, '/')"/> + </xsl:variable> + + <xsl:variable name="targetptr"> + <xsl:value-of + select="substring-before(substring-after($olink.key, '/'), '/')"/> + </xsl:variable> + + <xsl:variable name="target.lang"> + <xsl:variable name="candidate"> + <xsl:for-each select="$target.database" > + <xsl:value-of + select="key('targetptr-key', $olink.key)[1]/@lang" /> + </xsl:for-each> + </xsl:variable> + <xsl:choose> + <xsl:when test="$candidate != ''"> + <xsl:value-of select="$candidate"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$olink.lang"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:if test="$current.docid = $targetdoc and + $olink.lang = $target.lang"> + <xsl:variable name="targets" select="key('id',$targetptr)"/> + <xsl:variable name="target" select="$targets[1]"/> + <xsl:if test="$target"> + <xsl:value-of select="$targetptr"/> + </xsl:if> + </xsl:if> + +</xsl:template> + + +<xsl:template name="olink.outline"> + <xsl:param name="outline.base.uri"/> + <xsl:param name="localinfo"/> + <xsl:param name="return" select="href"/> + + <xsl:message terminate="yes">Fatal error: olink.outline template: what is this supposed to do?</xsl:message> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="title.xref"> + <xsl:param name="target" select="."/> + <xsl:choose> + <xsl:when test="local-name($target) = 'figure' + or local-name($target) = 'example' + or local-name($target) = 'equation' + or local-name($target) = 'table' + or local-name($target) = 'dedication' + or local-name($target) = 'acknowledgements' + or local-name($target) = 'preface' + or local-name($target) = 'bibliography' + or local-name($target) = 'glossary' + or local-name($target) = 'index' + or local-name($target) = 'setindex' + or local-name($target) = 'colophon'"> + <xsl:call-template name="gentext.startquote"/> + <xsl:apply-templates select="$target" mode="title.markup"/> + <xsl:call-template name="gentext.endquote"/> + </xsl:when> + <xsl:otherwise> + <fo:inline font-style="italic"> + <xsl:apply-templates select="$target" mode="title.markup"/> + </fo:inline> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="number.xref"> + <xsl:param name="target" select="."/> + <xsl:apply-templates select="$target" mode="label.markup"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="xref.xreflabel"> + <!-- called to process an xreflabel...you might use this to make --> + <!-- xreflabels come out in the right font for different targets, --> + <!-- for example. --> + <xsl:param name="target" select="."/> + <xsl:value-of select="$target/@xreflabel"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="title" mode="xref"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="command" mode="xref"> + <xsl:call-template name="inline.boldseq"/> +</xsl:template> + +<xsl:template match="function" mode="xref"> + <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<xsl:template match="*" mode="page.citation"> + <xsl:param name="id" select="'???'"/> + + <fo:basic-link internal-destination="{$id}" + xsl:use-attribute-sets="xref.properties"> + <fo:inline keep-together.within-line="always"> + <xsl:call-template name="substitute-markup"> + <xsl:with-param name="template"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="name" select="'page.citation'"/> + <xsl:with-param name="context" select="'xref'"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </fo:inline> + </fo:basic-link> +</xsl:template> + +<xsl:template match="*" mode="pagenumber.markup"> + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + <fo:page-number-citation ref-id="{$id}"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="insert.title.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="title"/> + + <xsl:choose> + <!-- FIXME: what about the case where titleabbrev is inside the info? --> + <xsl:when test="$purpose = 'xref' and titleabbrev"> + <xsl:apply-templates select="." mode="titleabbrev.markup"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$title"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="chapter|appendix" mode="insert.title.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="title"/> + + <xsl:choose> + <xsl:when test="$purpose = 'xref'"> + <fo:inline font-style="italic"> + <xsl:copy-of select="$title"/> + </fo:inline> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$title"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="insert.subtitle.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="subtitle"/> + + <xsl:copy-of select="$subtitle"/> +</xsl:template> + +<xsl:template match="*" mode="insert.label.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="label"/> + + <xsl:copy-of select="$label"/> +</xsl:template> + +<xsl:template match="*" mode="insert.pagenumber.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="pagenumber"/> + + <xsl:copy-of select="$pagenumber"/> +</xsl:template> + +<xsl:template match="*" mode="insert.direction.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="direction"/> + + <xsl:copy-of select="$direction"/> +</xsl:template> + +<xsl:template match="olink" mode="pagenumber.markup"> + <!-- Local olinks can use page-citation --> + <xsl:variable name="targetdoc.att" select="@targetdoc"/> + <xsl:variable name="targetptr.att" select="@targetptr"/> + + <xsl:variable name="olink.lang"> + <xsl:call-template name="l10n.language"> + <xsl:with-param name="xref-context" select="true()"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="target.database.filename"> + <xsl:call-template name="select.target.database"> + <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> + <xsl:with-param name="targetptr.att" select="$targetptr.att"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="target.database" + select="document($target.database.filename, /)"/> + + <xsl:if test="$olink.debug != 0"> + <xsl:message> + <xsl:text>Olink debug: root element of target.database is '</xsl:text> + <xsl:value-of select="local-name($target.database/*[1])"/> + <xsl:text>'.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:variable name="olink.key"> + <xsl:call-template name="select.olink.key"> + <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> + <xsl:with-param name="targetptr.att" select="$targetptr.att"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:variable> + + <!-- Olink that points to internal id can be a link --> + <xsl:variable name="linkend"> + <xsl:call-template name="olink.as.linkend"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$linkend != ''"> + <fo:page-number-citation ref-id="{$linkend}"/> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Olink error: no page number linkend for local olink '</xsl:text> + <xsl:value-of select="$olink.key"/> + <xsl:text>'</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/README b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/README new file mode 100644 index 000000000..0b31d32f4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/README @@ -0,0 +1,16 @@ +To use the syntax higlighting extension with DocBook-XSL 1.74.3+, you must: +1. Use a processor that works with the extension: Saxon 6 or Xalan-J. +2. Add the latest version of xslthl-2.X.X.jar to your classpath. +3. Set the highlight.source parameter to 1. +4. Import into your customization one of the following stylesheet module: + * html/highlight.xsl + * xhtml/highlight.xsl + * xhtml-1_1/highlight.xsl + * fo/highlight.xsl +5. Use that customiztion layer. + + +Note: Saxon 8.5 or later is also supported, but since it is an XSLT 2.0 +processor it is not guaranteed to work with DocBook-XSL in all +circumstances. + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/c-hl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/c-hl.xml new file mode 100644 index 000000000..44ab02d2b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/c-hl.xml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="UTF-8"?> + <!-- + Syntax highlighting definition for C xslthl - XSLT Syntax Highlighting http://sourceforge.net/projects/xslthl/ + Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks This software is provided 'as-is', without any + express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this + software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and + to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not + be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an + acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must + be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be + removed or altered from any source distribution. Michal Molhanec <mol1111 at users.sourceforge.net> Jirka Kosek <kosek + at users.sourceforge.net> Michiel Hendriks <elmuerte at users.sourceforge.net> + --> +<highlighters> + <highlighter type="multiline-comment"> + <start>/**</start> + <end>*/</end> + <style>doccomment</style> + </highlighter> + <highlighter type="oneline-comment"> + <start>///</start> + <style>doccomment</style> + </highlighter> + <highlighter type="multiline-comment"> + <start>/*</start> + <end>*/</end> + </highlighter> + <highlighter type="oneline-comment">//</highlighter> + <highlighter type="oneline-comment"> + <!-- use the online-comment highlighter to detect directives --> + <start>#</start> + <lineBreakEscape>\</lineBreakEscape> + <style>directive</style> + </highlighter> + <highlighter type="string"> + <string>"</string> + <escape>\</escape> + </highlighter> + <highlighter type="string"> + <string>'</string> + <escape>\</escape> + </highlighter> + <highlighter type="hexnumber"> + <prefix>0x</prefix> + <suffix>ul</suffix> + <suffix>lu</suffix> + <suffix>u</suffix> + <suffix>l</suffix> + <ignoreCase /> + </highlighter> + <highlighter type="number"> + <point>.</point> + <pointStarts /> + <exponent>e</exponent> + <suffix>ul</suffix> + <suffix>lu</suffix> + <suffix>u</suffix> + <suffix>f</suffix> + <suffix>l</suffix> + <ignoreCase /> + </highlighter> + <highlighter type="keywords"> + <keyword>auto</keyword> + <keyword>_Bool</keyword> + <keyword>break</keyword> + <keyword>case</keyword> + <keyword>char</keyword> + <keyword>_Complex</keyword> + <keyword>const</keyword> + <keyword>continue</keyword> + <keyword>default</keyword> + <keyword>do</keyword> + <keyword>double</keyword> + <keyword>else</keyword> + <keyword>enum</keyword> + <keyword>extern</keyword> + <keyword>float</keyword> + <keyword>for</keyword> + <keyword>goto</keyword> + <keyword>if</keyword> + <keyword>_Imaginary</keyword> + <keyword>inline</keyword> + <keyword>int</keyword> + <keyword>long</keyword> + <keyword>register</keyword> + <keyword>restrict</keyword> + <keyword>return</keyword> + <keyword>short</keyword> + <keyword>signed</keyword> + <keyword>sizeof</keyword> + <keyword>static</keyword> + <keyword>struct</keyword> + <keyword>switch</keyword> + <keyword>typedef</keyword> + <keyword>union</keyword> + <keyword>unsigned</keyword> + <keyword>void</keyword> + <keyword>volatile</keyword> + <keyword>while</keyword> + </highlighter> +</highlighters> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/common.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/common.xsl new file mode 100644 index 000000000..174237700 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/common.xsl @@ -0,0 +1,120 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + + xmlns:s6hl="http://net.sf.xslthl/ConnectorSaxon6" + xmlns:sbhl="http://net.sf.xslthl/ConnectorSaxonB" + xmlns:xhl="http://net.sf.xslthl/ConnectorXalan" + xmlns:saxon6="http://icl.com/saxon" + xmlns:saxonb="http://saxon.sf.net/" + xmlns:xalan="http://xml.apache.org/xalan" + + xmlns:exsl="http://exslt.org/common" + xmlns:xslthl="http://xslthl.sf.net" + exclude-result-prefixes="exsl xslthl s6hl sbhl xhl" + version='1.0'> + +<!-- ******************************************************************** + $Id: common.xsl 8257 2009-02-20 04:40:16Z abdelazer $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + and other information. + + ******************************************************************** --> + +<!-- this construction is needed to have the saxon and xalan connectors working alongside each other --> +<xalan:component prefix="xhl" functions="highlight"> + <xalan:script lang="javaclass" src="xalan://net.sf.xslthl.ConnectorXalan" /> +</xalan:component> + +<!-- for saxon 6 --> +<saxon6:script implements-prefix="s6hl" language="java" src="java:net.sf.xslthl.ConnectorSaxon6" /> + +<!-- for saxon 8.5 and later --> +<saxonb:script implements-prefix="sbhl" language="java" src="java:net.sf.xslthl.ConnectorSaxonB" /> + + +<!-- You can override this template to do more complex mapping of + language attribute to highlighter language ID (see xslthl-config.xml) --> +<xsl:template name="language.to.xslthl"> + <xsl:param name="context"/> + + <xsl:choose> + <xsl:when test="$context/@language != ''"> + <xsl:value-of select="$context/@language"/> + </xsl:when> + <xsl:when test="$highlight.default.language != ''"> + <xsl:value-of select="$highlight.default.language"/> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template name="apply-highlighting"> + <xsl:choose> + <!-- Do we want syntax highlighting --> + <xsl:when test="$highlight.source != 0"> + <xsl:variable name="language"> + <xsl:call-template name="language.to.xslthl"> + <xsl:with-param name="context" select="."/> + </xsl:call-template> + </xsl:variable> + <xsl:choose> + <xsl:when test="$language != ''"> + <xsl:variable name="content"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:choose> + <xsl:when test="function-available('s6hl:highlight')"> + <xsl:apply-templates select="s6hl:highlight($language, exsl:node-set($content), $highlight.xslthl.config)" + mode="xslthl"/> + </xsl:when> + <xsl:when test="function-available('sbhl:highlight')"> + <xsl:apply-templates select="sbhl:highlight($language, exsl:node-set($content), $highlight.xslthl.config)" + mode="xslthl"/> + </xsl:when> + <xsl:when test="function-available('xhl:highlight')"> + <xsl:apply-templates select="xhl:highlight($language, exsl:node-set($content), $highlight.xslthl.config)" + mode="xslthl"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$content"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <!-- No syntax highlighting --> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- A fallback when the specific style isn't recognized --> +<xsl:template match="xslthl:*" mode="xslthl"> + <xsl:message> + <xsl:text>unprocessed xslthl style: </xsl:text> + <xsl:value-of select="local-name(.)" /> + </xsl:message> + <xsl:apply-templates mode="xslthl"/> +</xsl:template> + +<!-- Copy over already produced markup (FO/HTML) --> +<xsl:template match="node()" mode="xslthl" priority="-1"> + <xsl:copy> + <xsl:apply-templates select="node()" mode="xslthl"/> + </xsl:copy> +</xsl:template> + +<xsl:template match="*" mode="xslthl"> + <xsl:copy> + <xsl:copy-of select="@*"/> + <xsl:apply-templates select="node()" mode="xslthl"/> + </xsl:copy> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/cpp-hl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/cpp-hl.xml new file mode 100644 index 000000000..2213b7ce3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/cpp-hl.xml @@ -0,0 +1,150 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +Syntax highlighting definition for C++ + +xslthl - XSLT Syntax Highlighting +http://sourceforge.net/projects/xslthl/ +Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Michal Molhanec <mol1111 at users.sourceforge.net> +Jirka Kosek <kosek at users.sourceforge.net> +Michiel Hendriks <elmuerte at users.sourceforge.net> + +--> +<highlighters> + <highlighter type="multiline-comment"> + <start>/**</start> + <end>*/</end> + <style>doccomment</style> + </highlighter> + <highlighter type="oneline-comment"> + <start>///</start> + <style>doccomment</style> + </highlighter> + <highlighter type="multiline-comment"> + <start>/*</start> + <end>*/</end> + </highlighter> + <highlighter type="oneline-comment">//</highlighter> + <highlighter type="oneline-comment"> + <!-- use the online-comment highlighter to detect directives --> + <start>#</start> + <lineBreakEscape>\</lineBreakEscape> + <style>directive</style> + </highlighter> + <highlighter type="string"> + <string>"</string> + <escape>\</escape> + </highlighter> + <highlighter type="string"> + <string>'</string> + <escape>\</escape> + </highlighter> + <highlighter type="hexnumber"> + <prefix>0x</prefix> + <suffix>ul</suffix> + <suffix>lu</suffix> + <suffix>u</suffix> + <suffix>l</suffix> + <ignoreCase /> + </highlighter> + <highlighter type="number"> + <point>.</point> + <pointStarts /> + <exponent>e</exponent> + <suffix>ul</suffix> + <suffix>lu</suffix> + <suffix>u</suffix> + <suffix>f</suffix> + <suffix>l</suffix> + <ignoreCase /> + </highlighter> + <highlighter type="keywords"> + <!-- C keywords --> + <keyword>auto</keyword> + <keyword>_Bool</keyword> + <keyword>break</keyword> + <keyword>case</keyword> + <keyword>char</keyword> + <keyword>_Complex</keyword> + <keyword>const</keyword> + <keyword>continue</keyword> + <keyword>default</keyword> + <keyword>do</keyword> + <keyword>double</keyword> + <keyword>else</keyword> + <keyword>enum</keyword> + <keyword>extern</keyword> + <keyword>float</keyword> + <keyword>for</keyword> + <keyword>goto</keyword> + <keyword>if</keyword> + <keyword>_Imaginary</keyword> + <keyword>inline</keyword> + <keyword>int</keyword> + <keyword>long</keyword> + <keyword>register</keyword> + <keyword>restrict</keyword> + <keyword>return</keyword> + <keyword>short</keyword> + <keyword>signed</keyword> + <keyword>sizeof</keyword> + <keyword>static</keyword> + <keyword>struct</keyword> + <keyword>switch</keyword> + <keyword>typedef</keyword> + <keyword>union</keyword> + <keyword>unsigned</keyword> + <keyword>void</keyword> + <keyword>volatile</keyword> + <keyword>while</keyword> + <!-- C++ keywords --> + <keyword>asm</keyword> + <keyword>dynamic_cast</keyword> + <keyword>namespace</keyword> + <keyword>reinterpret_cast</keyword> + <keyword>try</keyword> + <keyword>bool</keyword> + <keyword>explicit</keyword> + <keyword>new</keyword> + <keyword>static_cast</keyword> + <keyword>typeid</keyword> + <keyword>catch</keyword> + <keyword>false</keyword> + <keyword>operator</keyword> + <keyword>template</keyword> + <keyword>typename</keyword> + <keyword>class</keyword> + <keyword>friend</keyword> + <keyword>private</keyword> + <keyword>this</keyword> + <keyword>using</keyword> + <keyword>const_cast</keyword> + <keyword>inline</keyword> + <keyword>public</keyword> + <keyword>throw</keyword> + <keyword>virtual</keyword> + <keyword>delete</keyword> + <keyword>mutable</keyword> + <keyword>protected</keyword> + <keyword>true</keyword> + <keyword>wchar_t</keyword> + </highlighter> +</highlighters> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/csharp-hl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/csharp-hl.xml new file mode 100644 index 000000000..8a8a76d15 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/csharp-hl.xml @@ -0,0 +1,187 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +Syntax highlighting definition for C# + +xslthl - XSLT Syntax Highlighting +http://sourceforge.net/projects/xslthl/ +Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Michal Molhanec <mol1111 at users.sourceforge.net> +Jirka Kosek <kosek at users.sourceforge.net> +Michiel Hendriks <elmuerte at users.sourceforge.net> + +--> +<highlighters> + <highlighter type="multiline-comment"> + <start>/**</start> + <end>*/</end> + <style>doccomment</style> + </highlighter> + <highlighter type="oneline-comment"> + <start>///</start> + <style>doccomment</style> + </highlighter> + <highlighter type="multiline-comment"> + <start>/*</start> + <end>*/</end> + </highlighter> + <highlighter type="oneline-comment">//</highlighter> + <highlighter type="annotation"> + <!-- annotations are called (custom) "attributes" in .NET --> + <start>[</start> + <end>]</end> + <valueStart>(</valueStart> + <valueEnd>)</valueEnd> + </highlighter> + <highlighter type="oneline-comment"> + <!-- C# supports a couple of directives --> + <start>#</start> + <lineBreakEscape>\</lineBreakEscape> + <style>directive</style> + </highlighter> + <highlighter type="string"> + <!-- strings starting with an "@" can span multiple lines --> + <string>@"</string> + <endString>"</endString> + <escape>\</escape> + <spanNewLines /> + </highlighter> + <highlighter type="string"> + <string>"</string> + <escape>\</escape> + </highlighter> + <highlighter type="string"> + <string>'</string> + <escape>\</escape> + </highlighter> + <highlighter type="hexnumber"> + <prefix>0x</prefix> + <suffix>ul</suffix> + <suffix>lu</suffix> + <suffix>u</suffix> + <suffix>l</suffix> + <ignoreCase /> + </highlighter> + <highlighter type="number"> + <point>.</point> + <pointStarts /> + <exponent>e</exponent> + <suffix>ul</suffix> + <suffix>lu</suffix> + <suffix>u</suffix> + <suffix>f</suffix> + <suffix>d</suffix> + <suffix>m</suffix> + <suffix>l</suffix> + <ignoreCase /> + </highlighter> + <highlighter type="keywords"> + <keyword>abstract</keyword> + <keyword>as</keyword> + <keyword>base</keyword> + <keyword>bool</keyword> + <keyword>break</keyword> + <keyword>byte</keyword> + <keyword>case</keyword> + <keyword>catch</keyword> + <keyword>char</keyword> + <keyword>checked</keyword> + <keyword>class</keyword> + <keyword>const</keyword> + <keyword>continue</keyword> + <keyword>decimal</keyword> + <keyword>default</keyword> + <keyword>delegate</keyword> + <keyword>do</keyword> + <keyword>double</keyword> + <keyword>else</keyword> + <keyword>enum</keyword> + <keyword>event</keyword> + <keyword>explicit</keyword> + <keyword>extern</keyword> + <keyword>false</keyword> + <keyword>finally</keyword> + <keyword>fixed</keyword> + <keyword>float</keyword> + <keyword>for</keyword> + <keyword>foreach</keyword> + <keyword>goto</keyword> + <keyword>if</keyword> + <keyword>implicit</keyword> + <keyword>in</keyword> + <keyword>int</keyword> + <keyword>interface</keyword> + <keyword>internal</keyword> + <keyword>is</keyword> + <keyword>lock</keyword> + <keyword>long</keyword> + <keyword>namespace</keyword> + <keyword>new</keyword> + <keyword>null</keyword> + <keyword>object</keyword> + <keyword>operator</keyword> + <keyword>out</keyword> + <keyword>override</keyword> + <keyword>params</keyword> + <keyword>private</keyword> + <keyword>protected</keyword> + <keyword>public</keyword> + <keyword>readonly</keyword> + <keyword>ref</keyword> + <keyword>return</keyword> + <keyword>sbyte</keyword> + <keyword>sealed</keyword> + <keyword>short</keyword> + <keyword>sizeof</keyword> + <keyword>stackalloc</keyword> + <keyword>static</keyword> + <keyword>string</keyword> + <keyword>struct</keyword> + <keyword>switch</keyword> + <keyword>this</keyword> + <keyword>throw</keyword> + <keyword>true</keyword> + <keyword>try</keyword> + <keyword>typeof</keyword> + <keyword>uint</keyword> + <keyword>ulong</keyword> + <keyword>unchecked</keyword> + <keyword>unsafe</keyword> + <keyword>ushort</keyword> + <keyword>using</keyword> + <keyword>virtual</keyword> + <keyword>void</keyword> + <keyword>volatile</keyword> + <keyword>while</keyword> + </highlighter> + <highlighter type="keywords"> + <!-- special words, not really keywords --> + <keyword>add</keyword> + <keyword>alias</keyword> + <keyword>get</keyword> + <keyword>global</keyword> + <keyword>partial</keyword> + <keyword>remove</keyword> + <keyword>set</keyword> + <keyword>value</keyword> + <keyword>where</keyword> + <keyword>yield</keyword> + </highlighter> +</highlighters> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/delphi-hl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/delphi-hl.xml new file mode 100644 index 000000000..2a45d29fd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/delphi-hl.xml @@ -0,0 +1,200 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +Syntax highlighting definition for Delphi (also suitable for Pascal) + +xslthl - XSLT Syntax Highlighting +http://sourceforge.net/projects/xslthl/ +Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Michal Molhanec <mol1111 at users.sourceforge.net> +Jirka Kosek <kosek at users.sourceforge.net> +Michiel Hendriks <elmuerte at users.sourceforge.net> + +--> +<highlighters> + <highlighter type="multiline-comment"> + <!-- multiline comments starting with an $ are directives --> + <start>{$</start> + <end>}</end> + <style>directive</style> + </highlighter> + <highlighter type="multiline-comment"> + <!-- multiline comments starting with an $ are directives --> + <start>(*$</start> + <end>)</end> + <style>directive</style> + </highlighter> + <highlighter type="multiline-comment"> + <start>{</start> + <end>}</end> + </highlighter> + <highlighter type="multiline-comment"> + <start>(*</start> + <end>*)</end> + </highlighter> + <highlighter type="oneline-comment">//</highlighter> + <highlighter type="string"> + <string>'</string> + <doubleEscapes /> + </highlighter> + <highlighter type="hexnumber"> + <prefix>#$</prefix> + <ignoreCase /> + <style>string</style> + </highlighter> + <highlighter type="number"> + <prefix>#</prefix> + <ignoreCase /> + <style>string</style> + </highlighter> + <highlighter type="hexnumber"> + <prefix>$</prefix> + <ignoreCase /> + </highlighter> + <highlighter type="number"> + <point>.</point> + <exponent>e</exponent> + <ignoreCase /> + </highlighter> + <highlighter type="keywords"> + <!-- Reserved words --> + <keyword>and</keyword> + <keyword>else</keyword> + <keyword>inherited</keyword> + <keyword>packed</keyword> + <keyword>then</keyword> + <keyword>array</keyword> + <keyword>end</keyword> + <keyword>initialization</keyword> + <keyword>procedure</keyword> + <keyword>threadvar</keyword> + <keyword>as</keyword> + <keyword>except</keyword> + <keyword>inline</keyword> + <keyword>program</keyword> + <keyword>to</keyword> + <keyword>asm</keyword> + <keyword>exports</keyword> + <keyword>interface</keyword> + <keyword>property</keyword> + <keyword>try</keyword> + <keyword>begin</keyword> + <keyword>file</keyword> + <keyword>is</keyword> + <keyword>raise</keyword> + <keyword>type</keyword> + <keyword>case</keyword> + <keyword>final</keyword> + <keyword>label</keyword> + <keyword>record</keyword> + <keyword>unit</keyword> + <keyword>class</keyword> + <keyword>finalization</keyword> + <keyword>library</keyword> + <keyword>repeat</keyword> + <keyword>unsafe</keyword> + <keyword>const</keyword> + <keyword>finally</keyword> + <keyword>mod</keyword> + <keyword>resourcestring</keyword> + <keyword>until</keyword> + <keyword>constructor</keyword> + <keyword>for</keyword> + <keyword>nil</keyword> + <keyword>sealed</keyword> + <keyword>uses</keyword> + <keyword>destructor</keyword> + <keyword>function</keyword> + <keyword>not</keyword> + <keyword>set</keyword> + <keyword>var</keyword> + <keyword>dispinterface</keyword> + <keyword>goto</keyword> + <keyword>object</keyword> + <keyword>shl</keyword> + <keyword>while</keyword> + <keyword>div</keyword> + <keyword>if</keyword> + <keyword>of</keyword> + <keyword>shr</keyword> + <keyword>with</keyword> + <keyword>do</keyword> + <keyword>implementation</keyword> + <keyword>or</keyword> + <keyword>static</keyword> + <keyword>xor</keyword> + <keyword>downto</keyword> + <keyword>in</keyword> + <keyword>out</keyword> + <keyword>string</keyword> + + <!-- Special meaning --> + <keyword>at</keyword> + <keyword>on</keyword> + + <!-- Directives --> + <keyword>absolute</keyword> + <keyword>dynamic</keyword> + <keyword>local</keyword> + <keyword>platform</keyword> + <keyword>requires</keyword> + <keyword>abstract</keyword> + <keyword>export</keyword> + <keyword>message</keyword> + <keyword>private</keyword> + <keyword>resident</keyword> + <keyword>assembler</keyword> + <keyword>external</keyword> + <keyword>name</keyword> + <keyword>protected</keyword> + <keyword>safecall</keyword> + <keyword>automated</keyword> + <keyword>far</keyword> + <keyword>near</keyword> + <keyword>public</keyword> + <keyword>stdcall</keyword> + <keyword>cdecl</keyword> + <keyword>forward</keyword> + <keyword>nodefault</keyword> + <keyword>published</keyword> + <keyword>stored</keyword> + <keyword>contains</keyword> + <keyword>implements</keyword> + <keyword>overload</keyword> + <keyword>read</keyword> + <keyword>varargs</keyword> + <keyword>default</keyword> + <keyword>index</keyword> + <keyword>override</keyword> + <keyword>readonly</keyword> + <keyword>virtual</keyword> + <keyword>deprecated</keyword> + <keyword>inline</keyword> + <keyword>package</keyword> + <keyword>register</keyword> + <keyword>write</keyword> + <keyword>dispid</keyword> + <keyword>library</keyword> + <keyword>pascal</keyword> + <keyword>reintroduce</keyword> + <keyword>writeonly</keyword> + <ignoreCase /> + </highlighter> +</highlighters> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ini-hl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ini-hl.xml new file mode 100644 index 000000000..84be9c684 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ini-hl.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +Syntax highlighting definition for ini files + +xslthl - XSLT Syntax Highlighting +http://sourceforge.net/projects/xslthl/ +Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Michal Molhanec <mol1111 at users.sourceforge.net> +Jirka Kosek <kosek at users.sourceforge.net> +Michiel Hendriks <elmuerte at users.sourceforge.net> + +--> +<highlighters> + <highlighter type="oneline-comment">;</highlighter> + <highlighter type="regex"> + <!-- ini sections --> + <pattern>^(\[.+\]\s*)$</pattern> + <style>keyword</style> + <flags>MULTILINE</flags> + </highlighter> + <highlighter type="regex"> + <!-- the keys in an ini section --> + <pattern>^(.+)(?==)</pattern> + <style>attribute</style> + <flags>MULTILINE</flags> + </highlighter> +</highlighters> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/java-hl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/java-hl.xml new file mode 100644 index 000000000..d499d83f7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/java-hl.xml @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +Syntax highlighting definition for Java + +xslthl - XSLT Syntax Highlighting +http://sourceforge.net/projects/xslthl/ +Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Michal Molhanec <mol1111 at users.sourceforge.net> +Jirka Kosek <kosek at users.sourceforge.net> +Michiel Hendriks <elmuerte at users.sourceforge.net> + +--> +<highlighters> + <highlighter type="multiline-comment"> + <start>/**</start> + <end>*/</end> + <style>doccomment</style> + </highlighter> + <highlighter type="multiline-comment"> + <start>/*</start> + <end>*/</end> + </highlighter> + <highlighter type="oneline-comment">//</highlighter> + <highlighter type="string"> + <string>"</string> + <escape>\</escape> + </highlighter> + <highlighter type="string"> + <string>'</string> + <escape>\</escape> + </highlighter> + <highlighter type="annotation"> + <start>@</start> + <valueStart>(</valueStart> + <valueEnd>)</valueEnd> + </highlighter> + <highlighter type="hexnumber"> + <prefix>0x</prefix> + <ignoreCase /> + </highlighter> + <highlighter type="number"> + <point>.</point> + <exponent>e</exponent> + <suffix>f</suffix> + <suffix>d</suffix> + <suffix>l</suffix> + <ignoreCase /> + </highlighter> + <highlighter type="keywords"> + <keyword>abstract</keyword> + <keyword>boolean</keyword> + <keyword>break</keyword> + <keyword>byte</keyword> + <keyword>case</keyword> + <keyword>catch</keyword> + <keyword>char</keyword> + <keyword>class</keyword> + <keyword>const</keyword> + <keyword>continue</keyword> + <keyword>default</keyword> + <keyword>do</keyword> + <keyword>double</keyword> + <keyword>else</keyword> + <keyword>extends</keyword> + <keyword>final</keyword> + <keyword>finally</keyword> + <keyword>float</keyword> + <keyword>for</keyword> + <keyword>goto</keyword> + <keyword>if</keyword> + <keyword>implements</keyword> + <keyword>import</keyword> + <keyword>instanceof</keyword> + <keyword>int</keyword> + <keyword>interface</keyword> + <keyword>long</keyword> + <keyword>native</keyword> + <keyword>new</keyword> + <keyword>package</keyword> + <keyword>private</keyword> + <keyword>protected</keyword> + <keyword>public</keyword> + <keyword>return</keyword> + <keyword>short</keyword> + <keyword>static</keyword> + <keyword>strictfp</keyword> + <keyword>super</keyword> + <keyword>switch</keyword> + <keyword>synchronized</keyword> + <keyword>this</keyword> + <keyword>throw</keyword> + <keyword>throws</keyword> + <keyword>transient</keyword> + <keyword>try</keyword> + <keyword>void</keyword> + <keyword>volatile</keyword> + <keyword>while</keyword> + </highlighter> +</highlighters> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/javascript-hl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/javascript-hl.xml new file mode 100644 index 000000000..5749b8873 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/javascript-hl.xml @@ -0,0 +1,147 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +Syntax highlighting definition for JavaScript + +xslthl - XSLT Syntax Highlighting +http://sourceforge.net/projects/xslthl/ +Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Michal Molhanec <mol1111 at users.sourceforge.net> +Jirka Kosek <kosek at users.sourceforge.net> +Michiel Hendriks <elmuerte at users.sourceforge.net> + +--> +<highlighters> + <highlighter type="multiline-comment"> + <start>/*</start> + <end>*/</end> + </highlighter> + <highlighter type="oneline-comment">//</highlighter> + <highlighter type="string"> + <string>"</string> + <escape>\</escape> + </highlighter> + <highlighter type="string"> + <string>'</string> + <escape>\</escape> + </highlighter> + <highlighter type="hexnumber"> + <prefix>0x</prefix> + <ignoreCase /> + </highlighter> + <highlighter type="number"> + <point>.</point> + <exponent>e</exponent> + <ignoreCase /> + </highlighter> + <highlighter type="keywords"> + <keyword>break</keyword> + <keyword>case</keyword> + <keyword>catch</keyword> + <keyword>continue</keyword> + <keyword>default</keyword> + <keyword>delete</keyword> + <keyword>do</keyword> + <keyword>else</keyword> + <keyword>finally</keyword> + <keyword>for</keyword> + <keyword>function</keyword> + <keyword>if</keyword> + <keyword>in</keyword> + <keyword>instanceof</keyword> + <keyword>new</keyword> + <keyword>return</keyword> + <keyword>switch</keyword> + <keyword>this</keyword> + <keyword>throw</keyword> + <keyword>try</keyword> + <keyword>typeof</keyword> + <keyword>var</keyword> + <keyword>void</keyword> + <keyword>while</keyword> + <keyword>with</keyword> + <!-- future keywords --> + <keyword>abstract</keyword> + <keyword>boolean</keyword> + <keyword>byte</keyword> + <keyword>char</keyword> + <keyword>class</keyword> + <keyword>const</keyword> + <keyword>debugger</keyword> + <keyword>double</keyword> + <keyword>enum</keyword> + <keyword>export</keyword> + <keyword>extends</keyword> + <keyword>final</keyword> + <keyword>float</keyword> + <keyword>goto</keyword> + <keyword>implements</keyword> + <keyword>import</keyword> + <keyword>int</keyword> + <keyword>interface</keyword> + <keyword>long</keyword> + <keyword>native</keyword> + <keyword>package</keyword> + <keyword>private</keyword> + <keyword>protected</keyword> + <keyword>public</keyword> + <keyword>short</keyword> + <keyword>static</keyword> + <keyword>super</keyword> + <keyword>synchronized</keyword> + <keyword>throws</keyword> + <keyword>transient</keyword> + <keyword>volatile</keyword> + </highlighter> + <highlighter type="keywords"> + <keyword>prototype</keyword> + <!-- Global Objects --> + <keyword>Array</keyword> + <keyword>Boolean</keyword> + <keyword>Date</keyword> + <keyword>Error</keyword> + <keyword>EvalError</keyword> + <keyword>Function</keyword> + <keyword>Math</keyword> + <keyword>Number</keyword> + <keyword>Object</keyword> + <keyword>RangeError</keyword> + <keyword>ReferenceError</keyword> + <keyword>RegExp</keyword> + <keyword>String</keyword> + <keyword>SyntaxError</keyword> + <keyword>TypeError</keyword> + <keyword>URIError</keyword> + <!-- Global functions --> + <keyword>decodeURI</keyword> + <keyword>decodeURIComponent</keyword> + <keyword>encodeURI</keyword> + <keyword>encodeURIComponent</keyword> + <keyword>eval</keyword> + <keyword>isFinite</keyword> + <keyword>isNaN</keyword> + <keyword>parseFloat</keyword> + <keyword>parseInt</keyword> + <!-- Global properties --> + <keyword>Infinity</keyword> + <keyword>NaN</keyword> + <keyword>undefined</keyword> + </highlighter> +</highlighters> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/m2-hl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/m2-hl.xml new file mode 100644 index 000000000..a3ef3142c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/m2-hl.xml @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +Syntax highlighting definition for Modulo-2 + +xslthl - XSLT Syntax Highlighting +http://sourceforge.net/projects/xslthl/ +Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Michal Molhanec <mol1111 at users.sourceforge.net> +Jirka Kosek <kosek at users.sourceforge.net> +Michiel Hendriks <elmuerte at users.sourceforge.net> + +--> +<highlighters> + <highlighter type="nested-multiline-comment"> + <start>(*</start> + <end>*)</end> + </highlighter> + <highlighter type="string"> + <string>"</string> + </highlighter> + <highlighter type="string"> + <string>'</string> + </highlighter> + <highlighter type="number"> + <point>.</point> + <exponent>e</exponent> + <ignoreCase /> + </highlighter> + <highlighter type="keywords"> + <keyword>and</keyword> + <keyword>array</keyword> + <keyword>begin</keyword> + <keyword>by</keyword> + <keyword>case</keyword> + <keyword>const</keyword> + <keyword>definition</keyword> + <keyword>div</keyword> + <keyword>do</keyword> + <keyword>else</keyword> + <keyword>elsif</keyword> + <keyword>end</keyword> + <keyword>exit</keyword> + <keyword>export</keyword> + <keyword>for</keyword> + <keyword>from</keyword> + <keyword>if</keyword> + <keyword>implementation</keyword> + <keyword>import</keyword> + <keyword>in</keyword> + <keyword>loop</keyword> + <keyword>mod</keyword> + <keyword>module</keyword> + <keyword>not</keyword> + <keyword>of</keyword> + <keyword>or</keyword> + <keyword>pointer</keyword> + <keyword>procedure</keyword> + <keyword>qualified</keyword> + <keyword>record</keyword> + <keyword>repeat</keyword> + <keyword>return</keyword> + <keyword>set</keyword> + <keyword>then</keyword> + <keyword>to</keyword> + <keyword>type</keyword> + <keyword>until</keyword> + <keyword>var</keyword> + <keyword>while</keyword> + <keyword>with</keyword> + <ignoreCase /> + </highlighter> +</highlighters> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/myxml-hl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/myxml-hl.xml new file mode 100644 index 000000000..efa90d7bf --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/myxml-hl.xml @@ -0,0 +1,116 @@ +<?xml version='1.0'?> +<!-- + + Bakalarska prace: Zvyraznovani syntaxe v XSLT + Michal Molhanec 2005 + + myxml-hl.xml - konfigurace zvyraznovace XML, ktera zvlast zvyrazni + HTML elementy a XSL elementy + +--> +<highlighters> + +<wholehighlighter type='xml'> + <elementSet> + <style>html</style> + <element>A</element> + <element>ABBR</element> + <element>ACRONYM</element> + <element>ADDRESS</element> + <element>APPLET</element> + <element>AREA</element> + <element>B</element> + <element>BASE</element> + <element>BASEFONT</element> + <element>BDO</element> + <element>BIG</element> + <element>BLOCKQUOTE</element> + <element>BODY</element> + <element>BR</element> + <element>BUTTON</element> + <element>CAPTION</element> + <element>CENTER</element> + <element>CITE</element> + <element>CODE</element> + <element>COL</element> + <element>COLGROUP</element> + <element>DD</element> + <element>DEL</element> + <element>DFN</element> + <element>DIR</element> + <element>DIV</element> + <element>DL</element> + <element>DT</element> + <element>EM</element> + <element>FIELDSET</element> + <element>FONT</element> + <element>FORM</element> + <element>FRAME</element> + <element>FRAMESET</element> + <element>H1</element> + <element>H2</element> + <element>H3</element> + <element>H4</element> + <element>H5</element> + <element>H6</element> + <element>HEAD</element> + <element>HR</element> + <element>HTML</element> + <element>I</element> + <element>IFRAME</element> + <element>IMG</element> + <element>INPUT</element> + <element>INS</element> + <element>ISINDEX</element> + <element>KBD</element> + <element>LABEL</element> + <element>LEGEND</element> + <element>LI</element> + <element>LINK</element> + <element>MAP</element> + <element>MENU</element> + <element>META</element> + <element>NOFRAMES</element> + <element>NOSCRIPT</element> + <element>OBJECT</element> + <element>OL</element> + <element>OPTGROUP</element> + <element>OPTION</element> + <element>P</element> + <element>PARAM</element> + <element>PRE</element> + <element>Q</element> + <element>S</element> + <element>SAMP</element> + <element>SCRIPT</element> + <element>SELECT</element> + <element>SMALL</element> + <element>SPAN</element> + <element>STRIKE</element> + <element>STRONG</element> + <element>STYLE</element> + <element>SUB</element> + <element>SUP</element> + <element>TABLE</element> + <element>TBODY</element> + <element>TD</element> + <element>TEXTAREA</element> + <element>TFOOT</element> + <element>TH</element> + <element>THEAD</element> + <element>TITLE</element> + <element>TR</element> + <element>TT</element> + <element>U</element> + <element>UL</element> + <element>VAR</element> + <element>XMP</element> + <ignoreCase/> + </elementSet> + <elementPrefix> + <style>xslt</style> + <prefix>xsl:</prefix> + </elementPrefix> +</wholehighlighter> + +</highlighters> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/perl-hl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/perl-hl.xml new file mode 100644 index 000000000..23fdfd822 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/perl-hl.xml @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +Syntax highlighting definition for Perl + +xslthl - XSLT Syntax Highlighting +http://sourceforge.net/projects/xslthl/ +Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Michal Molhanec <mol1111 at users.sourceforge.net> +Jirka Kosek <kosek at users.sourceforge.net> +Michiel Hendriks <elmuerte at users.sourceforge.net> + +--> +<highlighters> + <highlighter type="oneline-comment">#</highlighter> + <highlighter type="heredoc"> + <start><<</start> + <quote>'</quote> + <quote>"</quote> + <noWhiteSpace/> + </highlighter> + <highlighter type="string"> + <string>"</string> + <escape>\</escape> + </highlighter> + <highlighter type="string"> + <string>'</string> + <escape>\</escape> + <spanNewLines/> + </highlighter> + <highlighter type="hexnumber"> + <prefix>0x</prefix> + <ignoreCase /> + </highlighter> + <highlighter type="number"> + <point>.</point> + <pointStarts /> + <ignoreCase /> + </highlighter> + <highlighter type="keywords"> + <keyword>if</keyword> + <keyword>unless</keyword> + <keyword>while</keyword> + <keyword>until</keyword> + <keyword>foreach</keyword> + <keyword>else</keyword> + <keyword>elsif</keyword> + <keyword>for</keyword> + <keyword>when</keyword> + <keyword>default</keyword> + <keyword>given</keyword> + <!-- Keywords related to the control flow of your perl program --> + <keyword>caller</keyword> + <keyword>continue</keyword> + <keyword>die</keyword> + <keyword>do</keyword> + <keyword>dump</keyword> + <keyword>eval</keyword> + <keyword>exit</keyword> + <keyword>goto</keyword> + <keyword>last</keyword> + <keyword>next</keyword> + <keyword>redo</keyword> + <keyword>return</keyword> + <keyword>sub</keyword> + <keyword>wantarray</keyword> + <!-- Keywords related to scoping --> + <keyword>caller</keyword> + <keyword>import</keyword> + <keyword>local</keyword> + <keyword>my</keyword> + <keyword>package</keyword> + <keyword>use</keyword> + <!-- Keywords related to perl modules --> + <keyword>do</keyword> + <keyword>import</keyword> + <keyword>no</keyword> + <keyword>package</keyword> + <keyword>require</keyword> + <keyword>use</keyword> + <!-- Keywords related to classes and object-orientedness --> + <keyword>bless</keyword> + <keyword>dbmclose</keyword> + <keyword>dbmopen</keyword> + <keyword>package</keyword> + <keyword>ref</keyword> + <keyword>tie</keyword> + <keyword>tied</keyword> + <keyword>untie</keyword> + <keyword>use</keyword> + <!-- operators --> + <keyword>and</keyword> + <keyword>or</keyword> + <keyword>not</keyword> + <keyword>eq</keyword> + <keyword>ne</keyword> + <keyword>lt</keyword> + <keyword>gt</keyword> + <keyword>le</keyword> + <keyword>ge</keyword> + <keyword>cmp</keyword> + </highlighter> +</highlighters> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/php-hl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/php-hl.xml new file mode 100644 index 000000000..0daa348c6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/php-hl.xml @@ -0,0 +1,149 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +Syntax highlighting definition for PHP + +xslthl - XSLT Syntax Highlighting +http://sourceforge.net/projects/xslthl/ +Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Michal Molhanec <mol1111 at users.sourceforge.net> +Jirka Kosek <kosek at users.sourceforge.net> +Michiel Hendriks <elmuerte at users.sourceforge.net> + +--> +<highlighters> + <highlighter type="multiline-comment"> + <start>/**</start> + <end>*/</end> + <style>doccomment</style> + </highlighter> + <highlighter type="oneline-comment"> + <start>///</start> + <style>doccomment</style> + </highlighter> + <highlighter type="multiline-comment"> + <start>/*</start> + <end>*/</end> + </highlighter> + <highlighter type="oneline-comment">//</highlighter> + <highlighter type="oneline-comment">#</highlighter> + <highlighter type="string"> + <string>"</string> + <escape>\</escape> + <spanNewLines /> + </highlighter> + <highlighter type="string"> + <string>'</string> + <escape>\</escape> + <spanNewLines /> + </highlighter> + <highlighter type="heredoc"> + <start><<<</start> + </highlighter> + <highlighter type="hexnumber"> + <prefix>0x</prefix> + <ignoreCase /> + </highlighter> + <highlighter type="number"> + <point>.</point> + <exponent>e</exponent> + <ignoreCase /> + </highlighter> + <highlighter type="keywords"> + <keyword>and</keyword> + <keyword>or</keyword> + <keyword>xor</keyword> + <keyword>__FILE__</keyword> + <keyword>exception</keyword> + <keyword>__LINE__</keyword> + <keyword>array</keyword> + <keyword>as</keyword> + <keyword>break</keyword> + <keyword>case</keyword> + <keyword>class</keyword> + <keyword>const</keyword> + <keyword>continue</keyword> + <keyword>declare</keyword> + <keyword>default</keyword> + <keyword>die</keyword> + <keyword>do</keyword> + <keyword>echo</keyword> + <keyword>else</keyword> + <keyword>elseif</keyword> + <keyword>empty</keyword> + <keyword>enddeclare</keyword> + <keyword>endfor</keyword> + <keyword>endforeach</keyword> + <keyword>endif</keyword> + <keyword>endswitch</keyword> + <keyword>endwhile</keyword> + <keyword>eval</keyword> + <keyword>exit</keyword> + <keyword>extends</keyword> + <keyword>for</keyword> + <keyword>foreach</keyword> + <keyword>function</keyword> + <keyword>global</keyword> + <keyword>if</keyword> + <keyword>include</keyword> + <keyword>include_once</keyword> + <keyword>isset</keyword> + <keyword>list</keyword> + <keyword>new</keyword> + <keyword>print</keyword> + <keyword>require</keyword> + <keyword>require_once</keyword> + <keyword>return</keyword> + <keyword>static</keyword> + <keyword>switch</keyword> + <keyword>unset</keyword> + <keyword>use</keyword> + <keyword>var</keyword> + <keyword>while</keyword> + <keyword>__FUNCTION__</keyword> + <keyword>__CLASS__</keyword> + <keyword>__METHOD__</keyword> + <keyword>final</keyword> + <keyword>php_user_filter</keyword> + <keyword>interface</keyword> + <keyword>implements</keyword> + <keyword>extends</keyword> + <keyword>public</keyword> + <keyword>private</keyword> + <keyword>protected</keyword> + <keyword>abstract</keyword> + <keyword>clone</keyword> + <keyword>try</keyword> + <keyword>catch</keyword> + <keyword>throw</keyword> + <keyword>cfunction</keyword> + <keyword>old_function</keyword> + <keyword>true</keyword> + <keyword>false</keyword> + <ignoreCase /> + </highlighter> + <highlighter type="word"> + <!-- highlight the php open and close tags as directives --> + <word>?></word> + <word><?php</word> + <word><?=</word> + <style>directive</style> + </highlighter> +</highlighters> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/python-hl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/python-hl.xml new file mode 100644 index 000000000..1b1f08730 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/python-hl.xml @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +Syntax highlighting definition for Python + +xslthl - XSLT Syntax Highlighting +http://sourceforge.net/projects/xslthl/ +Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Michal Molhanec <mol1111 at users.sourceforge.net> +Jirka Kosek <kosek at users.sourceforge.net> +Michiel Hendriks <elmuerte at users.sourceforge.net> + +--> +<highlighters> + <highlighter type="annotation"> + <!-- these are actually called decorators --> + <start>@</start> + <valueStart>(</valueStart> + <valueEnd>)</valueEnd> + </highlighter> + <highlighter type="oneline-comment">#</highlighter> + <highlighter type="string"> + <string>"""</string> + <spanNewLines /> + </highlighter> + <highlighter type="string"> + <string>'''</string> + <spanNewLines /> + </highlighter> + <highlighter type="string"> + <string>"</string> + <escape>\</escape> + </highlighter> + <highlighter type="string"> + <string>'</string> + <escape>\</escape> + </highlighter> + <highlighter type="hexnumber"> + <prefix>0x</prefix> + <suffix>l</suffix> + <ignoreCase /> + </highlighter> + <highlighter type="number"> + <point>.</point> + <pointStarts /> + <exponent>e</exponent> + <suffix>l</suffix> + <ignoreCase /> + </highlighter> + <highlighter type="keywords"> + <keyword>and</keyword> + <keyword>del</keyword> + <keyword>from</keyword> + <keyword>not</keyword> + <keyword>while</keyword> + <keyword>as</keyword> + <keyword>elif</keyword> + <keyword>global</keyword> + <keyword>or</keyword> + <keyword>with</keyword> + <keyword>assert</keyword> + <keyword>else</keyword> + <keyword>if</keyword> + <keyword>pass</keyword> + <keyword>yield</keyword> + <keyword>break</keyword> + <keyword>except</keyword> + <keyword>import</keyword> + <keyword>print</keyword> + <keyword>class</keyword> + <keyword>exec</keyword> + <keyword>in</keyword> + <keyword>raise</keyword> + <keyword>continue</keyword> + <keyword>finally</keyword> + <keyword>is</keyword> + <keyword>return</keyword> + <keyword>def</keyword> + <keyword>for</keyword> + <keyword>lambda</keyword> + <keyword>try</keyword> + </highlighter> +</highlighters> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ruby-hl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ruby-hl.xml new file mode 100644 index 000000000..2f7435284 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/ruby-hl.xml @@ -0,0 +1,109 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +Syntax highlighting definition for Ruby + +xslthl - XSLT Syntax Highlighting +http://sourceforge.net/projects/xslthl/ +Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Michal Molhanec <mol1111 at users.sourceforge.net> +Jirka Kosek <kosek at users.sourceforge.net> +Michiel Hendriks <elmuerte at users.sourceforge.net> + +--> +<highlighters> + <highlighter type="oneline-comment">#</highlighter> + <highlighter type="heredoc"> + <start><<</start> + <noWhiteSpace/> + </highlighter> + <highlighter type="string"> + <string>"</string> + <escape>\</escape> + </highlighter> + <highlighter type="string"> + <string>%Q{</string> + <endString>}</endString> + <escape>\</escape> + </highlighter> + <highlighter type="string"> + <string>%/</string> + <endString>/</endString> + <escape>\</escape> + </highlighter> + <highlighter type="string"> + <string>'</string> + <escape>\</escape> + </highlighter> + <highlighter type="string"> + <string>%q{</string> + <endString>}</endString> + <escape>\</escape> + </highlighter> + <highlighter type="hexnumber"> + <prefix>0x</prefix> + <ignoreCase /> + </highlighter> + <highlighter type="number"> + <point>.</point> + <exponent>e</exponent> + <ignoreCase /> + </highlighter> + <highlighter type="keywords"> + <keyword>alias</keyword> + <keyword>and</keyword> + <keyword>BEGIN</keyword> + <keyword>begin</keyword> + <keyword>break</keyword> + <keyword>case</keyword> + <keyword>class</keyword> + <keyword>def</keyword> + <keyword>defined</keyword> + <keyword>do</keyword> + <keyword>else</keyword> + <keyword>elsif</keyword> + <keyword>END</keyword> + <keyword>end</keyword> + <keyword>ensure</keyword> + <keyword>false</keyword> + <keyword>for</keyword> + <keyword>if</keyword> + <keyword>in</keyword> + <keyword>module</keyword> + <keyword>next</keyword> + <keyword>nil</keyword> + <keyword>not</keyword> + <keyword>or</keyword> + <keyword>redo</keyword> + <keyword>rescue</keyword> + <keyword>retry</keyword> + <keyword>return</keyword> + <keyword>self</keyword> + <keyword>super</keyword> + <keyword>then</keyword> + <keyword>true</keyword> + <keyword>undef</keyword> + <keyword>unless</keyword> + <keyword>until</keyword> + <keyword>when</keyword> + <keyword>while</keyword> + <keyword>yield</keyword> + </highlighter> +</highlighters> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/tcl-hl.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/tcl-hl.xml new file mode 100644 index 000000000..7a8fa9fbd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/tcl-hl.xml @@ -0,0 +1,180 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +xslthl highlighter definition fof Tcl/Tk. +written by Arndt Roger Schneider + +Copyright 2008 Arndt Roger Schneider +License: xlib/libpng + +This software is provided "as-is", without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must + not claim that you wrote the original software. If you use this + software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. + +--> +<highlighters> + <highlighter type="oneline-comment">#</highlighter> + <highlighter type="string"> + <string>"</string> + <escape>\</escape> + </highlighter> + <highlighter type="regex"> + <pattern>-[\p{javaJavaIdentifierStart}][\p{javaJavaIdentifierPart}]+ + </pattern> + <style>none</style> + </highlighter> + <highlighter type="number"> + <point>.</point> + <ignoreCase /> + </highlighter> + <highlighter type="keywords"> + <!-- Tcl and itcl / structural --> + <keyword>if</keyword> + <keyword>then</keyword> + <keyword>else</keyword> + <keyword>elseif</keyword> + <keyword>for</keyword> + <keyword>foreach</keyword> + <keyword>break</keyword> + <keyword>continue</keyword> + <keyword>while</keyword> + <keyword>eval</keyword> + <keyword>case</keyword> + <keyword>in</keyword> + <keyword>switch</keyword> + <keyword>default</keyword> + <keyword>exit</keyword> + <keyword>error</keyword> + <keyword>proc</keyword> + <keyword>rename</keyword> + <keyword>exec</keyword> + <keyword>return</keyword> + <keyword>uplevel</keyword> + <keyword>upvar</keyword> + <keyword>constructor</keyword> + <keyword>destructor</keyword> + <keyword>itcl_class</keyword> + <keyword>loop</keyword> + <keyword>for_array_keys</keyword> + <keyword>for_recursive_glob</keyword> + <keyword>for_file</keyword> + <keyword>method</keyword> + <keyword>body</keyword> + <keyword>configbody</keyword> + <keyword>catch</keyword> + <keyword>namespace</keyword> + <keyword>class</keyword> + <keyword>array</keyword> + <keyword>set</keyword> + <keyword>unset</keyword> + <keyword>package</keyword> + <keyword>source</keyword> + + <!-- Additional commands --> + <keyword>subst</keyword> + <keyword>list</keyword> + <keyword>format</keyword> + <keyword>lappend</keyword> + <keyword>option</keyword> + <keyword>expr</keyword> + <keyword>puts</keyword> + <keyword>winfo</keyword> + <keyword>lindex</keyword> + <keyword>string</keyword> + + + <!-- Runtime Library / structural --> + <keyword>verified</keyword> + <keyword>seteach</keyword> + <keyword>fixme</keyword> + <keyword>debug</keyword> + <keyword>rtl::debug</keyword> + <keyword>rtl::verified</keyword> + <keyword>rtl::template</keyword> + <keyword>rtl::seteach</keyword> + + <!-- Runtime Library / Additional --> + <keyword>mkProc</keyword> + <keyword>getCreator</keyword> + <keyword>properties</keyword> + <keyword>lappendunique</keyword> + <keyword>rtl::lappendunique</keyword> + + <!-- geometry managers from Tk --> + <keyword>place</keyword> + <keyword>pack</keyword> + <keyword>grid</keyword> + + + <!-- Additional Tk stuff --> + <keyword>image</keyword> + <keyword>font</keyword> + <keyword>focus</keyword> + <keyword>tk</keyword> + <keyword>bind</keyword> + <keyword>after</keyword> + + <!-- Window classes from Tk, ... --> + <keyword>toplevel</keyword> + <keyword>frame</keyword> + <keyword>entry</keyword> + <keyword>listbox</keyword> + <keyword>button</keyword> + <keyword>radiobutton</keyword> + <keyword>checkbutton</keyword> + <keyword>canvas</keyword> + <keyword>menu</keyword> + <keyword>menubutton</keyword> + <keyword>text</keyword> + <keyword>label</keyword> + <keyword>message</keyword> + <!-- + The rest of Tk's windows is omitted: scrollbar, scale, panedwindow, labelframe, spinbox ... + --> + + <!-- ... from tkZinc, ... --> + <keyword>zinc</keyword> + + <!-- ... from tkpath, ... --> + <keyword>tkpath::gradient</keyword> + + <!-- ... from Runtime Library, ... --> + <keyword>rtl_combobox</keyword> + <keyword>rtl_tree</keyword> + <keyword>rtl_tabset</keyword> + <keyword>rtl_mlistbox</keyword> + <keyword>rtl_gridwin</keyword> + <keyword>rtlysizer</keyword> + <keyword>rtlxsizer</keyword> + <!-- + The rest of RTL's windows is omitted: spinbox, decoratedframe, symbolbar, symbolbarcustomize, question ... + --> + + <!-- ... from GEI, ... --> + <keyword>goolbar</keyword> + <keyword>gstripes</keyword> + <keyword>zoolbar</keyword> + <keyword>gistbox</keyword> + <keyword>gooleditor</keyword> + <keyword>galette</keyword> + </highlighter> +</highlighters> + <!-- + Local Variables: mode: sgml coding: utf-8-unix sgml-indent-step: 2 sgml-indent-data: t sgml-set-face: t + sgml-insert-missing-element-comment: nil End: + --> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/xslthl-config.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/xslthl-config.xml new file mode 100644 index 000000000..910289ae0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/highlighting/xslthl-config.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + +xslthl - XSLT Syntax Highlighting +http://sourceforge.net/projects/xslthl/ +Copyright (C) 2005-2008 Michal Molhanec, Jirka Kosek, Michiel Hendriks + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Michal Molhanec <mol1111 at users.sourceforge.net> +Jirka Kosek <kosek at users.sourceforge.net> +Michiel Hendriks <elmuerte at users.sourceforge.net> + +--> +<xslthl-config> + <highlighter id="java" file="java-hl.xml" /> + <highlighter id="delphi" file="delphi-hl.xml" /> + <highlighter id="pascal" file="delphi-hl.xml" /> + <highlighter id="ini" file="ini-hl.xml" /> + <highlighter id="php" file="php-hl.xml" /> + <highlighter id="myxml" file="myxml-hl.xml" /> + <highlighter id="m2" file="m2-hl.xml" /> + <highlighter id="tcl" file="tcl-hl.xml" /> + <highlighter id="c" file="c-hl.xml" /> + <highlighter id="cpp" file="cpp-hl.xml" /> + <highlighter id="csharp" file="csharp-hl.xml" /> + <highlighter id="python" file="python-hl.xml" /> + <highlighter id="ruby" file="ruby-hl.xml" /> + <highlighter id="perl" file="perl-hl.xml" /> + <highlighter id="javascript" file="javascript-hl.xml" /> + <namespace prefix="xslthl" uri="http://xslthl.sf.net" /> +</xslthl-config> \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/admon.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/admon.xsl new file mode 100644 index 000000000..3d1462dd2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/admon.xsl @@ -0,0 +1,134 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + +<!-- ******************************************************************** + $Id: admon.xsl 8421 2009-05-04 07:49:49Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<xsl:template match="*" mode="admon.graphic.width"> + <xsl:param name="node" select="."/> + <xsl:text>25</xsl:text> +</xsl:template> + +<xsl:template match="note|important|warning|caution|tip"> + <xsl:choose> + <xsl:when test="$admon.graphics != 0"> + <xsl:call-template name="graphical.admonition"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="nongraphical.admonition"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="admon.graphic"> + <xsl:param name="node" select="."/> + <xsl:value-of select="$admon.graphics.path"/> + <xsl:choose> + <xsl:when test="local-name($node)='note'">note</xsl:when> + <xsl:when test="local-name($node)='warning'">warning</xsl:when> + <xsl:when test="local-name($node)='caution'">caution</xsl:when> + <xsl:when test="local-name($node)='tip'">tip</xsl:when> + <xsl:when test="local-name($node)='important'">important</xsl:when> + <xsl:otherwise>note</xsl:otherwise> + </xsl:choose> + <xsl:value-of select="$admon.graphics.extension"/> +</xsl:template> + +<xsl:template name="graphical.admonition"> + <xsl:variable name="admon.type"> + <xsl:choose> + <xsl:when test="local-name(.)='note'">Note</xsl:when> + <xsl:when test="local-name(.)='warning'">Warning</xsl:when> + <xsl:when test="local-name(.)='caution'">Caution</xsl:when> + <xsl:when test="local-name(.)='tip'">Tip</xsl:when> + <xsl:when test="local-name(.)='important'">Important</xsl:when> + <xsl:otherwise>Note</xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="alt"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="$admon.type"/> + </xsl:call-template> + </xsl:variable> + + <div> + <xsl:call-template name="common.html.attributes"/> + <xsl:if test="$admon.style != ''"> + <xsl:attribute name="style"> + <xsl:value-of select="$admon.style"/> + </xsl:attribute> + </xsl:if> + + <table border="0"> + <xsl:attribute name="summary"> + <xsl:value-of select="$admon.type"/> + <xsl:if test="title|info/title"> + <xsl:text>: </xsl:text> + <xsl:value-of select="(title|info/title)[1]"/> + </xsl:if> + </xsl:attribute> + <tr> + <td rowspan="2" align="center" valign="top"> + <xsl:attribute name="width"> + <xsl:apply-templates select="." mode="admon.graphic.width"/> + </xsl:attribute> + <img alt="[{$alt}]"> + <xsl:attribute name="src"> + <xsl:call-template name="admon.graphic"/> + </xsl:attribute> + </img> + </td> + <th align="{$direction.align.start}"> + <xsl:call-template name="anchor"/> + <xsl:if test="$admon.textlabel != 0 or title or info/title"> + <xsl:apply-templates select="." mode="object.title.markup"/> + </xsl:if> + </th> + </tr> + <tr> + <td align="{$direction.align.start}" valign="top"> + <xsl:apply-templates/> + </td> + </tr> + </table> + </div> +</xsl:template> + +<xsl:template name="nongraphical.admonition"> + <div> + <xsl:call-template name="common.html.attributes"> + <xsl:with-param name="inherit" select="1"/> + </xsl:call-template> + <xsl:if test="$admon.style"> + <xsl:attribute name="style"> + <xsl:value-of select="$admon.style"/> + </xsl:attribute> + </xsl:if> + + <xsl:if test="$admon.textlabel != 0 or title or info/title"> + <h3 class="title"> + <xsl:call-template name="anchor"/> + <xsl:apply-templates select="." mode="object.title.markup"/> + </h3> + </xsl:if> + + <xsl:apply-templates/> + </div> +</xsl:template> + +<xsl:template match="note/title"></xsl:template> +<xsl:template match="important/title"></xsl:template> +<xsl:template match="warning/title"></xsl:template> +<xsl:template match="caution/title"></xsl:template> +<xsl:template match="tip/title"></xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/annotations.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/annotations.xsl new file mode 100644 index 000000000..f0106320a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/annotations.xsl @@ -0,0 +1,169 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + +<xsl:template name="add.annotation.links"> + <xsl:param name="scripts" select="normalize-space($annotation.js)"/> + <xsl:choose> + <xsl:when test="contains($scripts, ' ')"> + <script type="text/javascript" src="{substring-before($scripts, ' ')}"/> + <xsl:call-template name="add.annotation.links"> + <xsl:with-param name="scripts" select="substring-after($scripts, ' ')"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <script type="text/javascript" src="{$scripts}"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="annotation"/> + +<xsl:template name="apply-annotations"> + <xsl:if test="$annotation.support != 0"> + <!-- do any annotations apply to the context node? --> + <xsl:variable name="id" select="(@id|@xml:id)[1]"/> + + <xsl:variable name="aids"> + <xsl:for-each select="//annotation"> + <xsl:if test="@annotates=$id + or starts-with(@annotates, concat($id, ' ')) + or contains(@annotates, concat(' ', $id, ' ')) + or substring(@annotates, string-length(@annotates)-3) + = concat(' ', $id)"> + <xsl:value-of select="generate-id()"/> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:if test="normalize-space(@annotations) != ''"> + <xsl:call-template name="annotations-pointed-to"> + <xsl:with-param name="annotations" + select="normalize-space(@annotations)"/> + </xsl:call-template> + </xsl:if> + </xsl:variable> + + <xsl:if test="$aids != ''"> + <xsl:call-template name="apply-annotations-by-gid"> + <xsl:with-param name="gids" select="normalize-space($aids)"/> + </xsl:call-template> + </xsl:if> + </xsl:if> +</xsl:template> + +<xsl:template name="annotations-pointed-to"> + <xsl:param name="annotations"/> + <xsl:choose> + <xsl:when test="contains($annotations, ' ')"> + <xsl:variable name='a' + select="key('id', substring-before($annotations, ' '))"/> + <xsl:if test="$a"> + <xsl:value-of select="generate-id($a)"/> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:call-template name="annotations-pointed-to"> + <xsl:with-param name="annotations" + select="substring-after($annotations, ' ')"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:variable name='a' + select="key('id', $annotations)"/> + <xsl:if test="$a"> + <xsl:value-of select="generate-id($a)"/> + <xsl:text> </xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="apply-annotations-by-gid"> + <xsl:param name="gids"/> + + <xsl:choose> + <xsl:when test="contains($gids, ' ')"> + <xsl:variable name="gid" select="substring-before($gids, ' ')"/> + <xsl:apply-templates select="key('gid', $gid)" + mode="annotation-inline"/> + <xsl:call-template name="apply-annotations-by-gid"> + <xsl:with-param name="gids" + select="substring-after($gids, ' ')"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="key('gid', $gids)" + mode="annotation-inline"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="annotation" mode="annotation-inline"> + <xsl:variable name="title"> + <xsl:choose> + <xsl:when test="title"> + <xsl:value-of select="title"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>[Annotation #</xsl:text> + <xsl:number count="annotation" level="any" format="1"/> + <xsl:text>]</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <a href="#annot-{generate-id(.)}" title="{$title}" + name="anch-{generate-id(.)}" id="anch-{generate-id(.)}"> + <xsl:apply-templates select="." mode="class.attribute"/> + <xsl:attribute name="onClick"> + <xsl:text>popup_</xsl:text> + <xsl:value-of select="generate-id(.)"/> + <xsl:text>.showPopup('anch-</xsl:text> + <xsl:value-of select="generate-id(.)"/> + <xsl:text>'); return false;</xsl:text> + </xsl:attribute> + <img src="{$annotation.graphic.open}" border="0" alt="{$title}"/> + </a> +</xsl:template> + +<xsl:template match="annotation" mode="annotation-popup"> + <div class="annotation-nocss"> + <p> + <a name="annot-{generate-id(.)}"/> + <xsl:text>Annotation #</xsl:text> + <xsl:number count="annotation" level="any" format="1"/> + <xsl:text>:</xsl:text> + </p> + </div> + + <div id="popup-{generate-id(.)}" class="annotation-popup"> + <xsl:if test="string-length(.) > 300"> + <xsl:attribute name="style">width:400px</xsl:attribute> + </xsl:if> + + <xsl:call-template name="annotation-title"/> + <div class="annotation-body"> + <xsl:apply-templates select="*[local-name(.) != 'title']"/> + </div> + <div class="annotation-close"> + <a href="#" onclick="popup_{generate-id(.)}.hidePopup();return false;"> + <xsl:apply-templates select="." mode="class.attribute"/> + <img src="{$annotation.graphic.close}" alt="X" border="0"/> + </a> + </div> + </div> +</xsl:template> + +<xsl:template name="annotation-title"> + <div class="annotation-title"> + <xsl:choose> + <xsl:when test="title"> + <xsl:apply-templates select="title/node()"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>Annotation</xsl:text> + </xsl:otherwise> + </xsl:choose> + </div> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kimber.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kimber.xsl new file mode 100644 index 000000000..f67b1f602 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kimber.xsl @@ -0,0 +1,165 @@ +<?xml version="1.0"?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY % common.entities SYSTEM "../common/entities.ent"> +%common.entities; + +<!-- Documents using the kimber index method must have a lang attribute --> +<!-- Only one of these should be present in the entity --> +<!ENTITY lang 'concat(/*/@lang, /*/@xml:lang)'> + +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService" + exclude-result-prefixes="k" + version="1.0"> + +<!-- ******************************************************************** + $Id: autoidx-kimber.xsl 8729 2010-07-15 16:43:56Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. --> +<!-- ==================================================================== --> +<!-- *** THIS MODULE ONLY WORKS WITH SAXON 6 OR SAXON 8 *** --> +<!-- ==================================================================== --> + + +<xsl:include href="../common/autoidx-kimber.xsl"/> + +<!-- Java sort apparently works only on lang part, not country --> +<xsl:param name="sort.lang"> + <xsl:choose> + <xsl:when test="contains(⟨, '-')"> + <xsl:value-of select="substring-before(⟨, '-')"/> + </xsl:when> + <xsl:when test="contains(⟨, '_')"> + <xsl:value-of select="substring-before(⟨, '_')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="⟨"/> + </xsl:otherwise> + </xsl:choose> +</xsl:param> + +<xsl:template name="generate-kimber-index"> + <xsl:param name="scope" select="NOTANODE"/> + + <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> + <xsl:if test="not(contains($vendor, 'SAXON '))"> + <xsl:message terminate="yes"> + <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text> + <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:if test="not(function-available('k:getIndexGroupKey'))"> + <xsl:message terminate="yes"> + <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text> + <xsl:text>Innodata Isogen Java extensions for </xsl:text> + <xsl:text>internationalized indexes. Install those </xsl:text> + <xsl:text>extensions, or use a different index method. </xsl:text> + <xsl:text>For more information, see: </xsl:text> + <xsl:text>http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:variable name="role"> + <xsl:if test="$index.on.role != 0"> + <xsl:value-of select="@role"/> + </xsl:if> + </xsl:variable> + + <xsl:variable name="type"> + <xsl:if test="$index.on.type != 0"> + <xsl:value-of select="@type"/> + </xsl:if> + </xsl:variable> + + <xsl:variable name="terms" + select="//indexterm[count(.|key('k-group', k:getIndexGroupKey(⟨, &primary;))[&scope;][1]) = 1 and not(@class = 'endofrange')]"/> + + <xsl:variable name="alphabetical" + select="$terms[not(starts-with( + k:getIndexGroupKey(⟨, &primary;), + '#NUMERIC' + ))]"/> + + <xsl:variable name="others" + select="$terms[starts-with( + k:getIndexGroupKey(⟨, &primary;), + '#NUMERIC' + )]"/> + + <div class="index"> + <xsl:if test="$others"> + <div class="indexdev"> + <h3> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'index symbols'"/> + </xsl:call-template> + </h3> + <dl> + <xsl:apply-templates select="$others" + mode="index-symbol-div"> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort lang="{$sort.lang}" + select="k:getIndexGroupSortKey(⟨, + k:getIndexGroupKey(⟨, &primary;))"/> + </xsl:apply-templates> + </dl> + </div> + </xsl:if> + + <xsl:apply-templates select="$alphabetical" + mode="index-div-kimber"> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort lang="{$sort.lang}" + select="k:getIndexGroupSortKey(⟨, + k:getIndexGroupKey(⟨, &primary;))"/> + </xsl:apply-templates> + </div> + +</xsl:template> + +<xsl:template match="indexterm" mode="index-div-kimber"> + <xsl:param name="scope" select="."/> + <xsl:param name="role" select="''"/> + <xsl:param name="type" select="''"/> + + <xsl:variable name="key" + select="k:getIndexGroupKey(⟨, &primary;)"/> + + <xsl:variable name="label" + select="k:getIndexGroupLabel(⟨, $key)"/> + + <xsl:if test="key('k-group', $label)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]"> + <div class="indexdiv"> + <h3> + <xsl:value-of select="$label"/> + </h3> + <dl> + <xsl:apply-templates select="key('k-group', $key)[&scope;] + [count(.|key('primary', &primary;)[&scope;] + [1])=1]" + mode="index-primary"> + <xsl:sort select="&primary;" lang="{$sort.lang}"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + </xsl:apply-templates> + </dl> + </div> + </xsl:if> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kosek.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kosek.xsl new file mode 100644 index 000000000..d03ff4f66 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-kosek.xsl @@ -0,0 +1,120 @@ +<?xml version="1.0"?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY % common.entities SYSTEM "../common/entities.ent"> +%common.entities; +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:i="urn:cz-kosek:functions:index" + xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" + xmlns:func="http://exslt.org/functions" + xmlns:k="http://www.isogen.com/functions/com.isogen.saxoni18n.Saxoni18nService" + xmlns:exslt="http://exslt.org/common" + extension-element-prefixes="func exslt" + exclude-result-prefixes="func exslt i l k" + version="1.0"> + +<!-- ******************************************************************** + $Id: autoidx-kosek.xsl 8725 2010-07-15 08:08:04Z kosek $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- The "kosek" method contributed by Jirka Kosek. --> + +<xsl:include href="../common/autoidx-kosek.xsl"/> + +<xsl:template name="generate-kosek-index"> + <xsl:param name="scope" select="(ancestor::book|/)[last()]"/> + + <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> + <xsl:if test="contains($vendor, 'libxslt')"> + <xsl:message terminate="yes"> + <xsl:text>ERROR: the 'kosek' index method does not </xsl:text> + <xsl:text>work with the xsltproc XSLT processor.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:if test="contains($vendor, 'Saxonica')"> + <xsl:message terminate="yes"> + <xsl:text>ERROR: the 'kosek' index method does not </xsl:text> + <xsl:text>work with the Saxon 8 XSLT processor.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:if test="$exsl.node.set.available = 0"> + <xsl:message terminate="yes"> + <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text> + <xsl:text>exslt:node-set() function. Use a processor that </xsl:text> + <xsl:text>has it, or use a different index method.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:if test="not(function-available('i:group-index'))"> + <xsl:message terminate="yes"> + <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text> + <xsl:text>index extension functions be imported: </xsl:text> + <xsl:text> xsl:import href="common/autoidx-kosek.xsl"</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:variable name="role"> + <xsl:if test="$index.on.role != 0"> + <xsl:value-of select="@role"/> + </xsl:if> + </xsl:variable> + + <xsl:variable name="type"> + <xsl:if test="$index.on.type != 0"> + <xsl:value-of select="@type"/> + </xsl:if> + </xsl:variable> + + <xsl:variable name="terms" + select="//indexterm[count(.|key('group-code', i:group-index(&primary;))[&scope;][1]) = 1 and not(@class = 'endofrange')]"/> + + <div class="index"> + <xsl:apply-templates select="$terms" mode="index-div-kosek"> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="i:group-index(&primary;)" data-type="number"/> + </xsl:apply-templates> + </div> +</xsl:template> + +<xsl:template match="indexterm" mode="index-div-kosek"> + <xsl:param name="scope" select="."/> + <xsl:param name="role" select="''"/> + <xsl:param name="type" select="''"/> + + <xsl:variable name="key" + select="i:group-index(&primary;)"/> + + <xsl:variable name="lang"> + <xsl:call-template name="l10n.language"/> + </xsl:variable> + + <xsl:if test="key('group-code', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1]) = 1]"> + <div class="indexdiv"> + <h3> + <xsl:value-of select="i:group-letter($key)"/> + </h3> + <dl> + <xsl:apply-templates select="key('group-code', $key)[&scope;][count(.|key('primary', &primary;)[&scope;][1])=1]" + mode="index-primary"> + <xsl:sort select="&primary;" lang="{$lang}"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + </xsl:apply-templates> + </dl> + </div> + </xsl:if> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-ng.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-ng.xsl new file mode 100644 index 000000000..9407b5cf9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx-ng.xsl @@ -0,0 +1,20 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.0"> + +<!-- ******************************************************************** + $Id: autoidx-ng.xsl 6910 2007-06-28 23:23:30Z xmldoc $ + ******************************************************************** + + This file is part of the DocBook XSL Stylesheet distribution. + See ../README or http://docbook.sf.net/ for copyright + copyright and other information. + + ******************************************************************** --> + +<!-- You should have this directly in your customization file. --> +<!-- This file is there only to retain backward compatibility. --> +<xsl:import href="autoidx-kosek.xsl"/> +<xsl:param name="index.method">kosek</xsl:param> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx.xsl new file mode 100644 index 000000000..7268fcd5f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autoidx.xsl @@ -0,0 +1,739 @@ +<?xml version="1.0"?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY % common.entities SYSTEM "../common/entities.ent"> +%common.entities; +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exslt="http://exslt.org/common" + extension-element-prefixes="exslt" + exclude-result-prefixes="exslt" + version="1.0"> + +<!-- ******************************************************************** + $Id: autoidx.xsl 8516 2009-08-12 02:54:56Z abdelazer $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- The "basic" method derived from Jeni Tennison's work. --> +<!-- The "kosek" method contributed by Jirka Kosek. --> +<!-- The "kimber" method contributed by Eliot Kimber of Innodata Isogen. --> + +<xsl:variable name="kimber.imported" select="0"/> +<xsl:variable name="kosek.imported" select="0"/> + +<xsl:key name="letter" + match="indexterm" + use="translate(substring(&primary;, 1, 1),&lowercase;,&uppercase;)"/> + +<xsl:key name="primary" + match="indexterm" + use="&primary;"/> + +<xsl:key name="secondary" + match="indexterm" + use="concat(&primary;, &sep;, &secondary;)"/> + +<xsl:key name="tertiary" + match="indexterm" + use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/> + +<xsl:key name="endofrange" + match="indexterm[@class='endofrange']" + use="@startref"/> + +<xsl:key name="primary-section" + match="indexterm[not(secondary) and not(see)]" + use="concat(&primary;, &sep;, §ion.id;)"/> + +<xsl:key name="secondary-section" + match="indexterm[not(tertiary) and not(see)]" + use="concat(&primary;, &sep;, &secondary;, &sep;, §ion.id;)"/> + +<xsl:key name="tertiary-section" + match="indexterm[not(see)]" + use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, §ion.id;)"/> + +<xsl:key name="see-also" + match="indexterm[seealso]" + use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso)"/> + +<xsl:key name="see" + match="indexterm[see]" + use="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see)"/> + +<xsl:key name="sections" match="*[@id or @xml:id]" use="@id|@xml:id"/> + + +<xsl:template name="generate-index"> + <xsl:param name="scope" select="(ancestor::book|/)[last()]"/> + + <xsl:choose> + <xsl:when test="$index.method = 'kosek'"> + <xsl:call-template name="generate-kosek-index"> + <xsl:with-param name="scope" select="$scope"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$index.method = 'kimber'"> + <xsl:call-template name="generate-kimber-index"> + <xsl:with-param name="scope" select="$scope"/> + </xsl:call-template> + </xsl:when> + + <xsl:otherwise> + <xsl:call-template name="generate-basic-index"> + <xsl:with-param name="scope" select="$scope"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="generate-basic-index"> + <xsl:param name="scope" select="NOTANODE"/> + + <xsl:variable name="role"> + <xsl:if test="$index.on.role != 0"> + <xsl:value-of select="@role"/> + </xsl:if> + </xsl:variable> + + <xsl:variable name="type"> + <xsl:if test="$index.on.type != 0"> + <xsl:value-of select="@type"/> + </xsl:if> + </xsl:variable> + + <xsl:variable name="terms" + select="//indexterm + [count(.|key('letter', + translate(substring(&primary;, 1, 1), + &lowercase;, + &uppercase;)) + [&scope;][1]) = 1 + and not(@class = 'endofrange')]"/> + + <xsl:variable name="alphabetical" + select="$terms[contains(concat(&lowercase;, &uppercase;), + substring(&primary;, 1, 1))]"/> + + <xsl:variable name="others" select="$terms[not(contains(concat(&lowercase;, + &uppercase;), + substring(&primary;, 1, 1)))]"/> + <div class="index"> + <xsl:if test="$others"> + <xsl:choose> + <xsl:when test="normalize-space($type) != '' and + $others[@type = $type][count(.|key('primary', &primary;)[&scope;][1]) = 1]"> + <div class="indexdiv"> + <h3> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'index symbols'"/> + </xsl:call-template> + </h3> + <dl> + <xsl:apply-templates select="$others[count(.|key('primary', &primary;)[&scope;][1]) = 1]" + mode="index-symbol-div"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </dl> + </div> + </xsl:when> + <xsl:when test="normalize-space($type) != ''"> + <!-- Output nothing, as there isn't a match for $other using this $type --> + </xsl:when> + <xsl:otherwise> + <div class="indexdiv"> + <h3> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'index symbols'"/> + </xsl:call-template> + </h3> + <dl> + <xsl:apply-templates select="$others[count(.|key('primary', + &primary;)[&scope;][1]) = 1]" + mode="index-symbol-div"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </dl> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + <xsl:apply-templates select="$alphabetical[count(.|key('letter', + translate(substring(&primary;, 1, 1), + &lowercase;,&uppercase;))[&scope;][1]) = 1]" + mode="index-div-basic"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </div> +</xsl:template> + +<!-- This template not used if html/autoidx-kosek.xsl is imported --> +<xsl:template name="generate-kosek-index"> + <xsl:param name="scope" select="NOTANODE"/> + + <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> + <xsl:if test="contains($vendor, 'libxslt')"> + <xsl:message terminate="yes"> + <xsl:text>ERROR: the 'kosek' index method does not </xsl:text> + <xsl:text>work with the xsltproc XSLT processor.</xsl:text> + </xsl:message> + </xsl:if> + + + <xsl:if test="$exsl.node.set.available = 0"> + <xsl:message terminate="yes"> + <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text> + <xsl:text>exslt:node-set() function. Use a processor that </xsl:text> + <xsl:text>has it, or use a different index method.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:if test="$kosek.imported = 0"> + <xsl:message terminate="yes"> + <xsl:text>ERROR: the 'kosek' index method requires the </xsl:text> + <xsl:text>kosek index extensions be imported: </xsl:text> + <xsl:text> xsl:import href="html/autoidx-kosek.xsl"</xsl:text> + </xsl:message> + </xsl:if> + +</xsl:template> + +<!-- This template not used if html/autoidx-kimber.xsl is imported --> +<xsl:template name="generate-kimber-index"> + <xsl:param name="scope" select="NOTANODE"/> + + <xsl:variable name="vendor" select="system-property('xsl:vendor')"/> + <xsl:if test="not(contains($vendor, 'SAXON '))"> + <xsl:message terminate="yes"> + <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text> + <xsl:text>Saxon version 6 or 8 XSLT processor.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:if test="$kimber.imported = 0"> + <xsl:message terminate="yes"> + <xsl:text>ERROR: the 'kimber' index method requires the </xsl:text> + <xsl:text>kimber index extensions be imported: </xsl:text> + <xsl:text> xsl:import href="html/autoidx-kimber.xsl"</xsl:text> + </xsl:message> + </xsl:if> + +</xsl:template> + +<xsl:template match="indexterm" mode="index-div-basic"> + <xsl:param name="scope" select="."/> + <xsl:param name="role" select="''"/> + <xsl:param name="type" select="''"/> + + <xsl:variable name="key" + select="translate(substring(&primary;, 1, 1), + &lowercase;,&uppercase;)"/> + + <xsl:if test="key('letter', $key)[&scope;] + [count(.|key('primary', &primary;)[&scope;][1]) = 1]"> + <div class="indexdiv"> + <xsl:if test="contains(concat(&lowercase;, &uppercase;), $key)"> + <h3> + <xsl:value-of select="translate($key, &lowercase;, &uppercase;)"/> + </h3> + </xsl:if> + <dl> + <xsl:apply-templates select="key('letter', $key)[&scope;] + [count(.|key('primary', &primary;) + [&scope;][1])=1]" + mode="index-primary"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </dl> + </div> + </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-symbol-div"> + <xsl:param name="scope" select="/"/> + <xsl:param name="role" select="''"/> + <xsl:param name="type" select="''"/> + + <xsl:variable name="key" select="translate(substring(&primary;, 1, 1), + &lowercase;,&uppercase;)"/> + + <xsl:apply-templates select="key('letter', $key) + [&scope;][count(.|key('primary', &primary;)[1]) = 1]" + mode="index-primary"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(&primary;, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="indexterm" mode="index-primary"> + <xsl:param name="scope" select="."/> + <xsl:param name="role" select="''"/> + <xsl:param name="type" select="''"/> + + <xsl:variable name="key" select="&primary;"/> + <xsl:variable name="refs" select="key('primary', $key)[&scope;]"/> + <dt> + <xsl:for-each select="$refs/primary"> + <xsl:if test="@id or @xml:id"> + <a name="{(@id|@xml:id)[1]}"/> + </xsl:if> + </xsl:for-each> + <xsl:value-of select="primary"/> + <xsl:choose> + <xsl:when test="$index.links.to.section = 1"> + <xsl:for-each select="$refs[generate-id() = generate-id(key('primary-section', concat($key, &sep;, §ion.id;))[&scope;][1])]"> + <xsl:apply-templates select="." mode="reference"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + </xsl:apply-templates> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:for-each select="$refs[&scope;]"> + <xsl:apply-templates select="." mode="reference"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + </xsl:apply-templates> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + + <xsl:if test="$refs[not(secondary)]/*[self::see]"> + <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &sep;, &sep;, see))[&scope;][1])]" + mode="index-see"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </xsl:if> + </dt> + <xsl:if test="$refs/secondary or $refs[not(secondary)]/*[self::seealso]"> + <dd> + <dl> + <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &sep;, &sep;, seealso))[&scope;][1])]" + mode="index-seealso"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + <xsl:apply-templates select="$refs[secondary and count(.|key('secondary', concat($key, &sep;, &secondary;))[&scope;][1]) = 1]" + mode="index-secondary"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(&secondary;, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </dl> + </dd> + </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-secondary"> + <xsl:param name="scope" select="."/> + <xsl:param name="role" select="''"/> + <xsl:param name="type" select="''"/> + + <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;)"/> + <xsl:variable name="refs" select="key('secondary', $key)[&scope;]"/> + <dt> + <xsl:for-each select="$refs/secondary"> + <xsl:if test="@id or @xml:id"> + <a name="{(@id|@xml:id)[1]}"/> + </xsl:if> + </xsl:for-each> + <xsl:value-of select="secondary"/> + <xsl:choose> + <xsl:when test="$index.links.to.section = 1"> + <xsl:for-each select="$refs[generate-id() = generate-id(key('secondary-section', concat($key, &sep;, §ion.id;))[&scope;][1])]"> + <xsl:apply-templates select="." mode="reference"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + </xsl:apply-templates> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:for-each select="$refs[&scope;]"> + <xsl:apply-templates select="." mode="reference"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + </xsl:apply-templates> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + + <xsl:if test="$refs[not(tertiary)]/*[self::see]"> + <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, see))[&scope;][1])]" + mode="index-see"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </xsl:if> + </dt> + <xsl:if test="$refs/tertiary or $refs[not(tertiary)]/*[self::seealso]"> + <dd> + <dl> + <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &sep;, seealso))[&scope;][1])]" + mode="index-seealso"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + <xsl:apply-templates select="$refs[tertiary and count(.|key('tertiary', concat($key, &sep;, &tertiary;))[&scope;][1]) = 1]" + mode="index-tertiary"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(&tertiary;, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </dl> + </dd> + </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="index-tertiary"> + <xsl:param name="scope" select="."/> + <xsl:param name="role" select="''"/> + <xsl:param name="type" select="''"/> + + <xsl:variable name="key" select="concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;)"/> + <xsl:variable name="refs" select="key('tertiary', $key)[&scope;]"/> + <dt> + <xsl:for-each select="$refs/tertiary"> + <xsl:if test="@id or @xml:id"> + <a name="{(@id|@xml:id)[1]}"/> + </xsl:if> + </xsl:for-each> + <xsl:value-of select="tertiary"/> + <xsl:choose> + <xsl:when test="$index.links.to.section = 1"> + <xsl:for-each select="$refs[generate-id() = generate-id(key('tertiary-section', concat($key, &sep;, §ion.id;))[&scope;][1])]"> + <xsl:apply-templates select="." mode="reference"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + </xsl:apply-templates> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:for-each select="$refs[&scope;]"> + <xsl:apply-templates select="." mode="reference"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + </xsl:apply-templates> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + + <xsl:if test="$refs/see"> + <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, see))[&scope;][1])]" + mode="index-see"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(see, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </xsl:if> + </dt> + <xsl:if test="$refs/seealso"> + <dd> + <dl> + <xsl:apply-templates select="$refs[generate-id() = generate-id(key('see-also', concat(&primary;, &sep;, &secondary;, &sep;, &tertiary;, &sep;, seealso))[&scope;][1])]" + mode="index-seealso"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:sort select="translate(seealso, &lowercase;, &uppercase;)"/> + </xsl:apply-templates> + </dl> + </dd> + </xsl:if> +</xsl:template> + +<xsl:template match="indexterm" mode="reference"> + <xsl:param name="scope" select="."/> + <xsl:param name="role" select="''"/> + <xsl:param name="type" select="''"/> + <xsl:param name="position"/> + + <xsl:variable name="term.separator"> + <xsl:call-template name="index.separator"> + <xsl:with-param name="key" select="'index.term.separator'"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="number.separator"> + <xsl:call-template name="index.separator"> + <xsl:with-param name="key" select="'index.number.separator'"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="range.separator"> + <xsl:call-template name="index.separator"> + <xsl:with-param name="key" select="'index.range.separator'"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$position = 1"> + <xsl:value-of select="$term.separator"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$number.separator"/> + </xsl:otherwise> + </xsl:choose> + + <xsl:choose> + <xsl:when test="@zone and string(@zone)"> + <xsl:call-template name="reference"> + <xsl:with-param name="zones" select="normalize-space(@zone)"/> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <a> + <xsl:apply-templates select="." mode="class.attribute"/> + <xsl:variable name="title"> + <xsl:choose> + <xsl:when test="§ion;/titleabbrev and $index.prefer.titleabbrev != 0"> + <xsl:apply-templates select="§ion;" mode="titleabbrev.markup"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="§ion;" mode="title.markup"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:attribute name="href"> + <xsl:choose> + <xsl:when test="$index.links.to.section = 1"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="§ion;"/> + <xsl:with-param name="context" select="//index[&scope;][1]"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="."/> + <xsl:with-param name="context" select="//index[&scope;][1]"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + + </xsl:attribute> + + <xsl:value-of select="$title"/> <!-- text only --> + </a> + + <xsl:variable name="id" select="(@id|@xml:id)[1]"/> + <xsl:if test="key('endofrange', $id)[&scope;]"> + <xsl:apply-templates select="key('endofrange', $id)[&scope;][last()]" + mode="reference"> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + <xsl:with-param name="separator" select="$range.separator"/> + </xsl:apply-templates> + </xsl:if> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="reference"> + <xsl:param name="scope" select="."/> + <xsl:param name="role" select="''"/> + <xsl:param name="type" select="''"/> + <xsl:param name="zones"/> + + <xsl:choose> + <xsl:when test="contains($zones, ' ')"> + <xsl:variable name="zone" select="substring-before($zones, ' ')"/> + <xsl:variable name="target" select="key('sections', $zone)"/> + + <a> + <xsl:apply-templates select="." mode="class.attribute"/> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$target[1]"/> + <xsl:with-param name="context" select="//index[&scope;][1]"/> + </xsl:call-template> + </xsl:attribute> + <xsl:apply-templates select="$target[1]" mode="index-title-content"/> + </a> + <xsl:text>, </xsl:text> + <xsl:call-template name="reference"> + <xsl:with-param name="zones" select="substring-after($zones, ' ')"/> + <xsl:with-param name="position" select="position()"/> + <xsl:with-param name="scope" select="$scope"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="type" select="$type"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="zone" select="$zones"/> + <xsl:variable name="target" select="key('sections', $zone)"/> + + <a> + <xsl:apply-templates select="." mode="class.attribute"/> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$target[1]"/> + <xsl:with-param name="context" select="//index[&scope;][1]"/> + </xsl:call-template> + </xsl:attribute> + <xsl:apply-templates select="$target[1]" mode="index-title-content"/> + </a> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="indexterm" mode="index-see"> + <xsl:param name="scope" select="."/> + <xsl:param name="role" select="''"/> + <xsl:param name="type" select="''"/> + + <xsl:text> (</xsl:text> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'see'"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:value-of select="see"/> + <xsl:text>)</xsl:text> +</xsl:template> + +<xsl:template match="indexterm" mode="index-seealso"> + <xsl:param name="scope" select="."/> + <xsl:param name="role" select="''"/> + <xsl:param name="type" select="''"/> + + <xsl:for-each select="seealso"> + <xsl:sort select="translate(., &lowercase;, &uppercase;)"/> + <dt> + <xsl:text>(</xsl:text> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'seealso'"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:value-of select="."/> + <xsl:text>)</xsl:text> + </dt> + </xsl:for-each> +</xsl:template> + +<xsl:template match="*" mode="index-title-content"> + <xsl:variable name="title"> + <xsl:apply-templates select="§ion;" mode="title.markup"/> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<xsl:template name="index.separator"> + <xsl:param name="key" select="''"/> + <xsl:param name="lang"> + <xsl:call-template name="l10n.language"/> + </xsl:param> + + <xsl:choose> + <xsl:when test="$key = 'index.term.separator'"> + <xsl:choose> + <!-- Use the override if not blank --> + <xsl:when test="$index.term.separator != ''"> + <xsl:copy-of select="$index.term.separator"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="lang" select="$lang"/> + <xsl:with-param name="context">index</xsl:with-param> + <xsl:with-param name="name">term-separator</xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="$key = 'index.number.separator'"> + <xsl:choose> + <!-- Use the override if not blank --> + <xsl:when test="$index.number.separator != ''"> + <xsl:copy-of select="$index.number.separator"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="lang" select="$lang"/> + <xsl:with-param name="context">index</xsl:with-param> + <xsl:with-param name="name">number-separator</xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="$key = 'index.range.separator'"> + <xsl:choose> + <!-- Use the override if not blank --> + <xsl:when test="$index.range.separator != ''"> + <xsl:copy-of select="$index.range.separator"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="lang" select="$lang"/> + <xsl:with-param name="context">index</xsl:with-param> + <xsl:with-param name="name">range-separator</xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autotoc.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autotoc.xsl new file mode 100644 index 000000000..0859b49e5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/autotoc.xsl @@ -0,0 +1,707 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + +<!-- ******************************************************************** + $Id: autotoc.xsl 8558 2009-12-11 00:33:17Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<xsl:variable name="toc.listitem.type"> + <xsl:choose> + <xsl:when test="$toc.list.type = 'dl'">dt</xsl:when> + <xsl:otherwise>li</xsl:otherwise> + </xsl:choose> +</xsl:variable> + +<!-- this is just hack because dl and ul aren't completely isomorphic --> +<xsl:variable name="toc.dd.type"> + <xsl:choose> + <xsl:when test="$toc.list.type = 'dl'">dd</xsl:when> + <xsl:otherwise></xsl:otherwise> + </xsl:choose> +</xsl:variable> + +<xsl:template name="make.toc"> + <xsl:param name="toc-context" select="."/> + <xsl:param name="toc.title.p" select="true()"/> + <xsl:param name="nodes" select="/NOT-AN-ELEMENT"/> + + <xsl:variable name="nodes.plus" select="$nodes | qandaset"/> + + <xsl:variable name="toc.title"> + <xsl:if test="$toc.title.p"> + <xsl:choose> + <xsl:when test="$make.clean.html != 0"> + <div class="toc-title"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">TableofContents</xsl:with-param> + </xsl:call-template> + </div> + </xsl:when> + <xsl:otherwise> + <p> + <b> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">TableofContents</xsl:with-param> + </xsl:call-template> + </b> + </p> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$manual.toc != ''"> + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + <xsl:variable name="toc" select="document($manual.toc, .)"/> + <xsl:variable name="tocentry" select="$toc//tocentry[@linkend=$id]"/> + <xsl:if test="$tocentry and $tocentry/*"> + <div class="toc"> + <xsl:copy-of select="$toc.title"/> + <xsl:element name="{$toc.list.type}"> + <xsl:call-template name="manual-toc"> + <xsl:with-param name="tocentry" select="$tocentry/*[1]"/> + </xsl:call-template> + </xsl:element> + </div> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$qanda.in.toc != 0"> + <xsl:if test="$nodes.plus"> + <div class="toc"> + <xsl:copy-of select="$toc.title"/> + <xsl:element name="{$toc.list.type}"> + <xsl:apply-templates select="$nodes.plus" mode="toc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:apply-templates> + </xsl:element> + </div> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$nodes"> + <div class="toc"> + <xsl:copy-of select="$toc.title"/> + <xsl:element name="{$toc.list.type}"> + <xsl:apply-templates select="$nodes" mode="toc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:apply-templates> + </xsl:element> + </div> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="make.lots"> + <xsl:param name="toc.params" select="''"/> + <xsl:param name="toc"/> + + <xsl:if test="contains($toc.params, 'toc')"> + <xsl:copy-of select="$toc"/> + </xsl:if> + + <xsl:if test="contains($toc.params, 'figure')"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'figure'"/> + <xsl:with-param name="nodes" select=".//figure"/> + </xsl:call-template> + </xsl:if> + + <xsl:if test="contains($toc.params, 'table')"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'table'"/> + <xsl:with-param name="nodes" select=".//table"/> + </xsl:call-template> + </xsl:if> + + <xsl:if test="contains($toc.params, 'example')"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'example'"/> + <xsl:with-param name="nodes" select=".//example"/> + </xsl:call-template> + </xsl:if> + + <xsl:if test="contains($toc.params, 'equation')"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'equation'"/> + <xsl:with-param name="nodes" select=".//equation[title or info/title]"/> + </xsl:call-template> + </xsl:if> + + <xsl:if test="contains($toc.params, 'procedure')"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'procedure'"/> + <xsl:with-param name="nodes" select=".//procedure[title]"/> + </xsl:call-template> + </xsl:if> +</xsl:template> + +<!-- ====================================================================== --> + +<xsl:template name="set.toc"> + <xsl:param name="toc-context" select="."/> + <xsl:param name="toc.title.p" select="true()"/> + + <xsl:call-template name="make.toc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + <xsl:with-param name="toc.title.p" select="$toc.title.p"/> + <xsl:with-param name="nodes" select="book|setindex"/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="division.toc"> + <xsl:param name="toc-context" select="."/> + <xsl:param name="toc.title.p" select="true()"/> + + <xsl:call-template name="make.toc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + <xsl:with-param name="toc.title.p" select="$toc.title.p"/> + <xsl:with-param name="nodes" select="part|reference + |preface|chapter|appendix + |article + |bibliography|glossary|index + |refentry + |bridgehead[$bridgehead.in.toc != 0]"/> + + </xsl:call-template> +</xsl:template> + +<xsl:template name="component.toc"> + <xsl:param name="toc-context" select="."/> + <xsl:param name="toc.title.p" select="true()"/> + + <xsl:call-template name="make.toc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + <xsl:with-param name="toc.title.p" select="$toc.title.p"/> + <xsl:with-param name="nodes" select="section|sect1 + |simplesect[$simplesect.in.toc != 0] + |refentry + |article|bibliography|glossary + |appendix|index + |bridgehead[not(@renderas) + and $bridgehead.in.toc != 0] + |.//bridgehead[@renderas='sect1' + and $bridgehead.in.toc != 0]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="component.toc.separator"> + <!-- Customize to output something between + component.toc and first output --> +</xsl:template> + +<xsl:template name="section.toc"> + <xsl:param name="toc-context" select="."/> + <xsl:param name="toc.title.p" select="true()"/> + + <xsl:call-template name="make.toc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + <xsl:with-param name="toc.title.p" select="$toc.title.p"/> + <xsl:with-param name="nodes" + select="section|sect1|sect2|sect3|sect4|sect5|refentry + |bridgehead[$bridgehead.in.toc != 0]"/> + + </xsl:call-template> +</xsl:template> + +<xsl:template name="section.toc.separator"> + <!-- Customize to output something between + section.toc and first output --> +</xsl:template> +<!-- ==================================================================== --> + +<xsl:template name="subtoc"> + <xsl:param name="toc-context" select="."/> + <xsl:param name="nodes" select="NOT-AN-ELEMENT"/> + + <xsl:variable name="nodes.plus" select="$nodes | qandaset"/> + + <xsl:variable name="subtoc"> + <xsl:element name="{$toc.list.type}"> + <xsl:choose> + <xsl:when test="$qanda.in.toc != 0"> + <xsl:apply-templates mode="toc" select="$nodes.plus"> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="toc" select="$nodes"> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </xsl:element> + </xsl:variable> + + <xsl:variable name="depth"> + <xsl:choose> + <xsl:when test="local-name(.) = 'section'"> + <xsl:value-of select="count(ancestor::section) + 1"/> + </xsl:when> + <xsl:when test="local-name(.) = 'sect1'">1</xsl:when> + <xsl:when test="local-name(.) = 'sect2'">2</xsl:when> + <xsl:when test="local-name(.) = 'sect3'">3</xsl:when> + <xsl:when test="local-name(.) = 'sect4'">4</xsl:when> + <xsl:when test="local-name(.) = 'sect5'">5</xsl:when> + <xsl:when test="local-name(.) = 'refsect1'">1</xsl:when> + <xsl:when test="local-name(.) = 'refsect2'">2</xsl:when> + <xsl:when test="local-name(.) = 'refsect3'">3</xsl:when> + <xsl:when test="local-name(.) = 'simplesect'"> + <!-- sigh... --> + <xsl:choose> + <xsl:when test="local-name(..) = 'section'"> + <xsl:value-of select="count(ancestor::section)"/> + </xsl:when> + <xsl:when test="local-name(..) = 'sect1'">2</xsl:when> + <xsl:when test="local-name(..) = 'sect2'">3</xsl:when> + <xsl:when test="local-name(..) = 'sect3'">4</xsl:when> + <xsl:when test="local-name(..) = 'sect4'">5</xsl:when> + <xsl:when test="local-name(..) = 'sect5'">6</xsl:when> + <xsl:when test="local-name(..) = 'refsect1'">2</xsl:when> + <xsl:when test="local-name(..) = 'refsect2'">3</xsl:when> + <xsl:when test="local-name(..) = 'refsect3'">4</xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise>0</xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/> + + <xsl:variable name="subtoc.list"> + <xsl:choose> + <xsl:when test="$toc.dd.type = ''"> + <xsl:copy-of select="$subtoc"/> + </xsl:when> + <xsl:otherwise> + <xsl:element name="{$toc.dd.type}"> + <xsl:copy-of select="$subtoc"/> + </xsl:element> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:element name="{$toc.listitem.type}"> + <xsl:call-template name="toc.line"> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:call-template> + <xsl:if test="$toc.listitem.type = 'li' + and $toc.section.depth > $depth and + ( ($qanda.in.toc = 0 and count($nodes)>0) or + ($qanda.in.toc != 0 and count($nodes.plus)>0) ) + and $toc.max.depth > $depth.from.context"> + <xsl:copy-of select="$subtoc.list"/> + </xsl:if> + </xsl:element> + <xsl:if test="$toc.listitem.type != 'li' + and $toc.section.depth > $depth and + ( ($qanda.in.toc = 0 and count($nodes)>0) or + ($qanda.in.toc != 0 and count($nodes.plus)>0) ) + and $toc.max.depth > $depth.from.context"> + <xsl:copy-of select="$subtoc.list"/> + </xsl:if> +</xsl:template> + +<xsl:template name="toc.line"> + <xsl:param name="toc-context" select="."/> + <xsl:param name="depth" select="1"/> + <xsl:param name="depth.from.context" select="8"/> + + <span> + <xsl:attribute name="class"><xsl:value-of select="local-name(.)"/></xsl:attribute> + + <!-- * if $autotoc.label.in.hyperlink is zero, then output the label --> + <!-- * before the hyperlinked title (as the DSSSL stylesheet does) --> + <xsl:if test="$autotoc.label.in.hyperlink = 0"> + <xsl:variable name="label"> + <xsl:apply-templates select="." mode="label.markup"/> + </xsl:variable> + <xsl:copy-of select="$label"/> + <xsl:if test="$label != ''"> + <xsl:value-of select="$autotoc.label.separator"/> + </xsl:if> + </xsl:if> + + <a> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="context" select="$toc-context"/> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:call-template> + </xsl:attribute> + + <!-- * if $autotoc.label.in.hyperlink is non-zero, then output the label --> + <!-- * as part of the hyperlinked title --> + <xsl:if test="not($autotoc.label.in.hyperlink = 0)"> + <xsl:variable name="label"> + <xsl:apply-templates select="." mode="label.markup"/> + </xsl:variable> + <xsl:copy-of select="$label"/> + <xsl:if test="$label != ''"> + <xsl:value-of select="$autotoc.label.separator"/> + </xsl:if> + </xsl:if> + + <xsl:apply-templates select="." mode="titleabbrev.markup"/> + </a> + </span> +</xsl:template> + +<xsl:template match="book" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + <xsl:with-param name="nodes" select="part|reference + |preface|chapter|appendix + |article + |bibliography|glossary|index + |refentry + |bridgehead[$bridgehead.in.toc != 0]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="setindex" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <!-- If the setindex tag is not empty, it should be it in the TOC --> + <xsl:if test="* or $generate.index != 0"> + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:call-template> + </xsl:if> +</xsl:template> + +<xsl:template match="part|reference" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + <xsl:with-param name="nodes" select="appendix|chapter|article + |index|glossary|bibliography + |preface|reference|refentry + |bridgehead[$bridgehead.in.toc != 0]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="preface|chapter|appendix|article" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + <xsl:with-param name="nodes" select="section|sect1 + |simplesect[$simplesect.in.toc != 0] + |refentry + |glossary|bibliography|index + |bridgehead[$bridgehead.in.toc != 0]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="sect1" mode="toc"> + <xsl:param name="toc-context" select="."/> + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + <xsl:with-param name="nodes" select="sect2 + |bridgehead[$bridgehead.in.toc != 0]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="sect2" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + <xsl:with-param name="nodes" select="sect3 + |bridgehead[$bridgehead.in.toc != 0]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="sect3" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + <xsl:with-param name="nodes" select="sect4 + |bridgehead[$bridgehead.in.toc != 0]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="sect4" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + <xsl:with-param name="nodes" select="sect5 + |bridgehead[$bridgehead.in.toc != 0]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="sect5" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="simplesect" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="section" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + <xsl:with-param name="nodes" select="section|refentry + |simplesect[$simplesect.in.toc != 0] + |bridgehead[$bridgehead.in.toc != 0]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="bridgehead" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <xsl:if test="$bridgehead.in.toc != 0"> + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:call-template> + </xsl:if> +</xsl:template> + +<xsl:template match="bibliography|glossary" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="index" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <!-- If the index tag is not empty, it should be it in the TOC --> + <xsl:if test="* or $generate.index != 0"> + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:call-template> + </xsl:if> +</xsl:template> + +<xsl:template match="refentry" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <xsl:variable name="refmeta" select=".//refmeta"/> + <xsl:variable name="refentrytitle" select="$refmeta//refentrytitle"/> + <xsl:variable name="refnamediv" select=".//refnamediv"/> + <xsl:variable name="refname" select="$refnamediv//refname"/> + <xsl:variable name="refdesc" select="$refnamediv//refdescriptor"/> + <xsl:variable name="title"> + <xsl:choose> + <xsl:when test="$refentrytitle"> + <xsl:apply-templates select="$refentrytitle[1]" + mode="titleabbrev.markup"/> + </xsl:when> + <xsl:when test="$refdesc"> + <xsl:apply-templates select="$refdesc" + mode="titleabbrev.markup"/> + </xsl:when> + <xsl:when test="$refname"> + <xsl:apply-templates select="$refname[1]" + mode="titleabbrev.markup"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:element name="{$toc.listitem.type}"> + <span class='refentrytitle'> + <a> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:call-template> + </xsl:attribute> + <xsl:copy-of select="$title"/> + </a> + </span> + <span class='refpurpose'> + <xsl:if test="$annotate.toc != 0"> + <!-- * DocBook 5 says inlinemediaobject (among other things) --> + <!-- * is allowed in refpurpose; so we need to run --> + <!-- * apply-templates on refpurpose here, instead of value-of --> + <xsl:apply-templates select="refnamediv/refpurpose"/> + </xsl:if> + </span> + </xsl:element> +</xsl:template> + +<xsl:template match="title" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <a> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select=".."/> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:call-template> + </xsl:attribute> + <xsl:apply-templates/> + </a> +</xsl:template> + +<xsl:template name="manual-toc"> + <xsl:param name="toc-context" select="."/> + <xsl:param name="tocentry"/> + + <!-- be careful, we don't want to change the current document to the other tree! --> + + <xsl:if test="$tocentry"> + <xsl:variable name="node" select="key('id', $tocentry/@linkend)"/> + + <xsl:element name="{$toc.listitem.type}"> + <xsl:variable name="label"> + <xsl:apply-templates select="$node" mode="label.markup"/> + </xsl:variable> + <xsl:copy-of select="$label"/> + <xsl:if test="$label != ''"> + <xsl:value-of select="$autotoc.label.separator"/> + </xsl:if> + <a> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$node"/> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:call-template> + </xsl:attribute> + <xsl:apply-templates select="$node" mode="titleabbrev.markup"/> + </a> + </xsl:element> + + <xsl:if test="$tocentry/*"> + <xsl:element name="{$toc.list.type}"> + <xsl:call-template name="manual-toc"> + <xsl:with-param name="tocentry" select="$tocentry/*[1]"/> + </xsl:call-template> + </xsl:element> + </xsl:if> + + <xsl:if test="$tocentry/following-sibling::*"> + <xsl:call-template name="manual-toc"> + <xsl:with-param name="tocentry" select="$tocentry/following-sibling::*[1]"/> + </xsl:call-template> + </xsl:if> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="list.of.titles"> + <xsl:param name="toc-context" select="."/> + <xsl:param name="titles" select="'table'"/> + <xsl:param name="nodes" select=".//table"/> + + <xsl:if test="$nodes"> + <div class="list-of-{$titles}s"> + <xsl:choose> + <xsl:when test="$make.clean.html != 0"> + <div class="toc-title"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key"> + <xsl:choose> + <xsl:when test="$titles='table'">ListofTables</xsl:when> + <xsl:when test="$titles='figure'">ListofFigures</xsl:when> + <xsl:when test="$titles='equation'">ListofEquations</xsl:when> + <xsl:when test="$titles='example'">ListofExamples</xsl:when> + <xsl:when test="$titles='procedure'">ListofProcedures</xsl:when> + <xsl:otherwise>ListofUnknown</xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:when> + <xsl:otherwise> + <p> + <b> + <xsl:call-template name="gentext"> + <xsl:with-param name="key"> + <xsl:choose> + <xsl:when test="$titles='table'">ListofTables</xsl:when> + <xsl:when test="$titles='figure'">ListofFigures</xsl:when> + <xsl:when test="$titles='equation'">ListofEquations</xsl:when> + <xsl:when test="$titles='example'">ListofExamples</xsl:when> + <xsl:when test="$titles='procedure'">ListofProcedures</xsl:when> + <xsl:otherwise>ListofUnknown</xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </b> + </p> + </xsl:otherwise> + </xsl:choose> + + <xsl:element name="{$toc.list.type}"> + <xsl:apply-templates select="$nodes" mode="toc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:apply-templates> + </xsl:element> + </div> + </xsl:if> +</xsl:template> + +<xsl:template match="figure|table|example|equation|procedure" mode="toc"> + <xsl:param name="toc-context" select="."/> + + <xsl:element name="{$toc.listitem.type}"> + <xsl:variable name="label"> + <xsl:apply-templates select="." mode="label.markup"/> + </xsl:variable> + <xsl:copy-of select="$label"/> + <xsl:if test="$label != ''"> + <xsl:value-of select="$autotoc.label.separator"/> + </xsl:if> + <a> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="toc-context" select="$toc-context"/> + </xsl:call-template> + </xsl:attribute> + <xsl:apply-templates select="." mode="titleabbrev.markup"/> + </a> + </xsl:element> +</xsl:template> + +<!-- Used only if qanda.in.toc parameter is non-zero --> +<xsl:template match="qandaset" mode="toc"> + <xsl:param name="toc-context" select="."/> + <xsl:call-template name="subtoc"> + <xsl:with-param name="toc-context" select="$toc-context"/> + <xsl:with-param name="nodes" select="qandadiv | qandaentry"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="qandadiv|qandaentry" mode="toc"> + <xsl:apply-templates select="." mode="qandatoc.mode"/> +</xsl:template> + +</xsl:stylesheet> + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio-iso690.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio-iso690.xsl new file mode 100644 index 000000000..d420beccb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio-iso690.xsl @@ -0,0 +1,1300 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + + +<!-- ******************************************************************** + $Id: biblio.xsl 6402 2006-11-12 08:23:21Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + The original code for processing bibliography in ISO690 style + was provided by Jana Dvorakova <jana4u@seznam.cz> + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- if biblioentry.alt.primary.seps is set to nonzero value then use alternative separators for primary responsibility - $alt.person.two.sep, $alt.person.last.sep, $alt.person.more.sep --> +<xsl:param name="biblioentry.alt.primary.seps" select="0"/> + +<!-- how many authors will be printed if there is more than three authors - set to number 1 (default value), 2 or 3 --> +<xsl:param name="biblioentry.primary.count" select="1"/> + +<!-- ==================================================================== --> + +<xsl:template name="iso690.makecitation"> +<!-- Types of resources --> + <xsl:choose> + + <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ENTIRE MESSAGE SYSTEM --> + <!-- same as Monographs --> + <xsl:when test="./@role='messagesystem'"> + <xsl:call-template name="iso690.monogr"/> + </xsl:when> + + <!-- SYSTEMS OF ELECTRONIC COMMUNICATION : ELECTRONIC MESSAGES --> + <!-- same as Contributions to Monographs --> + <xsl:when test="./@role='message'"> + <xsl:call-template name="iso690.paper.mon"/> + </xsl:when> + + <!-- SERIALS --> + <xsl:when test="./@role='serial' or ./biblioid/@class='issn' or ./issn"> + <xsl:call-template name="iso690.serial"/> + </xsl:when> + + <!-- PARTS OF MONOGRAPHS --> + <xsl:when test="./@role='part' or (./bibliomisc[@role='secnum']|./bibliomisc[@role='sectitle'])"> + <xsl:call-template name="iso690.monogr.part"/> + </xsl:when> + + <!-- CONTRIBUTIONS TO MONOGRAPHS --> + <xsl:when test="./@role='contribution' or (./biblioset/@relation='part' and ./biblioset/@relation='book')"> + <xsl:call-template name="iso690.paper.mon"/> + </xsl:when> + + <!-- ARTICLES, ETC., IN SERIALS --> + <xsl:when test="./@role='article' or (./biblioset/@relation='journal' and ./biblioset/@relation='article')"> + <xsl:call-template name="iso690.article"/> + </xsl:when> + + <!-- PATENT DOCUMENTS --> + <xsl:when test="./@role='patent' or (./bibliomisc[@role='patenttype'] and ./bibliomisc[@role='patentnum'])"> + <xsl:call-template name="iso690.patent"/> + </xsl:when> + + <!-- MONOGRAPHS --> + <xsl:otherwise> + <xsl:call-template name="iso690.monogr"/> + </xsl:otherwise> + + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- MONOGRAPHS --> +<xsl:template name="iso690.monogr"> + <!-- Primary responsibility --> + <xsl:call-template name="iso690.primary"/> + <!-- Title and Type of medium --> + <xsl:call-template name="iso690.title"/> + <!-- Subordinate responsibility --> + <xsl:call-template name="iso690.secondary"/> + <!-- Edition --> + <xsl:call-template name="iso690.edition"/> + <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> + <xsl:call-template name="iso690.pub"/> + <!-- Extent --> + <xsl:call-template name="iso690.extent"/> + <!-- Series --> + <xsl:call-template name="iso690.serie"/> + <!-- Notes --> + <xsl:call-template name="iso690.notice"/> + <!-- Avaibility and access --> + <xsl:call-template name="iso690.access"/> + <!-- Standard number --> + <xsl:call-template name="iso690.isbn"/> +</xsl:template> + +<!-- SERIALS --> +<xsl:template name="iso690.serial"> + <!-- Title and Type of medium --> + <xsl:call-template name="iso690.title"/> + <!-- Responsibility [nonEL] --> + <xsl:if test="not(./bibliomisc[@role='medium'])"> + <xsl:call-template name="iso690.secondary"/> + </xsl:if> + <!-- Edition --> + <xsl:call-template name="iso690.edition"> + <xsl:with-param name="after" select="./bibliomisc[@role='issuing']"/> + </xsl:call-template> + <!-- Issue designation (date and/or num) [nonEL] --> + <xsl:if test="not(./bibliomisc[@role='medium'])"> + <xsl:call-template name="iso690.issuing"/> + </xsl:if> + <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> + <xsl:call-template name="iso690.pub"/> + <!-- Series --> + <xsl:call-template name="iso690.serie"/> + <!-- Notes --> + <xsl:call-template name="iso690.notice"/> + <!-- Avaibility and access --> + <xsl:call-template name="iso690.access"/> + <!-- Standard number --> + <xsl:call-template name="iso690.issn"/> +</xsl:template> + +<!-- PARTS OF MONOGRAPHS --> +<xsl:template name="iso690.monogr.part"> + <!-- Primary responsibility of host document --> + <xsl:call-template name="iso690.primary"/> + <!-- Title and Type of medium of host document --> + <xsl:call-template name="iso690.title"/> + <!-- Subordinate responsibility of host document [EL] --> + <xsl:if test="./bibliomisc[@role='medium']"> + <xsl:call-template name="iso690.secondary"/> + </xsl:if> + <!-- Edition --> + <xsl:call-template name="iso690.edition"> + <xsl:with-param name="after" select="./volumenum"/> + </xsl:call-template> + <!-- Numeration of the part [nonEL]--> + <xsl:if test="not(./bibliomisc[@role='medium'])"> + <xsl:call-template name="iso690.partnr"/> + <!-- Subordinate responsibility [nonEL] --> + <xsl:call-template name="iso690.secondary"/> + </xsl:if> + <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> + <xsl:call-template name="iso690.pub"/> + <!-- Location within host --> + <xsl:call-template name="iso690.part.location"/> + <xsl:if test="./bibliomisc[@role='medium']"> + <!-- Numeration within host document [EL] --> + <!-- Notes [EL] --> + <xsl:call-template name="iso690.notice"/> + <!-- Avaibility and access [EL] --> + <xsl:call-template name="iso690.access"/> + <!-- Standard number [EL] --> + <xsl:call-template name="iso690.isbn"/> + </xsl:if> +</xsl:template> + +<!-- CONTRIBUTIONS TO MONOGRAPHS --> +<xsl:template name="iso690.paper.mon"> +<!-- Contribution --> + <xsl:apply-templates mode="iso690.paper.part" select="./biblioset[@relation='part']"/> +<!-- In --> + <xsl:text>In </xsl:text> +<!-- Host --> + <xsl:apply-templates mode="iso690.paper.book" select="./biblioset[@relation='book']"/> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.paper.part"> +<!-- Contribution --> + <!-- Primary responsibility --> + <xsl:call-template name="iso690.primary"/> + <!-- Title --> + <xsl:call-template name="iso690.title"> + <xsl:with-param name="italic" select="0"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.paper.book"> +<!-- Host --> + <!-- Primary responsibility --> + <xsl:call-template name="iso690.primary"/> + <!-- Title and Type of medium --> + <xsl:call-template name="iso690.title"/> + <!-- Subordinate responsibility [EL] --> + <xsl:if test="./bibliomisc[@role='medium']"> + <xsl:call-template name="iso690.secondary"/> + </xsl:if> + <!-- Edition --> + <xsl:call-template name="iso690.edition"/> + <!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> + <xsl:call-template name="iso690.paper.pub"/> + <!-- Numeration within host document [EL] --> + <!-- Location within host --> + <xsl:call-template name="iso690.location"/> + <xsl:if test="./bibliomisc[@role='medium']"> + <!-- Notes [EL] --> + <xsl:call-template name="iso690.notice"/> + <!-- Avaibility and access [EL] --> + <xsl:call-template name="iso690.access"/> + <!-- Standard number [EL] --> + <xsl:call-template name="iso690.isbn"/> + </xsl:if> +</xsl:template> + +<!-- ARTICLES, ETC., IN SERIALS --> +<xsl:template name="iso690.article"> +<!-- Article --> + <xsl:apply-templates mode="iso690.article.art" select="./biblioset[@relation='article']"/> +<!-- Serial --> + <xsl:apply-templates mode="iso690.article.jour" select="./biblioset[@relation='journal']"/> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.article.art"> +<!-- Article --> + <!-- Primary responsibility --> + <xsl:call-template name="iso690.primary"/> + <!-- Title --> + <xsl:call-template name="iso690.title"> + <xsl:with-param name="italic" select="0"/> + </xsl:call-template> + <!-- Subordinate responsibility [nonEL] --> + <xsl:if test="not(../*/bibliomisc[@role='medium'])"> + <xsl:call-template name="iso690.secondary"/> + </xsl:if> +</xsl:template> + +<xsl:template match="biblioset" mode="iso690.article.jour"> +<!-- Serial --> + <!-- Title and Type of medium --> + <xsl:call-template name="iso690.title"/> + <!-- Edition --> + <xsl:call-template name="iso690.edition"> + <xsl:with-param name="after" select="./pubdate[not(@role='issuing')]|./volumenum|./issuenum|./pagenums"/> + </xsl:call-template> + <!-- Number designation [EL] --> + <!-- Location within host --> + <xsl:call-template name="iso690.article.location"/> + <xsl:if test="./bibliomisc[@role='medium']"> + <!-- Notes [EL] --> + <xsl:call-template name="iso690.notice"/> + <!-- Avaibility and access [EL] --> + <xsl:call-template name="iso690.access"/> + <!-- Standard number [EL] --> + <xsl:call-template name="iso690.issn"/> + </xsl:if> +</xsl:template> + +<!-- PATENT DOCUMENTS --> +<xsl:template name="iso690.patent"> + <!-- Primary responsibility (applicant) --> + <xsl:call-template name="iso690.primary"/> + <!-- Title of the invention --> + <xsl:call-template name="iso690.title"/> + <!-- Subordinate responsibility --> + <xsl:call-template name="iso690.secondary"/> + <!-- Notes --> + <xsl:call-template name="iso690.notice"/> + <!-- Identification --> + <xsl:call-template name="iso690.pat.ident"/> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Elements --> + +<!-- Primary responsibility --> +<xsl:template name="iso690.primary"> + <xsl:param name="primary.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template> + </xsl:param> + <xsl:choose> + <xsl:when test="./authorgroup/author|./author"> + <xsl:call-template name="iso690.author.list"> + <xsl:with-param name="person.list" select=".//authorgroup/author|.//author"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="./authorgroup/editor|./editor"> + <xsl:call-template name="iso690.author.list"> + <xsl:with-param name="person.list" select=".//authorgroup/editor|.//editor"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="./authorgroup/corpauthor|./corpauthor"> + <xsl:call-template name="iso690.author.list"> + <xsl:with-param name="person.list" select=".//authorgroup/corpauthor|.//corpauthor"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:if test="(./firstname)and(./surname)"> + <xsl:call-template name="iso690.author"/> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="string(./firstname[1])"/> + <xsl:with-param name="sep" select="$primary.sep"/> + </xsl:call-template> + </xsl:if> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.author.list"> + <xsl:param name="person.list" + select="author|corpauthor|editor"/> + <xsl:param name="person.count" select="count($person.list)"/> + <xsl:param name="count" select="1"/> + <xsl:param name="group" select="./authorgroup[@role='many']"/> + <xsl:param name="many" select="0"/> + + <xsl:param name="primary.many"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.many'"/></xsl:call-template> + </xsl:param> + <xsl:param name="primary.editor"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.editor'"/></xsl:call-template> + </xsl:param> + <xsl:param name="primary.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'primary.sep'"/></xsl:call-template> + </xsl:param> + + <xsl:choose> + <xsl:when test="$count > $person.count"></xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$person.count < 4 and not($group)"> + <xsl:call-template name="iso690.author"> + <xsl:with-param name="node" select="$person.list[position()=$count]"/> + </xsl:call-template> + <xsl:choose> + <xsl:when test="$person.count = 2 and $count = 1 and $biblioentry.alt.primary.seps != 0"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.two.sep'"/></xsl:call-template> + </xsl:when> + <xsl:when test="$person.count = 2 and $count = 1"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'authorgroup'"/> + <xsl:with-param name="name" select="'sep2'"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$person.count > 2 and $count+1 = $person.count and $biblioentry.alt.primary.seps != 0"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.last.sep'"/></xsl:call-template> + </xsl:when> + <xsl:when test="$person.count > 2 and $count+1 = $person.count"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'authorgroup'"/> + <xsl:with-param name="name" select="'seplast'"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$count < $person.count and $biblioentry.alt.primary.seps != 0"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'alt.person.more.sep'"/></xsl:call-template> + </xsl:when> + <xsl:when test="$count < $person.count"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'authorgroup'"/> + <xsl:with-param name="name" select="'sep'"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="($count = $person.count)"> + <xsl:choose> + <xsl:when test="$many!=0"> + <xsl:if test="name($person.list[position()=$count])='editor'"> + <xsl:value-of select="$primary.editor"/> + </xsl:if> + <xsl:value-of select="$primary.many"/> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="$primary.many"/> + <xsl:with-param name="sep" select="$primary.sep"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="name($person.list[position()=$count])='editor'"> + <xsl:value-of select="$primary.editor"/> + <xsl:value-of select="$primary.sep"/> + </xsl:when> + <xsl:when test="name($person.list[position()=$count])='corpauthor'"> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="string($person.list[position()=$count])"/> + <xsl:with-param name="sep" select="$primary.sep"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="string($person.list[position()=$count]//firstname[1])"/> + <xsl:with-param name="sep" select="$primary.sep"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + </xsl:choose> + + <xsl:call-template name="iso690.author.list"> + <xsl:with-param name="person.list" select="$person.list"/> + <xsl:with-param name="person.count" select="$person.count"/> + <xsl:with-param name="count" select="$count+1"/> + <xsl:with-param name="many" select="$many"/> + <xsl:with-param name="group"/> + </xsl:call-template> + </xsl:when> + + <xsl:otherwise> + <xsl:choose> + <xsl:when test="($biblioentry.primary.count>=3) and ($person.count>=3)"> + <xsl:call-template name="iso690.author.list"> + <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]|$person.list[3]"/> + <xsl:with-param name="person.count" select="3"/> + <xsl:with-param name="count" select="1"/> + <xsl:with-param name="many" select="1"/> + <xsl:with-param name="group"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="($biblioentry.primary.count>1) and ($person.count>1)"> + <xsl:call-template name="iso690.author.list"> + <xsl:with-param name="person.list" select="$person.list[1]|$person.list[2]"/> + <xsl:with-param name="person.count" select="2"/> + <xsl:with-param name="count" select="1"/> + <xsl:with-param name="many" select="1"/> + <xsl:with-param name="group"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="iso690.author.list"> + <xsl:with-param name="person.list" select="$person.list[1]"/> + <xsl:with-param name="person.count" select="1"/> + <xsl:with-param name="count" select="1"/> + <xsl:with-param name="many" select="1"/> + <xsl:with-param name="group"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.author"> + <xsl:param name="node" select="."/> + <xsl:param name="lastfirst.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'lastfirst.sep'"/></xsl:call-template> + </xsl:param> + <xsl:choose> + <xsl:when test="name($node)!='corpauthor'"> + <span style="text-transform:uppercase"> + <xsl:apply-templates mode="iso690.mode" select="$node//surname[1]"/> + </span> + <xsl:if test="$node//surname and $node//firstname"> + <xsl:value-of select="$lastfirst.sep"/> + </xsl:if> + <xsl:apply-templates mode="iso690.mode" select="$node//firstname[1]"/> + </xsl:when> + <xsl:otherwise> + <span style="text-transform:uppercase"> + <xsl:apply-templates mode="iso690.mode" select="$node"/> + </span> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="corpauthor|firstname|surname" mode="iso690.mode"> + <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Title and Type of medium --> +<xsl:template name="iso690.title"> + <xsl:param name="medium" select="./bibliomisc[@role='medium']"/> + <xsl:param name="italic" select="1"/> + <xsl:param name="sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template> + </xsl:param> + + <xsl:apply-templates mode="iso690.mode" select="./title"> + <xsl:with-param name="medium" select="$medium"/> + <xsl:with-param name="italic" select="$italic"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="title" mode="iso690.mode"> + <xsl:param name="medium"/> + <xsl:param name="italic" select="1"/> + <xsl:param name="sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'title.sep'"/></xsl:call-template> + </xsl:param> + <xsl:param name="medium1"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium1'"/></xsl:call-template> + </xsl:param> + <xsl:param name="medium2"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'medium2'"/></xsl:call-template> + </xsl:param> + <xsl:choose> + <xsl:when test="$italic=1"> + <xsl:call-template name="iso690.italic.title"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="iso690.make.title"/> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="$medium"> + <xsl:value-of select="$medium1"/> + <xsl:apply-templates mode="iso690.mode" select="$medium"/> + <xsl:value-of select="$medium2"/> + </xsl:if> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="concat(string(.),string(../subtitle))"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="iso690.italic.title"> + <i> + <xsl:call-template name="iso690.make.title"/> + </i> +</xsl:template> + +<xsl:template name="iso690.make.title"> + <xsl:param name="submaintitle.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'submaintitle.sep'"/></xsl:call-template> + </xsl:param> + <xsl:apply-templates mode="iso690.mode"/> + <xsl:if test="../subtitle"> + <xsl:value-of select="$submaintitle.sep"/> + <xsl:apply-templates mode="iso690.mode" select="../subtitle"/> + </xsl:if> +</xsl:template> + +<xsl:template match="subtitle" mode="iso690.mode"> + <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<xsl:template match="bibliomisc[@role='medium']" mode="iso690.mode"> + <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Subordinate responsibility --> +<xsl:template name="iso690.secondary"> + <xsl:param name="secondary.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.sep'"/></xsl:call-template> + </xsl:param> + <xsl:param name="secondary.person.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'secondary.person.sep'"/></xsl:call-template> + </xsl:param> + <xsl:for-each select="./bibliomisc[@role='secondary']"> + <xsl:apply-templates mode="iso690.mode" select="."/> + <xsl:choose> + <xsl:when test="position()=count(../bibliomisc[@role='secondary'])"> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="string(.)"/> + <xsl:with-param name="sep" select="$secondary.sep"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$secondary.person.sep"/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> +</xsl:template> + +<xsl:template match="bibliomisc[@role='secondary']" mode="iso690.mode"> + <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Edition --> +<xsl:template name="iso690.edition"> + <xsl:param name="after"/> + <xsl:param name="edition.serial.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.serial.sep'"/></xsl:call-template> + </xsl:param> + <xsl:choose> + <xsl:when test="string($after)!=''"> + <xsl:apply-templates mode="iso690.mode" select="./edition"> + <xsl:with-param name="sep" select="$edition.serial.sep"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="iso690.mode" select="./edition"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="edition" mode="iso690.mode"> + <xsl:param name="sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'edition.sep'"/></xsl:call-template> + </xsl:param> + <xsl:apply-templates mode="iso690.mode"/> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="string(.)"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:call-template> +</xsl:template> + +<!-- Issue designation (date and/or num) --> +<xsl:template name="iso690.issuing"> + <xsl:param name="issuing.div"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template> + </xsl:param> + <xsl:param name="issuing.range"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template> + </xsl:param> + <xsl:param name="issuing.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template> + </xsl:param> + <xsl:choose> + <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2] and ./issuenum[2]"> + <xsl:call-template name="iso690.issuedate"/> + <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]"> + <xsl:with-param name="sep" select="$issuing.div"/> + </xsl:apply-templates> + <xsl:apply-templates mode="iso690.mode" select="./issuenum[1]"> + <xsl:with-param name="sep" select="$issuing.range"/> + </xsl:apply-templates> + <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]"> + <xsl:with-param name="sep" select="$issuing.div"/> + </xsl:apply-templates> + <xsl:apply-templates mode="iso690.mode" select="./issuenum[2]"> + <xsl:with-param name="sep" select="$issuing.sep"/> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="./pubdate[@role='issuing'] and ./volumenum[2]"> + <xsl:call-template name="iso690.issuedate"/> + <xsl:apply-templates mode="iso690.mode" select="./volumenum[1]"> + <xsl:with-param name="sep" select="$issuing.range"/> + </xsl:apply-templates> + <xsl:apply-templates mode="iso690.mode" select="./volumenum[2]"> + <xsl:with-param name="sep" select="$issuing.sep"/> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="./pubdate[@role='issuing'] and ./volumenum and ./issuenum"> + <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']"> + <xsl:with-param name="sep" select="$issuing.div"/> + </xsl:apply-templates> + <xsl:apply-templates mode="iso690.mode" select="./volumenum"> + <xsl:with-param name="sep" select="$issuing.div"/> + </xsl:apply-templates> + <xsl:apply-templates mode="iso690.mode" select="./issuenum"> + <xsl:with-param name="sep" select="$issuing.sep"/> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="./pubdate[@role='issuing']"> + <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']"> + <xsl:with-param name="sep" select="$issuing.sep"/> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="./volumenum"> + <xsl:apply-templates mode="iso690.mode" select="./volumenum"> + <xsl:with-param name="sep" select="$issuing.sep"/> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="./issuenum"> + <xsl:apply-templates mode="iso690.mode" select="./issuenum"> + <xsl:with-param name="sep" select="$issuing.sep"/> + </xsl:apply-templates> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.issuedate"> + <xsl:param name="issuing.div"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.div'"/></xsl:call-template> + </xsl:param> + <xsl:param name="issuing.range"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.range'"/></xsl:call-template> + </xsl:param> + <xsl:param name="issuing.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issuing.sep'"/></xsl:call-template> + </xsl:param> + <xsl:choose> + <xsl:when test="./pubdate[@role='issuing'][2]"> + <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][1]"> + <xsl:with-param name="sep" select="$issuing.range"/> + </xsl:apply-templates> + <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing'][2]"> + <xsl:with-param name="sep" select="$issuing.div"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="iso690.mode" select="./pubdate[@role='issuing']"> + <xsl:with-param name="sep" select="$issuing.div"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="pubdate[@role='issuing']" mode="iso690.mode"> + <xsl:param name="sep"/> + <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/> + <xsl:apply-templates mode="iso690.mode"/> + <xsl:call-template name="iso690.space"> + <xsl:with-param name="text" select="$substr"/> + </xsl:call-template> + <xsl:choose> + <xsl:when test="$substr='-'"> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="' '"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="string(.)"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- Numeration of the part --> +<xsl:template name="iso690.partnr"> + <xsl:param name="partnr.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'partnr.sep'"/></xsl:call-template> + </xsl:param> + <xsl:apply-templates mode="iso690.mode" select="./volumenum"> + <xsl:with-param name="sep" select="$partnr.sep"/> + </xsl:apply-templates> +</xsl:template> + +<!-- Place of publication, Publisher, Year/Date of publication, Date of update/revision, Date of citation --> +<xsl:template name="iso690.pub"> + <xsl:param name="onlydate" select="0"/> + <xsl:param name="placesep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'placepubl.sep'"/></xsl:call-template> + </xsl:param> + <xsl:param name="pubsep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'publyear.sep'"/></xsl:call-template> + </xsl:param> + <xsl:param name="endsep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pubinfo.sep'"/></xsl:call-template> + </xsl:param> + <xsl:choose> + <xsl:when test="(./publisher/publishername|./publishername|./publisher/address/city)and($onlydate=0)and(./pubdate[not(@role='issuing')]|./copyright/year|./date[@role='upd']|./date[@role='upd'])"> + <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city"> + <xsl:with-param name="sep" select="$placesep"/> + </xsl:apply-templates> + <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername"> + <xsl:with-param name="sep" select="$pubsep"/> + </xsl:apply-templates> + <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year"> + <xsl:with-param name="sep" select="$endsep"/> + </xsl:apply-templates> + <xsl:if test="not(./pubdate[not(@role='issuing')]|./copyright/year)"> + <xsl:call-template name="iso690.data"> + <xsl:with-param name="sep" select="$endsep"/> + </xsl:call-template> + </xsl:if> + </xsl:when> + <xsl:when test="(./publisher/publishername|./publishername)and(./publisher/address/city)and($onlydate=0)"> + <xsl:apply-templates mode="iso690.mode" select="./publisher/address/city"> + <xsl:with-param name="sep" select="$placesep"/> + </xsl:apply-templates> + <xsl:apply-templates mode="iso690.mode" select="./publisher/publishername|./publishername"> + <xsl:with-param name="sep" select="$endsep"/> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="($onlydate=1)or(./pubdate[not(@role='issuing')]|./copyright/year)"> + <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]|./copyright/year"> + <xsl:with-param name="sep" select="$endsep"/> + </xsl:apply-templates> + <xsl:if test="$onlydate=1"> + <xsl:call-template name="iso690.location"> + <xsl:with-param name="onlypages" select="1"/> + </xsl:call-template> + </xsl:if> + </xsl:when> + <xsl:when test="not(./pubdate[not(@role='issuing')]|./copyright/year)"> + <xsl:call-template name="iso690.data"> + <xsl:with-param name="sep" select="$endsep"/> + </xsl:call-template> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.paper.pub"> + <xsl:param name="spec.pubinfo.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'spec.pubinfo.sep'"/></xsl:call-template> + </xsl:param> + <xsl:choose> + <xsl:when test="./volumnum|./issuenum|./pagenums"> + <xsl:call-template name="iso690.pub"> + <xsl:with-param name="endsep" select="$spec.pubinfo.sep"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="iso690.pub"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.data"> + <xsl:param name="sep"/> + <xsl:param name="datecit2"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template> + </xsl:param> + <xsl:apply-templates mode="iso690.mode" select="./date[@role='upd']"> + <xsl:with-param name="sep"/> + </xsl:apply-templates> + <xsl:apply-templates mode="iso690.mode" select="./date[@role='cit']"/> + <xsl:choose> + <xsl:when test="./date[@role='cit']"> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="$datecit2"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="./date[@role='upd']"> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="string(./date[@role='upd'])"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:call-template> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template match="publisher/address/city|publishername" mode="iso690.mode"> + <xsl:param name="sep"/> + <xsl:param name="upd" select="0"/> + <xsl:apply-templates mode="iso690.mode"/> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="string(.)"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="pubdate|copyright/year" mode="iso690.mode"> + <xsl:param name="sep"/> + <xsl:param name="upd" select="1"/> + <xsl:param name="datecit2"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template> + </xsl:param> + <xsl:variable name="substr" select="substring(string(.),string-length(string(.)))"/> + <xsl:if test="name(.)!='pubdate'"> + <xsl:value-of select="'©'"/><!-- copyright --> + </xsl:if> + <xsl:apply-templates mode="iso690.mode"/> + <xsl:call-template name="iso690.space"> + <xsl:with-param name="text" select="$substr"/> + </xsl:call-template> + <xsl:if test="$upd!=0"> + <xsl:choose> + <xsl:when test="name(.)='pubdate'"> + <xsl:apply-templates mode="iso690.mode" select="../date[@role='upd']"/> + <xsl:apply-templates mode="iso690.mode" select="../date[@role='cit']"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="iso690.mode" select="../../date[@role='upd']"/> + <xsl:apply-templates mode="iso690.mode" select="../../date[@role='cit']"/> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + <xsl:choose> + <xsl:when test="../date[@role='cit']|../../date[@role='cit'] and $upd!=0"> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="$datecit2"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="../date[@role='upd']|../../date[@role='upd'] and $upd!=0"> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="string(../date[@role='upd'])"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$substr='-'"> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="' '"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="string(.)"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.space"> + <xsl:param name="text" select="substring(string(.),string-length(string(.)))"/> + <xsl:if test="$text='-'"> + <xsl:value-of select="' '"/> + </xsl:if> +</xsl:template> + +<!-- Date of update/revision --> +<xsl:template match="date[@role='upd']" mode="iso690.mode"> + <xsl:param name="sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'upd.sep'"/></xsl:call-template> + </xsl:param> + <xsl:value-of select="$sep"/> + <xsl:apply-templates mode="iso690.mode"/> +</xsl:template> + +<!-- Date of citation --> +<xsl:template match="date[@role='cit']" mode="iso690.mode"> + <xsl:param name="datecit1"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit1'"/></xsl:call-template> + </xsl:param> + <xsl:param name="datecit2"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'datecit2'"/></xsl:call-template> + </xsl:param> + <xsl:value-of select="$datecit1"/> + <xsl:apply-templates mode="iso690.mode"/> + <xsl:value-of select="$datecit2"/> +</xsl:template> + +<!-- Extent --> +<xsl:template name="iso690.extent"> + <xsl:param name="extent.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'extent.sep'"/></xsl:call-template> + </xsl:param> + <xsl:apply-templates mode="iso690.mode" select="./pagenums"> + <xsl:with-param name="sep" select="$extent.sep"/> + </xsl:apply-templates> +</xsl:template> + +<!-- Location within host --> +<xsl:template name="iso690.part.location"> + <xsl:param name="location.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> + </xsl:param> + <xsl:choose> + <xsl:when test="./pagenums"> + <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/> + <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']"/> + <xsl:apply-templates mode="iso690.mode" select="./pagenums"/> + </xsl:when> + <xsl:when test="./bibliomisc[@role='sectitle']"> + <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"/> + <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='sectitle']"> + <xsl:with-param name="sep" select="$location.sep"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='secnum']"> + <xsl:with-param name="sep" select="$location.sep"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.article.location"> + <xsl:param name="location.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> + </xsl:param> + <xsl:param name="locs.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template> + </xsl:param> + <xsl:choose> + <xsl:when test="not(./date[@role='upd']|./date[@role='cit'])"> + <xsl:choose> + <xsl:when test="./volumenum|./issuenum|./pagenums"> + <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> + <xsl:with-param name="upd" select="0"/> + <xsl:with-param name="sep" select="$locs.sep"/> + </xsl:apply-templates> + <xsl:call-template name="iso690.location"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> + <xsl:with-param name="sep" select="$location.sep"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="./volumenum|./issuenum|./pagenums"> + <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> + <xsl:with-param name="upd" select="0"/> + <xsl:with-param name="sep" select="$locs.sep"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> + <xsl:with-param name="upd" select="0"/> + <xsl:with-param name="sep" select="$location.sep"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="./issuenum"> + <xsl:apply-templates mode="iso690.mode" select="./volumenum"/> + <xsl:apply-templates mode="iso690.mode" select="./issuenum"> + <xsl:with-param name="sep"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="iso690.mode" select="./volumenum"> + <xsl:with-param name="sep"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="./pagenums"> + <xsl:call-template name="iso690.data"> + <xsl:with-param name="sep" select="$locs.sep"/> + </xsl:call-template> + <xsl:apply-templates mode="iso690.mode" select="./pagenums"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="iso690.data"> + <xsl:with-param name="sep" select="$location.sep"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="iso690.location"> + <xsl:param name="location.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> + </xsl:param> + <xsl:choose> + <xsl:when test="./volumenum and not(./issuenum) and not(./pagenums)"> + <xsl:apply-templates mode="iso690.mode" select="./volumenum"> + <xsl:with-param name="sep" select="$location.sep"/> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="./issuenum and not(./pagenums)"> + <xsl:apply-templates mode="iso690.mode" select="./volumenum"/> + <xsl:apply-templates mode="iso690.mode" select="./issuenum"> + <xsl:with-param name="sep" select="$location.sep"/> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="./pagenums"> + <xsl:apply-templates mode="iso690.mode" select="./volumenum"/> + <xsl:apply-templates mode="iso690.mode" select="./issuenum"/> + <xsl:apply-templates mode="iso690.mode" select="./pagenums"/> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template match="bibliomisc[@role='secnum']|bibliomisc[@role='sectitle']" mode="iso690.mode"> + <xsl:param name="sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template> + </xsl:param> + <xsl:apply-templates mode="iso690.mode"/> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="string(.)"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="volumenum|issuenum" mode="iso690.mode"> + <xsl:param name="sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'locs.sep'"/></xsl:call-template> + </xsl:param> + <xsl:apply-templates mode="iso690.mode"/> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="string(.)"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="pagenums" mode="iso690.mode"> + <xsl:param name="sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'location.sep'"/></xsl:call-template> + </xsl:param> + <xsl:apply-templates mode="iso690.mode"/> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="string(.)"/> + <xsl:with-param name="sep" select="$sep"/> + </xsl:call-template> +</xsl:template> + +<!-- Series --> +<xsl:template name="iso690.serie"> + <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[@role='serie']"/> +</xsl:template> + +<!-- Notes --> +<xsl:template name="iso690.notice"> + <xsl:apply-templates mode="iso690.mode" select=".//bibliomisc[not(@role)]"/> +</xsl:template> + +<xsl:template match="bibliomisc[not(@role)]|bibliomisc[@role='serie']" mode="iso690.mode"> + <xsl:param name="notice.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'notice.sep'"/></xsl:call-template> + </xsl:param> + <xsl:apply-templates mode="iso690.mode"/> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="string(.)"/> + <xsl:with-param name="sep" select="$notice.sep"/> + </xsl:call-template> +</xsl:template> + +<!-- Avaibility and access --> +<xsl:template name="iso690.access"> + <xsl:for-each select="./biblioid[@class='uri']|./bibliomisc[@role='access']"> + <xsl:choose> + <xsl:when test="position()=1"> + <xsl:apply-templates mode="iso690.mode" select="."/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="iso690.mode" select="."> + <xsl:with-param name="firstacc" select="0"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> +</xsl:template> + +<xsl:template match="biblioid[@class='uri']/ulink|bibliomisc[@role='access']/ulink" mode="iso690.mode"> + <xsl:param name="link1"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link1'"/></xsl:call-template> + </xsl:param> + <xsl:param name="link2"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'link2'"/></xsl:call-template> + </xsl:param> + <xsl:value-of select="$link1"/> + <xsl:call-template name="ulink"/> + <xsl:value-of select="$link2"/> +</xsl:template> + +<xsl:template match="biblioid[@class='uri']|bibliomisc[@role='access']" mode="iso690.mode"> + <xsl:param name="firstacc" select="1"/> + <xsl:param name="access"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access'"/></xsl:call-template> + </xsl:param> + <xsl:param name="acctoo"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'acctoo'"/></xsl:call-template> + </xsl:param> + <xsl:param name="onwww"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'onwww'"/></xsl:call-template> + </xsl:param> + <xsl:param name="oninet"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'oninet'"/></xsl:call-template> + </xsl:param> + <xsl:param name="access.end"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.end'"/></xsl:call-template> + </xsl:param> + <xsl:param name="access.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'access.sep'"/></xsl:call-template> + </xsl:param> + <xsl:choose> + <xsl:when test="$firstacc=1"> + <xsl:value-of select="$access"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$acctoo"/> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="(./ulink)and(string(./ulink)=string(.))"> + <xsl:choose> + <xsl:when test="(starts-with(./ulink/@url,'http://')or(starts-with(./ulink/@url,'https://')))"> + <xsl:value-of select="$onwww"/> + <xsl:value-of select="$access.end"/> + <xsl:apply-templates mode="iso690.mode" select="./ulink"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$oninet"/> + <xsl:value-of select="$access.end"/> + <xsl:apply-templates mode="iso690.mode" select="./ulink"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="(./ulink)and(string(./ulink)!=string(.))"> + <xsl:value-of select="text()[1]"/> + <xsl:call-template name="iso690.endsep"> + <xsl:with-param name="text" select="text()[1]"/> + <xsl:with-param name="sep" select="$access.end"/> + </xsl:call-template> + <xsl:apply-templates mode="iso690.mode" select="./ulink"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="iso690.mode"/> + </xsl:otherwise> + </xsl:choose> + <xsl:value-of select="$access.sep"/> +</xsl:template> + +<!-- Standard number - ISBN --> +<xsl:template name="iso690.isbn"> + <xsl:choose> + <xsl:when test="./biblioid/@class='isbn'"> + <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='isbn']"/> + </xsl:when> + <xsl:when test="./isbn"> + <xsl:apply-templates mode="iso690.mode" select="./isbn"/> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template match="isbn|biblioid[@class='isbn']" mode="iso690.mode"> + <xsl:param name="isbn"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'isbn'"/></xsl:call-template> + </xsl:param> + <xsl:param name="stdnum.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template> + </xsl:param> + <xsl:value-of select="$isbn"/> + <xsl:apply-templates mode="iso690.mode"/> + <xsl:value-of select="$stdnum.sep"/> +</xsl:template> + +<!-- Standard number - ISSN --> +<xsl:template name="iso690.issn"> + <xsl:choose> + <xsl:when test="./biblioid/@class='issn'"> + <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='issn']"/> + </xsl:when> + <xsl:when test="./issn"> + <xsl:apply-templates mode="iso690.mode" select="./issn"/> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template match="issn|biblioid[@class='issn']" mode="iso690.mode"> + <xsl:param name="issn"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'issn'"/></xsl:call-template> + </xsl:param> + <xsl:param name="stdnum.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'stdnum.sep'"/></xsl:call-template> + </xsl:param> + <xsl:value-of select="$issn"/> + <xsl:apply-templates mode="iso690.mode"/> + <xsl:value-of select="$stdnum.sep"/> +</xsl:template> + +<!-- Identification of patent document --> +<xsl:template name="iso690.pat.ident"> + <xsl:param name="patdate.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patdate.sep'"/></xsl:call-template> + </xsl:param> + <xsl:apply-templates mode="iso690.mode" select="./address/country"/> + <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patenttype']"/> + <xsl:choose> + <xsl:when test="./biblioid[@class='other' and @otherclass='patentnum']"> + <xsl:apply-templates mode="iso690.mode" select="./biblioid[@class='other' and @otherclass='patentnum']"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="iso690.mode" select="./bibliomisc[@role='patentnum']"/> + </xsl:otherwise> + </xsl:choose> + <xsl:apply-templates mode="iso690.mode" select="./pubdate[not(@role='issuing')]"> + <xsl:with-param name="sep" select="$patdate.sep"/> + </xsl:apply-templates> +</xsl:template> + +<!-- Country or issuing office --> +<xsl:template match="address/country" mode="iso690.mode"> + <xsl:param name="patcountry.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patcountry.sep'"/></xsl:call-template> + </xsl:param> + <i> + <xsl:apply-templates mode="iso690.mode"/> + </i> + <xsl:value-of select="$patcountry.sep"/> +</xsl:template> + +<!-- Kind of patent document --> +<xsl:template match="bibliomisc[@role='patenttype']" mode="iso690.mode"> + <xsl:param name="pattype.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'pattype.sep'"/></xsl:call-template> + </xsl:param> + <i> + <xsl:apply-templates mode="iso690.mode"/> + </i> + <xsl:value-of select="$pattype.sep"/> +</xsl:template> + +<!-- Number --> +<xsl:template match="biblioid[@class='other' and @otherclass='patentnum']|bibliomisc[@role='patentnum']" mode="iso690.mode"> + <xsl:param name="patnum.sep"> + <xsl:call-template name="gentext.template"><xsl:with-param name="context" select="'iso690'"/><xsl:with-param name="name" select="'patnum.sep'"/></xsl:call-template> + </xsl:param> + <xsl:apply-templates mode="iso690.mode"/> + <xsl:value-of select="$patnum.sep"/> +</xsl:template> + +<!-- ==================================================================== --> +<!-- Supplementary templates --> + +<xsl:template name="iso690.endsep"> + <xsl:param name="text"/> + <xsl:param name="sep" select=". "/> + <xsl:choose> + <xsl:when test="substring($text,string-length($text))!=substring($sep,1,1)"> + <xsl:value-of select="$sep"/> + </xsl:when> + <xsl:when test="substring($text,string-length($text))=' '"> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="' '"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="iso690.mode"> + <xsl:apply-templates select="."/><!-- try the default mode --> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio.xsl new file mode 100644 index 000000000..f145bb9ee --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/biblio.xsl @@ -0,0 +1,1253 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + +<!-- ******************************************************************** + $Id: biblio.xsl 8421 2009-05-04 07:49:49Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="bibliography"> + <xsl:call-template name="id.warning"/> + + <div> + <xsl:call-template name="common.html.attributes"> + <xsl:with-param name="inherit" select="1"/> + </xsl:call-template> + <xsl:if test="$generate.id.attributes != 0"> + <xsl:attribute name="id"> + <xsl:call-template name="object.id"/> + </xsl:attribute> + </xsl:if> + + <xsl:call-template name="bibliography.titlepage"/> + + <xsl:apply-templates/> + + <xsl:if test="not(parent::article)"> + <xsl:call-template name="process.footnotes"/> + </xsl:if> + </div> +</xsl:template> + +<xsl:template match="bibliography/bibliographyinfo"></xsl:template> +<xsl:template match="bibliography/info"></xsl:template> +<xsl:template match="bibliography/title"></xsl:template> +<xsl:template match="bibliography/subtitle"></xsl:template> +<xsl:template match="bibliography/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="bibliodiv"> + <xsl:call-template name="id.warning"/> + + <div> + <xsl:call-template name="common.html.attributes"> + <xsl:with-param name="inherit" select="0"/> + </xsl:call-template> + <xsl:apply-templates/> + </div> +</xsl:template> + +<xsl:template match="bibliodiv/title"> + <h3> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="anchor"> + <xsl:with-param name="node" select=".."/> + <xsl:with-param name="conditional" select="0"/> + </xsl:call-template> + <xsl:apply-templates/> + </h3> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="bibliolist"> + <div> + <xsl:call-template name="common.html.attributes"> + <xsl:with-param name="inherit" select="0"/> + </xsl:call-template> + <xsl:call-template name="anchor"/> + <xsl:if test="blockinfo/title|info/title|title"> + <xsl:call-template name="formal.object.heading"/> + </xsl:if> + <xsl:apply-templates select="*[not(self::blockinfo) + and not(self::info) + and not(self::title) + and not(self::titleabbrev) + and not(self::biblioentry) + and not(self::bibliomixed)]"/> + <xsl:apply-templates select="biblioentry|bibliomixed"/> + </div> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="biblioentry"> + <xsl:param name="label"> + <xsl:call-template name="biblioentry.label"/> + </xsl:param> + + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="string(.) = ''"> + <xsl:variable name="bib" select="document($bibliography.collection,.)"/> + <xsl:variable name="entry" select="$bib/bibliography// + *[@id=$id or @xml:id=$id][1]"/> + <xsl:choose> + <xsl:when test="$entry"> + <xsl:choose> + <xsl:when test="$bibliography.numbered != 0"> + <xsl:apply-templates select="$entry"> + <xsl:with-param name="label" select="$label"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$entry"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>No bibliography entry: </xsl:text> + <xsl:value-of select="$id"/> + <xsl:text> found in </xsl:text> + <xsl:value-of select="$bibliography.collection"/> + </xsl:message> + <div> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="anchor"/> + <p> + <xsl:copy-of select="$label"/> + <xsl:text>Error: no bibliography entry: </xsl:text> + <xsl:value-of select="$id"/> + <xsl:text> found in </xsl:text> + <xsl:value-of select="$bibliography.collection"/> + </p> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <div> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="anchor"> + <xsl:with-param name="conditional" select="0"/> + </xsl:call-template> + <p> + <xsl:copy-of select="$label"/> + <xsl:choose> + <xsl:when test="$bibliography.style = 'iso690'"> + <xsl:call-template name="iso690.makecitation"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="bibliography.mode"/> + </xsl:otherwise> + </xsl:choose> + </p> + </div> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="bibliomixed"> + <xsl:param name="label"> + <xsl:call-template name="biblioentry.label"/> + </xsl:param> + + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="string(.) = ''"> + <xsl:variable name="bib" select="document($bibliography.collection,.)"/> + <xsl:variable name="entry" select="$bib/bibliography// + *[@id=$id or @xml:id=$id][1]"/> + <xsl:choose> + <xsl:when test="$entry"> + <xsl:choose> + <xsl:when test="$bibliography.numbered != 0"> + <xsl:apply-templates select="$entry"> + <xsl:with-param name="label" select="$label"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$entry"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>No bibliography entry: </xsl:text> + <xsl:value-of select="$id"/> + <xsl:text> found in </xsl:text> + <xsl:value-of select="$bibliography.collection"/> + </xsl:message> + <div> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="anchor"/> + <p> + <xsl:copy-of select="$label"/> + <xsl:text>Error: no bibliography entry: </xsl:text> + <xsl:value-of select="$id"/> + <xsl:text> found in </xsl:text> + <xsl:value-of select="$bibliography.collection"/> + </p> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <div> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="anchor"> + <xsl:with-param name="conditional" select="0"/> + </xsl:call-template> + <p> + <xsl:call-template name="common.html.attributes"/> + <xsl:copy-of select="$label"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </p> + </div> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="biblioentry.label"> + <xsl:param name="node" select="."/> + + <xsl:choose> + <xsl:when test="$bibliography.numbered != 0"> + <xsl:text>[</xsl:text> + <xsl:number from="bibliography" count="biblioentry|bibliomixed" + level="any" format="1"/> + <xsl:text>] </xsl:text> + </xsl:when> + <xsl:when test="local-name($node/child::*[1]) = 'abbrev'"> + <xsl:text>[</xsl:text> + <xsl:apply-templates select="$node/abbrev[1]"/> + <xsl:text>] </xsl:text> + </xsl:when> + <xsl:when test="$node/@xreflabel"> + <xsl:text>[</xsl:text> + <xsl:value-of select="$node/@xreflabel"/> + <xsl:text>] </xsl:text> + </xsl:when> + <xsl:when test="$node/@id"> + <xsl:text>[</xsl:text> + <xsl:value-of select="$node/@id"/> + <xsl:text>] </xsl:text> + </xsl:when> + <xsl:when test="$node/@xml:id"> + <xsl:text>[</xsl:text> + <xsl:value-of select="$node/@xml:id"/> + <xsl:text>] </xsl:text> + </xsl:when> + <xsl:otherwise><!-- nop --></xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="bibliography.mode"> + <xsl:apply-templates select="."/><!-- try the default mode --> +</xsl:template> + +<xsl:template match="abbrev" mode="bibliography.mode"> + <xsl:if test="preceding-sibling::*"> + <xsl:apply-templates mode="bibliography.mode"/> + </xsl:if> +</xsl:template> + +<xsl:template match="abstract" mode="bibliography.mode"> + <!-- suppressed --> +</xsl:template> + +<xsl:template match="address" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="affiliation" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="shortaffil" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="jobtitle" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="artheader|articleinfo|info" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="artpagenums" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="author" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="person.name"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="authorblurb|personblurb" mode="bibliography.mode"> + <!-- suppressed --> +</xsl:template> + +<xsl:template match="authorgroup" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="person.name.list"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="authorinitials" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="bibliomisc" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="bibliomset" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="biblioset" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + </span> +</xsl:template> + +<xsl:template match="biblioset/title|biblioset/citetitle" + mode="bibliography.mode"> + <xsl:variable name="relation" select="../@relation"/> + <xsl:choose> + <xsl:when test="$relation='article' or @pubwork='article'"> + <xsl:call-template name="gentext.startquote"/> + <xsl:apply-templates/> + <xsl:call-template name="gentext.endquote"/> + </xsl:when> + <xsl:otherwise> + <i><xsl:apply-templates/></i> + </xsl:otherwise> + </xsl:choose> + <xsl:copy-of select="$biblioentry.item.separator"/> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="bookbiblio" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="citetitle" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:choose> + <xsl:when test="@pubwork = 'article'"> + <xsl:call-template name="gentext.startquote"/> + <xsl:call-template name="inline.charseq"/> + <xsl:call-template name="gentext.endquote"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="inline.italicseq"/> + </xsl:otherwise> + </xsl:choose> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="collab" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="collabname" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="confgroup" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="confdates" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="conftitle" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="confnum" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="confsponsor" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="contractnum" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="contractsponsor" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="contrib" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="copyright" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Copyright'"/> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:call-template name="dingbat"> + <xsl:with-param name="dingbat">copyright</xsl:with-param> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:apply-templates select="year" mode="bibliography.mode"/> + <xsl:if test="holder"> + <xsl:call-template name="gentext.space"/> + <xsl:apply-templates select="holder" mode="bibliography.mode"/> + </xsl:if> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="year" mode="bibliography.mode"> + <xsl:apply-templates/><xsl:text>, </xsl:text> +</xsl:template> + +<xsl:template match="year[position()=last()]" mode="bibliography.mode"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="holder" mode="bibliography.mode"> + <xsl:apply-templates/> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="corpauthor" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="corpcredit" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="corpname" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="date" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="edition" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="editor" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="person.name"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="firstname" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="honorific" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="indexterm" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="invpartnumber" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="isbn" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="issn" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="issuenum" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="lineage" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="orgname" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="orgdiv" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="othercredit" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="othername" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="pagenums" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="printhistory" mode="bibliography.mode"> + <!-- suppressed --> +</xsl:template> + +<xsl:template match="productname" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="productnumber" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="pubdate" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="publisher" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + </span> +</xsl:template> + +<xsl:template match="publishername" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="pubsnumber" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="releaseinfo" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="revhistory" mode="bibliography.mode"> + <!-- suppressed; how could this be represented? --> +</xsl:template> + +<xsl:template match="seriesinfo" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + </span> +</xsl:template> + +<xsl:template match="seriesvolnums" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="subtitle" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="surname" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="title" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <i><xsl:apply-templates mode="bibliography.mode"/></i> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="titleabbrev" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="volumenum" mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource" + mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliography.mode"/> + <xsl:copy-of select="$biblioentry.item.separator"/> + </span> +</xsl:template> + +<!-- See FR #1934434 and http://doi.org --> +<xsl:template match="biblioid[@class='doi']" + mode="bibliography.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <a href="{concat('http://dx.doi.org/', .)}">doi:<xsl:value-of select="."/></a> + </span> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="bibliomixed.mode"> + <xsl:apply-templates select="."/><!-- try the default mode --> +</xsl:template> + +<xsl:template match="abbrev" mode="bibliomixed.mode"> + <xsl:if test="preceding-sibling::*"> + <xsl:apply-templates mode="bibliomixed.mode"/> + </xsl:if> +</xsl:template> + +<xsl:template match="abstract" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="address" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="affiliation" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="shortaffil" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="jobtitle" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="artpagenums" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="author" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="authorblurb|personblurb" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="authorgroup" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="authorinitials" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="bibliomisc" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="bibliomset" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="bibliomset/title|bibliomset/citetitle" + mode="bibliomixed.mode"> + <xsl:variable name="relation" select="../@relation"/> + <xsl:choose> + <xsl:when test="$relation='article' or @pubwork='article'"> + <xsl:call-template name="gentext.startquote"/> + <xsl:apply-templates/> + <xsl:call-template name="gentext.endquote"/> + </xsl:when> + <xsl:otherwise> + <i><xsl:apply-templates/></i> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ================================================== --> + +<xsl:template match="biblioset" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="citetitle" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:choose> + <xsl:when test="@pubwork = 'article'"> + <xsl:call-template name="gentext.startquote"/> + <xsl:call-template name="inline.charseq"/> + <xsl:call-template name="gentext.endquote"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="inline.italicseq"/> + </xsl:otherwise> + </xsl:choose> + </span> +</xsl:template> + + +<xsl:template match="collab" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="confgroup" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="contractnum" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="contractsponsor" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="contrib" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="copyright" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="corpauthor" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="corpcredit" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="corpname" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="date" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="edition" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="editor" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="firstname" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="honorific" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="indexterm" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="invpartnumber" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="isbn" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="issn" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="issuenum" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="lineage" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="orgname" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="othercredit" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="othername" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="pagenums" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="printhistory" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="productname" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="productnumber" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="pubdate" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="publisher" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="publishername" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="pubsnumber" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="releaseinfo" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="revhistory" mode="bibliomixed.mode"> + <!-- suppressed; how could this be represented? --> +</xsl:template> + +<xsl:template match="seriesvolnums" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="subtitle" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="surname" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="title" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="titleabbrev" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="volumenum" mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<xsl:template match="bibliocoverage|biblioid|bibliorelation|bibliosource" + mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates mode="bibliomixed.mode"/> + </span> +</xsl:template> + +<!-- See FR #1934434 and http://doi.org --> +<xsl:template match="biblioid[@class='doi']" + mode="bibliomixed.mode"> + <span> + <xsl:call-template name="common.html.attributes"/> + <a href="{concat('http://dx.doi.org/', .)}">doi:<xsl:value-of select="."/></a> + </span> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/block.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/block.xsl new file mode 100644 index 000000000..c76beaf9b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/block.xsl @@ -0,0 +1,538 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + +<!-- ******************************************************************** + $Id: block.xsl 8831 2010-08-13 17:08:49Z mzjn $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- What should we do about styling blockinfo? --> + +<xsl:template match="blockinfo|info"> + <!-- suppress --> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="block.object"> + <div> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="anchor"/> + <xsl:apply-templates/> + </div> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="para"> + <xsl:call-template name="paragraph"> + <xsl:with-param name="class"> + <xsl:if test="@role and $para.propagates.style != 0"> + <xsl:value-of select="@role"/> + </xsl:if> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:if test="position() = 1 and parent::listitem"> + <xsl:call-template name="anchor"> + <xsl:with-param name="node" select="parent::listitem"/> + </xsl:call-template> + </xsl:if> + + <xsl:call-template name="anchor"/> + <xsl:apply-templates/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template name="paragraph"> + <xsl:param name="class" select="''"/> + <xsl:param name="content"/> + + <xsl:variable name="p"> + <p> + <xsl:choose> + <xsl:when test="$class != ''"> + <xsl:call-template name="common.html.attributes"> + <xsl:with-param name="class" select="$class"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="locale.html.attributes"/> + </xsl:otherwise> + </xsl:choose> + <xsl:copy-of select="$content"/> + </p> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$html.cleanup != 0"> + <xsl:call-template name="unwrap.p"> + <xsl:with-param name="p" select="$p"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$p"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="simpara"> + <!-- see also listitem/simpara in lists.xsl --> + <p> + <xsl:call-template name="locale.html.attributes"/> + <xsl:if test="@role and $para.propagates.style != 0"> + <xsl:apply-templates select="." mode="class.attribute"> + <xsl:with-param name="class" select="@role"/> + </xsl:apply-templates> + </xsl:if> + + <xsl:call-template name="anchor"/> + <xsl:apply-templates/> + </p> +</xsl:template> + +<xsl:template match="formalpara"> + <xsl:call-template name="paragraph"> + <xsl:with-param name="class"> + <xsl:if test="@role and $para.propagates.style != 0"> + <xsl:value-of select="@role"/> + </xsl:if> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="anchor"/> + <xsl:apply-templates/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<!-- Only use title from info --> +<xsl:template match="formalpara/info"> + <xsl:apply-templates select="title"/> +</xsl:template> + +<xsl:template match="formalpara/title|formalpara/info/title"> + <xsl:variable name="titleStr"> + <xsl:apply-templates/> + </xsl:variable> + <xsl:variable name="lastChar"> + <xsl:if test="$titleStr != ''"> + <xsl:value-of select="substring($titleStr,string-length($titleStr),1)"/> + </xsl:if> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$make.clean.html != 0"> + <span class="formalpara-title"> + <xsl:copy-of select="$titleStr"/> + <xsl:if test="$lastChar != '' + and not(contains($runinhead.title.end.punct, $lastChar))"> + <xsl:value-of select="$runinhead.default.title.end.punct"/> + </xsl:if> + <xsl:text> </xsl:text> + </span> + </xsl:when> + <xsl:otherwise> + <b> + <xsl:copy-of select="$titleStr"/> + <xsl:if test="$lastChar != '' + and not(contains($runinhead.title.end.punct, $lastChar))"> + <xsl:value-of select="$runinhead.default.title.end.punct"/> + </xsl:if> + <xsl:text> </xsl:text> + </b> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="formalpara/para"> + <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="blockquote"> + <div> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="anchor"/> + + <xsl:choose> + <xsl:when test="attribution"> + <table border="0" width="100%" + cellspacing="0" cellpadding="0" class="blockquote" + summary="Block quote"> + <tr> + <td width="10%" valign="top"> </td> + <td width="80%" valign="top"> + <xsl:apply-templates select="child::*[local-name(.)!='attribution']"/> + </td> + <td width="10%" valign="top"> </td> + </tr> + <tr> + <td width="10%" valign="top"> </td> + <td colspan="2" align="{$direction.align.end}" valign="top"> + <xsl:text>--</xsl:text> + <xsl:apply-templates select="attribution"/> + </td> + </tr> + </table> + </xsl:when> + <xsl:otherwise> + <blockquote> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates/> + </blockquote> + </xsl:otherwise> + </xsl:choose> + </div> +</xsl:template> + +<xsl:template match="blockquote/title|blockquote/info/title"> + <xsl:choose> + <xsl:when test="$make.clean.html != 0"> + <div class="blockquote-title"> + <xsl:apply-templates/> + </div> + </xsl:when> + <xsl:otherwise> + <div class="blockquote-title"> + <p> + <b> + <xsl:apply-templates/> + </b> + </p> + </div> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- Use an em dash per Chicago Manual of Style and https://sourceforge.net/tracker/index.php?func=detail&aid=2793878&group_id=21935&atid=373747 --> +<xsl:template match="epigraph"> + <div> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates select="para|simpara|formalpara|literallayout"/> + <xsl:if test="attribution"> + <div class="attribution"> + <span>—<xsl:apply-templates select="attribution"/></span> + </div> + </xsl:if> + </div> +</xsl:template> + +<xsl:template match="attribution"> + <span> + <xsl:call-template name="common.html.attributes"/> + <xsl:apply-templates/> + </span> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="abstract|sidebar"> + <div> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="anchor"/> + <xsl:call-template name="sidebar.titlepage"/> + <xsl:apply-templates/> + </div> +</xsl:template> + +<xsl:template match="abstract/title|sidebar/title"> +</xsl:template> + +<xsl:template match="sidebar/sidebarinfo|sidebar/info"/> + +<!-- ==================================================================== --> + +<xsl:template match="msgset"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msgentry"> + <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="simplemsgentry"> + <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="msg"> + <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="msgmain"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msgmain/title"> + <xsl:choose> + <xsl:when test="$make.clean.html != 0"> + <span class="msgmain-title"> + <xsl:apply-templates/> + </span> + </xsl:when> + <xsl:otherwise> + <b><xsl:apply-templates/></b> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="msgsub"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msgsub/title"> + <xsl:choose> + <xsl:when test="$make.clean.html != 0"> + <span class="msgsub-title"> + <xsl:apply-templates/> + </span> + </xsl:when> + <xsl:otherwise> + <b><xsl:apply-templates/></b> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="msgrel"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msgrel/title"> + <xsl:choose> + <xsl:when test="$make.clean.html != 0"> + <span class="msgrel-title"> + <xsl:apply-templates/> + </span> + </xsl:when> + <xsl:otherwise> + <b><xsl:apply-templates/></b> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="msgtext"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="msginfo"> + <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="msglevel"> + <xsl:choose> + <xsl:when test="$make.clean.html != 0"> + <div class="msglevel"> + <span class="msglevel-title"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'msgset'"/> + <xsl:with-param name="name" select="'MsgLevel'"/> + </xsl:call-template> + </span> + <xsl:apply-templates/> + </div> + </xsl:when> + <xsl:otherwise> + <p> + <b> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'msgset'"/> + <xsl:with-param name="name" select="'MsgLevel'"/> + </xsl:call-template> + </b> + <xsl:apply-templates/> + </p> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="msgorig"> + <xsl:choose> + <xsl:when test="$make.clean.html != 0"> + <div class="msgorig"> + <span class="msgorig-title"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'msgset'"/> + <xsl:with-param name="name" select="'MsgOrig'"/> + </xsl:call-template> + </span> + <xsl:apply-templates/> + </div> + </xsl:when> + <xsl:otherwise> + <p> + <b> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'msgset'"/> + <xsl:with-param name="name" select="'MsgOrig'"/> + </xsl:call-template> + </b> + <xsl:apply-templates/> + </p> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="msgaud"> + <xsl:choose> + <xsl:when test="$make.clean.html != 0"> + <div class="msgaud"> + <span class="msgaud-title"> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'msgset'"/> + <xsl:with-param name="name" select="'MsgAud'"/> + </xsl:call-template> + </span> + <xsl:apply-templates/> + </div> + </xsl:when> + <xsl:otherwise> + <p> + <b> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'msgset'"/> + <xsl:with-param name="name" select="'MsgAud'"/> + </xsl:call-template> + </b> + <xsl:apply-templates/> + </p> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="msgexplan"> + <xsl:call-template name="block.object"/> +</xsl:template> + +<xsl:template match="msgexplan/title"> + <xsl:choose> + <xsl:when test="$make.clean.html != 0"> + <div class="msgexplan"> + <span class="msgexplan-title"> + <xsl:apply-templates/> + </span> + </div> + </xsl:when> + <xsl:otherwise> + <p> + <b> + <xsl:apply-templates/> + </b> + </p> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="revhistory"> + <div> + <xsl:call-template name="common.html.attributes"/> + <table border="0" width="100%" summary="Revision history"> + <tr> + <th align="{$direction.align.start}" valign="top" colspan="3"> + <b> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'RevHistory'"/> + </xsl:call-template> + </b> + </th> + </tr> + <xsl:apply-templates/> + </table> + </div> +</xsl:template> + +<xsl:template match="revhistory/revision"> + <xsl:variable name="revnumber" select="revnumber"/> + <xsl:variable name="revdate" select="date"/> + <xsl:variable name="revauthor" select="authorinitials|author"/> + <xsl:variable name="revremark" select="revremark|revdescription"/> + <tr> + <td align="{$direction.align.start}"> + <xsl:if test="$revnumber"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Revision'"/> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:apply-templates select="$revnumber"/> + </xsl:if> + </td> + <td align="{$direction.align.start}"> + <xsl:apply-templates select="$revdate"/> + </td> + <xsl:choose> + <xsl:when test="count($revauthor)=0"> + <td align="{$direction.align.start}"> + <xsl:call-template name="dingbat"> + <xsl:with-param name="dingbat">nbsp</xsl:with-param> + </xsl:call-template> + </td> + </xsl:when> + <xsl:otherwise> + <td align="{$direction.align.start}"> + <xsl:for-each select="$revauthor"> + <xsl:apply-templates select="."/> + <xsl:if test="position() != last()"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + </td> + </xsl:otherwise> + </xsl:choose> + </tr> + <xsl:if test="$revremark"> + <tr> + <td align="{$direction.align.start}" colspan="3"> + <xsl:apply-templates select="$revremark"/> + </td> + </tr> + </xsl:if> +</xsl:template> + +<xsl:template match="revision/revnumber"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/date"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/authorinitials"> + <xsl:text>, </xsl:text> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/authorinitials[1]" priority="2"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/revremark"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="revision/revdescription"> + <xsl:apply-templates/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="ackno|acknowledgements[parent::article]"> + <xsl:call-template name="block.object"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="highlights"> + <xsl:call-template name="block.object"/> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/callout.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/callout.xsl new file mode 100644 index 000000000..88a9bd0c2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/callout.xsl @@ -0,0 +1,201 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" + xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim" + xmlns:lxslt="http://xml.apache.org/xslt" + exclude-result-prefixes="sverb xverb lxslt" + version='1.0'> + +<!-- ******************************************************************** + $Id: callout.xsl 8421 2009-05-04 07:49:49Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<lxslt:component prefix="xverb" + functions="insertCallouts"/> + +<xsl:template match="programlistingco|screenco"> + <xsl:variable name="verbatim" select="programlisting|screen"/> + + <xsl:choose> + <xsl:when test="$use.extensions != '0' + and $callouts.extension != '0'"> + <xsl:variable name="rtf"> + <xsl:apply-templates select="$verbatim"> + <xsl:with-param name="suppress-numbers" select="'1'"/> + </xsl:apply-templates> + </xsl:variable> + + <xsl:variable name="rtf-with-callouts"> + <xsl:choose> + <xsl:when test="function-available('sverb:insertCallouts')"> + <xsl:copy-of select="sverb:insertCallouts(areaspec,$rtf)"/> + </xsl:when> + <xsl:when test="function-available('xverb:insertCallouts')"> + <xsl:copy-of select="xverb:insertCallouts(areaspec,$rtf)"/> + </xsl:when> + <xsl:otherwise> + <xsl:message terminate="yes"> + <xsl:text>No insertCallouts function is available.</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$verbatim/@linenumbering = 'numbered' + and $linenumbering.extension != '0'"> + <div> + <xsl:call-template name="common.html.attributes"/> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf" select="$rtf-with-callouts"/> + <xsl:with-param name="pi.context" + select="programlisting|screen"/> + </xsl:call-template> + <xsl:apply-templates select="calloutlist"/> + </div> + </xsl:when> + <xsl:otherwise> + <div> + <xsl:call-template name="common.html.attributes"/> + <xsl:copy-of select="$rtf-with-callouts"/> + <xsl:apply-templates select="calloutlist"/> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates/> + </div> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="areaspec|areaset|area"> +</xsl:template> + +<xsl:template match="areaset" mode="conumber"> + <xsl:number count="area|areaset" format="1"/> +</xsl:template> + +<xsl:template match="area" mode="conumber"> + <xsl:number count="area|areaset" format="1"/> +</xsl:template> + +<xsl:template match="co" name="co"> + <!-- Support a single linkend in HTML --> + <xsl:variable name="targets" select="key('id', @linkends)"/> + <xsl:variable name="target" select="$targets[1]"/> + <xsl:choose> + <xsl:when test="$target"> + <a> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="@id or @xml:id"> + <xsl:attribute name="name"> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:attribute> + </xsl:if> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$target"/> + </xsl:call-template> + </xsl:attribute> + <xsl:apply-templates select="." mode="callout-bug"/> + </a> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="anchor"/> + <xsl:apply-templates select="." mode="callout-bug"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="coref"> + <!-- tricky; this relies on the fact that we can process the "co" that's --> + <!-- "over there" as if it were "right here" --> + + <xsl:variable name="co" select="key('id', @linkend)"/> + <xsl:choose> + <xsl:when test="not($co)"> + <xsl:message> + <xsl:text>Error: coref link is broken: </xsl:text> + <xsl:value-of select="@linkend"/> + </xsl:message> + </xsl:when> + <xsl:when test="local-name($co) != 'co'"> + <xsl:message> + <xsl:text>Error: coref doesn't point to a co: </xsl:text> + <xsl:value-of select="@linkend"/> + </xsl:message> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$co"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="co" mode="callout-bug"> + <xsl:call-template name="callout-bug"> + <xsl:with-param name="conum"> + <xsl:number count="co" + level="any" + from="programlisting|screen|literallayout|synopsis" + format="1"/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template name="callout-bug"> + <xsl:param name="conum" select='1'/> + + <xsl:choose> + <xsl:when test="$callout.graphics != 0 + and $conum <= $callout.graphics.number.limit"> + <img src="{$callout.graphics.path}{$conum}{$callout.graphics.extension}" + alt="{$conum}" border="0"/> + </xsl:when> + <xsl:when test="$callout.unicode != 0 + and $conum <= $callout.unicode.number.limit"> + <xsl:choose> + <xsl:when test="$callout.unicode.start.character = 10102"> + <xsl:choose> + <xsl:when test="$conum = 1">❶</xsl:when> + <xsl:when test="$conum = 2">❷</xsl:when> + <xsl:when test="$conum = 3">❸</xsl:when> + <xsl:when test="$conum = 4">❹</xsl:when> + <xsl:when test="$conum = 5">❺</xsl:when> + <xsl:when test="$conum = 6">❻</xsl:when> + <xsl:when test="$conum = 7">❼</xsl:when> + <xsl:when test="$conum = 8">❽</xsl:when> + <xsl:when test="$conum = 9">❾</xsl:when> + <xsl:when test="$conum = 10">❿</xsl:when> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Don't know how to generate Unicode callouts </xsl:text> + <xsl:text>when $callout.unicode.start.character is </xsl:text> + <xsl:value-of select="$callout.unicode.start.character"/> + </xsl:message> + <xsl:text>(</xsl:text> + <xsl:value-of select="$conum"/> + <xsl:text>)</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:text>(</xsl:text> + <xsl:value-of select="$conum"/> + <xsl:text>)</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/changebars.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/changebars.xsl new file mode 100644 index 000000000..dae1cc32c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/changebars.xsl @@ -0,0 +1,121 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.0"> + +<!-- ******************************************************************** + $Id: changebars.xsl 8128 2008-09-29 17:16:10Z mzjn $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> +<xsl:import href="docbook.xsl"/> + +<xsl:param name="show.revisionflag" select="'1'"/> + +<xsl:template name="system.head.content"> +<xsl:param name="node" select="."/> + +<style type="text/css"> +<xsl:text> +div.added { background-color: #ffff99; + text-decoration: underline; } +div.deleted { text-decoration: line-through; + background-color: #FF7F7F; } +div.changed { background-color: #99ff99; } +div.off { } + +span.added { background-color: #ffff99; + text-decoration: underline; } +span.deleted { text-decoration: line-through; + background-color: #FF7F7F; } +span.changed { background-color: #99ff99; } +span.off { } +</xsl:text> +</style> +</xsl:template> + +<xsl:template match="*[@revisionflag]"> + <xsl:call-template name="block.or.inline.revision"/> +</xsl:template> + +<xsl:template name="block.or.inline.revision"> + <xsl:param name="revisionflag" select="@revisionflag"/> + + <xsl:choose> + <xsl:when test="local-name(.) = 'para' + or local-name(.) = 'formalpara' + or local-name(.) = 'simpara' + or local-name(.) = 'simplesect' + or local-name(.) = 'section' + or local-name(.) = 'sect1' + or local-name(.) = 'sect2' + or local-name(.) = 'sect3' + or local-name(.) = 'sect4' + or local-name(.) = 'sect5' + or local-name(.) = 'chapter' + or local-name(.) = 'preface' + or local-name(.) = 'itemizedlist' + or local-name(.) = 'orderedlist' + or local-name(.) = 'variablelist' + or local-name(.) = 'varlistentry' + or local-name(.) = 'informaltable' + or local-name(.) = 'informalexample' + or local-name(.) = 'note' + or local-name(.) = 'example' + or local-name(.) = 'mediaobject' + or local-name(.) = 'sidebar' + or local-name(.) = 'glossary' + or local-name(.) = 'glossentry' + or local-name(.) = 'bibliography' + or local-name(.) = 'index' + or local-name(.) = 'appendix'"> + <div class='{$revisionflag}'> + <xsl:apply-imports/> + </div> + </xsl:when> + <xsl:when test="local-name(.) = 'phrase' + or local-name(.) = 'ulink' + or local-name(.) = 'link' + or local-name(.) = 'olink' + or local-name(.) = 'inlinemediaobject' + or local-name(.) = 'filename' + or local-name(.) = 'literal' + or local-name(.) = 'member' + or local-name(.) = 'term' + or local-name(.) = 'guilabel' + or local-name(.) = 'glossterm' + or local-name(.) = 'sgmltag' + or local-name(.) = 'tag' + or local-name(.) = 'quote' + or local-name(.) = 'emphasis' + or local-name(.) = 'command' + or local-name(.) = 'xref'"> + <span class='{$revisionflag}'> + <xsl:apply-imports/> + </span> + </xsl:when> + <xsl:when test="local-name(.) = 'listitem' + or local-name(.) = 'entry' + or local-name(.) = 'title'"> + <!-- nop; these are handled directly in the stylesheet --> + <xsl:apply-imports/> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Revisionflag on unexpected element: </xsl:text> + <xsl:value-of select="local-name(.)"/> + <xsl:text> (Assuming block)</xsl:text> + </xsl:message> + <div class='{$revisionflag}'> + <xsl:apply-imports/> + </div> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-changebars.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-changebars.xsl new file mode 100644 index 000000000..6bfd3c079 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-changebars.xsl @@ -0,0 +1,99 @@ +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" + version="1.0" + exclude-result-prefixes="exsl cf"> + +<!-- ******************************************************************** + $Id: chunk-changebars.xsl 8399 2009-04-08 07:37:42Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- This file is a variant of chunk.xsl, to be used for generating chunked + output with highlighting based on change markup. --> + +<xsl:import href="changebars.xsl"/> +<xsl:import href="chunk-common.xsl"/> + +<!-- This customization of "process-chunk-element" is needed in order to make change + highlighting be inherited by chunked children of an element with change markup. --> +<xsl:template name="process-chunk-element"> + <xsl:param name="content"> + <xsl:choose> + + <xsl:when test="ancestor-or-self::*[@revisionflag] and $show.revisionflag != 0"> + <xsl:variable name="revisionflag" select="ancestor-or-self::*[@revisionflag][1]/@revisionflag" /> + <xsl:call-template name="block.or.inline.revision"> + <xsl:with-param name="revisionflag" select="$revisionflag"/> + </xsl:call-template> + </xsl:when> + + <xsl:otherwise> + <xsl:apply-imports/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + + <xsl:choose> + <xsl:when test="$chunk.fast != 0 and $exsl.node.set.available != 0"> + <xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/> + <xsl:variable name="genid" select="generate-id()"/> + + <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/> + + <xsl:variable name="prevdiv" + select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/> + <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/> + + <xsl:variable name="nextdiv" + select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/> + <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/> + + <xsl:choose> + <xsl:when test="$onechunk != 0 and parent::*"> + <xsl:copy-of select="$content"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="process-chunk"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$onechunk != 0 and not(parent::*)"> + <xsl:call-template name="chunk-all-sections"> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$onechunk != 0"> + <xsl:copy-of select="$content"/> + </xsl:when> + <xsl:when test="$chunk.first.sections = 0"> + <xsl:call-template name="chunk-first-section-with-parent"> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="chunk-all-sections"> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:include href="chunk-code.xsl"/> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-code.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-code.xsl new file mode 100644 index 000000000..694e9fe8c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-code.xsl @@ -0,0 +1,674 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" + xmlns:ng="http://docbook.org/docbook-ng" + xmlns:db="http://docbook.org/ns/docbook" + exclude-result-prefixes="exsl cf ng db" + version="1.0"> + +<!-- ******************************************************************** + $Id: chunk-code.xsl 8596 2010-03-20 04:36:45Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + + +<xsl:template match="*" mode="chunk-filename"> + <!-- returns the filename of a chunk --> + <xsl:variable name="ischunk"> + <xsl:call-template name="chunk"/> + </xsl:variable> + + <xsl:variable name="fn"> + <xsl:apply-templates select="." mode="recursive-chunk-filename"/> + </xsl:variable> + + <!-- + <xsl:message> + <xsl:value-of select="$ischunk"/> + <xsl:text> (</xsl:text> + <xsl:value-of select="local-name(.)"/> + <xsl:text>) </xsl:text> + <xsl:value-of select="$fn"/> + <xsl:text>, </xsl:text> + <xsl:call-template name="dbhtml-dir"/> + </xsl:message> + --> + + <!-- 2003-11-25 by ndw: + The following test used to read test="$ischunk != 0 and $fn != ''" + I've removed the ischunk part of the test so that href.to.uri and + href.from.uri will be fully qualified even if the source or target + isn't a chunk. I *think* that if $fn != '' then it's appropriate + to put the directory on the front, even if the element isn't a + chunk. I could be wrong. --> + + <xsl:if test="$fn != ''"> + <xsl:call-template name="dbhtml-dir"/> + </xsl:if> + + <xsl:value-of select="$fn"/> + <!-- You can't add the html.ext here because dbhtml filename= may already --> + <!-- have added it. It really does have to be handled in the recursive template --> +</xsl:template> + +<xsl:template match="*" mode="recursive-chunk-filename"> + <xsl:param name="recursive" select="false()"/> + + <!-- returns the filename of a chunk --> + <xsl:variable name="ischunk"> + <xsl:call-template name="chunk"/> + </xsl:variable> + + <xsl:variable name="dbhtml-filename"> + <xsl:call-template name="pi.dbhtml_filename"/> + </xsl:variable> + + <xsl:variable name="filename"> + <xsl:choose> + <xsl:when test="$dbhtml-filename != ''"> + <xsl:value-of select="$dbhtml-filename"/> + </xsl:when> + <!-- if this is the root element, use the root.filename --> + <xsl:when test="not(parent::*) and $root.filename != ''"> + <xsl:value-of select="$root.filename"/> + <xsl:value-of select="$html.ext"/> + </xsl:when> + <!-- Special case --> + <xsl:when test="self::legalnotice and not($generate.legalnotice.link = 0)"> + <xsl:choose> + <xsl:when test="(@id or @xml:id) and not($use.id.as.filename = 0)"> + <!-- * if this legalnotice has an ID, then go ahead and use --> + <!-- * just the value of that ID as the basename for the file --> + <!-- * (that is, without prepending an "ln-" too it) --> + <xsl:value-of select="(@id|@xml:id)[1]"/> + <xsl:value-of select="$html.ext"/> + </xsl:when> + <xsl:otherwise> + <!-- * otherwise, if this legalnotice does not have an ID, --> + <!-- * then we generate an ID... --> + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + <!-- * ...and then we take that generated ID, prepend an --> + <!-- * "ln-" to it, and use that as the basename for the file --> + <xsl:value-of select="concat('ln-',$id,$html.ext)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <!-- if there's no dbhtml filename, and if we're to use IDs as --> + <!-- filenames, then use the ID to generate the filename. --> + <xsl:when test="(@id or @xml:id) and $use.id.as.filename != 0"> + <xsl:value-of select="(@id|@xml:id)[1]"/> + <xsl:value-of select="$html.ext"/> + </xsl:when> + <xsl:otherwise></xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$ischunk='0'"> + <!-- if called on something that isn't a chunk, walk up... --> + <xsl:choose> + <xsl:when test="count(parent::*)>0"> + <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> + <xsl:with-param name="recursive" select="$recursive"/> + </xsl:apply-templates> + </xsl:when> + <!-- unless there is no up, in which case return "" --> + <xsl:otherwise></xsl:otherwise> + </xsl:choose> + </xsl:when> + + <xsl:when test="not($recursive) and $filename != ''"> + <!-- if this chunk has an explicit name, use it --> + <xsl:value-of select="$filename"/> + </xsl:when> + + <xsl:when test="self::set"> + <xsl:value-of select="$root.filename"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:when test="self::book"> + <xsl:text>bk</xsl:text> + <xsl:number level="any" format="01"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:when test="self::article"> + <xsl:if test="/set"> + <!-- in a set, make sure we inherit the right book info... --> + <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + </xsl:if> + + <xsl:text>ar</xsl:text> + <xsl:number level="any" format="01" from="book"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:when test="self::preface"> + <xsl:if test="/set"> + <!-- in a set, make sure we inherit the right book info... --> + <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + </xsl:if> + + <xsl:text>pr</xsl:text> + <xsl:number level="any" format="01" from="book"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:when test="self::chapter"> + <xsl:if test="/set"> + <!-- in a set, make sure we inherit the right book info... --> + <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + </xsl:if> + + <xsl:text>ch</xsl:text> + <xsl:number level="any" format="01" from="book"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:when test="self::appendix"> + <xsl:if test="/set"> + <!-- in a set, make sure we inherit the right book info... --> + <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + </xsl:if> + + <xsl:text>ap</xsl:text> + <xsl:number level="any" format="a" from="book"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:when test="self::part"> + <xsl:choose> + <xsl:when test="/set"> + <!-- in a set, make sure we inherit the right book info... --> + <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + </xsl:otherwise> + </xsl:choose> + + <xsl:text>pt</xsl:text> + <xsl:number level="any" format="01" from="book"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:when test="self::reference"> + <xsl:choose> + <xsl:when test="/set"> + <!-- in a set, make sure we inherit the right book info... --> + <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + </xsl:otherwise> + </xsl:choose> + + <xsl:text>rn</xsl:text> + <xsl:number level="any" format="01" from="book"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:when test="self::refentry"> + <xsl:choose> + <xsl:when test="parent::reference"> + <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:if test="/set"> + <!-- in a set, make sure we inherit the right book info... --> + <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + + <xsl:text>re</xsl:text> + <xsl:number level="any" format="01" from="book"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:when test="self::colophon"> + <xsl:choose> + <xsl:when test="/set"> + <!-- in a set, make sure we inherit the right book info... --> + <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + </xsl:otherwise> + </xsl:choose> + + <xsl:text>co</xsl:text> + <xsl:number level="any" format="01" from="book"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:when test="self::sect1 + or self::sect2 + or self::sect3 + or self::sect4 + or self::sect5 + or self::section"> + <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + <xsl:text>s</xsl:text> + <xsl:number format="01"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:when test="self::bibliography"> + <xsl:choose> + <xsl:when test="/set"> + <!-- in a set, make sure we inherit the right book info... --> + <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + </xsl:otherwise> + </xsl:choose> + + <xsl:text>bi</xsl:text> + <xsl:number level="any" format="01" from="book"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:when test="self::glossary"> + <xsl:choose> + <xsl:when test="/set"> + <!-- in a set, make sure we inherit the right book info... --> + <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + </xsl:otherwise> + </xsl:choose> + + <xsl:text>go</xsl:text> + <xsl:number level="any" format="01" from="book"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:when test="self::index"> + <xsl:choose> + <xsl:when test="/set"> + <!-- in a set, make sure we inherit the right book info... --> + <xsl:apply-templates mode="recursive-chunk-filename" select="parent::*"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + </xsl:otherwise> + </xsl:choose> + + <xsl:text>ix</xsl:text> + <xsl:number level="any" format="01" from="book"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:when test="self::setindex"> + <xsl:text>si</xsl:text> + <xsl:number level="any" format="01" from="set"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:when> + + <xsl:otherwise> + <xsl:text>chunk-filename-error-</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:number level="any" format="01" from="set"/> + <xsl:if test="not($recursive)"> + <xsl:value-of select="$html.ext"/> + </xsl:if> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + + + +<xsl:template match="processing-instruction('dbhtml')"> + <!-- nop --> +</xsl:template> + +<!-- ==================================================================== --> + + +<xsl:template match="*" mode="find.chunks"> + <xsl:variable name="chunk"> + <xsl:call-template name="chunk"/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$chunk != 0"> + <cf:div id="{generate-id()}"> + <xsl:apply-templates select="." mode="class.attribute"/> + <xsl:apply-templates select="*" mode="find.chunks"/> + </cf:div> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="*" mode="find.chunks"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="/"> + <!-- * Get a title for current doc so that we let the user --> + <!-- * know what document we are processing at this point. --> + <xsl:variable name="doc.title"> + <xsl:call-template name="get.doc.title"/> + </xsl:variable> + <xsl:choose> + <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document, + toss the namespace and continue. Use the docbook5 namespaced + stylesheets for DocBook5 if you don't want to use this feature.--> + <xsl:when test="$exsl.node.set.available != 0 + and (*/self::ng:* or */self::db:*)"> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$doc.title"/> + <xsl:with-param name="context-desc"> + <xsl:text>namesp. cut</xsl:text> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>stripped namespace before processing</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:variable name="nons"> + <xsl:apply-templates mode="stripNS"/> + </xsl:variable> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$doc.title"/> + <xsl:with-param name="context-desc"> + <xsl:text>namesp. cut</xsl:text> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>processing stripped document</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:apply-templates select="exsl:node-set($nons)"/> + </xsl:when> + <!-- Can't process unless namespace removed --> + <xsl:when test="*/self::ng:* or */self::db:*"> + <xsl:message terminate="yes"> + <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text> + <xsl:text> cannot proceed.</xsl:text> + </xsl:message> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:choose> + <xsl:when test="count(key('id',$rootid)) = 0"> + <xsl:message terminate="yes"> + <xsl:text>ID '</xsl:text> + <xsl:value-of select="$rootid"/> + <xsl:text>' not found in document.</xsl:text> + </xsl:message> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$collect.xref.targets = 'yes' or + $collect.xref.targets = 'only'"> + <xsl:apply-templates select="key('id', $rootid)" + mode="collect.targets"/> + </xsl:if> + <xsl:if test="$collect.xref.targets != 'only'"> + <xsl:apply-templates select="key('id',$rootid)" + mode="process.root"/> + <xsl:if test="$tex.math.in.alt != ''"> + <xsl:apply-templates select="key('id',$rootid)" + mode="collect.tex.math"/> + </xsl:if> + <xsl:if test="$generate.manifest != 0"> + <xsl:call-template name="generate.manifest"> + <xsl:with-param name="node" select="key('id',$rootid)"/> + </xsl:call-template> + </xsl:if> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$collect.xref.targets = 'yes' or + $collect.xref.targets = 'only'"> + <xsl:apply-templates select="/" mode="collect.targets"/> + </xsl:if> + <xsl:if test="$collect.xref.targets != 'only'"> + <xsl:apply-templates select="/" mode="process.root"/> + <xsl:if test="$tex.math.in.alt != ''"> + <xsl:apply-templates select="/" mode="collect.tex.math"/> + </xsl:if> + <xsl:if test="$generate.manifest != 0"> + <xsl:call-template name="generate.manifest"> + <xsl:with-param name="node" select="/"/> + </xsl:call-template> + </xsl:if> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="process.root"> + <xsl:apply-templates select="."/> + <xsl:call-template name="generate.css"/> +</xsl:template> + +<!-- ====================================================================== --> + +<xsl:template match="set|book|part|preface|chapter|appendix + |article + |reference|refentry + |book/glossary|article/glossary|part/glossary + |book/bibliography|article/bibliography|part/bibliography + |colophon"> + <xsl:choose> + <xsl:when test="$onechunk != 0 and parent::*"> + <xsl:apply-imports/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="process-chunk-element"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="sect1|sect2|sect3|sect4|sect5|section"> + <xsl:variable name="ischunk"> + <xsl:call-template name="chunk"/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="not(parent::*)"> + <xsl:call-template name="process-chunk-element"/> + </xsl:when> + <xsl:when test="$ischunk = 0"> + <xsl:apply-imports/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="process-chunk-element"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="setindex + |book/index + |article/index + |part/index"> + <!-- some implementations use completely empty index tags to indicate --> + <!-- where an automatically generated index should be inserted. so --> + <!-- if the index is completely empty, skip it. --> + <xsl:if test="count(*)>0 or $generate.index != '0'"> + <xsl:call-template name="process-chunk-element"/> + </xsl:if> +</xsl:template> + +<!-- Resolve xml:base attributes --> +<xsl:template match="@fileref"> + <!-- need a check for absolute urls --> + <xsl:choose> + <xsl:when test="contains(., ':')"> + <!-- it has a uri scheme so it is an absolute uri --> + <xsl:value-of select="."/> + </xsl:when> + <xsl:when test="$keep.relative.image.uris != 0"> + <!-- leave it alone --> + <xsl:value-of select="."/> + </xsl:when> + <xsl:otherwise> + <!-- its a relative uri --> + <xsl:call-template name="relative-uri"> + <xsl:with-param name="destdir"> + <xsl:call-template name="dbhtml-dir"> + <xsl:with-param name="context" select=".."/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> +<xsl:template match="set|book|part|preface|chapter|appendix + |article + |reference|refentry + |sect1|sect2|sect3|sect4|sect5 + |section + |book/glossary|article/glossary|part/glossary + |book/bibliography|article/bibliography|part/bibliography + |colophon" + mode="enumerate-files"> + <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable> + <xsl:if test="$ischunk='1'"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir"> + <xsl:if test="$manifest.in.base.dir = 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + </xsl:with-param> + <xsl:with-param name="base.name"> + <xsl:apply-templates mode="chunk-filename" select="."/> + </xsl:with-param> + </xsl:call-template> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates select="*" mode="enumerate-files"/> +</xsl:template> + +<xsl:template match="book/index|article/index|part/index" + mode="enumerate-files"> + <xsl:if test="$htmlhelp.output != 1"> + <xsl:variable name="ischunk"><xsl:call-template name="chunk"/></xsl:variable> + <xsl:if test="$ischunk='1'"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir"> + <xsl:if test="$manifest.in.base.dir = 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + </xsl:with-param> + <xsl:with-param name="base.name"> + <xsl:apply-templates mode="chunk-filename" select="."/> + </xsl:with-param> + </xsl:call-template> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates select="*" mode="enumerate-files"/> + </xsl:if> +</xsl:template> + +<xsl:template match="legalnotice" mode="enumerate-files"> + <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + <xsl:if test="$generate.legalnotice.link != 0"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir"> + <xsl:if test="$manifest.in.base.dir = 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + </xsl:with-param> + <xsl:with-param name="base.name"> + <xsl:apply-templates mode="chunk-filename" select="."/> + </xsl:with-param> + </xsl:call-template> + <xsl:text> </xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template match="mediaobject[imageobject] | inlinemediaobject[imageobject]" mode="enumerate-files"> + <xsl:variable name="longdesc.uri"> + <xsl:call-template name="longdesc.uri"> + <xsl:with-param name="mediaobject" + select="."/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="mediaobject" select="."/> + + <xsl:if test="$html.longdesc != 0 and $mediaobject/textobject[not(phrase)]"> + <xsl:call-template name="longdesc.uri"> + <xsl:with-param name="mediaobject" select="$mediaobject"/> + </xsl:call-template> + <xsl:text> </xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template match="text()" mode="enumerate-files"> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-common.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-common.xsl new file mode 100644 index 000000000..0ea2df56b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk-common.xsl @@ -0,0 +1,1920 @@ +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" + xmlns:ng="http://docbook.org/docbook-ng" + xmlns:db="http://docbook.org/ns/docbook" + version="1.0" + exclude-result-prefixes="exsl cf ng db"> + +<!-- ******************************************************************** + $Id: chunk-common.xsl 8551 2009-12-07 06:03:50Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:param name="onechunk" select="0"/> +<xsl:param name="refentry.separator" select="0"/> +<xsl:param name="chunk.fast" select="0"/> + +<xsl:key name="genid" match="*" use="generate-id()"/> + +<!-- ==================================================================== --> + +<xsl:variable name="chunk.hierarchy"> + <xsl:if test="$chunk.fast != 0"> + <xsl:choose> + <xsl:when test="$exsl.node.set.available != 0"> + <xsl:message>Computing chunks...</xsl:message> + <xsl:apply-templates select="/*" mode="find.chunks"/> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Fast chunking requires exsl:node-set(). </xsl:text> + <xsl:text>Using "slow" chunking.</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:if> +</xsl:variable> + +<!-- ==================================================================== --> + +<xsl:template name="process-chunk-element"> + <xsl:param name="content"> + <xsl:apply-imports/> + </xsl:param> + + <xsl:choose> + <xsl:when test="$chunk.fast != 0 and $exsl.node.set.available != 0"> + <xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/> + <xsl:variable name="genid" select="generate-id()"/> + + <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/> + + <xsl:variable name="prevdiv" + select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/> + <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/> + + <xsl:variable name="nextdiv" + select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/> + <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/> + + <xsl:choose> + <xsl:when test="$onechunk != 0 and parent::*"> + <xsl:copy-of select="$content"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="process-chunk"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$onechunk != 0 and not(parent::*)"> + <xsl:call-template name="chunk-all-sections"> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$onechunk != 0"> + <xsl:copy-of select="$content"/> + </xsl:when> + <xsl:when test="$chunk.first.sections = 0"> + <xsl:call-template name="chunk-first-section-with-parent"> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="chunk-all-sections"> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="process-chunk"> + <xsl:param name="prev" select="."/> + <xsl:param name="next" select="."/> + <xsl:param name="content"> + <xsl:apply-imports/> + </xsl:param> + + <xsl:variable name="ischunk"> + <xsl:call-template name="chunk"/> + </xsl:variable> + + <xsl:variable name="chunkfn"> + <xsl:if test="$ischunk='1'"> + <xsl:apply-templates mode="chunk-filename" select="."/> + </xsl:if> + </xsl:variable> + + <xsl:if test="$ischunk='0'"> + <xsl:message> + <xsl:text>Error </xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:text> is not a chunk!</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:variable name="filename"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir" select="$base.dir"/> + <xsl:with-param name="base.name" select="$chunkfn"/> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename" select="$filename"/> + <xsl:with-param name="content"> + <xsl:call-template name="chunk-element-content"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + </xsl:with-param> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="chunk-first-section-with-parent"> + <xsl:param name="content"> + <xsl:apply-imports/> + </xsl:param> + + <!-- These xpath expressions are really hairy. The trick is to pick sections --> + <!-- that are not first children and are not the children of first children --> + + <!-- Break these variables into pieces to work around + http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6063 --> + + <xsl:variable name="prev-v1" + select="(ancestor::sect1[$chunk.section.depth > 0 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect1][1] + + |ancestor::sect2[$chunk.section.depth > 1 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect2 + and parent::sect1[preceding-sibling::sect1]][1] + + |ancestor::sect3[$chunk.section.depth > 2 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect3 + and parent::sect2[preceding-sibling::sect2] + and ancestor::sect1[preceding-sibling::sect1]][1] + + |ancestor::sect4[$chunk.section.depth > 3 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect4 + and parent::sect3[preceding-sibling::sect3] + and ancestor::sect2[preceding-sibling::sect2] + and ancestor::sect1[preceding-sibling::sect1]][1] + + |ancestor::sect5[$chunk.section.depth > 4 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect5 + and parent::sect4[preceding-sibling::sect4] + and ancestor::sect3[preceding-sibling::sect3] + and ancestor::sect2[preceding-sibling::sect2] + and ancestor::sect1[preceding-sibling::sect1]][1] + + |ancestor::section[$chunk.section.depth > count(ancestor::section) + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and not(ancestor::section[not(preceding-sibling::section)])][1])[last()]"/> + + <xsl:variable name="prev-v2" + select="(preceding::sect1[$chunk.section.depth > 0 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect1][1] + + |preceding::sect2[$chunk.section.depth > 1 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect2 + and parent::sect1[preceding-sibling::sect1]][1] + + |preceding::sect3[$chunk.section.depth > 2 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect3 + and parent::sect2[preceding-sibling::sect2] + and ancestor::sect1[preceding-sibling::sect1]][1] + + |preceding::sect4[$chunk.section.depth > 3 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect4 + and parent::sect3[preceding-sibling::sect3] + and ancestor::sect2[preceding-sibling::sect2] + and ancestor::sect1[preceding-sibling::sect1]][1] + + |preceding::sect5[$chunk.section.depth > 4 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect5 + and parent::sect4[preceding-sibling::sect4] + and ancestor::sect3[preceding-sibling::sect3] + and ancestor::sect2[preceding-sibling::sect2] + and ancestor::sect1[preceding-sibling::sect1]][1] + + |preceding::section[$chunk.section.depth > count(ancestor::section) + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::section + and not(ancestor::section[not(preceding-sibling::section)])][1])[last()]"/> + + <xsl:variable name="prev" + select="(preceding::book[1] + |preceding::preface[1] + |preceding::chapter[1] + |preceding::appendix[1] + |preceding::part[1] + |preceding::reference[1] + |preceding::refentry[1] + |preceding::colophon[1] + |preceding::article[1] + |preceding::bibliography[parent::article or parent::book or parent::part][1] + |preceding::glossary[parent::article or parent::book or parent::part][1] + |preceding::index[$generate.index != 0] + [parent::article or parent::book or parent::part][1] + |preceding::setindex[$generate.index != 0][1] + |ancestor::set + |ancestor::book[1] + |ancestor::preface[1] + |ancestor::chapter[1] + |ancestor::appendix[1] + |ancestor::part[1] + |ancestor::reference[1] + |ancestor::article[1] + |$prev-v1 + |$prev-v2)[last()]"/> + + <xsl:variable name="next-v1" + select="(following::sect1[$chunk.section.depth > 0 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect1][1] + + |following::sect2[$chunk.section.depth > 1 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect2 + and parent::sect1[preceding-sibling::sect1]][1] + + |following::sect3[$chunk.section.depth > 2 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect3 + and parent::sect2[preceding-sibling::sect2] + and ancestor::sect1[preceding-sibling::sect1]][1] + + |following::sect4[$chunk.section.depth > 3 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect4 + and parent::sect3[preceding-sibling::sect3] + and ancestor::sect2[preceding-sibling::sect2] + and ancestor::sect1[preceding-sibling::sect1]][1] + + |following::sect5[$chunk.section.depth > 4 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect5 + and parent::sect4[preceding-sibling::sect4] + and ancestor::sect3[preceding-sibling::sect3] + and ancestor::sect2[preceding-sibling::sect2] + and ancestor::sect1[preceding-sibling::sect1]][1] + + |following::section[$chunk.section.depth > count(ancestor::section) + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::section + and not(ancestor::section[not(preceding-sibling::section)])][1])[1]"/> + + <xsl:variable name="next-v2" + select="(descendant::sect1[$chunk.section.depth > 0 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect1][1] + + |descendant::sect2[$chunk.section.depth > 1 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect2 + and parent::sect1[preceding-sibling::sect1]][1] + + |descendant::sect3[$chunk.section.depth > 2 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect3 + and parent::sect2[preceding-sibling::sect2] + and ancestor::sect1[preceding-sibling::sect1]][1] + + |descendant::sect4[$chunk.section.depth > 3 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect4 + and parent::sect3[preceding-sibling::sect3] + and ancestor::sect2[preceding-sibling::sect2] + and ancestor::sect1[preceding-sibling::sect1]][1] + + |descendant::sect5[$chunk.section.depth > 4 + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::sect5 + and parent::sect4[preceding-sibling::sect4] + and ancestor::sect3[preceding-sibling::sect3] + and ancestor::sect2[preceding-sibling::sect2] + and ancestor::sect1[preceding-sibling::sect1]][1] + + |descendant::section[$chunk.section.depth > count(ancestor::section) + and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking']) + and preceding-sibling::section + and not(ancestor::section[not(preceding-sibling::section)])])[1]"/> + + <xsl:variable name="next" + select="(following::book[1] + |following::preface[1] + |following::chapter[1] + |following::appendix[1] + |following::part[1] + |following::reference[1] + |following::refentry[1] + |following::colophon[1] + |following::bibliography[parent::article or parent::book or parent::part][1] + |following::glossary[parent::article or parent::book or parent::part][1] + |following::index[$generate.index != 0] + [parent::article or parent::book or parent::part][1] + |following::article[1] + |following::setindex[$generate.index != 0][1] + |descendant::book[1] + |descendant::preface[1] + |descendant::chapter[1] + |descendant::appendix[1] + |descendant::article[1] + |descendant::bibliography[parent::article or parent::book or parent::part][1] + |descendant::glossary[parent::article or parent::book or parent::part][1] + |descendant::index[$generate.index != 0] + [parent::article or parent::book or parent::part][1] + |descendant::colophon[1] + |descendant::setindex[$generate.index != 0][1] + |descendant::part[1] + |descendant::reference[1] + |descendant::refentry[1] + |$next-v1 + |$next-v2)[1]"/> + + <xsl:call-template name="process-chunk"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="chunk-all-sections"> + <xsl:param name="content"> + <xsl:apply-imports/> + </xsl:param> + + <xsl:variable name="prev-v1" + select="(preceding::sect1[$chunk.section.depth > 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |preceding::sect2[$chunk.section.depth > 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |preceding::sect3[$chunk.section.depth > 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |preceding::sect4[$chunk.section.depth > 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |preceding::sect5[$chunk.section.depth > 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |preceding::section[$chunk.section.depth > count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[last()]"/> + + <xsl:variable name="prev-v2" + select="(ancestor::sect1[$chunk.section.depth > 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |ancestor::sect2[$chunk.section.depth > 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |ancestor::sect3[$chunk.section.depth > 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |ancestor::sect4[$chunk.section.depth > 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |ancestor::sect5[$chunk.section.depth > 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |ancestor::section[$chunk.section.depth > count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[last()]"/> + + <xsl:variable name="prev" + select="(preceding::book[1] + |preceding::preface[1] + |preceding::chapter[1] + |preceding::appendix[1] + |preceding::part[1] + |preceding::reference[1] + |preceding::refentry[1] + |preceding::colophon[1] + |preceding::article[1] + |preceding::bibliography[parent::article or parent::book or parent::part][1] + |preceding::glossary[parent::article or parent::book or parent::part][1] + |preceding::index[$generate.index != 0] + [parent::article or parent::book or parent::part][1] + |preceding::setindex[$generate.index != 0][1] + |ancestor::set + |ancestor::book[1] + |ancestor::preface[1] + |ancestor::chapter[1] + |ancestor::appendix[1] + |ancestor::part[1] + |ancestor::reference[1] + |ancestor::article[1] + |$prev-v1 + |$prev-v2)[last()]"/> + + <xsl:variable name="next-v1" + select="(following::sect1[$chunk.section.depth > 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |following::sect2[$chunk.section.depth > 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |following::sect3[$chunk.section.depth > 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |following::sect4[$chunk.section.depth > 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |following::sect5[$chunk.section.depth > 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |following::section[$chunk.section.depth > count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[1]"/> + + <xsl:variable name="next-v2" + select="(descendant::sect1[$chunk.section.depth > 0 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |descendant::sect2[$chunk.section.depth > 1 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |descendant::sect3[$chunk.section.depth > 2 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |descendant::sect4[$chunk.section.depth > 3 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |descendant::sect5[$chunk.section.depth > 4 and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1] + |descendant::section[$chunk.section.depth + > count(ancestor::section) and not(ancestor::*/processing-instruction('dbhtml')[normalize-space(.) ='stop-chunking'])][1])[1]"/> + + <xsl:variable name="next" + select="(following::book[1] + |following::preface[1] + |following::chapter[1] + |following::appendix[1] + |following::part[1] + |following::reference[1] + |following::refentry[1] + |following::colophon[1] + |following::bibliography[parent::article or parent::book or parent::part][1] + |following::glossary[parent::article or parent::book or parent::part][1] + |following::index[$generate.index != 0] + [parent::article or parent::book][1] + |following::article[1] + |following::setindex[$generate.index != 0][1] + |descendant::book[1] + |descendant::preface[1] + |descendant::chapter[1] + |descendant::appendix[1] + |descendant::article[1] + |descendant::bibliography[parent::article or parent::book][1] + |descendant::glossary[parent::article or parent::book or parent::part][1] + |descendant::index[$generate.index != 0] + [parent::article or parent::book][1] + |descendant::colophon[1] + |descendant::setindex[$generate.index != 0][1] + |descendant::part[1] + |descendant::reference[1] + |descendant::refentry[1] + |$next-v1 + |$next-v2)[1]"/> + + <xsl:call-template name="process-chunk"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- ==================================================================== --> + +<xsl:template name="make.lots"> + <xsl:param name="toc.params" select="''"/> + <xsl:param name="toc"/> + + <xsl:variable name="lots"> + <xsl:if test="contains($toc.params, 'toc')"> + <xsl:copy-of select="$toc"/> + </xsl:if> + + <xsl:if test="contains($toc.params, 'figure')"> + <xsl:choose> + <xsl:when test="$chunk.separate.lots != '0'"> + <xsl:call-template name="make.lot.chunk"> + <xsl:with-param name="type" select="'figure'"/> + <xsl:with-param name="lot"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'figure'"/> + <xsl:with-param name="nodes" select=".//figure"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'figure'"/> + <xsl:with-param name="nodes" select=".//figure"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + <xsl:if test="contains($toc.params, 'table')"> + <xsl:choose> + <xsl:when test="$chunk.separate.lots != '0'"> + <xsl:call-template name="make.lot.chunk"> + <xsl:with-param name="type" select="'table'"/> + <xsl:with-param name="lot"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'table'"/> + <xsl:with-param name="nodes" select=".//table"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'table'"/> + <xsl:with-param name="nodes" select=".//table"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + <xsl:if test="contains($toc.params, 'example')"> + <xsl:choose> + <xsl:when test="$chunk.separate.lots != '0'"> + <xsl:call-template name="make.lot.chunk"> + <xsl:with-param name="type" select="'example'"/> + <xsl:with-param name="lot"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'example'"/> + <xsl:with-param name="nodes" select=".//example"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'example'"/> + <xsl:with-param name="nodes" select=".//example"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + <xsl:if test="contains($toc.params, 'equation')"> + <xsl:choose> + <xsl:when test="$chunk.separate.lots != '0'"> + <xsl:call-template name="make.lot.chunk"> + <xsl:with-param name="type" select="'equation'"/> + <xsl:with-param name="lot"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'equation'"/> + <xsl:with-param name="nodes" select=".//equation[title or info/title]"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'equation'"/> + <xsl:with-param name="nodes" select=".//equation[title or info/title]"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + <xsl:if test="contains($toc.params, 'procedure')"> + <xsl:choose> + <xsl:when test="$chunk.separate.lots != '0'"> + <xsl:call-template name="make.lot.chunk"> + <xsl:with-param name="type" select="'procedure'"/> + <xsl:with-param name="lot"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'procedure'"/> + <xsl:with-param name="nodes" select=".//procedure[title]"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'procedure'"/> + <xsl:with-param name="nodes" select=".//procedure[title]"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:variable> + + <xsl:if test="string($lots) != ''"> + <xsl:choose> + <xsl:when test="$chunk.tocs.and.lots != 0 and not(parent::*)"> + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir" select="$base.dir"/> + <xsl:with-param name="base.name"> + <xsl:call-template name="dbhtml-dir"/> + <xsl:apply-templates select="." mode="recursive-chunk-filename"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + <xsl:text>-toc</xsl:text> + <xsl:value-of select="$html.ext"/> + </xsl:with-param> + </xsl:call-template> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="chunk-element-content"> + <xsl:with-param name="prev" select="/foo"/> + <xsl:with-param name="next" select="/foo"/> + <xsl:with-param name="nav.context" select="'toc'"/> + <xsl:with-param name="content"> + <xsl:if test="$chunk.tocs.and.lots.has.title != 0"> + <h1> + <xsl:apply-templates select="." mode="object.title.markup"/> + </h1> + </xsl:if> + <xsl:copy-of select="$lots"/> + </xsl:with-param> + </xsl:call-template> + </xsl:with-param> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$lots"/> + </xsl:otherwise> + </xsl:choose> + </xsl:if> +</xsl:template> + +<xsl:template name="make.lot.chunk"> + <xsl:param name="type" select="''"/> + <xsl:param name="lot"/> + + <xsl:if test="string($lot) != ''"> + <xsl:variable name="filename"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir" select="$base.dir"/> + <xsl:with-param name="base.name"> + <xsl:call-template name="dbhtml-dir"/> + <xsl:value-of select="$type"/> + <xsl:text>-toc</xsl:text> + <xsl:value-of select="$html.ext"/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="href"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.name"> + <xsl:call-template name="dbhtml-dir"/> + <xsl:value-of select="$type"/> + <xsl:text>-toc</xsl:text> + <xsl:value-of select="$html.ext"/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename" select="$filename"/> + <xsl:with-param name="content"> + <xsl:call-template name="chunk-element-content"> + <xsl:with-param name="prev" select="/foo"/> + <xsl:with-param name="next" select="/foo"/> + <xsl:with-param name="nav.context" select="'toc'"/> + <xsl:with-param name="content"> + <xsl:copy-of select="$lot"/> + </xsl:with-param> + </xsl:call-template> + </xsl:with-param> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> + <!-- And output a link to this file --> + <div> + <xsl:attribute name="class"> + <xsl:text>ListofTitles</xsl:text> + </xsl:attribute> + <a href="{$href}"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key"> + <xsl:choose> + <xsl:when test="$type='table'">ListofTables</xsl:when> + <xsl:when test="$type='figure'">ListofFigures</xsl:when> + <xsl:when test="$type='equation'">ListofEquations</xsl:when> + <xsl:when test="$type='example'">ListofExamples</xsl:when> + <xsl:when test="$type='procedure'">ListofProcedures</xsl:when> + <xsl:otherwise>ListofUnknown</xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </a> + </div> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="in.other.chunk"> + <xsl:param name="chunk" select="."/> + <xsl:param name="node" select="."/> + + <xsl:variable name="is.chunk"> + <xsl:call-template name="chunk"> + <xsl:with-param name="node" select="$node"/> + </xsl:call-template> + </xsl:variable> + +<!-- + <xsl:message> + <xsl:text>in.other.chunk: </xsl:text> + <xsl:value-of select="name($chunk)"/> + <xsl:text> </xsl:text> + <xsl:value-of select="name($node)"/> + <xsl:text> </xsl:text> + <xsl:value-of select="$chunk = $node"/> + <xsl:text> </xsl:text> + <xsl:value-of select="$is.chunk"/> + </xsl:message> +--> + + <xsl:choose> + <xsl:when test="$chunk = $node">0</xsl:when> + <xsl:when test="$is.chunk = 1">1</xsl:when> + <xsl:when test="count($node) = 0">0</xsl:when> + <xsl:otherwise> + <xsl:call-template name="in.other.chunk"> + <xsl:with-param name="chunk" select="$chunk"/> + <xsl:with-param name="node" select="$node/parent::*"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="count.footnotes.in.this.chunk"> + <xsl:param name="node" select="."/> + <xsl:param name="footnotes" select="$node//footnote"/> + <xsl:param name="count" select="0"/> + +<!-- + <xsl:message> + <xsl:text>count.footnotes.in.this.chunk: </xsl:text> + <xsl:value-of select="name($node)"/> + </xsl:message> +--> + + <xsl:variable name="in.other.chunk"> + <xsl:call-template name="in.other.chunk"> + <xsl:with-param name="chunk" select="$node"/> + <xsl:with-param name="node" select="$footnotes[1]"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="count($footnotes) = 0"> + <xsl:value-of select="$count"/> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$in.other.chunk != 0"> + <xsl:call-template name="count.footnotes.in.this.chunk"> + <xsl:with-param name="node" select="$node"/> + <xsl:with-param name="footnotes" + select="$footnotes[position() > 1]"/> + <xsl:with-param name="count" select="$count"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$footnotes[1]/ancestor::table + |$footnotes[1]/ancestor::informaltable"> + <xsl:call-template name="count.footnotes.in.this.chunk"> + <xsl:with-param name="node" select="$node"/> + <xsl:with-param name="footnotes" + select="$footnotes[position() > 1]"/> + <xsl:with-param name="count" select="$count"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="count.footnotes.in.this.chunk"> + <xsl:with-param name="node" select="$node"/> + <xsl:with-param name="footnotes" + select="$footnotes[position() > 1]"/> + <xsl:with-param name="count" select="$count + 1"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="process.footnotes.in.this.chunk"> + <xsl:param name="node" select="."/> + <xsl:param name="footnotes" select="$node//footnote"/> + +<!-- + <xsl:message>process.footnotes.in.this.chunk</xsl:message> +--> + + <xsl:variable name="in.other.chunk"> + <xsl:call-template name="in.other.chunk"> + <xsl:with-param name="chunk" select="$node"/> + <xsl:with-param name="node" select="$footnotes[1]"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="count($footnotes) = 0"> + <!-- nop --> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$in.other.chunk != 0"> + <xsl:call-template name="process.footnotes.in.this.chunk"> + <xsl:with-param name="node" select="$node"/> + <xsl:with-param name="footnotes" + select="$footnotes[position() > 1]"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$footnotes[1]/ancestor::table + |$footnotes[1]/ancestor::informaltable"> + <xsl:call-template name="process.footnotes.in.this.chunk"> + <xsl:with-param name="node" select="$node"/> + <xsl:with-param name="footnotes" + select="$footnotes[position() > 1]"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$footnotes[1]" + mode="process.footnote.mode"/> + <xsl:call-template name="process.footnotes.in.this.chunk"> + <xsl:with-param name="node" select="$node"/> + <xsl:with-param name="footnotes" + select="$footnotes[position() > 1]"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="process.footnotes"> + <xsl:variable name="footnotes" select=".//footnote"/> + <xsl:variable name="fcount"> + <xsl:call-template name="count.footnotes.in.this.chunk"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="footnotes" select="$footnotes"/> + </xsl:call-template> + </xsl:variable> + +<!-- + <xsl:message> + <xsl:value-of select="name(.)"/> + <xsl:text> fcount: </xsl:text> + <xsl:value-of select="$fcount"/> + </xsl:message> +--> + + <!-- Only bother to do this if there's at least one non-table footnote --> + <xsl:if test="$fcount > 0"> + <div class="footnotes"> + <br/> + <hr width="100" align="{$direction.align.start}"/> + <xsl:call-template name="process.footnotes.in.this.chunk"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="footnotes" select="$footnotes"/> + </xsl:call-template> + </div> + </xsl:if> + + <!-- FIXME: When chunking, only the annotations actually used + in this chunk should be referenced. I don't think it + does any harm to reference them all, but it adds + unnecessary bloat to each chunk. --> + <xsl:if test="$annotation.support != 0 and //annotation"> + <div class="annotation-list"> + <div class="annotation-nocss"> + <p>The following annotations are from this essay. You are seeing + them here because your browser doesn’t support the user-interface + techniques used to make them appear as ‘popups’ on modern browsers.</p> + </div> + + <xsl:apply-templates select="//annotation" + mode="annotation-popup"/> + </div> + </xsl:if> +</xsl:template> + +<xsl:template name="process.chunk.footnotes"> + <xsl:variable name="is.chunk"> + <xsl:call-template name="chunk"/> + </xsl:variable> + <xsl:if test="$is.chunk = 1"> + <xsl:call-template name="process.footnotes"/> + </xsl:if> +</xsl:template> + +<!-- ====================================================================== --> + +<xsl:template name="chunk"> + <xsl:param name="node" select="."/> + <!-- returns 1 if $node is a chunk --> + + <!-- ==================================================================== --> + <!-- What's a chunk? + + The root element + appendix + article + bibliography in article or part or book + book + chapter + colophon + glossary in article or part or book + index in article or part or book + part + preface + refentry + reference + sect{1,2,3,4,5} if position()>1 && depth < chunk.section.depth + section if position()>1 && depth < chunk.section.depth + set + setindex + --> + <!-- ==================================================================== --> + +<!-- + <xsl:message> + <xsl:text>chunk: </xsl:text> + <xsl:value-of select="name($node)"/> + <xsl:text>(</xsl:text> + <xsl:value-of select="$node/@id"/> + <xsl:text>)</xsl:text> + <xsl:text> csd: </xsl:text> + <xsl:value-of select="$chunk.section.depth"/> + <xsl:text> cfs: </xsl:text> + <xsl:value-of select="$chunk.first.sections"/> + <xsl:text> ps: </xsl:text> + <xsl:value-of select="count($node/parent::section)"/> + <xsl:text> prs: </xsl:text> + <xsl:value-of select="count($node/preceding-sibling::section)"/> + </xsl:message> +--> + + <xsl:choose> + <xsl:when test="$node/parent::*/processing-instruction('dbhtml')[normalize-space(.) = 'stop-chunking']">0</xsl:when> + <xsl:when test="not($node/parent::*)">1</xsl:when> + + <xsl:when test="local-name($node) = 'sect1' + and $chunk.section.depth >= 1 + and ($chunk.first.sections != 0 + or count($node/preceding-sibling::sect1) > 0)"> + <xsl:text>1</xsl:text> + </xsl:when> + <xsl:when test="local-name($node) = 'sect2' + and $chunk.section.depth >= 2 + and ($chunk.first.sections != 0 + or count($node/preceding-sibling::sect2) > 0)"> + <xsl:call-template name="chunk"> + <xsl:with-param name="node" select="$node/parent::*"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="local-name($node) = 'sect3' + and $chunk.section.depth >= 3 + and ($chunk.first.sections != 0 + or count($node/preceding-sibling::sect3) > 0)"> + <xsl:call-template name="chunk"> + <xsl:with-param name="node" select="$node/parent::*"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="local-name($node) = 'sect4' + and $chunk.section.depth >= 4 + and ($chunk.first.sections != 0 + or count($node/preceding-sibling::sect4) > 0)"> + <xsl:call-template name="chunk"> + <xsl:with-param name="node" select="$node/parent::*"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="local-name($node) = 'sect5' + and $chunk.section.depth >= 5 + and ($chunk.first.sections != 0 + or count($node/preceding-sibling::sect5) > 0)"> + <xsl:call-template name="chunk"> + <xsl:with-param name="node" select="$node/parent::*"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="local-name($node) = 'section' + and $chunk.section.depth >= count($node/ancestor::section)+1 + and ($chunk.first.sections != 0 + or count($node/preceding-sibling::section) > 0)"> + <xsl:call-template name="chunk"> + <xsl:with-param name="node" select="$node/parent::*"/> + </xsl:call-template> + </xsl:when> + + <xsl:when test="local-name($node)='preface'">1</xsl:when> + <xsl:when test="local-name($node)='chapter'">1</xsl:when> + <xsl:when test="local-name($node)='appendix'">1</xsl:when> + <xsl:when test="local-name($node)='article'">1</xsl:when> + <xsl:when test="local-name($node)='part'">1</xsl:when> + <xsl:when test="local-name($node)='reference'">1</xsl:when> + <xsl:when test="local-name($node)='refentry'">1</xsl:when> + <xsl:when test="local-name($node)='index' and ($generate.index != 0 or count($node/*) > 0) + and (local-name($node/parent::*) = 'article' + or local-name($node/parent::*) = 'book' + or local-name($node/parent::*) = 'part' + )">1</xsl:when> + <xsl:when test="local-name($node)='bibliography' + and (local-name($node/parent::*) = 'article' + or local-name($node/parent::*) = 'book' + or local-name($node/parent::*) = 'part' + )">1</xsl:when> + <xsl:when test="local-name($node)='glossary' + and (local-name($node/parent::*) = 'article' + or local-name($node/parent::*) = 'book' + or local-name($node/parent::*) = 'part' + )">1</xsl:when> + <xsl:when test="local-name($node)='colophon'">1</xsl:when> + <xsl:when test="local-name($node)='book'">1</xsl:when> + <xsl:when test="local-name($node)='set'">1</xsl:when> + <xsl:when test="local-name($node)='setindex'">1</xsl:when> + <xsl:when test="local-name($node)='legalnotice' + and $generate.legalnotice.link != 0">1</xsl:when> + <xsl:otherwise>0</xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> +<xsl:template name="href.target.uri"> + <xsl:param name="object" select="."/> + <xsl:variable name="ischunk"> + <xsl:call-template name="chunk"> + <xsl:with-param name="node" select="$object"/> + </xsl:call-template> + </xsl:variable> + + <xsl:apply-templates mode="chunk-filename" select="$object"/> + + <xsl:if test="$ischunk='0'"> + <xsl:text>#</xsl:text> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select="$object"/> + </xsl:call-template> + </xsl:if> +</xsl:template> + +<xsl:template name="href.target"> + <xsl:param name="context" select="."/> + <xsl:param name="object" select="."/> + <xsl:param name="toc-context" select="."/> + <!-- * If $toc-context contains some node other than the current node, --> + <!-- * it means we're processing a link in a TOC. In that case, to --> + <!-- * ensure the link will work correctly, we need to take a look at --> + <!-- * where the file containing the TOC will get written, and where --> + <!-- * the file that's being linked to will get written. --> + <xsl:variable name="toc-output-dir"> + <xsl:if test="not($toc-context = .)"> + <!-- * Get the $toc-context node and all its ancestors, look down --> + <!-- * through them to find the last/closest node to the --> + <!-- * toc-context node that has a "dbhtml dir" PI, and get the --> + <!-- * directory name from that. That's the name of the directory --> + <!-- * to which the current toc output file will get written. --> + <xsl:call-template name="dbhtml-dir"> + <xsl:with-param name="context" + select="$toc-context/ancestor-or-self::*[processing-instruction('dbhtml')[contains(.,'dir')]][last()]"/> + </xsl:call-template> + </xsl:if> + </xsl:variable> + <xsl:variable name="linked-file-output-dir"> + <xsl:if test="not($toc-context = .)"> + <!-- * Get the current node and all its ancestors, look down --> + <!-- * through them to find the last/closest node to the current --> + <!-- * node that has a "dbhtml dir" PI, and get the directory name --> + <!-- * from that. That's the name of the directory to which the --> + <!-- * file that's being linked to will get written. --> + <xsl:call-template name="dbhtml-dir"> + <xsl:with-param name="context" + select="ancestor-or-self::*[processing-instruction('dbhtml')[contains(.,'dir')]][last()]"/> + </xsl:call-template> + </xsl:if> + </xsl:variable> + <xsl:variable name="href.to.uri"> + <xsl:call-template name="href.target.uri"> + <xsl:with-param name="object" select="$object"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="href.from.uri"> + <xsl:choose> + <xsl:when test="not($toc-context = .)"> + <xsl:call-template name="href.target.uri"> + <xsl:with-param name="object" select="$toc-context"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="href.target.uri"> + <xsl:with-param name="object" select="$context"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <!-- * <xsl:message>toc-context: <xsl:value-of select="local-name($toc-context)"/></xsl:message> --> + <!-- * <xsl:message>node: <xsl:value-of select="local-name(.)"/></xsl:message> --> + <!-- * <xsl:message>context: <xsl:value-of select="local-name($context)"/></xsl:message> --> + <!-- * <xsl:message>object: <xsl:value-of select="local-name($object)"/></xsl:message> --> + <!-- * <xsl:message>toc-output-dir: <xsl:value-of select="$toc-output-dir"/></xsl:message> --> + <!-- * <xsl:message>linked-file-output-dir: <xsl:value-of select="$linked-file-output-dir"/></xsl:message> --> + <!-- * <xsl:message>href.to.uri: <xsl:value-of select="$href.to.uri"/></xsl:message> --> + <!-- * <xsl:message>href.from.uri: <xsl:value-of select="$href.from.uri"/></xsl:message> --> + <xsl:variable name="href.to"> + <xsl:choose> + <!-- * 2007-07-19, MikeSmith: Added the following conditional to --> + <!-- * deal with a problem case for links in TOCs. It checks to see --> + <!-- * if the output dir that a TOC will get written to is --> + <!-- * different from the output dir of the file being linked to. --> + <!-- * If it is different, we do not call trim.common.uri.paths. --> + <!-- * --> + <!-- * Reason why I added that conditional is: I ran into a bug for --> + <!-- * this case: --> + <!-- * --> + <!-- * 1. we are chunking into separate dirs --> + <!-- * --> + <!-- * 2. output for the TOC is written to current dir, but the file --> + <!-- * being linked to is written to some subdir "foo". --> + <!-- * --> + <!-- * For that case, links to that file in that TOC did not show --> + <!-- * the correct path - they omitted the "foo". --> + <!-- * --> + <!-- * The cause of that problem was that the trim.common.uri.paths --> + <!-- * template[1] was being called under all conditions. But it's --> + <!-- * apparent that we don't want to call trim.common.uri.paths in --> + <!-- * the case where a linked file is being written to a different --> + <!-- * directory than the TOC that contains the link, because doing --> + <!-- * so will cause a necessary (not redundant) directory-name --> + <!-- * part of the link to get inadvertently trimmed, resulting in --> + <!-- * a broken link to that file. Thus, added the conditional. --> + <!-- * --> + <!-- * [1] The purpose of the trim.common.uri.paths template is to --> + <!-- * prevent cases where, if we didn't call it, we end up with --> + <!-- * unnecessary, redundant directory names getting output; for --> + <!-- * example, "foo/foo/refname.html". --> + <xsl:when test="not($toc-output-dir = $linked-file-output-dir)"> + <xsl:value-of select="$href.to.uri"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="trim.common.uri.paths"> + <xsl:with-param name="uriA" select="$href.to.uri"/> + <xsl:with-param name="uriB" select="$href.from.uri"/> + <xsl:with-param name="return" select="'A'"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="href.from"> + <xsl:call-template name="trim.common.uri.paths"> + <xsl:with-param name="uriA" select="$href.to.uri"/> + <xsl:with-param name="uriB" select="$href.from.uri"/> + <xsl:with-param name="return" select="'B'"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="depth"> + <xsl:call-template name="count.uri.path.depth"> + <xsl:with-param name="filename" select="$href.from"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="href"> + <xsl:call-template name="copy-string"> + <xsl:with-param name="string" select="'../'"/> + <xsl:with-param name="count" select="$depth"/> + </xsl:call-template> + <xsl:value-of select="$href.to"/> + </xsl:variable> + <!-- + <xsl:message> + <xsl:text>In </xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:text> (</xsl:text> + <xsl:value-of select="$href.from"/> + <xsl:text>,</xsl:text> + <xsl:value-of select="$depth"/> + <xsl:text>) </xsl:text> + <xsl:value-of select="name($object)"/> + <xsl:text> href=</xsl:text> + <xsl:value-of select="$href"/> + </xsl:message> + --> + <xsl:value-of select="$href"/> +</xsl:template> + +<!-- Returns the complete olink href value if found --> +<!-- Must take into account any dbhtml dir of the chunk containing the olink --> +<xsl:template name="make.olink.href"> + <xsl:param name="olink.key" select="''"/> + <xsl:param name="target.database"/> + + <xsl:if test="$olink.key != ''"> + <xsl:variable name="target.href" > + <xsl:for-each select="$target.database" > + <xsl:value-of select="key('targetptr-key', $olink.key)[1]/@href" /> + </xsl:for-each> + </xsl:variable> + + <!-- an olink starting point may be in a subdirectory, so need + the "from" reference point to compute a relative path --> + + <xsl:variable name="from.href"> + <xsl:call-template name="olink.from.uri"> + <xsl:with-param name="target.database" select="$target.database"/> + <xsl:with-param name="object" select="."/> + <xsl:with-param name="object.targetdoc" select="$current.docid"/> + </xsl:call-template> + </xsl:variable> + + <!-- If the from.href has directory path, then must "../" upward + to document level --> + <xsl:variable name="upward.from.path"> + <xsl:call-template name="upward.path"> + <xsl:with-param name="path" select="$from.href"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="targetdoc"> + <xsl:value-of select="substring-before($olink.key, '/')"/> + </xsl:variable> + + <!-- Does the target database use a sitemap? --> + <xsl:variable name="use.sitemap"> + <xsl:choose> + <xsl:when test="$target.database//sitemap">1</xsl:when> + <xsl:otherwise>0</xsl:otherwise> + </xsl:choose> + </xsl:variable> + + + <!-- Get the baseuri for this targetptr --> + <xsl:variable name="baseuri" > + <xsl:choose> + <!-- Does the database use a sitemap? --> + <xsl:when test="$use.sitemap != 0" > + <xsl:choose> + <!-- Was current.docid parameter set? --> + <xsl:when test="$current.docid != ''"> + <!-- Was it found in the database? --> + <xsl:variable name="currentdoc.key" > + <xsl:for-each select="$target.database" > + <xsl:value-of select="key('targetdoc-key', + $current.docid)/@targetdoc" /> + </xsl:for-each> + </xsl:variable> + <xsl:choose> + <xsl:when test="$currentdoc.key != ''"> + <xsl:for-each select="$target.database" > + <xsl:call-template name="targetpath" > + <xsl:with-param name="dirnode" + select="key('targetdoc-key', $current.docid)/parent::dir"/> + <xsl:with-param name="targetdoc" select="$targetdoc"/> + </xsl:call-template> + </xsl:for-each > + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Olink error: cannot compute relative </xsl:text> + <xsl:text>sitemap path because $current.docid '</xsl:text> + <xsl:value-of select="$current.docid"/> + <xsl:text>' not found in target database.</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Olink warning: cannot compute relative </xsl:text> + <xsl:text>sitemap path without $current.docid parameter</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> + <!-- In either case, add baseuri from its document entry--> + <xsl:variable name="docbaseuri"> + <xsl:for-each select="$target.database" > + <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri" /> + </xsl:for-each> + </xsl:variable> + <xsl:if test="$docbaseuri != ''" > + <xsl:value-of select="$docbaseuri"/> + </xsl:if> + </xsl:when> + <!-- No database sitemap in use --> + <xsl:otherwise> + <!-- Just use any baseuri from its document entry --> + <xsl:variable name="docbaseuri"> + <xsl:for-each select="$target.database" > + <xsl:value-of select="key('targetdoc-key', $targetdoc)/@baseuri" /> + </xsl:for-each> + </xsl:variable> + <xsl:if test="$docbaseuri != ''" > + <xsl:value-of select="$docbaseuri"/> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <!-- Form the href information --> + <xsl:if test="not(contains($baseuri, ':'))"> + <!-- if not an absolute uri, add upward path from olink chunk --> + <xsl:value-of select="$upward.from.path"/> + </xsl:if> + + <xsl:if test="$baseuri != ''"> + <xsl:value-of select="$baseuri"/> + <xsl:if test="substring($target.href,1,1) != '#'"> + <!--xsl:text>/</xsl:text--> + </xsl:if> + </xsl:if> + <!-- optionally turn off frag for PDF references --> + <xsl:if test="not($insert.olink.pdf.frag = 0 and + translate(substring($baseuri, string-length($baseuri) - 3), + 'PDF', 'pdf') = '.pdf' + and starts-with($target.href, '#') )"> + <xsl:value-of select="$target.href"/> + </xsl:if> + </xsl:if> +</xsl:template> + +<!-- Computes "../" to reach top --> +<xsl:template name="upward.path"> + <xsl:param name="path" select="''"/> + <xsl:choose> + <!-- Don't bother with absolute uris --> + <xsl:when test="contains($path, ':')"/> + <xsl:when test="starts-with($path, '/')"/> + <xsl:when test="contains($path, '/')"> + <xsl:text>../</xsl:text> + <xsl:call-template name="upward.path"> + <xsl:with-param name="path" select="substring-after($path, '/')"/> + </xsl:call-template> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="html.head"> + <xsl:param name="prev" select="/foo"/> + <xsl:param name="next" select="/foo"/> + <xsl:variable name="this" select="."/> + <xsl:variable name="home" select="/*[1]"/> + <xsl:variable name="up" select="parent::*"/> + + <head> + <xsl:call-template name="system.head.content"/> + <xsl:call-template name="head.content"/> + + <xsl:if test="$home"> + <link rel="home"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$home"/> + </xsl:call-template> + </xsl:attribute> + <xsl:attribute name="title"> + <xsl:apply-templates select="$home" + mode="object.title.markup.textonly"/> + </xsl:attribute> + </link> + </xsl:if> + + <xsl:if test="$up"> + <link rel="up"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$up"/> + </xsl:call-template> + </xsl:attribute> + <xsl:attribute name="title"> + <xsl:apply-templates select="$up" mode="object.title.markup.textonly"/> + </xsl:attribute> + </link> + </xsl:if> + + <xsl:if test="$prev"> + <link rel="prev"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$prev"/> + </xsl:call-template> + </xsl:attribute> + <xsl:attribute name="title"> + <xsl:apply-templates select="$prev" mode="object.title.markup.textonly"/> + </xsl:attribute> + </link> + </xsl:if> + + <xsl:if test="$next"> + <link rel="next"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$next"/> + </xsl:call-template> + </xsl:attribute> + <xsl:attribute name="title"> + <xsl:apply-templates select="$next" mode="object.title.markup.textonly"/> + </xsl:attribute> + </link> + </xsl:if> + + <xsl:if test="$html.extra.head.links != 0"> + <xsl:for-each select="//part + |//reference + |//preface + |//chapter + |//article + |//refentry + |//appendix[not(parent::article)]|appendix + |//glossary[not(parent::article)]|glossary + |//index[not(parent::article)]|index"> + <link rel="{local-name(.)}"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="context" select="$this"/> + <xsl:with-param name="object" select="."/> + </xsl:call-template> + </xsl:attribute> + <xsl:attribute name="title"> + <xsl:apply-templates select="." mode="object.title.markup.textonly"/> + </xsl:attribute> + </link> + </xsl:for-each> + + <xsl:for-each select="section|sect1|refsection|refsect1"> + <link> + <xsl:attribute name="rel"> + <xsl:choose> + <xsl:when test="local-name($this) = 'section' + or local-name($this) = 'refsection'"> + <xsl:value-of select="'subsection'"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="'section'"/> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="context" select="$this"/> + <xsl:with-param name="object" select="."/> + </xsl:call-template> + </xsl:attribute> + <xsl:attribute name="title"> + <xsl:apply-templates select="." mode="object.title.markup.textonly"/> + </xsl:attribute> + </link> + </xsl:for-each> + + <xsl:for-each select="sect2|sect3|sect4|sect5|refsect2|refsect3"> + <link rel="subsection"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="context" select="$this"/> + <xsl:with-param name="object" select="."/> + </xsl:call-template> + </xsl:attribute> + <xsl:attribute name="title"> + <xsl:apply-templates select="." mode="object.title.markup.textonly"/> + </xsl:attribute> + </link> + </xsl:for-each> + </xsl:if> + + <!-- * if we have a legalnotice and user wants it output as a --> + <!-- * separate page and $html.head.legalnotice.link.types is --> + <!-- * non-empty, we generate a link or links for each value in --> + <!-- * $html.head.legalnotice.link.types --> + <xsl:if test="//legalnotice + and not($generate.legalnotice.link = 0) + and not($html.head.legalnotice.link.types = '')"> + <xsl:call-template name="make.legalnotice.head.links"/> + </xsl:if> + + <xsl:call-template name="user.head.content"/> + </head> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="header.navigation"> + <xsl:param name="prev" select="/foo"/> + <xsl:param name="next" select="/foo"/> + <xsl:param name="nav.context"/> + + <xsl:variable name="home" select="/*[1]"/> + <xsl:variable name="up" select="parent::*"/> + + <xsl:variable name="row1" select="$navig.showtitles != 0"/> + <xsl:variable name="row2" select="count($prev) > 0 + or (count($up) > 0 + and generate-id($up) != generate-id($home) + and $navig.showtitles != 0) + or count($next) > 0"/> + + <xsl:if test="$suppress.navigation = '0' and $suppress.header.navigation = '0'"> + <div class="navheader"> + <xsl:if test="$row1 or $row2"> + <table width="100%" summary="Navigation header"> + <xsl:if test="$row1"> + <tr> + <th colspan="3" align="center"> + <xsl:apply-templates select="." mode="object.title.markup"/> + </th> + </tr> + </xsl:if> + + <xsl:if test="$row2"> + <tr> + <td width="20%" align="{$direction.align.start}"> + <xsl:if test="count($prev)>0"> + <a accesskey="p"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$prev"/> + </xsl:call-template> + </xsl:attribute> + <xsl:call-template name="navig.content"> + <xsl:with-param name="direction" select="'prev'"/> + </xsl:call-template> + </a> + </xsl:if> + <xsl:text> </xsl:text> + </td> + <th width="60%" align="center"> + <xsl:choose> + <xsl:when test="count($up) > 0 + and generate-id($up) != generate-id($home) + and $navig.showtitles != 0"> + <xsl:apply-templates select="$up" mode="object.title.markup"/> + </xsl:when> + <xsl:otherwise> </xsl:otherwise> + </xsl:choose> + </th> + <td width="20%" align="{$direction.align.end}"> + <xsl:text> </xsl:text> + <xsl:if test="count($next)>0"> + <a accesskey="n"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$next"/> + </xsl:call-template> + </xsl:attribute> + <xsl:call-template name="navig.content"> + <xsl:with-param name="direction" select="'next'"/> + </xsl:call-template> + </a> + </xsl:if> + </td> + </tr> + </xsl:if> + </table> + </xsl:if> + <xsl:if test="$header.rule != 0"> + <hr/> + </xsl:if> + </div> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="footer.navigation"> + <xsl:param name="prev" select="/foo"/> + <xsl:param name="next" select="/foo"/> + <xsl:param name="nav.context"/> + + <xsl:variable name="home" select="/*[1]"/> + <xsl:variable name="up" select="parent::*"/> + + <xsl:variable name="row1" select="count($prev) > 0 + or count($up) > 0 + or count($next) > 0"/> + + <xsl:variable name="row2" select="($prev and $navig.showtitles != 0) + or (generate-id($home) != generate-id(.) + or $nav.context = 'toc') + or ($chunk.tocs.and.lots != 0 + and $nav.context != 'toc') + or ($next and $navig.showtitles != 0)"/> + + <xsl:if test="$suppress.navigation = '0' and $suppress.footer.navigation = '0'"> + <div class="navfooter"> + <xsl:if test="$footer.rule != 0"> + <hr/> + </xsl:if> + + <xsl:if test="$row1 or $row2"> + <table width="100%" summary="Navigation footer"> + <xsl:if test="$row1"> + <tr> + <td width="40%" align="{$direction.align.start}"> + <xsl:if test="count($prev)>0"> + <a accesskey="p"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$prev"/> + </xsl:call-template> + </xsl:attribute> + <xsl:call-template name="navig.content"> + <xsl:with-param name="direction" select="'prev'"/> + </xsl:call-template> + </a> + </xsl:if> + <xsl:text> </xsl:text> + </td> + <td width="20%" align="center"> + <xsl:choose> + <xsl:when test="count($up)>0 + and generate-id($up) != generate-id($home)"> + <a accesskey="u"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$up"/> + </xsl:call-template> + </xsl:attribute> + <xsl:call-template name="navig.content"> + <xsl:with-param name="direction" select="'up'"/> + </xsl:call-template> + </a> + </xsl:when> + <xsl:otherwise> </xsl:otherwise> + </xsl:choose> + </td> + <td width="40%" align="{$direction.align.end}"> + <xsl:text> </xsl:text> + <xsl:if test="count($next)>0"> + <a accesskey="n"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$next"/> + </xsl:call-template> + </xsl:attribute> + <xsl:call-template name="navig.content"> + <xsl:with-param name="direction" select="'next'"/> + </xsl:call-template> + </a> + </xsl:if> + </td> + </tr> + </xsl:if> + + <xsl:if test="$row2"> + <tr> + <td width="40%" align="{$direction.align.start}" valign="top"> + <xsl:if test="$navig.showtitles != 0"> + <xsl:apply-templates select="$prev" mode="object.title.markup"/> + </xsl:if> + <xsl:text> </xsl:text> + </td> + <td width="20%" align="center"> + <xsl:choose> + <xsl:when test="$home != . or $nav.context = 'toc'"> + <a accesskey="h"> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$home"/> + </xsl:call-template> + </xsl:attribute> + <xsl:call-template name="navig.content"> + <xsl:with-param name="direction" select="'home'"/> + </xsl:call-template> + </a> + <xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'"> + <xsl:text> | </xsl:text> + </xsl:if> + </xsl:when> + <xsl:otherwise> </xsl:otherwise> + </xsl:choose> + + <xsl:if test="$chunk.tocs.and.lots != 0 and $nav.context != 'toc'"> + <a accesskey="t"> + <xsl:attribute name="href"> + <xsl:apply-templates select="/*[1]" + mode="recursive-chunk-filename"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + <xsl:text>-toc</xsl:text> + <xsl:value-of select="$html.ext"/> + </xsl:attribute> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'nav-toc'"/> + </xsl:call-template> + </a> + </xsl:if> + </td> + <td width="40%" align="{$direction.align.end}" valign="top"> + <xsl:text> </xsl:text> + <xsl:if test="$navig.showtitles != 0"> + <xsl:apply-templates select="$next" mode="object.title.markup"/> + </xsl:if> + </td> + </tr> + </xsl:if> + </table> + </xsl:if> + </div> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="navig.content"> + <xsl:param name="direction" select="next"/> + <xsl:variable name="navtext"> + <xsl:choose> + <xsl:when test="$direction = 'prev'"> + <xsl:call-template name="gentext.nav.prev"/> + </xsl:when> + <xsl:when test="$direction = 'next'"> + <xsl:call-template name="gentext.nav.next"/> + </xsl:when> + <xsl:when test="$direction = 'up'"> + <xsl:call-template name="gentext.nav.up"/> + </xsl:when> + <xsl:when test="$direction = 'home'"> + <xsl:call-template name="gentext.nav.home"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>xxx</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$navig.graphics != 0"> + <img> + <xsl:attribute name="src"> + <xsl:value-of select="$navig.graphics.path"/> + <xsl:value-of select="$direction"/> + <xsl:value-of select="$navig.graphics.extension"/> + </xsl:attribute> + <xsl:attribute name="alt"> + <xsl:value-of select="$navtext"/> + </xsl:attribute> + </img> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$navtext"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- * The following template assumes that the first legalnotice --> +<!-- * instance found in a document applies to the contents of the --> +<!-- * entire document. It generates an HTML link in each chunk, back --> +<!-- * to the file containing the contents of the first legalnotice. --> +<!-- * --> +<!-- * Actually, it may generate multiple link instances in each chunk, --> +<!-- * because it walks through the space-separated list of link --> +<!-- * types specified in the $html.head.legalnotice.link.types param, --> +<!-- * popping off link types and generating links for them until it --> +<!-- * depletes the list. --> + +<xsl:template name="make.legalnotice.head.links"> + <!-- * the following ID is used as part of the legalnotice filename; --> + <!-- * we need it in order to construct the filename for use in the --> + <!-- * value of the href attribute on the link --> + + <xsl:param name="ln-node" select="(//legalnotice)[1]"/> + + <xsl:param name="linktype"> + <xsl:choose> + <xsl:when test="contains($html.head.legalnotice.link.types, ' ')"> + <xsl:value-of + select="normalize-space( + substring-before($html.head.legalnotice.link.types, ' '))"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$html.head.legalnotice.link.types"/> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param + name="remaining.linktypes" + select="concat( + normalize-space( + substring-after($html.head.legalnotice.link.types, ' ')),' ')"/> + <xsl:if test="not($linktype = '')"> + + <!-- Compute name of legalnotice file (see titlepage.xsl) --> + <xsl:variable name="file"> + <xsl:call-template name="ln.or.rh.filename"> + <xsl:with-param name="node" select="$ln-node"/> + </xsl:call-template> + </xsl:variable> + + <link rel="{$linktype}"> + <xsl:attribute name="href"> + <xsl:value-of select="$file"/> + </xsl:attribute> + <xsl:attribute name="title"> + <xsl:apply-templates select="(//legalnotice)[1]" + mode="object.title.markup.textonly"/> + </xsl:attribute> + </link> + <xsl:call-template name="make.legalnotice.head.links"> + <!-- * pop the next value off the list of link types --> + <xsl:with-param + name="linktype" + select="substring-before($remaining.linktypes, ' ')"/> + <!-- * remove the link type from the list of remaining link types --> + <xsl:with-param + name="remaining.linktypes" + select="substring-after($remaining.linktypes, ' ')"/> + </xsl:call-template> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> +<xsl:template name="chunk-element-content"> + <xsl:param name="prev"/> + <xsl:param name="next"/> + <xsl:param name="nav.context"/> + <xsl:param name="content"> + <xsl:apply-imports/> + </xsl:param> + + <xsl:call-template name="user.preroot"/> + + <html> + <xsl:call-template name="html.head"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + </xsl:call-template> + + <body> + <xsl:call-template name="body.attributes"/> + <xsl:call-template name="user.header.navigation"/> + + <xsl:call-template name="header.navigation"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="nav.context" select="$nav.context"/> + </xsl:call-template> + + <xsl:call-template name="user.header.content"/> + + <xsl:copy-of select="$content"/> + + <xsl:call-template name="user.footer.content"/> + + <xsl:call-template name="footer.navigation"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + <xsl:with-param name="nav.context" select="$nav.context"/> + </xsl:call-template> + + <xsl:call-template name="user.footer.navigation"/> + </body> + </html> + <xsl:value-of select="$chunk.append"/> +</xsl:template> + +<!-- ==================================================================== --> +<xsl:template name="generate.manifest"> + <xsl:param name="node" select="/"/> + <xsl:call-template name="write.text.chunk"> + <xsl:with-param name="filename"> + <xsl:if test="$manifest.in.base.dir != 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + <xsl:value-of select="$manifest"/> + </xsl:with-param> + <xsl:with-param name="method" select="'text'"/> + <xsl:with-param name="content"> + <xsl:apply-templates select="$node" mode="enumerate-files"/> + </xsl:with-param> + <xsl:with-param name="encoding" select="$chunker.output.encoding"/> + </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="dbhtml-dir"> + <xsl:param name="context" select="."/> + <!-- directories are now inherited from previous levels --> + <xsl:variable name="ppath"> + <xsl:if test="$context/parent::*"> + <xsl:call-template name="dbhtml-dir"> + <xsl:with-param name="context" select="$context/parent::*"/> + </xsl:call-template> + </xsl:if> + </xsl:variable> + <xsl:variable name="path"> + <xsl:call-template name="pi.dbhtml_dir"> + <xsl:with-param name="node" select="$context"/> + </xsl:call-template> + </xsl:variable> + <xsl:choose> + <xsl:when test="$path = ''"> + <xsl:if test="$ppath != ''"> + <xsl:value-of select="$ppath"/> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$ppath != ''"> + <xsl:value-of select="$ppath"/> + <xsl:if test="substring($ppath, string-length($ppath), 1) != '/'"> + <xsl:text>/</xsl:text> + </xsl:if> + </xsl:if> + <xsl:value-of select="$path"/> + <xsl:text>/</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl new file mode 100644 index 000000000..a89e24211 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunk.xsl @@ -0,0 +1,52 @@ +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + version="1.0" + exclude-result-prefixes="exsl"> + +<!-- ******************************************************************** + $Id: chunk.xsl 6910 2007-06-28 23:23:30Z xmldoc $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- First import the non-chunking templates that format elements + within each chunk file. In a customization, you should + create a separate non-chunking customization layer such + as mydocbook.xsl that imports the original docbook.xsl and + customizes any presentation templates. Then your chunking + customization should import mydocbook.xsl instead of + docbook.xsl. --> +<xsl:import href="docbook.xsl"/> + +<!-- chunk-common.xsl contains all the named templates for chunking. + In a customization file, you import chunk-common.xsl, then + add any customized chunking templates of the same name. + They will have import precedence over the original + chunking templates in chunk-common.xsl. --> +<xsl:import href="chunk-common.xsl"/> + +<!-- The manifest.xsl module is no longer imported because its + templates were moved into chunk-common and chunk-code --> + +<!-- chunk-code.xsl contains all the chunking templates that use + a match attribute. In a customization it should be referenced + using <xsl:include> instead of <xsl:import>, and then add + any customized chunking templates with match attributes. But be sure + to add a priority="1" to such customized templates to resolve + its conflict with the original, since they have the + same import precedence. + + Using xsl:include prevents adding another layer + of import precedence, which would cause any + customizations that use xsl:apply-imports to wrongly + apply the chunking version instead of the original + non-chunking version to format an element. --> +<xsl:include href="chunk-code.xsl"/> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunker.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunker.xsl new file mode 100644 index 000000000..89a5d2379 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunker.xsl @@ -0,0 +1,439 @@ +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:saxon="http://icl.com/saxon" + xmlns:lxslt="http://xml.apache.org/xslt" + xmlns:redirect="http://xml.apache.org/xalan/redirect" + xmlns:exsl="http://exslt.org/common" + xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" + version="1.0" + exclude-result-prefixes="saxon lxslt redirect exsl doc" + extension-element-prefixes="saxon redirect lxslt exsl"> + +<!-- ******************************************************************** + $Id: chunker.xsl 8526 2009-10-14 18:59:40Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<!-- This stylesheet works with XSLT implementations that support --> +<!-- exsl:document, saxon:output, or Xalan's redirect:write --> +<!-- Note: Only Saxon 6.4.2 or later is supported. --> + +<xsl:param name="chunker.output.method" select="'html'"/> +<xsl:param name="chunker.output.encoding" select="'ISO-8859-1'"/> +<xsl:param name="chunker.output.indent" select="'no'"/> +<xsl:param name="chunker.output.omit-xml-declaration" select="'no'"/> +<xsl:param name="chunker.output.standalone" select="'no'"/> +<xsl:param name="chunker.output.doctype-public" select="''"/> +<xsl:param name="chunker.output.doctype-system" select="''"/> +<xsl:param name="chunker.output.media-type" select="''"/> +<xsl:param name="chunker.output.cdata-section-elements" select="''"/> +<xsl:param name="chunker.output.quiet" select="0"/> + +<xsl:param name="saxon.character.representation" select="'entity;decimal'"/> + +<!-- ==================================================================== --> + +<xsl:template name="make-relative-filename"> + <xsl:param name="base.dir" select="'./'"/> + <xsl:param name="base.name" select="''"/> + + <xsl:choose> + <!-- put Saxon first to work around a bug in libxslt --> + <xsl:when test="element-available('saxon:output')"> + <!-- Saxon doesn't make the chunks relative --> + <xsl:value-of select="concat($base.dir,$base.name)"/> + </xsl:when> + <xsl:when test="element-available('exsl:document')"> + <!-- EXSL document does make the chunks relative, I think --> + <xsl:choose> + <xsl:when test="count(parent::*) = 0"> + <xsl:value-of select="concat($base.dir,$base.name)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$base.name"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="element-available('redirect:write')"> + <!-- Xalan doesn't make the chunks relative --> + <xsl:value-of select="concat($base.dir,$base.name)"/> + </xsl:when> + <xsl:otherwise> + <xsl:message terminate="yes"> + <xsl:text>Don't know how to chunk with </xsl:text> + <xsl:value-of select="system-property('xsl:vendor')"/> + </xsl:message> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="write.chunk"> + <xsl:param name="filename" select="''"/> + <xsl:param name="quiet" select="$chunker.output.quiet"/> + <xsl:param name="suppress-context-node-name" select="0"/> + <xsl:param name="message-prolog"/> + <xsl:param name="message-epilog"/> + + <xsl:param name="method" select="$chunker.output.method"/> + <xsl:param name="encoding" select="$chunker.output.encoding"/> + <xsl:param name="indent" select="$chunker.output.indent"/> + <xsl:param name="omit-xml-declaration" + select="$chunker.output.omit-xml-declaration"/> + <xsl:param name="standalone" select="$chunker.output.standalone"/> + <xsl:param name="doctype-public" select="$chunker.output.doctype-public"/> + <xsl:param name="doctype-system" select="$chunker.output.doctype-system"/> + <xsl:param name="media-type" select="$chunker.output.media-type"/> + <xsl:param name="cdata-section-elements" + select="$chunker.output.cdata-section-elements"/> + + <xsl:param name="content"/> + + <xsl:if test="$quiet = 0"> + <xsl:message> + <xsl:if test="not($message-prolog = '')"> + <xsl:value-of select="$message-prolog"/> + </xsl:if> + <xsl:text>Writing </xsl:text> + <xsl:value-of select="$filename"/> + <xsl:if test="name(.) != '' and $suppress-context-node-name = 0"> + <xsl:text> for </xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:if test="@id or @xml:id"> + <xsl:text>(</xsl:text> + <xsl:value-of select="(@id|@xml:id)[1]"/> + <xsl:text>)</xsl:text> + </xsl:if> + </xsl:if> + <xsl:if test="not($message-epilog = '')"> + <xsl:value-of select="$message-epilog"/> + </xsl:if> + </xsl:message> + </xsl:if> + + <xsl:choose> + <xsl:when test="element-available('exsl:document')"> + <xsl:choose> + <!-- Handle the permutations ... --> + <xsl:when test="$media-type != ''"> + <xsl:choose> + <xsl:when test="$doctype-public != '' and $doctype-system != ''"> + <exsl:document href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + media-type="{$media-type}" + doctype-public="{$doctype-public}" + doctype-system="{$doctype-system}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </exsl:document> + </xsl:when> + <xsl:when test="$doctype-public != '' and $doctype-system = ''"> + <exsl:document href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + media-type="{$media-type}" + doctype-public="{$doctype-public}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </exsl:document> + </xsl:when> + <xsl:when test="$doctype-public = '' and $doctype-system != ''"> + <exsl:document href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + media-type="{$media-type}" + doctype-system="{$doctype-system}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </exsl:document> + </xsl:when> + <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> --> + <exsl:document href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + media-type="{$media-type}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </exsl:document> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$doctype-public != '' and $doctype-system != ''"> + <exsl:document href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + doctype-public="{$doctype-public}" + doctype-system="{$doctype-system}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </exsl:document> + </xsl:when> + <xsl:when test="$doctype-public != '' and $doctype-system = ''"> + <exsl:document href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + doctype-public="{$doctype-public}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </exsl:document> + </xsl:when> + <xsl:when test="$doctype-public = '' and $doctype-system != ''"> + <exsl:document href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + doctype-system="{$doctype-system}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </exsl:document> + </xsl:when> + <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> --> + <exsl:document href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </exsl:document> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + + <xsl:when test="element-available('saxon:output')"> + <xsl:choose> + <!-- Handle the permutations ... --> + <xsl:when test="$media-type != ''"> + <xsl:choose> + <xsl:when test="$doctype-public != '' and $doctype-system != ''"> + <saxon:output saxon:character-representation="{$saxon.character.representation}" + href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + media-type="{$media-type}" + doctype-public="{$doctype-public}" + doctype-system="{$doctype-system}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </saxon:output> + </xsl:when> + <xsl:when test="$doctype-public != '' and $doctype-system = ''"> + <saxon:output saxon:character-representation="{$saxon.character.representation}" + href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + media-type="{$media-type}" + doctype-public="{$doctype-public}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </saxon:output> + </xsl:when> + <xsl:when test="$doctype-public = '' and $doctype-system != ''"> + <saxon:output saxon:character-representation="{$saxon.character.representation}" + href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + media-type="{$media-type}" + doctype-system="{$doctype-system}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </saxon:output> + </xsl:when> + <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> --> + <saxon:output saxon:character-representation="{$saxon.character.representation}" + href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + media-type="{$media-type}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </saxon:output> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$doctype-public != '' and $doctype-system != ''"> + <saxon:output saxon:character-representation="{$saxon.character.representation}" + href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + doctype-public="{$doctype-public}" + doctype-system="{$doctype-system}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </saxon:output> + </xsl:when> + <xsl:when test="$doctype-public != '' and $doctype-system = ''"> + <saxon:output saxon:character-representation="{$saxon.character.representation}" + href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + doctype-public="{$doctype-public}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </saxon:output> + </xsl:when> + <xsl:when test="$doctype-public = '' and $doctype-system != ''"> + <saxon:output saxon:character-representation="{$saxon.character.representation}" + href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + doctype-system="{$doctype-system}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </saxon:output> + </xsl:when> + <xsl:otherwise><!-- $doctype-public = '' and $doctype-system = ''"> --> + <saxon:output saxon:character-representation="{$saxon.character.representation}" + href="{$filename}" + method="{$method}" + encoding="{$encoding}" + indent="{$indent}" + omit-xml-declaration="{$omit-xml-declaration}" + cdata-section-elements="{$cdata-section-elements}" + standalone="{$standalone}"> + <xsl:copy-of select="$content"/> + </saxon:output> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + + <xsl:when test="element-available('redirect:write')"> + <!-- Xalan uses redirect --> + <redirect:write file="{$filename}"> + <xsl:copy-of select="$content"/> + </redirect:write> + </xsl:when> + + <xsl:otherwise> + <!-- it doesn't matter since we won't be making chunks... --> + <xsl:message terminate="yes"> + <xsl:text>Can't make chunks with </xsl:text> + <xsl:value-of select="system-property('xsl:vendor')"/> + <xsl:text>'s processor.</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="write.chunk.with.doctype"> + <xsl:param name="filename" select="''"/> + <xsl:param name="quiet" select="$chunker.output.quiet"/> + + <xsl:param name="method" select="$chunker.output.method"/> + <xsl:param name="encoding" select="$chunker.output.encoding"/> + <xsl:param name="indent" select="$chunker.output.indent"/> + <xsl:param name="omit-xml-declaration" + select="$chunker.output.omit-xml-declaration"/> + <xsl:param name="standalone" select="$chunker.output.standalone"/> + <xsl:param name="doctype-public" select="$chunker.output.doctype-public"/> + <xsl:param name="doctype-system" select="$chunker.output.doctype-system"/> + <xsl:param name="media-type" select="$chunker.output.media-type"/> + <xsl:param name="cdata-section-elements" + select="$chunker.output.cdata-section-elements"/> + + <xsl:param name="content"/> + + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename" select="$filename"/> + <xsl:with-param name="quiet" select="$quiet"/> + <xsl:with-param name="method" select="$method"/> + <xsl:with-param name="encoding" select="$encoding"/> + <xsl:with-param name="indent" select="$indent"/> + <xsl:with-param name="omit-xml-declaration" select="$omit-xml-declaration"/> + <xsl:with-param name="standalone" select="$standalone"/> + <xsl:with-param name="doctype-public" select="$doctype-public"/> + <xsl:with-param name="doctype-system" select="$doctype-system"/> + <xsl:with-param name="media-type" select="$media-type"/> + <xsl:with-param name="cdata-section-elements" select="$cdata-section-elements"/> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="write.text.chunk"> + <xsl:param name="filename" select="''"/> + <xsl:param name="quiet" select="$chunker.output.quiet"/> + <xsl:param name="suppress-context-node-name" select="0"/> + <xsl:param name="message-prolog"/> + <xsl:param name="message-epilog"/> + <xsl:param name="method" select="'text'"/> + <xsl:param name="encoding" select="$chunker.output.encoding"/> + <xsl:param name="media-type" select="$chunker.output.media-type"/> + <xsl:param name="content"/> + + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename" select="$filename"/> + <xsl:with-param name="quiet" select="$quiet"/> + <xsl:with-param name="suppress-context-node-name" select="$suppress-context-node-name"/> + <xsl:with-param name="message-prolog" select="$message-prolog"/> + <xsl:with-param name="message-epilog" select="$message-epilog"/> + <xsl:with-param name="method" select="$method"/> + <xsl:with-param name="encoding" select="$encoding"/> + <xsl:with-param name="indent" select="'no'"/> + <xsl:with-param name="omit-xml-declaration" select="'no'"/> + <xsl:with-param name="standalone" select="'no'"/> + <xsl:with-param name="doctype-public"/> + <xsl:with-param name="doctype-system"/> + <xsl:with-param name="media-type" select="$media-type"/> + <xsl:with-param name="cdata-section-elements"/> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> +</xsl:template> + + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunkfast.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunkfast.xsl new file mode 100644 index 000000000..35a4631ee --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunkfast.xsl @@ -0,0 +1,72 @@ +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:exsl="http://exslt.org/common" + xmlns:cf="http://docbook.sourceforge.net/xmlns/chunkfast/1.0" + version="1.0" + exclude-result-prefixes="cf exsl"> + +<!-- ******************************************************************** + $Id: chunkfast.xsl 8345 2009-03-16 06:44:07Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:import href="chunk.xsl"/> +<xsl:param name="chunk.fast" select="1"/> + +<xsl:variable name="chunks" select="exsl:node-set($chunk.hierarchy)//cf:div"/> + +<!-- ==================================================================== --> + +<xsl:template name="process-chunk-element"> + <xsl:choose> + <xsl:when test="$chunk.fast != 0 and $exsl.node.set.available != 0"> + <xsl:variable name="genid" select="generate-id()"/> + + <xsl:variable name="div" select="$chunks[@id=$genid or @xml:id=$genid]"/> + + <xsl:variable name="prevdiv" + select="($div/preceding-sibling::cf:div|$div/preceding::cf:div|$div/parent::cf:div)[last()]"/> + <xsl:variable name="prev" select="key('genid', ($prevdiv/@id|$prevdiv/@xml:id)[1])"/> + + <xsl:variable name="nextdiv" + select="($div/following-sibling::cf:div|$div/following::cf:div|$div/cf:div)[1]"/> + <xsl:variable name="next" select="key('genid', ($nextdiv/@id|$nextdiv/@xml:id)[1])"/> + + <xsl:choose> + <xsl:when test="$onechunk != 0 and parent::*"> + <xsl:apply-imports/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="process-chunk"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$onechunk != 0 and not(parent::*)"> + <xsl:call-template name="chunk-all-sections"/> + </xsl:when> + <xsl:when test="$onechunk != 0"> + <xsl:apply-imports/> + </xsl:when> + <xsl:when test="$chunk.first.sections = 0"> + <xsl:call-template name="chunk-first-section-with-parent"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="chunk-all-sections"/> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunktoc.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunktoc.xsl new file mode 100644 index 000000000..8422aa4c3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/chunktoc.xsl @@ -0,0 +1,543 @@ +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" + xmlns:exsl="http://exslt.org/common" + xmlns:ng="http://docbook.org/docbook-ng" + xmlns:db="http://docbook.org/ns/docbook" + version="1.0" + exclude-result-prefixes="doc exsl ng db"> + +<!-- ******************************************************************** + $Id: chunktoc.xsl 8545 2009-12-02 07:22:10Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:import href="docbook.xsl"/> +<xsl:import href="chunk-common.xsl"/> + +<xsl:template name="chunk"> + <xsl:param name="node" select="."/> + <!-- returns 1 if $node is a chunk --> + + <xsl:variable name="id"> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select="$node"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="chunks" select="document($chunk.toc,/)"/> + + <xsl:choose> + <xsl:when test="$chunks//tocentry[@linkend=$id]">1</xsl:when> + <xsl:otherwise>0</xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="chunk-filename"> + <!-- returns the filename of a chunk --> + + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + + <xsl:variable name="chunks" select="document($chunk.toc,/)"/> + + <xsl:variable name="chunk" select="$chunks//tocentry[@linkend=$id]"/> + <xsl:variable name="filename"> + <xsl:call-template name="pi.dbhtml_filename"> + <xsl:with-param name="node" select="$chunk"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$chunk"> + <xsl:value-of select="$filename"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="parent::*" mode="chunk-filename"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="process-chunk"> + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + + <xsl:variable name="chunks" select="document($chunk.toc,/)"/> + + <xsl:variable name="chunk" select="$chunks//tocentry[@linkend=$id]"/> + <xsl:variable name="prev-id" + select="($chunk/preceding::tocentry + |$chunk/ancestor::tocentry)[last()]/@linkend"/> + <xsl:variable name="next-id" + select="($chunk/following::tocentry + |$chunk/child::tocentry)[1]/@linkend"/> + + <xsl:variable name="prev" select="key('id',$prev-id)"/> + <xsl:variable name="next" select="key('id',$next-id)"/> + + <xsl:variable name="ischunk"> + <xsl:call-template name="chunk"/> + </xsl:variable> + + <xsl:variable name="chunkfn"> + <xsl:if test="$ischunk='1'"> + <xsl:apply-templates mode="chunk-filename" select="."/> + </xsl:if> + </xsl:variable> + + <xsl:variable name="filename"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir" select="$base.dir"/> + <xsl:with-param name="base.name" select="$chunkfn"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$ischunk = 0"> + <xsl:apply-imports/> + </xsl:when> + + <xsl:otherwise> + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename" select="$filename"/> + <xsl:with-param name="content"> + <xsl:call-template name="chunk-element-content"> + <xsl:with-param name="prev" select="$prev"/> + <xsl:with-param name="next" select="$next"/> + </xsl:call-template> + </xsl:with-param> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="set"> + <xsl:call-template name="process-chunk"/> +</xsl:template> + +<xsl:template match="book"> + <xsl:call-template name="process-chunk"/> +</xsl:template> + +<xsl:template match="appendix"> + <xsl:call-template name="process-chunk"/> +</xsl:template> + +<xsl:template match="book/glossary"> + <xsl:call-template name="process-chunk"/> +</xsl:template> + +<xsl:template match="book/bibliography"> + <xsl:call-template name="process-chunk"/> +</xsl:template> + +<xsl:template match="dedication" mode="dedication"> + <xsl:call-template name="process-chunk"/> +</xsl:template> + +<xsl:template match="preface|chapter"> + <xsl:call-template name="process-chunk"/> +</xsl:template> + +<xsl:template match="part|reference"> + <xsl:call-template name="process-chunk"/> +</xsl:template> + +<xsl:template match="refentry"> + <xsl:call-template name="process-chunk"/> +</xsl:template> + +<xsl:template match="colophon"> + <xsl:call-template name="process-chunk"/> +</xsl:template> + +<xsl:template match="article"> + <xsl:call-template name="process-chunk"/> +</xsl:template> + +<xsl:template match="article/glossary"> + <xsl:call-template name="process-chunk"/> +</xsl:template> + +<xsl:template match="article/bibliography"> + <xsl:call-template name="process-chunk"/> +</xsl:template> + +<xsl:template match="sect1|sect2|sect3|sect4|sect5|section"> + <xsl:variable name="ischunk"> + <xsl:call-template name="chunk"/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$ischunk != 0"> + <xsl:call-template name="process-chunk"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-imports/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="setindex + |book/index + |article/index"> + <!-- some implementations use completely empty index tags to indicate --> + <!-- where an automatically generated index should be inserted. so --> + <!-- if the index is completely empty, skip it. --> + <xsl:if test="count(*)>0 or $generate.index != '0'"> + <xsl:call-template name="process-chunk"/> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="/"> + <!-- * Get a title for current doc so that we let the user --> + <!-- * know what document we are processing at this point. --> + <xsl:variable name="doc.title"> + <xsl:call-template name="get.doc.title"/> + </xsl:variable> + <xsl:choose> + <xsl:when test="$chunk.toc = ''"> + <xsl:message terminate="yes"> + <xsl:text>The chunk.toc file is not set.</xsl:text> + </xsl:message> + </xsl:when> + <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document, + toss the namespace and continue. Use the docbook5 namespaced + stylesheets for DocBook5 if you don't want to use this feature.--> + <!-- include extra test for Xalan quirk --> + <xsl:when test="$exsl.node.set.available != 0 + and (*/self::ng:* or */self::db:*)"> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$doc.title"/> + <xsl:with-param name="context-desc"> + <xsl:text>namesp. cut</xsl:text> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>stripped namespace before processing</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:variable name="nons"> + <xsl:apply-templates mode="stripNS"/> + </xsl:variable> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$doc.title"/> + <xsl:with-param name="context-desc"> + <xsl:text>namesp. cut</xsl:text> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>processing stripped document</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:apply-templates select="exsl:node-set($nons)"/> + </xsl:when> + <!-- Can't process unless namespace removed --> + <xsl:when test="*/self::ng:* or */self::db:*"> + <xsl:message terminate="yes"> + <xsl:text>Unable to strip the namespace from DB5 document,</xsl:text> + <xsl:text> cannot proceed.</xsl:text> + </xsl:message> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:choose> + <xsl:when test="count(key('id',$rootid)) = 0"> + <xsl:message terminate="yes"> + <xsl:text>ID '</xsl:text> + <xsl:value-of select="$rootid"/> + <xsl:text>' not found in document.</xsl:text> + </xsl:message> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$collect.xref.targets = 'yes' or + $collect.xref.targets = 'only'"> + <xsl:apply-templates select="key('id', $rootid)" + mode="collect.targets"/> + </xsl:if> + <xsl:if test="$collect.xref.targets != 'only'"> + <xsl:apply-templates select="key('id',$rootid)" + mode="process.root"/> + <xsl:if test="$tex.math.in.alt != ''"> + <xsl:apply-templates select="key('id',$rootid)" + mode="collect.tex.math"/> + </xsl:if> + <xsl:if test="$generate.manifest != 0"> + <xsl:call-template name="generate.manifest"> + <xsl:with-param name="node" select="key('id',$rootid)"/> + </xsl:call-template> + </xsl:if> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$collect.xref.targets = 'yes' or + $collect.xref.targets = 'only'"> + <xsl:apply-templates select="/" mode="collect.targets"/> + </xsl:if> + <xsl:if test="$collect.xref.targets != 'only'"> + <xsl:apply-templates select="/" mode="process.root"/> + <xsl:if test="$tex.math.in.alt != ''"> + <xsl:apply-templates select="/" mode="collect.tex.math"/> + </xsl:if> + <xsl:if test="$generate.manifest != 0"> + <xsl:call-template name="generate.manifest"> + <xsl:with-param name="node" select="/"/> + </xsl:call-template> + </xsl:if> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="process.root"> + <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template name="make.lots"> + <xsl:param name="toc.params" select="''"/> + <xsl:param name="toc"/> + + <xsl:variable name="lots"> + <xsl:if test="contains($toc.params, 'toc')"> + <xsl:copy-of select="$toc"/> + </xsl:if> + + <xsl:if test="contains($toc.params, 'figure')"> + <xsl:choose> + <xsl:when test="$chunk.separate.lots != '0'"> + <xsl:call-template name="make.lot.chunk"> + <xsl:with-param name="type" select="'figure'"/> + <xsl:with-param name="lot"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'figure'"/> + <xsl:with-param name="nodes" select=".//figure"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'figure'"/> + <xsl:with-param name="nodes" select=".//figure"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + <xsl:if test="contains($toc.params, 'table')"> + <xsl:choose> + <xsl:when test="$chunk.separate.lots != '0'"> + <xsl:call-template name="make.lot.chunk"> + <xsl:with-param name="type" select="'table'"/> + <xsl:with-param name="lot"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'table'"/> + <xsl:with-param name="nodes" select=".//table"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'table'"/> + <xsl:with-param name="nodes" select=".//table"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + <xsl:if test="contains($toc.params, 'example')"> + <xsl:choose> + <xsl:when test="$chunk.separate.lots != '0'"> + <xsl:call-template name="make.lot.chunk"> + <xsl:with-param name="type" select="'example'"/> + <xsl:with-param name="lot"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'example'"/> + <xsl:with-param name="nodes" select=".//example"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'example'"/> + <xsl:with-param name="nodes" select=".//example"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + <xsl:if test="contains($toc.params, 'equation')"> + <xsl:choose> + <xsl:when test="$chunk.separate.lots != '0'"> + <xsl:call-template name="make.lot.chunk"> + <xsl:with-param name="type" select="'equation'"/> + <xsl:with-param name="lot"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'equation'"/> + <xsl:with-param name="nodes" select=".//equation"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'equation'"/> + <xsl:with-param name="nodes" select=".//equation"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + <xsl:if test="contains($toc.params, 'procedure')"> + <xsl:choose> + <xsl:when test="$chunk.separate.lots != '0'"> + <xsl:call-template name="make.lot.chunk"> + <xsl:with-param name="type" select="'procedure'"/> + <xsl:with-param name="lot"> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'procedure'"/> + <xsl:with-param name="nodes" select=".//procedure[title]"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="list.of.titles"> + <xsl:with-param name="titles" select="'procedure'"/> + <xsl:with-param name="nodes" select=".//procedure[title]"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:variable> + + <xsl:if test="string($lots) != ''"> + <xsl:choose> + <xsl:when test="$chunk.tocs.and.lots != 0 and not(parent::*)"> + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir" select="$base.dir"/> + <xsl:with-param name="base.name"> + <xsl:call-template name="dbhtml-dir"/> + <xsl:apply-templates select="." mode="recursive-chunk-filename"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + <xsl:text>-toc</xsl:text> + <xsl:value-of select="$html.ext"/> + </xsl:with-param> + </xsl:call-template> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="chunk-element-content"> + <xsl:with-param name="prev" select="/foo"/> + <xsl:with-param name="next" select="/foo"/> + <xsl:with-param name="nav.context" select="'toc'"/> + <xsl:with-param name="content"> + <h1> + <xsl:apply-templates select="." mode="object.title.markup"/> + </h1> + <xsl:copy-of select="$lots"/> + </xsl:with-param> + </xsl:call-template> + </xsl:with-param> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$lots"/> + </xsl:otherwise> + </xsl:choose> + </xsl:if> +</xsl:template> + +<xsl:template name="make.lot.chunk"> + <xsl:param name="type" select="''"/> + <xsl:param name="lot"/> + + <xsl:if test="string($lot) != ''"> + <xsl:variable name="filename"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir" select="$base.dir"/> + <xsl:with-param name="base.name"> + <xsl:call-template name="dbhtml-dir"/> + <xsl:value-of select="$type"/> + <xsl:text>-toc</xsl:text> + <xsl:value-of select="$html.ext"/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="href"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.name"> + <xsl:call-template name="dbhtml-dir"/> + <xsl:value-of select="$type"/> + <xsl:text>-toc</xsl:text> + <xsl:value-of select="$html.ext"/> + </xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename" select="$filename"/> + <xsl:with-param name="content"> + <xsl:call-template name="chunk-element-content"> + <xsl:with-param name="prev" select="/foo"/> + <xsl:with-param name="next" select="/foo"/> + <xsl:with-param name="nav.context" select="'toc'"/> + <xsl:with-param name="content"> + <xsl:copy-of select="$lot"/> + </xsl:with-param> + </xsl:call-template> + </xsl:with-param> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> + <!-- And output a link to this file --> + <div> + <xsl:attribute name="class"> + <xsl:text>ListofTitles</xsl:text> + </xsl:attribute> + <a href="{$href}"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key"> + <xsl:choose> + <xsl:when test="$type='table'">ListofTables</xsl:when> + <xsl:when test="$type='figure'">ListofFigures</xsl:when> + <xsl:when test="$type='equation'">ListofEquations</xsl:when> + <xsl:when test="$type='example'">ListofExamples</xsl:when> + <xsl:when test="$type='procedure'">ListofProcedures</xsl:when> + <xsl:otherwise>ListofUnknown</xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </a> + </div> + </xsl:if> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/component.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/component.xsl new file mode 100644 index 000000000..666ea17de --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/component.xsl @@ -0,0 +1,425 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + +<!-- ******************************************************************** + $Id: component.xsl 8568 2010-01-11 03:16:56Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template name="component.title"> + <xsl:param name="node" select="."/> + + <xsl:variable name="level"> + <xsl:choose> + <xsl:when test="ancestor::section"> + <xsl:value-of select="count(ancestor::section)+1"/> + </xsl:when> + <xsl:when test="ancestor::sect5">6</xsl:when> + <xsl:when test="ancestor::sect4">5</xsl:when> + <xsl:when test="ancestor::sect3">4</xsl:when> + <xsl:when test="ancestor::sect2">3</xsl:when> + <xsl:when test="ancestor::sect1">2</xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <!-- Let's handle the case where a component (bibliography, for example) + occurs inside a section; will we need parameters for this? --> + + <xsl:element name="h{$level+1}"> + <xsl:attribute name="class">title</xsl:attribute> + <xsl:if test="$generate.id.attributes = 0"> + <xsl:call-template name="anchor"> + <xsl:with-param name="node" select="$node"/> + <xsl:with-param name="conditional" select="0"/> + </xsl:call-template> + </xsl:if> + <xsl:apply-templates select="$node" mode="object.title.markup"> + <xsl:with-param name="allow-anchors" select="1"/> + </xsl:apply-templates> + </xsl:element> +</xsl:template> + +<xsl:template name="component.subtitle"> + <xsl:param name="node" select="."/> + <xsl:variable name="subtitle" + select="($node/docinfo/subtitle + |$node/info/subtitle + |$node/prefaceinfo/subtitle + |$node/chapterinfo/subtitle + |$node/appendixinfo/subtitle + |$node/articleinfo/subtitle + |$node/artheader/subtitle + |$node/subtitle)[1]"/> + + <xsl:if test="$subtitle"> + <h3 class="subtitle"> + <i> + <xsl:apply-templates select="$node" mode="object.subtitle.markup"/> + </i> + </h3> + </xsl:if> +</xsl:template> + +<xsl:template name="component.separator"> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="dedication" mode="dedication"> + <xsl:call-template name="id.warning"/> + + <div> + <xsl:call-template name="common.html.attributes"> + <xsl:with-param name="inherit" select="1"/> + </xsl:call-template> + <xsl:call-template name="dedication.titlepage"/> + <xsl:apply-templates/> + <xsl:call-template name="process.footnotes"/> + </div> +</xsl:template> + +<xsl:template match="dedication/title|dedication/info/title" + mode="titlepage.mode" priority="2"> + <xsl:call-template name="component.title"> + <xsl:with-param name="node" select="ancestor::dedication[1]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="dedication/subtitle|dedication/info/subtitle" + mode="titlepage.mode" priority="2"> + <xsl:call-template name="component.subtitle"> + <xsl:with-param name="node" select="ancestor::dedication[1]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="dedication"></xsl:template> <!-- see mode="dedication" --> +<xsl:template match="dedication/title"></xsl:template> +<xsl:template match="dedication/subtitle"></xsl:template> +<xsl:template match="dedication/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="acknowledgements" mode="acknowledgements"> + <xsl:call-template name="id.warning"/> + + <div> + <xsl:call-template name="common.html.attributes"> + <xsl:with-param name="inherit" select="1"/> + </xsl:call-template> + <xsl:call-template name="acknowledgements.titlepage"/> + <xsl:apply-templates/> + <xsl:call-template name="process.footnotes"/> + </div> +</xsl:template> + +<xsl:template match="acknowledgements/title|acknowledgements/info/title" + mode="titlepage.mode" priority="2"> + <xsl:call-template name="component.title"> + <xsl:with-param name="node" select="ancestor::acknowledgements[1]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="acknowledgements/subtitle|acknowledgements/info/subtitle" + mode="titlepage.mode" priority="2"> + <xsl:call-template name="component.subtitle"> + <xsl:with-param name="node" select="ancestor::acknowledgements[1]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="acknowledgements"></xsl:template> <!-- see mode="acknowledgements" --> +<xsl:template match="acknowledgements/title"></xsl:template> +<xsl:template match="acknowledgements/subtitle"></xsl:template> +<xsl:template match="acknowledgements/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="colophon"> + <xsl:call-template name="id.warning"/> + + <div> + <xsl:call-template name="common.html.attributes"> + <xsl:with-param name="inherit" select="1"/> + </xsl:call-template> + <xsl:if test="$generate.id.attributes != 0"> + <xsl:attribute name="id"> + <xsl:call-template name="object.id"/> + </xsl:attribute> + </xsl:if> + + <xsl:call-template name="component.separator"/> + <xsl:call-template name="component.title"/> + <xsl:call-template name="component.subtitle"/> + + <xsl:apply-templates/> + <xsl:call-template name="process.footnotes"/> + </div> +</xsl:template> + +<xsl:template match="colophon/title"></xsl:template> +<xsl:template match="colophon/subtitle"></xsl:template> +<xsl:template match="colophon/titleabbrev"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="preface"> + <xsl:call-template name="id.warning"/> + + <div> + <xsl:call-template name="common.html.attributes"> + <xsl:with-param name="inherit" select="1"/> + </xsl:call-template> + <xsl:if test="$generate.id.attributes != 0"> + <xsl:attribute name="id"> + <xsl:call-template name="object.id"/> + </xsl:attribute> + </xsl:if> + + <xsl:call-template name="component.separator"/> + <xsl:call-template name="preface.titlepage"/> + + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + + <xsl:if test="contains($toc.params, 'toc')"> + <xsl:call-template name="component.toc"> + <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/> + </xsl:call-template> + <xsl:call-template name="component.toc.separator"/> + </xsl:if> + <xsl:apply-templates/> + <xsl:call-template name="process.footnotes"/> + </div> +</xsl:template> + +<xsl:template match="preface/title" mode="titlepage.mode" priority="2"> + <xsl:call-template name="component.title"> + <xsl:with-param name="node" select="ancestor::preface[1]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="preface/subtitle + |preface/prefaceinfo/subtitle + |preface/info/subtitle + |preface/docinfo/subtitle" + mode="titlepage.mode" priority="2"> + <xsl:call-template name="component.subtitle"> + <xsl:with-param name="node" select="ancestor::preface[1]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="preface/docinfo|prefaceinfo"></xsl:template> +<xsl:template match="preface/info"></xsl:template> +<xsl:template match="preface/title"></xsl:template> +<xsl:template match="preface/titleabbrev"></xsl:template> +<xsl:template match="preface/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="chapter"> + <xsl:call-template name="id.warning"/> + + <div> + <xsl:call-template name="common.html.attributes"> + <xsl:with-param name="inherit" select="1"/> + </xsl:call-template> + <xsl:if test="$generate.id.attributes != 0"> + <xsl:attribute name="id"> + <xsl:call-template name="object.id"/> + </xsl:attribute> + </xsl:if> + + <xsl:call-template name="component.separator"/> + <xsl:call-template name="chapter.titlepage"/> + + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + <xsl:if test="contains($toc.params, 'toc')"> + <xsl:call-template name="component.toc"> + <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/> + </xsl:call-template> + <xsl:call-template name="component.toc.separator"/> + </xsl:if> + <xsl:apply-templates/> + <xsl:call-template name="process.footnotes"/> + </div> +</xsl:template> + +<xsl:template match="chapter/title|chapter/chapterinfo/title|chapter/info/title" + mode="titlepage.mode" priority="2"> + <xsl:call-template name="component.title"> + <xsl:with-param name="node" select="ancestor::chapter[1]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="chapter/subtitle + |chapter/chapterinfo/subtitle + |chapter/info/subtitle + |chapter/docinfo/subtitle" + mode="titlepage.mode" priority="2"> + <xsl:call-template name="component.subtitle"> + <xsl:with-param name="node" select="ancestor::chapter[1]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="chapter/docinfo|chapterinfo"></xsl:template> +<xsl:template match="chapter/info"></xsl:template> +<xsl:template match="chapter/title"></xsl:template> +<xsl:template match="chapter/titleabbrev"></xsl:template> +<xsl:template match="chapter/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="appendix"> + <xsl:variable name="ischunk"> + <xsl:call-template name="chunk"/> + </xsl:variable> + + <xsl:call-template name="id.warning"/> + + <div> + <xsl:call-template name="common.html.attributes"> + <xsl:with-param name="inherit" select="1"/> + </xsl:call-template> + <xsl:if test="$generate.id.attributes != 0"> + <xsl:attribute name="id"> + <xsl:call-template name="object.id"/> + </xsl:attribute> + </xsl:if> + + <xsl:choose> + <xsl:when test="parent::article and $ischunk = 0"> + <xsl:call-template name="section.heading"> + <xsl:with-param name="level" select="1"/> + <xsl:with-param name="title"> + <xsl:apply-templates select="." mode="object.title.markup"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="component.separator"/> + <xsl:call-template name="appendix.titlepage"/> + </xsl:otherwise> + </xsl:choose> + + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + + <xsl:if test="contains($toc.params, 'toc')"> + <xsl:call-template name="component.toc"> + <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/> + </xsl:call-template> + <xsl:call-template name="component.toc.separator"/> + </xsl:if> + + <xsl:apply-templates/> + + <xsl:if test="not(parent::article) or $ischunk != 0"> + <xsl:call-template name="process.footnotes"/> + </xsl:if> + </div> +</xsl:template> + +<xsl:template match="appendix/title|appendix/appendixinfo/title" + mode="titlepage.mode" priority="2"> + <xsl:call-template name="component.title"> + <xsl:with-param name="node" select="ancestor::appendix[1]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="appendix/subtitle + |appendix/appendixinfo/subtitle + |appendix/info/subtitle + |appendix/docinfo/subtitle" + mode="titlepage.mode" priority="2"> + <xsl:call-template name="component.subtitle"> + <xsl:with-param name="node" select="ancestor::appendix[1]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="appendix/docinfo|appendixinfo"></xsl:template> +<xsl:template match="appendix/info"></xsl:template> +<xsl:template match="appendix/title"></xsl:template> +<xsl:template match="appendix/titleabbrev"></xsl:template> +<xsl:template match="appendix/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="article"> + <xsl:call-template name="id.warning"/> + + <div> + <xsl:call-template name="common.html.attributes"> + <xsl:with-param name="inherit" select="1"/> + </xsl:call-template> + <xsl:if test="$generate.id.attributes != 0"> + <xsl:attribute name="id"> + <xsl:call-template name="object.id"/> + </xsl:attribute> + </xsl:if> + + <xsl:call-template name="article.titlepage"/> + + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="make.lots"> + <xsl:with-param name="toc.params" select="$toc.params"/> + <xsl:with-param name="toc"> + <xsl:call-template name="component.toc"> + <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + + <xsl:apply-templates/> + <xsl:call-template name="process.footnotes"/> + </div> +</xsl:template> + +<xsl:template match="article/title|article/articleinfo/title" mode="titlepage.mode" priority="2"> + <xsl:call-template name="component.title"> + <xsl:with-param name="node" select="ancestor::article[1]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="article/subtitle + |article/articleinfo/subtitle + |article/info/subtitle + |article/artheader/subtitle" + mode="titlepage.mode" priority="2"> + <xsl:call-template name="component.subtitle"> + <xsl:with-param name="node" select="ancestor::article[1]"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="article/artheader|article/articleinfo"></xsl:template> +<xsl:template match="article/info"></xsl:template> +<xsl:template match="article/title"></xsl:template> +<xsl:template match="article/titleabbrev"></xsl:template> +<xsl:template match="article/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/division.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/division.xsl new file mode 100644 index 000000000..e910fdd5d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/division.xsl @@ -0,0 +1,217 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + +<!-- ******************************************************************** + $Id: division.xsl 8421 2009-05-04 07:49:49Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="set"> + <xsl:call-template name="id.warning"/> + + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="dir"> + <xsl:with-param name="inherit" select="1"/> + </xsl:call-template> + <xsl:call-template name="language.attribute"/> + <xsl:if test="$generate.id.attributes != 0"> + <xsl:attribute name="id"> + <xsl:call-template name="object.id"/> + </xsl:attribute> + </xsl:if> + + <xsl:call-template name="set.titlepage"/> + + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="make.lots"> + <xsl:with-param name="toc.params" select="$toc.params"/> + <xsl:with-param name="toc"> + <xsl:call-template name="set.toc"> + <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + + <xsl:apply-templates/> + </div> +</xsl:template> + +<xsl:template match="set/setinfo"></xsl:template> +<xsl:template match="set/title"></xsl:template> +<xsl:template match="set/titleabbrev"></xsl:template> +<xsl:template match="set/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="book"> + <xsl:call-template name="id.warning"/> + + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="$generate.id.attributes != 0"> + <xsl:attribute name="id"> + <xsl:call-template name="object.id"/> + </xsl:attribute> + </xsl:if> + + <xsl:call-template name="book.titlepage"/> + + <xsl:apply-templates select="dedication" mode="dedication"/> + <xsl:apply-templates select="acknowledgements" mode="acknowledgements"/> + + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + + <xsl:call-template name="make.lots"> + <xsl:with-param name="toc.params" select="$toc.params"/> + <xsl:with-param name="toc"> + <xsl:call-template name="division.toc"> + <xsl:with-param name="toc.title.p" select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + + <xsl:apply-templates/> + </div> +</xsl:template> + +<xsl:template match="book/bookinfo"></xsl:template> +<xsl:template match="book/info"></xsl:template> +<xsl:template match="book/title"></xsl:template> +<xsl:template match="book/titleabbrev"></xsl:template> +<xsl:template match="book/subtitle"></xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="part"> + <xsl:call-template name="id.warning"/> + + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="$generate.id.attributes != 0"> + <xsl:attribute name="id"> + <xsl:call-template name="object.id"/> + </xsl:attribute> + </xsl:if> + + <xsl:call-template name="part.titlepage"/> + + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + <xsl:if test="not(partintro) and contains($toc.params, 'toc')"> + <xsl:call-template name="division.toc"/> + </xsl:if> + <xsl:apply-templates/> + </div> +</xsl:template> + +<xsl:template match="part" mode="make.part.toc"> + <xsl:call-template name="division.toc"/> +</xsl:template> + +<xsl:template match="reference" mode="make.part.toc"> + <xsl:call-template name="division.toc"/> +</xsl:template> + +<xsl:template match="part/docinfo"></xsl:template> +<xsl:template match="part/partinfo"></xsl:template> +<xsl:template match="part/info"></xsl:template> +<xsl:template match="part/title"></xsl:template> +<xsl:template match="part/titleabbrev"></xsl:template> +<xsl:template match="part/subtitle"></xsl:template> + +<xsl:template match="partintro"> + <xsl:call-template name="id.warning"/> + + <div> + <xsl:call-template name="common.html.attributes"/> + <xsl:if test="$generate.id.attributes != 0"> + <xsl:attribute name="id"> + <xsl:call-template name="object.id"/> + </xsl:attribute> + </xsl:if> + + <xsl:call-template name="partintro.titlepage"/> + <xsl:apply-templates/> + + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="node" select="parent::*"/> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + <xsl:if test="contains($toc.params, 'toc')"> + <!-- not ancestor::part because partintro appears in reference --> + <xsl:apply-templates select="parent::*" mode="make.part.toc"/> + </xsl:if> + <xsl:call-template name="process.footnotes"/> + </div> +</xsl:template> + +<xsl:template match="partintro/title"></xsl:template> +<xsl:template match="partintro/titleabbrev"></xsl:template> +<xsl:template match="partintro/subtitle"></xsl:template> + +<xsl:template match="partintro/title" mode="partintro.title.mode"> + <h2> + <xsl:apply-templates/> + </h2> +</xsl:template> + +<xsl:template match="partintro/subtitle" mode="partintro.title.mode"> + <h3> + <i><xsl:apply-templates/></i> + </h3> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="book" mode="division.number"> + <xsl:number from="set" count="book" format="1."/> +</xsl:template> + +<xsl:template match="part" mode="division.number"> + <xsl:number from="book" count="part" format="I."/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="division.title"> + <xsl:param name="node" select="."/> + + <h1> + <xsl:attribute name="class">title</xsl:attribute> + <xsl:if test="$generate.id.attributes = 0"> + <xsl:call-template name="anchor"> + <xsl:with-param name="node" select="$node"/> + <xsl:with-param name="conditional" select="0"/> + </xsl:call-template> + </xsl:if> + <xsl:apply-templates select="$node" mode="object.title.markup"> + <xsl:with-param name="allow-anchors" select="1"/> + </xsl:apply-templates> + </h1> +</xsl:template> + +</xsl:stylesheet> + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.css.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.css.xml new file mode 100644 index 000000000..d93a25c8f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.css.xml @@ -0,0 +1,109 @@ +<?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 */ + + font-weight: bold; + margin-top: 1em; + margin-bottom: 1em; +} + + +/* 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 */ +/********************************/ +</style> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl new file mode 100644 index 000000000..523ed0da9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/docbook.xsl @@ -0,0 +1,480 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:ng="http://docbook.org/docbook-ng" + xmlns:db="http://docbook.org/ns/docbook" + xmlns:exsl="http://exslt.org/common" + xmlns:exslt="http://exslt.org/common" + exclude-result-prefixes="db ng exsl exslt" + version='1.0'> + +<xsl:output method="html" + encoding="ISO-8859-1" + indent="no"/> + +<!-- ******************************************************************** + $Id: docbook.xsl 8783 2010-07-28 10:59:39Z mzjn $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:include href="../VERSION"/> +<xsl:include href="param.xsl"/> +<xsl:include href="../lib/lib.xsl"/> +<xsl:include href="../common/l10n.xsl"/> +<xsl:include href="../common/common.xsl"/> +<xsl:include href="../common/utility.xsl"/> +<xsl:include href="../common/labels.xsl"/> +<xsl:include href="../common/titles.xsl"/> +<xsl:include href="../common/subtitles.xsl"/> +<xsl:include href="../common/gentext.xsl"/> +<xsl:include href="../common/targets.xsl"/> +<xsl:include href="../common/olink.xsl"/> +<xsl:include href="../common/pi.xsl"/> +<xsl:include href="autotoc.xsl"/> +<xsl:include href="autoidx.xsl"/> +<xsl:include href="lists.xsl"/> +<xsl:include href="callout.xsl"/> +<xsl:include href="verbatim.xsl"/> +<xsl:include href="graphics.xsl"/> +<xsl:include href="xref.xsl"/> +<xsl:include href="formal.xsl"/> +<xsl:include href="table.xsl"/> +<xsl:include href="htmltbl.xsl"/> +<xsl:include href="sections.xsl"/> +<xsl:include href="inline.xsl"/> +<xsl:include href="footnote.xsl"/> +<xsl:include href="html.xsl"/> +<xsl:include href="info.xsl"/> +<xsl:include href="keywords.xsl"/> +<xsl:include href="division.xsl"/> +<xsl:include href="toc.xsl"/> +<xsl:include href="index.xsl"/> +<xsl:include href="refentry.xsl"/> +<xsl:include href="math.xsl"/> +<xsl:include href="admon.xsl"/> +<xsl:include href="component.xsl"/> +<xsl:include href="biblio.xsl"/> +<xsl:include href="biblio-iso690.xsl"/> +<xsl:include href="glossary.xsl"/> +<xsl:include href="block.xsl"/> +<xsl:include href="task.xsl"/> +<xsl:include href="qandaset.xsl"/> +<xsl:include href="synop.xsl"/> +<xsl:include href="titlepage.xsl"/> +<xsl:include href="titlepage.templates.xsl"/> +<xsl:include href="pi.xsl"/> +<xsl:include href="ebnf.xsl"/> +<xsl:include href="chunker.xsl"/> +<xsl:include href="html-rtf.xsl"/> +<xsl:include href="annotations.xsl"/> +<xsl:include href="../common/stripns.xsl"/> + +<xsl:param name="stylesheet.result.type" select="'html'"/> +<xsl:param name="htmlhelp.output" select="0"/> + +<!-- ==================================================================== --> + +<xsl:key name="id" match="*" use="@id|@xml:id"/> +<xsl:key name="gid" match="*" use="generate-id()"/> + +<!-- ==================================================================== --> + +<xsl:template match="*"> + <xsl:message> + <xsl:text>Element </xsl:text> + <xsl:value-of select="local-name(.)"/> + <xsl:text> in namespace '</xsl:text> + <xsl:value-of select="namespace-uri(.)"/> + <xsl:text>' encountered</xsl:text> + <xsl:if test="parent::*"> + <xsl:text> in </xsl:text> + <xsl:value-of select="name(parent::*)"/> + </xsl:if> + <xsl:text>, but no template matches.</xsl:text> + </xsl:message> + + <span style="color: red"> + <xsl:text><</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:text>></xsl:text> + <xsl:apply-templates/> + <xsl:text></</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:text>></xsl:text> + </span> +</xsl:template> + +<xsl:template match="text()"> + <xsl:value-of select="."/> +</xsl:template> + +<xsl:template name="body.attributes"> + <xsl:attribute name="bgcolor">white</xsl:attribute> + <xsl:attribute name="text">black</xsl:attribute> + <xsl:attribute name="link">#0000FF</xsl:attribute> + <xsl:attribute name="vlink">#840084</xsl:attribute> + <xsl:attribute name="alink">#0000FF</xsl:attribute> + <xsl:if test="starts-with($writing.mode, 'rl')"> + <xsl:attribute name="dir">rtl</xsl:attribute> + </xsl:if> +</xsl:template> + +<xsl:template name="head.content"> + <xsl:param name="node" select="."/> + <xsl:param name="title"> + <xsl:apply-templates select="$node" mode="object.title.markup.textonly"/> + </xsl:param> + + <title> + <xsl:copy-of select="$title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note + + + namesp. cut + + + stripped namespace before processing + + + + + + + + Note + + + namesp. cut + + + processing stripped document + + + + + + + + Unable to strip the namespace from DB5 document, + cannot proceed. + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/ebnf.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/ebnf.xsl new file mode 100644 index 000000000..b2ab23aab --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/ebnf.xsl @@ -0,0 +1,329 @@ + + + + + + + + +$Id: ebnf.xsl 8178 2008-12-15 22:26:38Z bobstayton $ + +Walsh +Norman +19992000 +Norman Walsh + + +HTML EBNF Reference + + +
Introduction + +This is technical reference documentation for the DocBook XSL +Stylesheets; it documents (some of) the parameters, templates, and +other elements of the stylesheets. + +This reference describes the templates and parameters relevant +to formatting EBNF markup. + +This is not intended to be user documentation. +It is provided for developers writing customization layers for the +stylesheets, and for anyone who's interested in how it +works. + +Although I am trying to be thorough, this documentation is known +to be incomplete. Don't forget to read the source, too :-) +
+
+
+ + + + + + + + + + + + 1 + + + + + + EBNF + + for + + + + + + + + + + + + +
+ + +
+ + + + + + + + + + EBNF productions + +
+
+
+ + + + + + + + + + [ + + ] + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + Error: no ID for productionrecap linkend: + + . + + + + + + Warning: multiple "IDs" for productionrecap linkend: + + . + + + + + + + + + + + + + + + + | +
+
+
+ + + + + + + + + + + + + + + production + + + + + + + + + Non-terminals with no content must point to + production elements in the current document. + + + Invalid xpointer for empty nt: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + + + + + + + + /*  + +  */ +
+
+ + + + + + + + + constraintdef + + + + + + + + + + + + + + + + : + + + + + + + : + + + + + + + + + +  ] + +
+
+
+ + +
+ + + +
+
+ + +

+
+ + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/footnote.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/footnote.xsl new file mode 100644 index 000000000..035e3f3fa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/footnote.xsl @@ -0,0 +1,313 @@ + + + + + + + + + + + #ftn. + + + + + + + [ + + + + + ] + + + + + [ + + + + + ] + + + + + + + + + + + +ERROR: A footnoteref element has a linkend that points to an element that is not a footnote. +Typically this happens when an id attribute is accidentally applied to the child of a footnote element. +target element: +linkend/id: + + + + + + + + + + + + #ftn. + + + + + [ + + + + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ftn. + + + + + + # + + + + + + + + + + + + + + [ + + + + + ] + + + + + + + + + + + + ftn. + + + + + + # + + + + + + + [ + + + + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+
+ + +
+
+

The following annotations are from this essay. You are seeing + them here because your browser doesn’t support the user-interface + techniques used to make them appear as ‘popups’ on modern browsers.

+
+ + +
+
+
+ + + + + + + + +
+ + +
+
+ + +
+ + + +
+
+ + + + Warning: footnote number may not be generated + correctly; + + unexpected as first child of footnote. + +
+ + +
+
+
+
+ + + + + + + + +
diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/formal.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/formal.xsl new file mode 100644 index 000000000..768ca582e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/formal.xsl @@ -0,0 +1,425 @@ + + + + + +1 + + + + + + + + + + +
+ + + + + + + +
+ +
+ + + + + +

+ + +

+

+ + + + + + + +
+
+ +
+
+
+ + + + + + + + + -float + + + + + + + + + +
+ + + + + + + + + + + + + +
+ +
+
+ +

+ + + +

+
+
+
+ + + + + +
+

+ + + + + + + + +

+

+
+ + + + + + + + + -float + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Broken table: tr descendent of CALS Table. + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + Broken table: row descendent of HTML table. + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + float: + + ; + + + +
+
+ +
diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/glossary.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/glossary.xsl new file mode 100644 index 000000000..f98ddbc14 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/glossary.xsl @@ -0,0 +1,492 @@ + + +%common.entities; +]> + + + + + + + + &setup-language-variable; + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+ + + +
+ + + + +
+
+ + + + + + + + + + + &setup-language-variable; +
+ + + + + +
+ + + + + + + + + + +
+
+
+ + + + + &setup-language-variable; + + +
+ + + +
+ + + + + + + + + + +
+
+
+ + +

+ + +

+
+ + + + + + + + +
+ + + + 0 + 1 + + + + + + + + ( + + ) + + + + + +
+
+ +
+ + + + 0 + 1 + + + + + + + + ( + + ) + +
+
+ +
+ + + + 0 + 1 + + + + + +
+
+
+ + +
+ + + + , + + + + + , + + + + + , + + + + + + + + + + + +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glosssee @otherterm reference not found: + + + + + + + + + + + + + + +

+
+
+ + +
+ + +

+ + + + + + + + + + + + + +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glossseealso @otherterm reference not found: + + + + + + + + + + + + + + + + + + + + + + + + + + &setup-language-variable; + + + + + + + + Warning: processing automatic glossary + without a glossary.collection file. + + + + + + Warning: processing automatic glossary but unable to + open glossary.collection file ' + + ' + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+
+
+ + + + +
+
+ + + + + + + + + + &setup-language-variable; + +
+ + + +
+ + + + ! + + + + + + + + + + + + + + + +
+
+
+ + + +
diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/graphics.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/graphics.xsl new file mode 100644 index 000000000..93ea95feb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/graphics.xsl @@ -0,0 +1,1515 @@ + + + + + + + + + + + + + + 1 + + + + + + 1 + + + + + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 0 + + 1 + 0 + + + + + + 1.0 + 1.0 + + + + 1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + px + + + + + + + + + + + px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + px + + + + + + + + + + + px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + middle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: imagemaps not supported + on scaled images + + + + 0 + + + + + + + + + + + + + + + + + + + + middle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + height: + + px + + + + + + + + + + + +
+ + + + + background-color: + + + + + + + + + + + + + + + + + + + + + +
+
+ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + calspair + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + , + + , + + + + + + + + + + + + Warning: only calspair or + otherunits='imagemap' supported + in imageobjectco + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + middle + + + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + Cannot insert + . Check use.extensions and textinsert.extension parameters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + Cannot insert + . Check use.extensions and textinsert.extension parameters. + + + + + + + + +
+ + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/highlight.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/highlight.xsl new file mode 100644 index 000000000..d6fc969bf --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/highlight.xsl @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html-rtf.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html-rtf.xsl new file mode 100644 index 000000000..8de6bb30f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html-rtf.xsl @@ -0,0 +1,336 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + + + + +
+
+
+
+ + + + + + + + + + + + + + +
+
+ + + + + + + + + + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html.xsl new file mode 100644 index 000000000..bf76e83f1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/html.xsl @@ -0,0 +1,612 @@ + + + + + + + + + + left + right + left + + + + + + right + left + right + + + + + + ltr + rtl + ltr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + # + + + + + + + + + + + + + + + + + + + bullet + + + + + + + + + bullet + + + © + + + ® + (SM) +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID recommended on + + + : + + + + ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: no root element for CSS source file' + + '. + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: missing CSS input filename. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/htmltbl.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/htmltbl.xsl new file mode 100644 index 000000000..1fb5d6f05 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/htmltbl.xsl @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float: + + left + right + + + + + + + + + + + + + none + none + + ; + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/index.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/index.xsl new file mode 100644 index 000000000..18370201c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/index.xsl @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+
+ + + + + + + + + + +
+
+
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + +
+ + + + + + + + + +
+ +
+
+
+ + +

+ + +

+
+ + + + + + + + + +
+ + + + + + + + + + + + +
+ +
+
+ + + +
+
+ + + + + + + + + + +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+
+ +
+
+ + + + + + + + + + + + + + +
+
+
+ + +
+ ( + + + + + + ) +
+
+ + +
+ ( + + + + + + ) +
+
+ + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/info.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/info.xsl new file mode 100644 index 000000000..404ac1326 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/info.xsl @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/inline.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/inline.xsl new file mode 100644 index 000000000..cd3d34242 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/inline.xsl @@ -0,0 +1,1490 @@ + + +%common.entities; +]> + + + + + + + + + + + + + + + + + + + _blank + _top + + + + + + + + + + + + + + 1 + 0 + + + + + + + + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XLink to nonexistent id: + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + span + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + , + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + abbr + + + + + + acronym + + + + + + + + + + + + + + + + + + + + + + + + + + http://example.com/cgi-bin/man.cgi? + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SM + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glossary.collection specified, but there are + + automatic glossaries + + + + + + + + + + + + + + + + + + + + + + + + There's no entry for + + in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Error: no glossentry for glossterm: + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + element + + + + + + + + + + + + + + + + </ + + > + + + & + + ; + + + &# + + ; + + + % + + ; + + + <? + + > + + + <? + + ?> + + + < + + > + + + < + + /> + + + <!-- + + --> + + + + + + + + + + + + + + + + + + + + + + < + + + + + mailto: + + + + + + > + + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + + + + + + + + + + + + + + + + + + ] + + + [ + + ] + + + + + + + + + + + + + [ + + + + + + + + + + + + ] + + + [ + + ] + + + + + + + + + + + + +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/keywords.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/keywords.xsl new file mode 100644 index 000000000..c12e39fc9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/keywords.xsl @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + , + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/lists.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/lists.xsl new file mode 100644 index 000000000..52123b020 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/lists.xsl @@ -0,0 +1,1183 @@ + + + + + + + + +
+ + + + + + + + + +
    + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + circle + disc + square + + + + + + +
  • + + + + list-style-type: + + + + + + + + + + + +
    + +
    +
    + + + +
    +
  • +
    + + + + + + + + + + + + + 1 + a + i + A + I + + + + Unexpected numeration: + + + + + + + +
    + + + + + + + + + + + + + + + + + + +
    +
    + +
      + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + + + + + + +
  • + + + + + + + + + + + + + + +
    + +
    +
    + + + +
    +
  • +
    + + + + + + + + + + + + + +
    + +
    +
    + + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + +
    + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    + + + + + + + + + + + + + +

    +
    +
    +
    + + +
    + + +
    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + +
    + +
    +
    + + + +
    +
    + + + + + + + + + + + + + + + 1 + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + 1 + + + +
    +
    + + + + + + + + + + + + 1 + + + +
    +
    + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + + 1 + + + + + + + + +   + + + + + + + + + + + + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + 1 + + 1 + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + +
    + + + + + 0 + 1 + + + + + + + + + + + + +
      + + +
    +
    + +
      + + + + + +
    +
    +
    + + + + +
    +
    + + + + + + + + + + + + +
      + + +
    +
    + + +
  • + + + +
  • +
    + + + +
      + + +
    +
    + + +

    + + + + +

    +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + +
    +
    + + +
    + + + + + + + +
    +
    + + + + + + + + + +
    + + + +
    +
    + + + + + + + + +
    + + + + + : + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    +
    + +
    + +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + +

    + + + + +

    + + + + + +
    + +
    + + + + +
    +
    +
    +
    +
    + + + + + + + + + +

    + + + + + + + + + + + + + + + +

    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + + + + + + + + + + + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/maketoc.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/maketoc.xsl new file mode 100644 index 000000000..1ba3931e5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/maketoc.xsl @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + filename=" + + " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/manifest.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/manifest.xsl new file mode 100644 index 000000000..01faaccf3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/manifest.xsl @@ -0,0 +1,22 @@ + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/math.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/math.xsl new file mode 100644 index 000000000..801b10681 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/math.xsl @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unsupported TeX math notation: + + + + + + + + + + + + + \nopagenumbers + + + + \bye + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + $ + + + + $ + + \vfill\eject + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + $$ + + + + $$ + + \vfill\eject + + + + + + + + + \documentclass{article} + \pagestyle{empty} + \begin{document} + + + + \end{document} + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + $ + + + + $ + + \newpage + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + $$ + + + + $$ + + \newpage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/oldchunker.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/oldchunker.xsl new file mode 100644 index 000000000..fe6b17c3b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/oldchunker.xsl @@ -0,0 +1,202 @@ + + + + + + + + + + + + + +Encoding used in generated HTML pages + +This encoding is used in files generated by chunking stylesheet. Currently +only Saxon is able to change output encoding. + + + + + + + + + +Saxon character representation used in generated HTML pages + +This character representation is used in files generated by chunking stylesheet. If +you want to suppress entity references for characters with direct representation +in default.encoding, set this parameter to value native. + + + + + + + + + + + + + + + + + + + + + + + + Chunking isn't supported with + + + + + + + + + + + + + + + Writing + + + for + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Can't make chunks with + + 's processor. + + + + + + + + + + + + + + + + Writing + + + for + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Can't make chunks with + + 's processor. + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/onechunk.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/onechunk.xsl new file mode 100644 index 000000000..527dccfdb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/onechunk.xsl @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + +1 + + + + # + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xml new file mode 100644 index 000000000..e70de9cf2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xml @@ -0,0 +1,10905 @@ + + + +HTML Parameter Reference + +$Id: param.xweb 8552 2009-12-07 17:45:26Z bobstayton $ + + + + Walsh + Norman + + + + 1999 + 2000 + 2001 + 2002 + 2003 + 2004 + 2005 + 2006 + 2007 + Norman Walsh + + + This is reference documentation for all user-configurable + parameters in the DocBook XSL HTML stylesheets (for generating + HTML output). + + +Admonitions + + +admon.graphics.extension +string + + +admon.graphics.extension +Filename extension for admonition graphics + + + + +<xsl:param name="admon.graphics.extension">.png</xsl:param> + + + +Description + +Sets the filename extension to use on admonition graphics. + + + + + + +admon.graphics.path +string + + +admon.graphics.path +Path to admonition graphics + + + +<xsl:param name="admon.graphics.path">images/</xsl:param> + + +Description + +Sets the path to the directory containing the admonition graphics +(caution.png, important.png etc). This location is normally relative +to the output html directory. See base.dir + + + + + + +admon.graphics +boolean + + +admon.graphics +Use graphics in admonitions? + + + + +<xsl:param name="admon.graphics" select="0"></xsl:param> + + + +Description + +If true (non-zero), admonitions are presented in an alternate style that uses +a graphic. Default graphics are provided in the distribution. + + + + + + + +admon.textlabel +boolean + + +admon.textlabel +Use text label in admonitions? + + + + +<xsl:param name="admon.textlabel" select="1"></xsl:param> + + + +Description + +If true (non-zero), admonitions are presented with a generated +text label such as Note or Warning in the appropriate language. +If zero, such labels are turned off, but any title child +of the admonition element are still output. +The default value is 1. + + + + + + + +admon.style +string + + +admon.style +Specifies the CSS style attribute that should be added to +admonitions. + + + +<xsl:param name="admon.style"> + <xsl:value-of select="concat('margin-', $direction.align.start, ': 0.5in; margin-', $direction.align.end, ': 0.5in;')"></xsl:value-of> +</xsl:param> + + +Description + +Specifies the value of the CSS style +attribute that should be added to admonitions. + + + + + + +Callouts + + +callout.defaultcolumn +integer + + +callout.defaultcolumn +Indicates what column callouts appear in by default + + + + +<xsl:param name="callout.defaultcolumn">60</xsl:param> + + + +Description + +If a callout does not identify a column (for example, if it uses +the linerange unit), +it will appear in the default column. + + + + + + + +callout.graphics.extension +string + + +callout.graphics.extension +Filename extension for callout graphics + + + + +<xsl:param name="callout.graphics.extension">.png</xsl:param> + + + + +Description +Sets the filename extension to use on callout graphics. + + +The Docbook XSL distribution provides callout graphics in the following formats: +SVG (extension: .svg) +PNG (extension: .png) +GIF (extension: .gif) + + + + + + +callout.graphics.number.limit +integer + + +callout.graphics.number.limit +Number of the largest callout graphic + + + + +<xsl:param name="callout.graphics.number.limit">15</xsl:param> + + + + +Description + +If callout.graphics is non-zero, graphics +are used to represent callout numbers instead of plain text. The value +of callout.graphics.number.limit is the largest +number for which a graphic exists. If the callout number exceeds this +limit, the default presentation "(plain text instead of a graphic)" +will be used. + + + + + + + +callout.graphics.path +string + + +callout.graphics.path +Path to callout graphics + + + + +<xsl:param name="callout.graphics.path">images/callouts/</xsl:param> + + + +Description + +Sets the path to the directory holding the callout graphics. his +location is normally relative to the output html directory. see +base.dir. Always terminate the directory with / since the graphic file +is appended to this string, hence needs the separator. + + + + + + + +callout.graphics +boolean + + +callout.graphics +Use graphics for callouts? + + + + +<xsl:param name="callout.graphics" select="1"></xsl:param> + + + +Description + +If non-zero, callouts are presented with graphics (e.g., reverse-video +circled numbers instead of "(1)", "(2)", etc.). +Default graphics are provided in the distribution. + + + + + + + +callout.list.table +boolean + + +callout.list.table +Present callout lists using a table? + + + + +<xsl:param name="callout.list.table" select="1"></xsl:param> + + + +Description + +The default presentation of calloutlists uses +an HTML DL element. Some browsers don't align DLs very well +if callout.graphics is used. With this option +turned on, calloutlists are presented in an HTML +TABLE, which usually results in better alignment +of the callout number with the callout description. + + + + + + +callout.unicode.number.limit +integer + + +callout.unicode.number.limit +Number of the largest unicode callout character + + + + +<xsl:param name="callout.unicode.number.limit">10</xsl:param> + + + +Description + +If callout.unicode +is non-zero, unicode characters are used to represent +callout numbers. The value of +callout.unicode.number.limit +is +the largest number for which a unicode character exists. If the callout number +exceeds this limit, the default presentation "(nnn)" will always +be used. + + + + + + + +callout.unicode.start.character +integer + + +callout.unicode.start.character +First Unicode character to use, decimal value. + + + + +<xsl:param name="callout.unicode.start.character">10102</xsl:param> + + + +Description + +If callout.graphics is zero and callout.unicode +is non-zero, unicode characters are used to represent +callout numbers. The value of +callout.unicode.start.character +is the decimal unicode value used for callout number one. Currently, +only 10102 is supported in the stylesheets for this parameter. + + + + + + + +callout.unicode +boolean + + +callout.unicode +Use Unicode characters rather than images for callouts. + + + +<xsl:param name="callout.unicode" select="0"></xsl:param> + + +Description + +The stylesheets can use either an image of the numbers one to ten, or the single Unicode character which represents the numeral, in white on a black background. Use this to select the Unicode character option. + + + + + + + +callouts.extension +boolean + + +callouts.extension +Enable the callout extension + + + + +<xsl:param name="callouts.extension" select="1"></xsl:param> + + + +Description + +The callouts extension processes areaset +elements in programlistingco and other text-based +callout elements. + + + + + + +EBNF + + +ebnf.table.bgcolor +color + + +ebnf.table.bgcolor +Background color for EBNF tables + + + + +<xsl:param name="ebnf.table.bgcolor">#F5DCB3</xsl:param> + + + +Description + +Sets the background color for EBNF tables (a pale brown). No +bgcolor attribute is output if +ebnf.table.bgcolor is set to the null string. + + + + + + + +ebnf.table.border +boolean + + +ebnf.table.border +Selects border on EBNF tables + + + +<xsl:param name="ebnf.table.border" select="1"></xsl:param> + + +Description + +Selects the border on EBNF tables. If non-zero, the tables have +borders, otherwise they don't. + + + + + + +ebnf.assignment +rtf + + +ebnf.assignment +The EBNF production assignment operator + + + + +<xsl:param name="ebnf.assignment"> +<code>::=</code> +</xsl:param> + + + + +Description + +The ebnf.assignment parameter determines what +text is used to show assignment in productions +in productionsets. + +While ::= is common, so are several +other operators. + + + + + + +ebnf.statement.terminator +rtf + + +ebnf.statement.terminator +Punctuation that ends an EBNF statement. + + + + +<xsl:param name="ebnf.statement.terminator"></xsl:param> + + + + +Description + +The ebnf.statement.terminator parameter determines what +text is used to terminate each production +in productionset. + +Some notations end each statement with a period. + + + + + +ToC/LoT/Index Generation + + +annotate.toc +boolean + + +annotate.toc +Annotate the Table of Contents? + + + +<xsl:param name="annotate.toc" select="1"></xsl:param> + + +Description + +If true, TOCs will be annotated. At present, this just means +that the refpurpose of refentry +TOC entries will be displayed. + + + + + + + +autotoc.label.separator +string + + +autotoc.label.separator +Separator between labels and titles in the ToC + + + + +<xsl:param name="autotoc.label.separator">. </xsl:param> + + + +Description + +String used to separate labels and titles in a table of contents. + + + + + + +autotoc.label.in.hyperlink +boolean + + +autotoc.label.in.hyperlink +Include label in hyperlinked titles in TOC? + + + +<xsl:param name="autotoc.label.in.hyperlink" select="1"></xsl:param> + + +Description + +If the value of +autotoc.label.in.hyperlink is non-zero, labels +are included in hyperlinked titles in the TOC. If it is instead zero, +labels are still displayed prior to the hyperlinked titles, but +are not hyperlinked along with the titles. + + + + + + +process.source.toc +boolean + + +process.source.toc +Process a non-empty toc element if it occurs in a source document? + + + +<xsl:param name="process.source.toc" select="0"></xsl:param> + + +Description + +Specifies that the contents of a non-empty "hard-coded" +toc element in a source document are processed to +generate a TOC in output. + + This parameter has no effect on automated generation of + TOCs. An automated TOC may still be generated along with the + "hard-coded" TOC. To suppress automated TOC generation, adjust the + value of the generate.toc paramameter. + + The process.source.toc parameter also has + no effect if the toc element is empty; handling + for empty toc is controlled by the + process.empty.source.toc parameter. + + + + + + + + +process.empty.source.toc +boolean + + +process.empty.source.toc +Generate automated TOC if toc element occurs in a source document? + + + +<xsl:param name="process.empty.source.toc" select="0"></xsl:param> + + +Description + +Specifies that if an empty toc element is found in a +source document, an automated TOC is generated at this point in the +document. + + Depending on what the value of the + generate.toc parameter is, setting this + parameter to 1 could result in generation of + duplicate automated TOCs. So the + process.empty.source.toc is primarily useful + as an "override": by placing an empty toc in your + document and setting this parameter to 1, you can + force a TOC to be generated even if generate.toc + says not to. + + + + + + + + +bridgehead.in.toc +boolean + + +bridgehead.in.toc +Should bridgehead elements appear in the TOC? + + + +<xsl:param name="bridgehead.in.toc" select="0"></xsl:param> + + +Description + +If non-zero, bridgeheads appear in the TOC. Note that +this option is not fully supported and may be removed in a future +version of the stylesheets. + + + + + + + +simplesect.in.toc +boolean + + +simplesect.in.toc +Should simplesect elements appear in the TOC? + + + +<xsl:param name="simplesect.in.toc" select="0"></xsl:param> + + +Description + +If non-zero, simplesects will be included in the TOC. + + + + + + + +manual.toc +string + + +manual.toc +An explicit TOC to be used for the TOC + + + + +<xsl:param name="manual.toc"></xsl:param> + + + +Description + +The manual.toc identifies an explicit TOC that +will be used for building the printed TOC. + + + + + + + +toc.list.type +list +dl +ul +ol + + +toc.list.type +Type of HTML list element to use for Tables of Contents + + + +<xsl:param name="toc.list.type">dl</xsl:param> + + +Description + +When an automatically generated Table of Contents (or List of Titles) +is produced, this HTML element will be used to make the list. + + + + + + + +toc.section.depth +integer + + +toc.section.depth +How deep should recursive sections appear +in the TOC? + + + +<xsl:param name="toc.section.depth">2</xsl:param> + + +Description + +Specifies the depth to which recursive sections should appear in the +TOC. + + + + + + + +toc.max.depth +integer + + +toc.max.depth +How many levels should be created for each TOC? + + + +<xsl:param name="toc.max.depth">8</xsl:param> + + +Description + +Specifies the maximal depth of TOC on all levels. + + + + + + +generate.toc +table + + +generate.toc +Control generation of ToCs and LoTs + + + + +<xsl:param name="generate.toc"> +appendix toc,title +article/appendix nop +article toc,title +book toc,title,figure,table,example,equation +chapter toc,title +part toc,title +preface toc,title +qandadiv toc +qandaset toc +reference toc,title +sect1 toc +sect2 toc +sect3 toc +sect4 toc +sect5 toc +section toc +set toc,title +</xsl:param> + + + + +Description + +This parameter has a structured value. It is a table of space-delimited +path/value pairs. Each path identifies some element in the source document +using a restricted subset of XPath (only the implicit child axis, no wildcards, +no predicates). Paths can be either relative or absolute. + +When processing a particular element, the stylesheets consult this table to +determine if a ToC (or LoT(s)) should be generated. + +For example, consider the entry: + +book toc,figure + +This indicates that whenever a book is formatted, a +Table Of Contents and a List of Figures should be generated. Similarly, + +/chapter toc + +indicates that whenever a document that has a root +of chapter is formatted, a Table of +Contents should be generated. The entry chapter would match +all chapters, but /chapter matches only chapter +document elements. + +Generally, the longest match wins. So, for example, if you want to distinguish +articles in books from articles in parts, you could use these two entries: + +book/article toc,figure +part/article toc + +Note that an article in a part can never match a book/article, +so if you want nothing to be generated for articles in parts, you can simply leave +that rule out. + +If you want to leave the rule in, to make it explicit that you're turning +something off, use the value nop. For example, the following +entry disables ToCs and LoTs for articles: + +article nop + +Do not simply leave the word article in the file +without a matching value. That'd be just begging the silly little +path/value parser to get confused. + +Section ToCs are further controlled by the +generate.section.toc.level parameter. +For a given section level to have a ToC, it must have both an entry in +generate.toc and be within the range enabled by +generate.section.toc.level. + + + + + +generate.section.toc.level +integer + + +generate.section.toc.level +Control depth of TOC generation in sections + + + + +<xsl:param name="generate.section.toc.level" select="0"></xsl:param> + + + +Description + +The generate.section.toc.level parameter +controls the depth of section in which TOCs will be generated. Note +that this is related to, but not the same as +toc.section.depth, which controls the depth to +which TOC entries will be generated in a given TOC. +If, for example, generate.section.toc.level +is 3, TOCs will be generated in first, second, and third +level sections, but not in fourth level sections. + + + + + + + +generate.index +boolean + + +generate.index +Do you want an index? + + + +<xsl:param name="generate.index" select="1"></xsl:param> + + +Description + +Specify if an index should be generated. + + + + + + +index.method +list +basic +kosek +kimber + + +index.method +Select method used to group index entries in an index + + + + +<xsl:param name="index.method">basic</xsl:param> + + + +Description + +This parameter lets you select which method to use for sorting and grouping + index entries in an index. +Indexes in Latin-based languages that have accented characters typically +sort together accented words and unaccented words. +Thus Á (U+00C1 LATIN CAPITAL LETTER A WITH ACUTE) would sort together +with A (U+0041 LATIN CAPITAL LETTER A), so both would appear in the A +section of the index. +Languages using other alphabets (such as Russian, which is written in the Cyrillic alphabet) +and languages using ideographic chararacters (such as Japanese) +require grouping specific to the languages and alphabets. + + +The default indexing method is limited. +It can group accented characters in Latin-based languages only. +It cannot handle non-Latin alphabets or ideographic languages. +The other indexing methods require extensions of one type or +another, and do not work with +all XSLT processors, which is why they are not used by default. + +The three choices for indexing method are: + + +basic + + +(default) Sort and groups words based only on the Latin alphabet. +Words with accented Latin letters will group and sort with +their respective primary letter, but +words in non-Latin alphabets will be +put in the Symbols section of the index. + + + + +kosek + + +This method sorts and groups words based on letter groups configured in +the DocBook locale file for the given language. +See, for example, the French locale file common/fr.xml. +This method requires that the XSLT processor +supports the EXSLT extensions (most do). +It also requires support for using +user-defined functions in xsl:key (xsltproc does not). + +This method is suitable for any language for which you can +list all the individual characters that should appear +in each letter group in an index. +It is probably not practical to use it for ideographic languages +such as Chinese that have hundreds or thousands of characters. + + +To use the kosek method, you must: + + + +Use a processor that supports its extensions, such as +Saxon 6 or Xalan (xsltproc and Saxon 8 do not). + + + +Set the index.method parameter's value to kosek. + + + +Import the appropriate index extensions stylesheet module +fo/autoidx-kosek.xsl or +html/autoidx-kosek.xsl into your +customization. + + + + + + + +kimber + + +This method uses extensions to the Saxon processor to implement +sophisticated indexing processes. It uses its own +configuration file, which can include information for any number of +languages. Each language's configuration can group +words using one of two processes. In the +enumerated process similar to that used in the kosek method, +you indicate the groupings character-by-character. +In the between-key process, you specify the +break-points in the sort order that should start a new group. +The latter configuration is useful for ideographic languages +such as Chinese, Japanese, and Korean. +You can also define your own collation algorithms and how you +want mixed Latin-alphabet words sorted. + + +For a whitepaper describing the extensions, see: +http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf. + + + +To download the extension library, see +http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport. + + + + +To use the kimber method, you must: + + + +Use Saxon (version 6 or 8) as your XSLT processor. + + + +Install and configure the Innodata Isogen library, using +the documentation that comes with it. + + + +Set the index.method parameter's value to kimber. + + + +Import the appropriate index extensions stylesheet module +fo/autoidx-kimber.xsl or +html/autoidx-kimber.xsl into your +customization. + + + + + + + + + + + + + +index.on.type +boolean + + +index.on.type +Select indexterms based on type +attribute value + + + + +<xsl:param name="index.on.type" select="0"></xsl:param> + + + +Description + + +If non-zero, +then an index element that has a +type attribute +value will contain only those indexterm +elements with a matching type attribute value. +If an index has no type +attribute or it is blank, then the index will contain +all indexterms in the current scope. + + + +If index.on.type is zero, then the +type attribute has no effect +on selecting indexterms for an index. + + +For those using DocBook version 4.2 or earlier, +the type attribute is not available +for index terms. However, you can achieve the same +effect by using the role attribute +in the same manner on indexterm +and index, and setting the stylesheet parameter +index.on.role to a nonzero value. + + + + + + + +index.on.role +boolean + + +index.on.role +Select indexterms based on role value + + + + +<xsl:param name="index.on.role" select="0"></xsl:param> + + + +Description + + +If non-zero, +then an index element that has a +role attribute +value will contain only those indexterm +elements with a matching role value. +If an index has no role +attribute or it is blank, then the index will contain +all indexterms in the current scope. + + +If index.on.role is zero, then the +role attribute has no effect +on selecting indexterms for an index. + + +If you are using DocBook version 4.3 or later, you should +use the type attribute instead of role +on indexterm and index, +and set the index.on.type to a nonzero +value. + + + + + + + +index.links.to.section +boolean + + +index.links.to.section +HTML index entries link to container section title + + + + +<xsl:param name="index.links.to.section" select="1"></xsl:param> + + + +Description + +If zero, then an index entry in an index links +directly to the location of the +generated anchor that is output +for the indexterm. If two identical indexterm elements +exist in the same section, then both entries appear +in the index with the same title but link to different +locations. + +If non-zero, then an index entry in an index links to the +section title containing the indexterm, rather than +directly to the anchor output for the indexterm. +Duplicate indexterm entries in the same section are dropped. + + +The default value is 1, so index entries link to +section titles by default. + +In both cases, the link text in an index entry is the +title of the section containing the indexterm. +That is because HTML does not have numbered pages. +It also provides the reader with context information +for each link. + +This parameter lets you choose which style of +index linking you want. + + + +When set to 0, an index entry takes you +to the precise location of its corresponding indexterm. +However, if you have a lot of duplicate +entries in sections, then you have a lot of duplicate +titles in the index, which makes it more cluttered. +The reader may not recognize why duplicate titles +appear until they follow the links. Also, the links +may land the reader in the middle of a section where the +section title is not visible, which may also be +confusing to the reader. + + +When set to 1, an index entry link is +less precise, but duplicate titles in the +index entries are eliminated. +Landing on the section title location may confirm the reader's +expectation that a link that +shows a section title will take them to that section title, +not a location within the section. + + + + + + + + + +index.prefer.titleabbrev +boolean + + +index.prefer.titleabbrev +Should abbreviated titles be used as back references? + + + + +<xsl:param name="index.prefer.titleabbrev" select="0"></xsl:param> + + + +Description + +If non-zero, and if a titleabbrev is defined, the abbreviated title +is used as the link text of a back reference in the index. + + + + + + + +index.term.separator +string + + +index.term.separator +Override for punctuation separating an index term +from its list of page references in an index + + + + +<xsl:param name="index.term.separator"></xsl:param> + + + +Description + +This parameter permits you to override +the text to insert between +the end of an index term and its list of page references. +Typically that might be a comma and a space. + + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'term-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +fill in the content for this normally empty +override parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. +For fo output, it could be an fo:leader +element to provide space of a specific length, or a dot leader. + + + + + + + +index.number.separator +string + + +index.number.separator +Override for punctuation separating page numbers in index + + + + +<xsl:param name="index.number.separator"></xsl:param> + + + +Description + +This parameter permits you to override the text to insert between +page references in a formatted index entry. Typically +that would be a comma and a space. + + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'number-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +override the gentext with the content of this parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. + + +In HTML index output, section title references are used instead of +page number references. This punctuation appears between +such section titles in an HTML index. + + + + + + + +index.range.separator +string + + +index.range.separator +Override for punctuation separating the two numbers +in a page range in index + + + + +<xsl:param name="index.range.separator"></xsl:param> + + + +Description + +This parameter permits you +to override the text to insert between +the two numbers of a page range in an index. +This parameter is only used by those XSL-FO processors +that support an extension for generating such page ranges +(such as XEP). + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'range-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +override the gentext with the content of this parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. + + +In HTML index output, section title references are used instead of +page number references. So there are no page ranges +and this parameter has no effect. + + + + + + +Stylesheet Extensions + + +linenumbering.everyNth +integer + + +linenumbering.everyNth +Indicate which lines should be numbered + + + + +<xsl:param name="linenumbering.everyNth">5</xsl:param> + + + +Description + +If line numbering is enabled, everyNth line will be +numbered. Note that numbering is one based, not zero based. + + + + + + + +linenumbering.extension +boolean + + +linenumbering.extension +Enable the line numbering extension + + + + +<xsl:param name="linenumbering.extension" select="1"></xsl:param> + + + +Description + +If non-zero, verbatim environments (address, literallayout, +programlisting, screen, synopsis) that specify line numbering will +have line numbers. + + + + + + + +linenumbering.separator +string + + +linenumbering.separator +Specify a separator between line numbers and lines + + + + +<xsl:param name="linenumbering.separator"><xsl:text> </xsl:text></xsl:param> + + + +Description + +The separator is inserted between line numbers and lines in the +verbatim environment. The default value is a single white space. + Note the interaction with linenumbering.width + + + + + + + +linenumbering.width +integer + + +linenumbering.width +Indicates the width of line numbers + + + + +<xsl:param name="linenumbering.width">3</xsl:param> + + + +Description + +If line numbering is enabled, line numbers will appear right +justified in a field "width" characters wide. + + + + + + + +tablecolumns.extension +boolean + + +tablecolumns.extension +Enable the table columns extension function + + + + +<xsl:param name="tablecolumns.extension" select="1"></xsl:param> + + + +Description + +The table columns extension function adjusts the widths of table +columns in the HTML result to more accurately reflect the specifications +in the CALS table. + + + + + + + + textinsert.extension + boolean + + + textinsert.extension + Enables the textinsert extension element + + + + <xsl:param name="textinsert.extension" select="1"></xsl:param> + + + Description + The textinsert extension element inserts the contents of + a file into the result tree (as text). + + To use the textinsert extension element, you must use + either Saxon or Xalan as your XSLT processor (it doesn’t + work with xsltproc), along with either the DocBook Saxon + extensions or DocBook Xalan extensions (for more + information about those extensions, see DocBook Saxon Extensions and DocBook Xalan Extensions), and you must set both + the use.extensions and + textinsert.extension parameters to + 1. + As an alternative to using the textinsert element, + consider using an Xinclude element with the + parse="text" attribute and value + specified, as detailed in Using XInclude for text inclusions. + + + See Also + You can also use the dbhtml-include href processing + instruction to insert external files — both files containing + plain text and files with markup content (including HTML + content). + + More information + For how-to documentation on inserting contents of + external code files and other text files into output, see + External code files. + For guidelines on inserting contents of + HTML files into output, see Inserting external HTML code. + + + + + +textdata.default.encoding +string + + +textdata.default.encoding +Default encoding of external text files which are included +using textdata element + + + + +<xsl:param name="textdata.default.encoding"></xsl:param> + + + +Description + +Specifies the encoding of any external text files included using +textdata element. This value is used only when you do +not specify encoding by the appropriate attribute +directly on textdata. An empty string is interpreted as the system +default encoding. + + + + + + +graphicsize.extension +boolean + + +graphicsize.extension +Enable the getWidth()/getDepth() extension functions + + + + +<xsl:param name="graphicsize.extension" select="1"></xsl:param> + + + +Description + +If non-zero (and if use.extensions is non-zero +and if you're using a processor that supports extension functions), the +getWidth and getDepth functions +will be used to extract image sizes from graphics. + + + + + + +graphicsize.use.img.src.path +boolean + + +graphicsize.use.img.src.path +Prepend img.src.path before +filenames passed to extension functions + + + + +<xsl:param name="graphicsize.use.img.src.path" select="0"></xsl:param> + + + +Description + +If non-zero img.src.path parameter will +be appended before filenames passed to extension functions for +measuring image dimensions. + + + + + + +use.extensions +boolean + + +use.extensions +Enable extensions + + + + +<xsl:param name="use.extensions" select="0"></xsl:param> + + + +Description + +If non-zero, extensions may be used. Each extension is +further controlled by its own parameter. But if +use.extensions is zero, no extensions will +be used. + + + + + + +Automatic labelling + + +chapter.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +chapter.autolabel +Specifies the labeling format for Chapter titles + + + + +<xsl:param name="chapter.autolabel" select="1"></xsl:param> + + +Description + +If non-zero, then chapters will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (arabic). + + + + + + + +appendix.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +appendix.autolabel +Specifies the labeling format for Appendix titles + + + + +<xsl:param name="appendix.autolabel">A</xsl:param> + + + +Description + +If non-zero, then appendices will be numbered using the +parameter value as the number format if the value matches one of the +following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (upperalpha). + + + + + + + +part.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +part.autolabel +Specifies the labeling format for Part titles + + + + +<xsl:param name="part.autolabel">I</xsl:param> + + + +Description + +If non-zero, then parts will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (upperroman). + + + + + + + + +reference.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +reference.autolabel +Specifies the labeling format for Reference titles + + + + <xsl:param name="reference.autolabel">I</xsl:param> + + +Description +If non-zero, references will be numbered using the parameter + value as the number format if the value matches one of the + following: + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + +Any non-zero value other than the above will generate +the default number format (upperroman). + + + + + + +preface.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +preface.autolabel +Specifices the labeling format for Preface titles + + + +<xsl:param name="preface.autolabel" select="0"></xsl:param> + + +Description + +If non-zero then prefaces will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (arabic). + + + + + + + + +qandadiv.autolabel +boolean + + +qandadiv.autolabel +Are divisions in QAndASets enumerated? + + + +<xsl:param name="qandadiv.autolabel" select="1"></xsl:param> + + +Description + +If non-zero, unlabeled qandadivs will be enumerated. + + + + + + + +section.autolabel +boolean + + +section.autolabel +Are sections enumerated? + + + +<xsl:param name="section.autolabel" select="0"></xsl:param> + + +Description + +If true (non-zero), unlabeled sections will be enumerated. + + + + + + + +section.autolabel.max.depth +integer + + +section.autolabel.max.depth +The deepest level of sections that are numbered. + + + + +<xsl:param name="section.autolabel.max.depth">8</xsl:param> + + + +Description + +When section numbering is turned on by the +section.autolabel parameter, then this +parameter controls the depth of section nesting that is +numbered. Sections nested to a level deeper than this value will not +be numbered. + + + + + + + +section.label.includes.component.label +boolean + + +section.label.includes.component.label +Do section labels include the component label? + + + +<xsl:param name="section.label.includes.component.label" select="0"></xsl:param> + + +Description + +If non-zero, section labels are prefixed with the label of the +component that contains them. + + + + + + + +label.from.part +boolean + + +label.from.part +Renumber components in each part? + + + + +<xsl:param name="label.from.part" select="0"></xsl:param> + + + +Description + +If label.from.part is non-zero, then + numbering of components — preface, + chapter, appendix, and + reference (when reference occurs at the + component level) — is re-started within each + part. +If label.from.part is zero (the + default), numbering of components is not + re-started within each part; instead, components are + numbered sequentially throughout each book, + regardless of whether or not they occur within part + instances. + + + + + + +component.label.includes.part.label +boolean + + +component.label.includes.part.label +Do component labels include the part label? + + + +<xsl:param name="component.label.includes.part.label" select="0"></xsl:param> + + +Description + +If non-zero, number labels for chapter, +appendix, and other component elements are prefixed with +the label of the part element that contains them. So you might see +Chapter II.3 instead of Chapter 3. Also, the labels for formal +elements such as table and figure will include +the part label. If there is no part element container, then no prefix +is generated. + + +This feature is most useful when the +label.from.part parameter is turned on. +In that case, there would be more than one chapter +1, and the extra part label prefix will identify +each chapter unambiguously. + + + + + + + +HTML + + +html.base +uri + + +html.base +An HTML base URI + + + + +<xsl:param name="html.base"></xsl:param> + + +Description + +If html.base is set, it is used for the base element +in the head of the html documents. The parameter specifies +the base URL for all relative URLs in the document. This is useful +for dynamically served html where the base URI needs to be +shifted. + + + + + + +html.stylesheet.type +string + + +html.stylesheet.type +The type of the stylesheet used in the generated HTML + + + +<xsl:param name="html.stylesheet.type">text/css</xsl:param> + + +Description + +The type of the stylesheet to place in the HTML link tag. + + + + + + + +html.stylesheet +string + + +html.stylesheet +Name of the stylesheet(s) to use in the generated HTML + + + + +<xsl:param name="html.stylesheet"></xsl:param> + + + +Description + +The html.stylesheet parameter is either +empty, indicating that no stylesheet link tag should be +generated in the html output, or it is a list of one or more +stylesheet files. + +Multiple stylesheets are space-delimited. If you need to +reference a stylesheet URI that includes a space, encode it with +%20. A separate html link element will +be generated for each stylesheet in the order they are listed in the +parameter. + + + + + + +css.decoration +boolean + + +css.decoration +Enable CSS decoration of elements + + + + +<xsl:param name="css.decoration" select="1"></xsl:param> + + + +Description + + +If non-zero, then html elements produced by the stylesheet may be +decorated with style attributes. For example, the +li tags produced for list items may include a +fragment of CSS in the style attribute which sets +the CSS property "list-style-type". + + + + + + + +spacing.paras +boolean + + +spacing.paras +Insert additional <p> elements for spacing? + + + + +<xsl:param name="spacing.paras" select="0"></xsl:param> + + + +Description + +When non-zero, additional, empty paragraphs are inserted in +several contexts (for example, around informal figures), to create a +more pleasing visual appearance in many browsers. + + + + + + + +emphasis.propagates.style +boolean + + +emphasis.propagates.style +Pass emphasis role attribute through to HTML? + + + +<xsl:param name="emphasis.propagates.style" select="1"></xsl:param> + + +Description +If non-zero, the role attribute of +emphasis elements will be passed through to the HTML as a +class attribute on a span that surrounds the +emphasis. + + + + + +para.propagates.style +boolean + + +para.propagates.style +Pass para role attribute through to HTML? + + + + +<xsl:param name="para.propagates.style" select="1"></xsl:param> + + + +Description + +If true, the role attribute of para elements +will be passed through to the HTML as a class attribute on the +p generated for the paragraph. + + + + + + +phrase.propagates.style +boolean + + +phrase.propagates.style +Pass phrase role attribute through to HTML? + + + + +<xsl:param name="phrase.propagates.style" select="1"></xsl:param> + + +Description + +If non-zero, the role attribute of phrase elements +will be passed through to the HTML as a class +attribute on a span that surrounds the +phrase. + + + + + + +entry.propagates.style +boolean + + +entry.propagates.style +Pass entry role attribute through to HTML? + + + + +<xsl:param name="entry.propagates.style" select="1"></xsl:param> + + + +Description + +If true, the role attribute of entry elements +will be passed through to the HTML as a class attribute on the +td or th generated for the table +cell. + + + + + + +html.longdesc +boolean + + +html.longdesc +Should longdesc URIs be created? + + + +<xsl:param name="html.longdesc" select="1"></xsl:param> + + +Description +If non-zero, HTML files will be created for the +longdesc attribute. These files +are created from the textobjects in +mediaobjects and +inlinemediaobject. + + + + + + +html.longdesc.link +boolean + + +html.longdesc.link +Should a link to the longdesc be included in the HTML? + + + + +<xsl:param name="html.longdesc.link" select="$html.longdesc"></xsl:param> + + + +Description + +If non-zero, links will be created to the +HTML files created for the +longdesc attribute. It makes no +sense to enable this option without also enabling the +html.longdesc parameter. + + + + + + + + +make.valid.html +boolean + + +make.valid.html +Attempt to make sure the HTML output is valid HTML + + + + +<xsl:param name="make.valid.html" select="0"></xsl:param> + + + +Description + +If make.valid.html is true, the stylesheets take +extra effort to ensure that the resulting HTML is valid. This may mean that some +para tags are translated into HTML divs or +that other substitutions occur. + +This parameter is different from html.cleanup +because it changes the resulting markup; it does not use extension functions +to manipulate result-tree-fragments and is therefore applicable to any +XSLT processor. + + + + + + +html.cleanup +boolean + + +html.cleanup +Attempt to clean up the resulting HTML? + + + + +<xsl:param name="html.cleanup" select="1"></xsl:param> + + + +Description + +If non-zero, and if the EXSLT +extensions are supported by your processor, the resulting HTML will be +cleaned up. This improves the chances that the +resulting HTML will be valid. It may also improve the formatting of +some elements. + +This parameter is different from make.valid.html +because it uses extension functions to manipulate result-tree-fragments. + + + + + + +html.append +string + + +html.append +Specifies content to append to HTML output + + + +<xsl:param name="html.append"></xsl:param> + + +Description + +Specifies content to append to the end of HTML files output by +the html/docbook.xsl stylesheet, after the +closing <html> tag. You probably don’t want to set any +value for this parameter; but if you do, the only value it should ever +be set to is a newline character: &#x0a; or +&#10; + + + + + + +draft.mode +list +no +yes +maybe + + +draft.mode +Select draft mode + + + + +<xsl:param name="draft.mode">no</xsl:param> + + + +Description + +Selects draft mode. If draft.mode is +yes, the entire document will be treated +as a draft. If it is no, the entire document +will be treated as a final copy. If it is maybe, +individual sections will be treated as draft or final independently, depending +on how their status attribute is set. + + + + + + + +draft.watermark.image +uri + + +draft.watermark.image +The URI of the image to be used for draft watermarks + + + + +<xsl:param name="draft.watermark.image">images/draft.png</xsl:param> + + + +Description + +The image to be used for draft watermarks. + + + + + + +generate.id.attributes +boolean + + +generate.id.attributes +Generate ID attributes on container elements? + + + + +<xsl:param name="generate.id.attributes" select="0"></xsl:param> + + + +Description + +If non-zero, the HTML stylesheet will generate ID attributes on +containers. For example, the markup: + +<section id="foo"><title>Some Title</title> +<para>Some para.</para> +</section> + +might produce: + +<div class="section" id="foo"> +<h2>Some Title</h2> +<p>Some para.</p> +</div> + +The alternative is to generate anchors: + +<div class="section"> +<h2><a name="foo"></a>Some Title</h2> +<p>Some para.</p> +</div> + +Because the name attribute of +the a element and the id +attribute of other tags are both of type ID, producing both +generates invalid documents. + +As of version 1.50, you can use this switch to control which type of +identifier is generated. For backwards-compatibility, generating +a anchors is preferred. + +Note: at present, this switch is incompletely implemented. +Disabling ID attributes will suppress them, but enabling ID attributes +will not suppress the anchors. + + + + + + +generate.meta.abstract +boolean + + +generate.meta.abstract +Generate HTML META element from abstract? + + + + +<xsl:param name="generate.meta.abstract" select="1"></xsl:param> + + + +Description + +If non-zero, document abstracts will be reproduced in the HTML +head, with >meta name="description" content="..." + + + + + + + +make.clean.html +boolean + + +make.clean.html +Make HTML conform to modern coding standards + + + + +<xsl:param name="make.clean.html" select="0"></xsl:param> + + + +Description + +If make.clean.html is true, the stylesheets take +extra effort to ensure that the resulting HTML is conforms to +modern HTML coding standards. In addition to eliminating +excessive and noncompliant coding, it moves presentation +HTML coding to a CSS stylesheet. + +The resulting HTML is dependent on +CSS for formatting, and so the stylesheet is capable of +generating a supporting CSS file. The docbook.css.source +and custom.css.source parameters control +how a CSS file is generated. + +If you require your CSS to reside in the HTML +head element, then the generate.css.header +can be used to do that. + +The make.clean.html parameter is +different from html.cleanup +because the former changes the resulting markup; it does not use extension functions +like the latter to manipulate result-tree-fragments, +and is therefore applicable to any XSLT processor. + +If make.clean.html is set to zero (the default), +then the stylesheet retains its original +old style +HTML formatting features. + + + + + + docbook.css.source + string + + + docbook.css.source + Name of the default CSS input file + + + + <xsl:param name="docbook.css.source">docbook.css.xml</xsl:param> + + + Description + +The docbook.css.source parameter +specifies the name of the file containing the default DocBook +CSS styles. Those styles are necessary when the +make.clean.html parameter is nonzero. + +The file is a well-formed XML file that +must consist of a single style root +element that contains CSS styles as its text content. +The default value of the parameter (and filename) +is docbook.css.xml. +The stylesheets ship with the default file. You can substitute +your own and specify its path in this parameter. + +If docbook.css.source is not blank, +and make.clean.html is nonzero, then +the stylesheet takes the following actions: + + + + The stylesheet uses the XSLT document() + function to open the file specified by the parameter and + load it into a variable. + + + The stylesheet forms an output pathname consisting of the + value of the base.dir parameter (if it is set) + and the value of docbook.css.source, + with the .xml suffix stripped off. + + + + The stylesheet removes the style + wrapper element and writes just the CSS text content to the output file. + + + The stylesheet adds a link element to the + HTML HEAD element to reference the external CSS stylesheet. + For example: + <link rel="stylesheet" href="docbook.css" type="text/css"> + + However, if the docbook.css.link + parameter is set to zero, then no link is written + for the default CSS file. That is useful if a custom + CSS file will import the default CSS stylesheet to ensure + proper cascading of styles. + + + +If the docbook.css.source parameter +is changed from its default docbook.css.xml to blank, +then no default CSS is generated. Likewise if the +make.clean.html parameter is set to zero, +then no default CSS is generated. The +custom.css.source parameter can be used +instead to generate a complete custom CSS file. + +You can use the generate.css.header +parameter to instead write the CSS to each HTML HEAD +element in a style tag instead of an external CSS file. + + + + + + +docbook.css.link +boolean + + +docbook.css.link +Insert a link referencing the default CSS stylesheet + + + + +<xsl:param name="docbook.css.link" select="1"></xsl:param> + + + +Description + +The stylesheets are capable of generating a default +CSS stylesheet file. The parameters +make.clean.html and +docbook.css.source control that feature. + +Normally if a default CSS file is generated, then +the stylesheet inserts a link tag in the HTML +HEAD element to reference it. +However, you can omit that link reference if +you set the docbook.css.link to zero +(1 is the default). + +This parameter is useful when you want to import the +default CSS into a custom CSS file generated using the +custom.css.source parameter. + + + + + + + + custom.css.source + string + + + custom.css.source + Name of a custom CSS input file + + + + <xsl:param name="custom.css.source"></xsl:param> + + + Description + +The custom.css.source +parameter enables you to add CSS styles to DocBook's +HTML output. + +The parameter +specifies the name of a file containing custom +CSS styles. The file must be a well-formed XML file that +consists of a single style root +element that contains CSS styles as its text content. +For example: +<?xml version="1.0"?> +<style> +h2 { + font-weight: bold; + color: blue; +} +... +</style> + + +The filename specified by the parameter +should have a .xml +filename suffix, although that is not required. +The default value of this parameter is blank. + +If custom.css.source is not blank, then +the stylesheet takes the following actions. +These actions take place regardless of the value of +the make.clean.html parameter. + + + + The stylesheet uses the XSLT document() + function to open the file specified by the parameter and + load it into a variable. + + + The stylesheet forms an output pathname consisting of the + value of the base.dir parameter (if it is set) + and the value of custom.css.source, + with the .xml suffix stripped off. + + + + The stylesheet removes the style + wrapper element and writes just the CSS text content to the output file. + + + The stylesheet adds a link element to the + HTML HEAD element to reference this external CSS stylesheet. + For example: + <link rel="stylesheet" href="custom.css" type="text/css"> + + + + + + + +If the make.clean.html parameter is nonzero +(the default is zero), +and if the docbook.css.source parameter +is not blank (the default is not blank), +then the stylesheet will also generate a default CSS file +and add a link tag to reference it. +The link to the custom CSS comes after the +link to the default, so it should cascade properly +in most browsers. +If you do not want two link tags, and +instead want your custom CSS to import the default generated +CSS file, then do the following: + + + + + Add a line like the following to your custom CSS source file: + @import url("docbook.css") + + + + Set the docbook.css.link parameter + to zero. This will omit the link tag + that references the default CSS file. + + + +If you set make.clean.html to nonzero but +you do not want the default CSS generated, then also set +the docbook.css.source parameter to blank. +Then no default CSS will be generated, and so +all CSS styles must come from your custom CSS file. + +You can use the generate.css.header +parameter to instead write the CSS to each HTML HEAD +element in a style tag instead of an external CSS file. + + + + + + +generate.css.header +boolean + + +generate.css.header +Insert generated CSS styles in HEAD element + + + + +<xsl:param name="generate.css.header" select="0"></xsl:param> + + + +Description + +The stylesheets are capable of generating both default +and custom CSS stylesheet files. The parameters +make.clean.html, +docbook.css.source, and +custom.css.source control that feature. + +If you require that CSS styles reside in the HTML +HEAD element instead of external CSS files, +then set the generate.css.header +parameter to nonzero (it is zero by default). +Then instead of generating the CSS in external files, +they are wrapped in style elements in +the HEAD element of each HTML output file. + + + + + + +XSLT Processing + + +rootid +string + + +rootid +Specify the root element to format + + + + +<xsl:param name="rootid"></xsl:param> + + +Description + +If rootid is not empty, it must be the +value of an ID that occurs in the document being formatted. The entire +document will be loaded and parsed, but formatting will begin at the +element identified, rather than at the root. For example, this allows +you to process only chapter 4 of a book. +Because the entire document is available to the processor, automatic +numbering, cross references, and other dependencies are correctly +resolved. + + + + + + +suppress.navigation +boolean + + +suppress.navigation +Disable header and footer navigation + + + + +<xsl:param name="suppress.navigation" select="0"></xsl:param> + + + +Description + + +If non-zero, header and footer navigation will be suppressed. + + + + + + +suppress.header.navigation +boolean + + +suppress.header.navigation +Disable header navigation + + + + +<xsl:param name="suppress.header.navigation" select="0"></xsl:param> + + + +Description + +If non-zero, header navigation will be suppressed. + + + + + + +suppress.footer.navigation +boolean + + +suppress.footer.navigation +Disable footer navigation + + + +<xsl:param name="suppress.footer.navigation">0</xsl:param> + + +Description + + +If non-zero, footer navigation will be suppressed. + + + + + + +header.rule +boolean + + +header.rule +Rule under headers? + + + + +<xsl:param name="header.rule" select="1"></xsl:param> + + + +Description + +If non-zero, a rule will be drawn below the page headers. + + + + + + +footer.rule +boolean + + +footer.rule +Rule over footers? + + + + +<xsl:param name="footer.rule" select="1"></xsl:param> + + + +Description + +If non-zero, a rule will be drawn above the page footers. + + + + + + +id.warnings +boolean + + +id.warnings +Should warnings be generated for titled elements without IDs? + + + +<xsl:param name="id.warnings" select="0"></xsl:param> + + +Description +If non-zero, the stylesheet will issue a warning for any element +(other than the root element) which has a title but does not have an +ID. + + + + +Meta/*Info and Titlepages + + +inherit.keywords +boolean + + +inherit.keywords +Inherit keywords from ancestor elements? + + + + +<xsl:param name="inherit.keywords" select="1"></xsl:param> + + +Description + +If inherit.keywords +is non-zero, the keyword meta for each HTML +head element will include all of the keywords from +ancestor elements. Otherwise, only the keywords from the current section +will be used. + + + + + + + +make.single.year.ranges +boolean + + +make.single.year.ranges +Print single-year ranges (e.g., 1998-1999) + + + + +<xsl:param name="make.single.year.ranges" select="0"></xsl:param> + + +Description + +If non-zero, year ranges that span a single year will be printed +in range notation (1998-1999) instead of discrete notation +(1998, 1999). + + + + + + +make.year.ranges +boolean + + +make.year.ranges +Collate copyright years into ranges? + + + +<xsl:param name="make.year.ranges" select="0"></xsl:param> + + +Description + +If non-zero, multiple copyright year elements will be +collated into ranges. +This works only if each year number is put into a separate +year element. The copyright element permits multiple +year elements. If a year element contains a dash or +a comma, then that year element will not be merged into +any range. + + + + + + + +author.othername.in.middle +boolean + + +author.othername.in.middle +Is othername in author a +middle name? + + + + +<xsl:param name="author.othername.in.middle" select="1"></xsl:param> + + +Description + +If non-zero, the othername of an author +appears between the firstname and +surname. Otherwise, othername +is suppressed. + + + + + + + +blurb.on.titlepage.enabled +boolean + + +blurb.on.titlepage.enabled +Display personblurb and authorblurb on title pages? + + + + +<xsl:param name="blurb.on.titlepage.enabled" select="0"></xsl:param> + + + +Description + +If non-zero, output from authorblurb and +personblurb elements is displayed on title pages. If zero +(the default), output from those elements is suppressed on title pages +(unless you are using a titlepage customization +that causes them to be included). + + + + + + +contrib.inline.enabled +boolean + + +contrib.inline.enabled +Display contrib output inline? + + + +<xsl:param name="contrib.inline.enabled">1</xsl:param> + + +Description + +If non-zero (the default), output of the contrib element is +displayed as inline content rather than as block content. + + + + + + +editedby.enabled +boolean + + +editedby.enabled +Display “Edited by” heading above editor name? + + + +<xsl:param name="editedby.enabled">1</xsl:param> + + +Description + +If non-zero, a localized Edited +by heading is displayed above editor names in output of the +editor element. + + + + + + +abstract.notitle.enabled +boolean + + +abstract.notitle.enabled +Suppress display of abstract titles? + + + <xsl:param name="abstract.notitle.enabled" select="0"></xsl:param> + +Description +If non-zero, in output of the abstract element on titlepages, +display of the abstract title is suppressed. + + + + + +othercredit.like.author.enabled +boolean + + +othercredit.like.author.enabled +Display othercredit in same style as author? + + + +<xsl:param name="othercredit.like.author.enabled">0</xsl:param> + + +Description + +If non-zero, output of the +othercredit element on titlepages is displayed in +the same style as author and +editor output. If zero then +othercredit output is displayed using a style +different than that of author and +editor. + + + + + + +generate.legalnotice.link +boolean + + +generate.legalnotice.link +Write legalnotice to separate chunk and generate link? + + + +<xsl:param name="generate.legalnotice.link" select="0"></xsl:param> + + +Description + +If the value of generate.legalnotice.link +is non-zero, the stylesheet: + + + + writes the contents of legalnotice to a separate + HTML file + + + inserts a hyperlink to the legalnotice file + + + adds (in the HTML head) either a single + link or element or multiple + link elements (depending on the value of the + html.head.legalnotice.link.multiple + parameter), with the value or values derived from the + html.head.legalnotice.link.types + parameter + + + + Otherwise, if generate.legalnotice.link is + zero, legalnotice contents are rendered on the title + page. + +The name of the separate HTML file is computed as follows: + + + + If a filename is given by the dbhtml filename +processing instruction, that filename is used. + + + If the legalnotice has an id/xml:id +attribute, and if use.id.as.filename != 0, the filename +is the concatenation of the id value and the value of the html.ext +parameter. + + + If the legalnotice does not have an id/xml:id + attribute, or if use.id.as.filename = 0, the filename is the concatenation of "ln-", +auto-generated id value, and html.ext value. + + + + + + + + + + + +generate.revhistory.link +boolean + + +generate.revhistory.link +Write revhistory to separate chunk and generate link? + + + +<xsl:param name="generate.revhistory.link" select="0"></xsl:param> + + +Description + +If non-zero, the contents of revhistory are written +to a separate HTML file and a link to the file is +generated. Otherwise, revhistory contents are rendered on +the title page. + +The name of the separate HTML file is computed as follows: + + + + If a filename is given by the dbhtml filename processing instruction, +that filename is used. + + + If the revhistory has an id/xml:id +attribute, and if use.id.as.filename != 0, the filename is the concatenation of +the id value and the value of the html.ext parameter. + + + If the revhistory does not have an id/xml:id +attribute, or if use.id.as.filename = 0, the filename is the concatenation of "rh-", +auto-generated id value, and html.ext value. + + + + + + + + + + + +html.head.legalnotice.link.types +string + + +html.head.legalnotice.link.types +Specifies link types for legalnotice link in html head + + + + +<xsl:param name="html.head.legalnotice.link.types">copyright</xsl:param> + + + +Description + +The value of +html.head.legalnotice.link.types is a +space-separated list of link types, as described in Section 6.12 +of the HTML 4.01 specification. If the value of the +generate.legalnotice.link parameter is +non-zero, then the stylesheet generates (in the +head section of the HTML source) either a single +HTML link element or, if the value of the +html.head.legalnotice.link.multiple is +non-zero, one link element for each link type +specified. Each link has the following attributes: + + + + a rel attribute whose + value is derived from the value of + html.head.legalnotice.link.types + + + an href attribute whose + value is set to the URL of the file containing the + legalnotice + + + a title attribute whose + value is set to the title of the corresponding + legalnotice (or a title programatically + determined by the stylesheet) + + + +For example: + + <link rel="license" href="ln-id2524073.html" title="Legal Notice"> + + +About the default value + + In an ideal world, the default value of + html.head.legalnotice.link.types would + probably be “license”, since the content of the + DocBook legalnotice is typically license + information, not copyright information. However, the default value + is “copyright” for pragmatic reasons: because + that’s among the set of “recognized link types” listed in Section + 6.12 of the HTML 4.01 specification, and because certain + browsers and browser extensions are preconfigured to recognize that + value. + + + + + + + +html.head.legalnotice.link.multiple +boolean + + +html.head.legalnotice.link.multiple +Generate multiple link instances in html head for legalnotice? + + + + +<xsl:param name="html.head.legalnotice.link.multiple" select="1"></xsl:param> + + + +Description + +If html.head.legalnotice.link.multiple is +non-zero and the value of +html.head.legalnotice.link.types contains +multiple link types, then the stylesheet generates (in the +head section of the HTML source) one +link element for each link type specified. For +example, if the value of +html.head.legalnotice.link.types is +“copyright license”: + + <link rel="copyright" href="ln-id2524073.html" title="Legal Notice"> + <link rel="license" href="ln-id2524073.html" title="Legal Notice"> + + Otherwise, the stylesheet generates generates a single + link instance; for example: + + <link rel="copyright license" href="ln-id2524073.html" title="Legal Notice"> + + + + + + +Reference Pages + + +funcsynopsis.decoration +boolean + + +funcsynopsis.decoration +Decorate elements of a funcsynopsis? + + + + +<xsl:param name="funcsynopsis.decoration" select="1"></xsl:param> + + + +Description + +If non-zero, elements of the funcsynopsis will be +decorated (e.g. rendered as bold or italic text). The decoration is controlled by +templates that can be redefined in a customization layer. + + + + + + + +funcsynopsis.style +list +ansi +kr + + +funcsynopsis.style +What style of funcsynopsis should be generated? + + + +<xsl:param name="funcsynopsis.style">kr</xsl:param> + + +Description + +If funcsynopsis.style is ansi, +ANSI-style function synopses are generated for a +funcsynopsis, otherwise K&R-style +function synopses are generated. + + + + + + + +function.parens +boolean + + +function.parens +Generate parens after a function? + + + + +<xsl:param name="function.parens" select="0"></xsl:param> + + + +Description + +If non-zero, the formatting of a function element +will include generated parentheses. + + + + + + + +refentry.generate.name +boolean + + +refentry.generate.name +Output NAME header before refnames? + + + + +<xsl:param name="refentry.generate.name" select="1"></xsl:param> + + + +Description + +If non-zero, a "NAME" section title is output before the list +of refnames. This parameter and +refentry.generate.title are mutually +exclusive. This means that if you change this parameter to zero, you +should set refentry.generate.title to non-zero unless +you want get quite strange output. + + + + + + + +refentry.generate.title +boolean + + +refentry.generate.title +Output title before refnames? + + + + +<xsl:param name="refentry.generate.title" select="0"></xsl:param> + + + +Description + +If non-zero, the reference page title or first name is +output before the list of refnames. This parameter and +refentry.generate.name are mutually exclusive. +This means that if you change this parameter to non-zero, you +should set refentry.generate.name to zero unless +you want get quite strange output. + + + + + + + +refentry.xref.manvolnum +boolean + + +refentry.xref.manvolnum +Output manvolnum as part of +refentry cross-reference? + + + + +<xsl:param name="refentry.xref.manvolnum" select="1"></xsl:param> + + + +Description + +if non-zero, the manvolnum is used when cross-referencing +refentrys, either with xref +or citerefentry. + + + + + + + +citerefentry.link +boolean + + +citerefentry.link +Generate URL links when cross-referencing RefEntrys? + + + + +<xsl:param name="citerefentry.link" select="0"></xsl:param> + + +Description + +If non-zero, a web link will be generated, presumably +to an online man->HTML gateway. The text of the link is +generated by the generate.citerefentry.link template. + + + + + + + +refentry.separator +boolean + + +refentry.separator +Generate a separator between consecutive RefEntry elements? + + + + +<xsl:param name="refentry.separator" select="1"></xsl:param> + + + +Description + +If true, a separator will be generated between consecutive +reference pages. + + + + + + + +refclass.suppress +boolean + + +refclass.suppress +Suppress display of refclass contents? + + + + +<xsl:param name="refclass.suppress" select="0"></xsl:param> + + +Description + +If the value of refclass.suppress is +non-zero, then display of refclass contents is +suppressed in output. + + + + + +Tables + + +default.table.width +length + + +default.table.width +The default width of tables + + + +<xsl:param name="default.table.width"></xsl:param> + + +Description +If non-zero, this value will be used for the +width attribute on tables that do not specify an +alternate width (with the dbhtml table-width or +dbfo table-width processing instruction). + + + + + +nominal.table.width +length + + +nominal.table.width +The (absolute) nominal width of tables + + + + +<xsl:param name="nominal.table.width">6in</xsl:param> + + + +Description + +In order to convert CALS column widths into HTML column widths, it +is sometimes necessary to have an absolute table width to use for conversion +of mixed absolute and relative widths. This value must be an absolute +length (not a percentage). + + + + + + +table.borders.with.css +boolean + + +table.borders.with.css +Use CSS to specify table, row, and cell borders? + + + + +<xsl:param name="table.borders.with.css" select="0"></xsl:param> + + + +Description + +If non-zero, CSS will be used to draw table borders. + + + + + + + +table.cell.border.style +list +none +solid +dotted +dashed +double +groove +ridge +inset +outset +solid + + +table.cell.border.style +Specifies the border style of table cells + + + + +<xsl:param name="table.cell.border.style">solid</xsl:param> + + + +Description + +Specifies the border style of table cells. + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + + + + +table.cell.border.thickness +length + + +table.cell.border.thickness +Specifies the thickness of table cell borders + + + + +<xsl:param name="table.cell.border.thickness">0.5pt</xsl:param> + + + +Description + +If non-zero, specifies the thickness of borders on table +cells. The units are points. See +CSS + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + + + + +table.cell.border.color +color + + +table.cell.border.color +Specifies the border color of table cells + + + + +<xsl:param name="table.cell.border.color"></xsl:param> + + + + +Description + +Set the color of table cell borders. If non-zero, the value is used +for the border coloration. See CSS. A +color is either a keyword or a numerical RGB specification. +Keywords are aqua, black, blue, fuchsia, gray, green, lime, maroon, +navy, olive, orange, purple, red, silver, teal, white, and +yellow. + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + + + + +table.frame.border.style +list +none +solid +dotted +dashed +double +groove +ridge +inset +outset +solid + + +table.frame.border.style +Specifies the border style of table frames + + + + +<xsl:param name="table.frame.border.style">solid</xsl:param> + + + +Description + +Specifies the border style of table frames. + + + + + + +table.frame.border.thickness +length + + +table.frame.border.thickness +Specifies the thickness of the frame border + + + + +<xsl:param name="table.frame.border.thickness">0.5pt</xsl:param> + + + +Description + +Specifies the thickness of the border on the table's frame. + + + + + + +table.frame.border.color +color + + +table.frame.border.color +Specifies the border color of table frames + + + + +<xsl:param name="table.frame.border.color"></xsl:param> + + + + +Description + +Specifies the border color of table frames. + + + + + + +default.table.frame +string + + +default.table.frame +The default framing of tables + + + + +<xsl:param name="default.table.frame">all</xsl:param> + + + +Description + +This value will be used when there is no frame attribute on the +table. + + + + + + +html.cellspacing +integer + + +html.cellspacing +Default value for cellspacing in HTML tables + + + + +<xsl:param name="html.cellspacing"></xsl:param> + + + +Description + +If non-zero, this value will be used as the default cellspacing +value in HTML tables. nn for pixels or nn% for percentage +length. E.g. 5 or 5% + + + + + + +html.cellpadding +integer + + +html.cellpadding +Default value for cellpadding in HTML tables + + + + +<xsl:param name="html.cellpadding"></xsl:param> + + + +Description + +If non-zero, this value will be used as the default cellpadding value +in HTML tables. nn for pixels or nn% for percentage length. E.g. 5 or +5% + + + + + +QAndASet + + +qanda.defaultlabel +list +number +qanda +none + + +qanda.defaultlabel +Sets the default for defaultlabel on QandASet. + + + + +<xsl:param name="qanda.defaultlabel">number</xsl:param> + + + +Description + +If no defaultlabel attribute is specified on +a qandaset, this value is used. It is generally one of the legal +values for the defaultlabel attribute (none, +number or +qanda), or one of the additional stylesheet-specific values +(qnumber or qnumberanda). +The default value is 'number'. + +The values are rendered as follows: + +qanda + +questions are labeled "Q:" and +answers are labeled "A:". + + + +number + +The questions are enumerated and the answers +are not labeled. + + + +qnumber + +The questions are labeled "Q:" followed by a number, and answers are not +labeled. +When sections are numbered, adding a label +to the number distinguishes the question numbers +from the section numbers. +This value is not allowed in the +defaultlabel attribute +of a qandaset element. + + + +qnumberanda + +The questions are labeled "Q:" followed by a number, and +the answers are labeled "A:". +When sections are numbered, adding a label +to the number distinguishes the question numbers +from the section numbers. +This value is not allowed in the +defaultlabel attribute +of a qandaset element. + + + +none + +No distinguishing label precedes Questions or Answers. + + + + + + + + + + +qanda.inherit.numeration +boolean + + +qanda.inherit.numeration +Does enumeration of QandASet components inherit the numeration of parent elements? + + + + +<xsl:param name="qanda.inherit.numeration" select="1"></xsl:param> + + + +Description + +If non-zero, numbered qandadiv elements and +question and answer inherit the enumeration of +the ancestors of the qandaset. + + + + + + + +qanda.in.toc +boolean + + +qanda.in.toc +Should qandaentry questions appear in +the document table of contents? + + + +<xsl:param name="qanda.in.toc" select="0"></xsl:param> + + +Description + +If true (non-zero), then the generated table of contents +for a document will include qandaset titles, +qandadiv titles, +and question elements. The default value (zero) excludes +them from the TOC. + +This parameter does not affect any tables of contents +that may be generated inside a qandaset or qandadiv. + + + + + + + +qanda.nested.in.toc +boolean + + +qanda.nested.in.toc +Should nested answer/qandaentry instances appear in TOC? + + + + +<xsl:param name="qanda.nested.in.toc" select="0"></xsl:param> + + + +Description + +If non-zero, instances of qandaentry +that are children of answer elements are shown in +the TOC. + + + + + +Linking + + +target.database.document +uri + + +target.database.document +Name of master database file for resolving +olinks + + + + <xsl:param name="target.database.document">olinkdb.xml</xsl:param> + + +Description + + +To resolve olinks between documents, the stylesheets use a master +database document that identifies the target datafiles for all the +documents within the scope of the olinks. This parameter value is the +URI of the master document to be read during processing to resolve +olinks. The default value is olinkdb.xml. + +The data structure of the file is defined in the +targetdatabase.dtd DTD. The database file +provides the high level elements to record the identifiers, locations, +and relationships of documents. The cross reference data for +individual documents is generally pulled into the database using +system entity references or XIncludes. See also +targets.filename. + + + + +targets.filename +string + + +targets.filename +Name of cross reference targets data file + + +<xsl:param name="targets.filename">target.db</xsl:param> + + +Description + + +In order to resolve olinks efficiently, the stylesheets can +generate an external data file containing information about +all potential cross reference endpoints in a document. +This parameter lets you change the name of the generated +file from the default name target.db. +The name must agree with that used in the target database +used to resolve olinks during processing. +See also target.database.document. + + + + + + +olink.base.uri +uri + + +olink.base.uri +Base URI used in olink hrefs + + +<xsl:param name="olink.base.uri"></xsl:param> + + +Description + +When cross reference data is collected for resolving olinks, it +may be necessary to prepend a base URI to each target's href. This +parameter lets you set that base URI when cross reference data is +collected. This feature is needed when you want to link to a document +that is processed without chunking. The output filename for such a +document is not known to the XSL stylesheet; the only target +information consists of fragment identifiers such as +#idref. To enable the resolution of olinks between +documents, you should pass the name of the HTML output file as the +value of this parameter. Then the hrefs recorded in the cross +reference data collection look like +outfile.html#idref, which can be reached as links +from other documents. + + + + + +use.local.olink.style +boolean + + +use.local.olink.style +Process olinks using xref style of current +document + + +<xsl:param name="use.local.olink.style" select="0"></xsl:param> + +Description + +When cross reference data is collected for use by olinks, the data for each potential target includes one field containing a completely assembled cross reference string, as if it were an xref generated in that document. Other fields record the separate title, number, and element name of each target. When an olink is formed to a target from another document, the olink resolves to that preassembled string by default. If the use.local.olink.style parameter is set to non-zero, then instead the cross +reference string is formed again from the target title, number, and +element name, using the stylesheet processing the targeting document. +Then olinks will match the xref style in the targeting document +rather than in the target document. If both documents are processed +with the same stylesheet, then the results will be the same. + + + + + +current.docid +string + + +current.docid +targetdoc identifier for the document being +processed + + +<xsl:param name="current.docid"></xsl:param> + + +Description + +When olinks between documents are resolved for HTML output, the stylesheet can compute the relative path between the current document and the target document. The stylesheet needs to know the targetdoc identifiers for both documents, as they appear in the target.database.document database file. This parameter passes to the stylesheet +the targetdoc identifier of the current document, since that +identifier does not appear in the document itself. +This parameter can also be used for print output. If an olink's targetdoc id differs from the current.docid, then the stylesheet can append the target document's title to the generated olink text. That identifies to the reader that the link is to a different document, not the current document. See also olink.doctitle to enable that feature. + + + + + +olink.doctitle +list +no +yes +maybe + + +olink.doctitle +show the document title for external olinks? + + + +<xsl:param name="olink.doctitle">no</xsl:param> + + +Description + +When olinks between documents are resolved, the generated text +may not make it clear that the reference is to another document. +It is possible for the stylesheets to append the other document's +title to external olinks. For this to happen, two parameters must +be set. + + +This olink.doctitle parameter +should be set to either yes or maybe +to enable this feature. + + + +And you should also set the current.docid +parameter to the document id for the document currently +being processed for output. + + + + + +Then if an olink's targetdoc id differs from +the current.docid value, the stylesheet knows +that it is a reference to another document and can +append the target document's +title to the generated olink text. + +The text for the target document's title is copied from the +olink database from the ttl element +of the top-level div for that document. +If that ttl element is missing or empty, +no title is output. + + +The supported values for olink.doctitle are: + + + +yes + + +Always insert the title to the target document if it is not +the current document. + + + + +no + + +Never insert the title to the target document, even if requested +in an xrefstyle attribute. + + + + +maybe + + +Only insert the title to the target document, if requested +in an xrefstyle attribute. + + + + +An xrefstyle attribute +may override the global setting for individual olinks. +The following values are supported in an +xrefstyle +attribute using the select: syntax: + + + + +docname + + +Insert the target document name for this olink using the +docname gentext template, but only +if the value of olink.doctitle +is not no. + + + + +docnamelong + + +Insert the target document name for this olink using the +docnamelong gentext template, but only +if the value of olink.doctitle +is not no. + + + + +nodocname + + +Omit the target document name even if +the value of olink.doctitle +is yes. + + + + +Another way of inserting the target document name +for a single olink is to employ an +xrefstyle +attribute using the template: syntax. +The %o placeholder (the letter o, not zero) +in such a template +will be filled in with the target document's title when it is processed. +This will occur regardless of +the value of olink.doctitle. + +Note that prior to version 1.66 of the XSL stylesheets, +the allowed values for this parameter were 0 and 1. Those +values are still supported and mapped to 'no' and 'yes', respectively. + + + + + + +olink.debug +boolean + + +olink.debug +Turn on debugging messages for olinks + + + + +<xsl:param name="olink.debug" select="0"></xsl:param> + + + +Description + +If non-zero, then each olink will generate several +messages about how it is being resolved during processing. +This is useful when an olink does not resolve properly +and the standard error messages are not sufficient to +find the problem. + + +You may need to read through the olink XSL templates +to understand the context for some of the debug messages. + + + + + + + +olink.properties +attribute set + + +olink.properties +Properties associated with the cross-reference +text of an olink. + + + + +<xsl:attribute-set name="olink.properties"> + <xsl:attribute name="show-destination">replace</xsl:attribute> +</xsl:attribute-set> + + + +Description + +This attribute set is applied to the +fo:basic-link element of an olink. It is not applied to the +optional page number or optional title of the external +document. + + + + + + +olink.lang.fallback.sequence +string + + +olink.lang.fallback.sequence +look up translated documents if olink not found? + + + +<xsl:param name="olink.lang.fallback.sequence"></xsl:param> + + +Description + + +This parameter defines a list of lang values +to search among to resolve olinks. + + +Normally an olink tries to resolve to a document in the same +language as the olink itself. The language of an olink +is determined by its nearest ancestor element with a +lang attribute, otherwise the +value of the l10n.gentext.default.lang +parameter. + + +An olink database can contain target data for the same +document in multiple languages. Each set of data has the +same value for the targetdoc attribute in +the document element in the database, but with a +different lang attribute value. + + +When an olink is being resolved, the target is first +sought in the document with the same language as the olink. +If no match is found there, then this parameter is consulted +for additional languages to try. + +The olink.lang.fallback.sequence +must be a whitespace separated list of lang values to +try. The first one with a match in the olink database is used. +The default value is empty. + +For example, a document might be written in German +and contain an olink with +targetdoc="adminguide". +When the document is processed, the processor +first looks for a target dataset in the +olink database starting with: + +<document targetdoc="adminguide" lang="de">. + + +If there is no such element, then the +olink.lang.fallback.sequence +parameter is consulted. +If its value is, for example, fr en, then the processor next +looks for targetdoc="adminguide" lang="fr", and +then for targetdoc="adminguide" lang="en". +If there is still no match, it looks for +targetdoc="adminguide" with no +lang attribute. + + +This parameter is useful when a set of documents is only +partially translated, or is in the process of being translated. +If a target of an olink has not yet been translated, then this +parameter permits the processor to look for the document in +other languages. This assumes the reader would rather have +a link to a document in a different language than to have +a broken link. + + + + + + + +insert.olink.page.number +list +no +yes +maybe + + +insert.olink.page.number +Turns page numbers in olinks on and off + + + + +<xsl:param name="insert.olink.page.number">no</xsl:param> + + + +Description + +The value of this parameter determines if +cross references made between documents with +olink will +include page number citations. +In most cases this is only applicable to references in printed output. + +The parameter has three possible values. + + + +no +No page number references will be generated for olinks. + + + +yes +Page number references will be generated +for all olink references. +The style of page reference may be changed +if an xrefstyle +attribute is used. + + + +maybe +Page number references will not be generated +for an olink element unless +it has an +xrefstyle +attribute whose value specifies a page reference. + + + +Olinks that point to targets within the same document +are treated as xrefs, and controlled by +the insert.xref.page.number parameter. + + +Page number references for olinks to +external documents can only be inserted if the +information exists in the olink database. +This means each olink target element +(div or obj) +must have a page attribute +whose value is its page number in the target document. +The XSL stylesheets are not able to extract that information +during processing because pages have not yet been created in +XSLT transformation. Only the XSL-FO processor knows what +page each element is placed on. +Therefore some postprocessing must take place to populate +page numbers in the olink database. + + + + + + + + + +insert.olink.pdf.frag +boolean + + +insert.olink.pdf.frag +Add fragment identifiers for links into PDF files + + + + +<xsl:param name="insert.olink.pdf.frag" select="0"></xsl:param> + + + +Description + +The value of this parameter determines whether +the cross reference URIs to PDF documents made with +olink will +include fragment identifiers. + + +When forming a URI to link to a PDF document, +a fragment identifier (typically a '#' followed by an +id value) appended to the PDF filename can be used by +the PDF viewer to open +the PDF file to a location within the document instead of +the first page. +However, not all PDF files have id +values embedded in them, and not all PDF viewers can +handle fragment identifiers. + + +If insert.olink.pdf.frag is set +to a non-zero value, then any olink targeting a +PDF file will have the fragment identifier appended to the URI. +The URI is formed by concatenating the value of the +olink.base.uri parameter, the +value of the baseuri +attribute from the document +element in the olink database with the matching +targetdoc value, +and the value of the href +attribute for the targeted element in the olink database. +The href attribute +contains the fragment identifier. + + +If insert.olink.pdf.frag is set +to zero (the default value), then +the href attribute +from the olink database +is not appended to PDF olinks, so the fragment identifier is left off. +A PDF olink is any olink for which the +baseuri attribute +from the matching document +element in the olink database ends with '.pdf'. +Any other olinks will still have the fragment identifier added. + + + + + + +prefer.internal.olink +boolean + + +prefer.internal.olink +Prefer a local olink reference to an external reference + + + + +<xsl:param name="prefer.internal.olink" select="0"></xsl:param> + + + +Description + +If you are re-using XML content modules in multiple documents, +you may want to redirect some of your olinks. This parameter +permits you to redirect an olink to the current document. + + +For example: you are writing documentation for a product, +which includes 3 manuals: a little installation +booklet (booklet.xml), a user +guide (user.xml), and a reference manual (reference.xml). +All 3 documents begin with the same introduction section (intro.xml) that +contains a reference to the customization section (custom.xml) which is +included in both user.xml and reference.xml documents. + + +How do you write the link to custom.xml in intro.xml +so that it is interpreted correctly in all 3 documents? + +If you use xref, it will fail in user.xml. + +If you use olink (pointing to reference.xml), +the reference in user.xml +will point to the customization section of the reference manual, while it is +actually available in user.xml. + + + +If you set the prefer.internal.olink +parameter to a non-zero value, then the processor will +first look in the olink database +for the olink's targetptr attribute value +in document matching the current.docid +parameter value. If it isn't found there, then +it tries the document in the database +with the targetdoc +value that matches the olink's targetdoc +attribute. + + +This feature permits an olink reference to resolve to +the current document if there is an element +with an id matching the olink's targetptr +value. The current document's olink data must be +included in the target database for this to work. + + +There is a potential for incorrect links if +the same id attribute value is used for different +content in different documents. +Some of your olinks may be redirected to the current document +when they shouldn't be. It is not possible to control +individual olink instances. + + + + + + + +link.mailto.url +string + + +link.mailto.url +Mailto URL for the LINK REL=made HTML HEAD element + + + + +<xsl:param name="link.mailto.url"></xsl:param> + + + +Description + +If not the empty string, this address will be used for the +rel=made link element in the html head + + + + + + + +ulink.target +string + + +ulink.target +The HTML anchor target for ULinks + + + + +<xsl:param name="ulink.target">_top</xsl:param> + + + +Description + +If ulink.target is non-zero, its value will +be used for the target attribute +on anchors generated for ulinks. + + + + + + +olink.fragid +string + + +olink.fragid +Names the fragment identifier portion of an OLink resolver query + + + +<xsl:param name="olink.fragid">fragid=</xsl:param> + + +Description +The fragment identifier portion of an olink target. + + + + + +olink.outline.ext +string + + +olink.outline.ext +The extension of OLink outline files + + + + +<xsl:param name="olink.outline.ext">.olink</xsl:param> + + + +Description + +The extension to be expected for OLink outline files +Bob has this parameter as dead. Please don't use + + + + + + +olink.pubid +string + + +olink.pubid +Names the public identifier portion of an OLink resolver query + + + + +<xsl:param name="olink.pubid">pubid</xsl:param> + + + +Description + + + + + + + + +olink.sysid +string + + +olink.sysid +Names the system identifier portion of an OLink resolver query + + + + +<xsl:param name="olink.sysid">sysid</xsl:param> + + + +Description + +FIXME + + + + + + +olink.resolver +string + + +olink.resolver +The root name of the OLink resolver (usually a script) + + + + <xsl:param name="olink.resolver">/cgi-bin/olink</xsl:param> + + +Description +FIXME: + + + + +Cross References + + +collect.xref.targets +list +no +yes +only + + +collect.xref.targets +Controls whether cross reference data is +collected + + +<xsl:param name="collect.xref.targets">no</xsl:param> + + +Description + + +In order to resolve olinks efficiently, the stylesheets can +generate an external data file containing information about +all potential cross reference endpoints in a document. +This parameter determines whether the collection process is run when the document is processed by the stylesheet. The default value is no, which means the data file is not generated during processing. The other choices are yes, which means the data file is created and the document is processed for output, and only, which means the data file is created but the document is not processed for output. +See also targets.filename. + + + + + + +insert.xref.page.number +list +no +yes +maybe + + +insert.xref.page.number +Turns page numbers in xrefs on and off + + + + +<xsl:param name="insert.xref.page.number">no</xsl:param> + + + +Description + +The value of this parameter determines if +cross references (xrefs) in +printed output will +include page number citations. +It has three possible values. + + + +no +No page number references will be generated. + + + +yes +Page number references will be generated +for all xref elements. +The style of page reference may be changed +if an xrefstyle +attribute is used. + + + +maybe +Page number references will not be generated +for an xref element unless +it has an +xrefstyle +attribute whose value specifies a page reference. + + + + + + + + + +use.role.as.xrefstyle +boolean + + +use.role.as.xrefstyle +Use role attribute for +xrefstyle on xref? + + + + +<xsl:param name="use.role.as.xrefstyle" select="1"></xsl:param> + + + +Description + +In DocBook documents that conform to a schema older than V4.3, this parameter allows +role to serve the purpose of specifying the cross reference style. + +If non-zero, the role attribute on +xref will be used to select the cross reference style. +In DocBook V4.3, the xrefstyle attribute was added for this purpose. +If the xrefstyle attribute is present, +role will be ignored, regardless of the setting +of this parameter. + + + +Example + +The following small stylesheet shows how to configure the +stylesheets to make use of the cross reference style: + +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.0"> + +<xsl:import href="../xsl/html/docbook.xsl"/> + +<xsl:output method="html"/> + +<xsl:param name="local.l10n.xml" select="document('')"/> +<l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"> + <l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en"> + <l:context name="xref"> + <l:template name="chapter" style="title" text="Chapter %n, %t"/> + <l:template name="chapter" text="Chapter %n"/> + </l:context> + </l:l10n> +</l:i18n> + +</xsl:stylesheet> + +With this stylesheet, the cross references in the following document: + +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> +<book id="book"><title>Book</title> + +<preface> +<title>Preface</title> + +<para>Normal: <xref linkend="ch1"/>.</para> +<para>Title: <xref xrefstyle="title" linkend="ch1"/>.</para> + +</preface> + +<chapter id="ch1"> +<title>First Chapter</title> + +<para>Irrelevant.</para> + +</chapter> +</book> + +will appear as: + + +Normal: Chapter 1. +Title: Chapter 1, First Chapter. + + + + + + + +xref.with.number.and.title +boolean + + +xref.with.number.and.title +Use number and title in cross references + + + + +<xsl:param name="xref.with.number.and.title" select="1"></xsl:param> + + + +Description + +A cross reference may include the number (for example, the number of +an example or figure) and the title which is a required child of some +targets. This parameter inserts both the relevant number as well as +the title into the link. + + + + + + +xref.label-page.separator +string + + +xref.label-page.separator +Punctuation or space separating label from page number in xref + + + +<xsl:param name="xref.label-page.separator"><xsl:text> </xsl:text></xsl:param> + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both label and page +but no title, +then the value of this parameter is inserted between +label and page number in the output. +If a title is included, then other separators are used. + + + + + + + +xref.label-title.separator +string + + +xref.label-title.separator +Punctuation or space separating label from title in xref + + + +<xsl:param name="xref.label-title.separator">: </xsl:param> + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both label and title, +then the value of this parameter is inserted between +label and title in the output. + + + + + + + +xref.title-page.separator +string + + +xref.title-page.separator +Punctuation or space separating title from page number in xref + + + +<xsl:param name="xref.title-page.separator"><xsl:text> </xsl:text></xsl:param> + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both title and page number, +then the value of this parameter is inserted between +title and page number in the output. + + + + + + +Lists + + +segmentedlist.as.table +boolean + + +segmentedlist.as.table +Format segmented lists as tables? + + + + +<xsl:param name="segmentedlist.as.table" select="0"></xsl:param> + + + +Description + +If non-zero, segmentedlists will be formatted as +tables. + + + + + + +variablelist.as.table +boolean + + +variablelist.as.table +Format variablelists as tables? + + + + +<xsl:param name="variablelist.as.table" select="0"></xsl:param> + + + +Description + +If non-zero, variablelists will be formatted as +tables. A processing instruction exists to specify a particular width for the +column containing the terms: +dbhtml term-width=".25in" + +You can override this setting with a processing instruction as the +child of variablelist: dbhtml +list-presentation="table" or dbhtml +list-presentation="list". + +This parameter only applies to the HTML transformations. In the +FO case, proper list markup is robust enough to handle the formatting. +But see also variablelist.as.blocks. + + <variablelist> + <?dbhtml list-presentation="table"?> + <?dbhtml term-width="1.5in"?> + <?dbfo list-presentation="list"?> + <?dbfo term-width="1in"?> + <varlistentry> + <term>list</term> + <listitem> + <para> + Formatted as a table even if variablelist.as.table is set to 0. + </para> + </listitem> + </varlistentry> + </variablelist> + + + + + + +variablelist.term.separator +string + + +variablelist.term.separator +Text to separate terms within a multi-term +varlistentry + + + + +<xsl:param name="variablelist.term.separator">, </xsl:param> + + +Description + +When a varlistentry contains multiple term +elements, the string specified in the value of the +variablelist.term.separator parameter is placed +after each term except the last. + + + To generate a line break between multiple terms in + a varlistentry, set a non-zero value for the + variablelist.term.break.after parameter. If + you do so, you may also want to set the value of the + variablelist.term.separator parameter to an + empty string (to suppress rendering of the default comma and space + after each term). + + + + + + + +variablelist.term.break.after +boolean + + +variablelist.term.break.after +Generate line break after each term within a +multi-term varlistentry? + + + + +<xsl:param name="variablelist.term.break.after">0</xsl:param> + + +Description + +Set a non-zero value for the +variablelist.term.break.after parameter to +generate a line break between terms in a +multi-term varlistentry. + + +If you set a non-zero value for +variablelist.term.break.after, you may also +want to set the value of the +variablelist.term.separator parameter to an +empty string (to suppress rendering of the default comma and space +after each term). + + + + + + +Bibliography + + +bibliography.style +list +normal +iso690 + + +bibliography.style +Style used for formatting of biblioentries. + + + + +<xsl:param name="bibliography.style">normal</xsl:param> + + + +Description + +Currently only normal and +iso690 styles are supported. + +In order to use ISO690 style to the full extent you might need +to use additional markup described on the +following WiKi page. + + + + + + +biblioentry.item.separator +string + + +biblioentry.item.separator +Text to separate bibliography entries + + + +<xsl:param name="biblioentry.item.separator">. </xsl:param> + + +Description + +Text to separate bibliography entries + + + + + + + +bibliography.collection +string + + +bibliography.collection +Name of the bibliography collection file + + + + +<xsl:param name="bibliography.collection">http://docbook.sourceforge.net/release/bibliography/bibliography.xml</xsl:param> + + + + +Description + +Maintaining bibliography entries across a set of documents is tedious, time +consuming, and error prone. It makes much more sense, usually, to store all of +the bibliography entries in a single place and simply extract +the ones you need in each document. + +That's the purpose of the +bibliography.collection parameter. To setup a global +bibliography database, follow these steps: + +First, create a stand-alone bibliography document that contains all of +the documents that you wish to reference. Make sure that each bibliography +entry (whether you use biblioentry or bibliomixed) +has an ID. + +My global bibliography, ~/bibliography.xml begins +like this: + + +<!DOCTYPE bibliography + PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> +<bibliography><title>References</title> + +<bibliomixed id="xml-rec"><abbrev>XML 1.0</abbrev>Tim Bray, +Jean Paoli, C. M. Sperberg-McQueen, and Eve Maler, editors. +<citetitle><ulink url="http://www.w3.org/TR/REC-xml">Extensible Markup +Language (XML) 1.0 Second Edition</ulink></citetitle>. +World Wide Web Consortium, 2000. +</bibliomixed> + +<bibliomixed id="xml-names"><abbrev>Namespaces</abbrev>Tim Bray, +Dave Hollander, +and Andrew Layman, editors. +<citetitle><ulink url="http://www.w3.org/TR/REC-xml-names/">Namespaces in +XML</ulink></citetitle>. +World Wide Web Consortium, 1999. +</bibliomixed> + +<!-- ... --> +</bibliography> + + + +When you create a bibliography in your document, simply +provide empty bibliomixed +entries for each document that you wish to cite. Make sure that these +elements have the same ID as the corresponding real +entry in your global bibliography. + +For example: + + +<bibliography><title>Bibliography</title> + +<bibliomixed id="xml-rec"/> +<bibliomixed id="xml-names"/> +<bibliomixed id="DKnuth86">Donald E. Knuth. <citetitle>Computers and +Typesetting: Volume B, TeX: The Program</citetitle>. Addison-Wesley, +1986. ISBN 0-201-13437-3. +</bibliomixed> +<bibliomixed id="relaxng"/> + +</bibliography> + + +Note that it's perfectly acceptable to mix entries from your +global bibliography with normal entries. You can use +xref or other elements to cross-reference your +bibliography entries in exactly the same way you do now. + +Finally, when you are ready to format your document, simply set the +bibliography.collection parameter (in either a +customization layer or directly through your processor's interface) to +point to your global bibliography. + +The stylesheets will format the bibliography in your document as if +all of the entries referenced appeared there literally. + + + + + + +bibliography.numbered +boolean + + +bibliography.numbered +Should bibliography entries be numbered? + + + + +<xsl:param name="bibliography.numbered" select="0"></xsl:param> + + + +Description + +If non-zero bibliography entries will be numbered + + + + + +Glossary + + +glossterm.auto.link +boolean + + +glossterm.auto.link +Generate links from glossterm to glossentry automatically? + + + + +<xsl:param name="glossterm.auto.link" select="0"></xsl:param> + + + +Description + +If non-zero, links from inline glossterms to the corresponding +glossentry elements in a glossary or glosslist +will be automatically generated. This is useful when your glossterms are consistent +and you don't want to add links manually. + +The automatic link generation feature is not used on glossterm elements +that have a linkend attribute. + + + + + + +firstterm.only.link +boolean + + +firstterm.only.link +Does automatic glossterm linking only apply to firstterms? + + + + +<xsl:param name="firstterm.only.link" select="0"></xsl:param> + + + +Description + +If non-zero, only firstterms will be automatically linked +to the glossary. If glossary linking is not enabled, this parameter +has no effect. + + + + + + +glossary.collection +string + + +glossary.collection +Name of the glossary collection file + + + + +<xsl:param name="glossary.collection"></xsl:param> + + + +Description + +Glossaries maintained independently across a set of documents +are likely to become inconsistent unless considerable effort is +expended to keep them in sync. It makes much more sense, usually, to +store all of the glossary entries in a single place and simply +extract the ones you need in each document. + +That's the purpose of the +glossary.collection parameter. To setup a global +glossary database, follow these steps: + +Setting Up the Glossary Database + +First, create a stand-alone glossary document that contains all of +the entries that you wish to reference. Make sure that each glossary +entry has an ID. + +Here's an example glossary: + + + +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE glossary + PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> +<glossary> +<glossaryinfo> +<editor><firstname>Eric</firstname><surname>Raymond</surname></editor> +<title>Jargon File 4.2.3 (abridged)</title> +<releaseinfo>Just some test data</releaseinfo> +</glossaryinfo> + +<glossdiv><title>0</title> + +<glossentry> +<glossterm>0</glossterm> +<glossdef> +<para>Numeric zero, as opposed to the letter `O' (the 15th letter of +the English alphabet). In their unmodified forms they look a lot +alike, and various kluges invented to make them visually distinct have +compounded the confusion. If your zero is center-dotted and letter-O +is not, or if letter-O looks almost rectangular but zero looks more +like an American football stood on end (or the reverse), you're +probably looking at a modern character display (though the dotted zero +seems to have originated as an option on IBM 3270 controllers). If +your zero is slashed but letter-O is not, you're probably looking at +an old-style ASCII graphic set descended from the default typewheel on +the venerable ASR-33 Teletype (Scandinavians, for whom /O is a letter, +curse this arrangement). (Interestingly, the slashed zero long +predates computers; Florian Cajori's monumental "A History of +Mathematical Notations" notes that it was used in the twelfth and +thirteenth centuries.) If letter-O has a slash across it and the zero +does not, your display is tuned for a very old convention used at IBM +and a few other early mainframe makers (Scandinavians curse <emphasis>this</emphasis> +arrangement even more, because it means two of their letters collide). +Some Burroughs/Unisys equipment displays a zero with a <emphasis>reversed</emphasis> +slash. Old CDC computers rendered letter O as an unbroken oval and 0 +as an oval broken at upper right and lower left. And yet another +convention common on early line printers left zero unornamented but +added a tail or hook to the letter-O so that it resembled an inverted +Q or cursive capital letter-O (this was endorsed by a draft ANSI +standard for how to draw ASCII characters, but the final standard +changed the distinguisher to a tick-mark in the upper-left corner). +Are we sufficiently confused yet?</para> +</glossdef> +</glossentry> + +<glossentry> +<glossterm>1TBS</glossterm> +<glossdef> +<para role="accidence"> +<phrase role="pronounce"></phrase> +<phrase role="partsofspeach">n</phrase> +</para> +<para>The "One True Brace Style"</para> +<glossseealso>indent style</glossseealso> +</glossdef> +</glossentry> + +<!-- ... --> + +</glossdiv> + +<!-- ... --> + +</glossary> + + + + +Marking Up Glossary Terms + +That takes care of the glossary database, now you have to get the entries +into your document. Unlike bibliography entries, which can be empty, creating +placeholder glossary entries would be very tedious. So instead, +support for glossary.collection relies on implicit linking. + +In your source document, simply use firstterm and +glossterm to identify the terms you wish to have included +in the glossary. The stylesheets assume that you will either set the +baseform attribute correctly, or that the +content of the element exactly matches a term in your glossary. + +If you're using a glossary.collection, don't +make explicit links on the terms in your document. + +So, in your document, you might write things like this: + + +<para>This is dummy text, without any real meaning. +The point is simply to reference glossary terms like <glossterm>0</glossterm> +and the <firstterm baseform="1TBS">One True Brace Style (1TBS)</firstterm>. +The <glossterm>1TBS</glossterm>, as you can probably imagine, is a nearly +religious issue.</para> + + +If you set the firstterm.only.link parameter, +only the terms marked with firstterm will be links. +Otherwise, all the terms will be linked. + + + +Marking Up the Glossary + +The glossary itself has to be identified for the stylesheets. For lack +of a better choice, the role is used. +To identify the glossary as the target for automatic processing, set +the role to auto. The title of this +glossary (and any other information from the glossaryinfo +that's rendered by your stylesheet) will be displayed, but the entries will +come from the database. + + +Unfortunately, the glossary can't be empty, so you must put in +at least one glossentry. The content of this entry +is irrelevant, it will not be rendered: + + +<glossary role="auto"> +<glossentry> +<glossterm>Irrelevant</glossterm> +<glossdef> +<para>If you can see this, the document was processed incorrectly. Use +the <parameter>glossary.collection</parameter> parameter.</para> +</glossdef> +</glossentry> +</glossary> + + +What about glossary divisions? If your glossary database has glossary +divisions and your automatic glossary contains at least +one glossdiv, the automic glossary will have divisions. +If the glossdiv is missing from either location, no divisions +will be rendered. + +Glossary entries (and divisions, if appropriate) in the glossary will +occur in precisely the order they occur in your database. + + + +Formatting the Document + +Finally, when you are ready to format your document, simply set the +glossary.collection parameter (in either a +customization layer or directly through your processor's interface) to +point to your global glossary. + +The stylesheets will format the glossary in your document as if +all of the entries implicilty referenced appeared there literally. + + +Limitations + +Glossary cross-references within the glossary are +not supported. For example, this will not work: + + +<glossentry> +<glossterm>gloss-1</glossterm> +<glossdef><para>A description that references <glossterm>gloss-2</glossterm>.</para> +<glossseealso>gloss-2</glossseealso> +</glossdef> +</glossentry> + + +If you put glossary cross-references in your glossary that way, +you'll get the cryptic error: Warning: +glossary.collection specified, but there are 0 automatic +glossaries. + +Instead, you must do two things: + + + +Markup your glossary using glossseealso: + + +<glossentry> +<glossterm>gloss-1</glossterm> +<glossdef><para>A description that references <glossterm>gloss-2</glossterm>.</para> +<glossseealso>gloss-2</glossseealso> +</glossdef> +</glossentry> + + + + +Make sure there is at least one glossterm reference to +gloss-2 in your document. The +easiest way to do that is probably within a remark in your +automatic glossary: + + +<glossary role="auto"> +<remark>Make sure there's a reference to <glossterm>gloss-2</glossterm>.</remark> +<glossentry> +<glossterm>Irrelevant</glossterm> +<glossdef> +<para>If you can see this, the document was processed incorrectly. Use +the <parameter>glossary.collection</parameter> parameter.</para> +</glossdef> +</glossentry> +</glossary> + + + + + + + + + + +glossary.sort +boolean + + +glossary.sort +Sort glossentry elements? + + + + +<xsl:param name="glossary.sort" select="0"></xsl:param> + + + +Description + +If non-zero, then the glossentry elements within a +glossary, glossdiv, or glosslist are sorted on the glossterm, using +the current lang setting. If zero (the default), then +glossentry elements are not sorted and are presented +in document order. + + + + + + + +glossentry.show.acronym +list +no +yes +primary + + +glossentry.show.acronym +Display glossentry acronyms? + + + + +<xsl:param name="glossentry.show.acronym">no</xsl:param> + + + +Description + +A setting of yes means they should be displayed; +no means they shouldn't. If primary is used, +then they are shown as the primary text for the entry. + + +This setting controls both acronym and +abbrev elements in the glossentry. + + + + + + +Miscellaneous + + +formal.procedures +boolean + + +formal.procedures +Selects formal or informal procedures + + + + +<xsl:param name="formal.procedures" select="1"></xsl:param> + + + +Description + +Formal procedures are numbered and always have a title. + + + + + + + +formal.title.placement +table + + +formal.title.placement +Specifies where formal object titles should occur + + + + +<xsl:param name="formal.title.placement"> +figure before +example before +equation before +table before +procedure before +task before +</xsl:param> + + + +Description + +Specifies where formal object titles should occur. For each formal object +type (figure, +example, +equation, +table, and procedure) +you can specify either the keyword +before or +after. + + + + + + +runinhead.default.title.end.punct +string + + +runinhead.default.title.end.punct +Default punctuation character on a run-in-head + + + +<xsl:param name="runinhead.default.title.end.punct">.</xsl:param> + + + +Description + +If non-zero, For a formalpara, use the specified +string as the separator between the title and following text. The period is the default value. + + + + + + +runinhead.title.end.punct +string + + +runinhead.title.end.punct +Characters that count as punctuation on a run-in-head + + + + +<xsl:param name="runinhead.title.end.punct">.!?:</xsl:param> + + + +Description + +Specify which characters are to be counted as punctuation. These +characters are checked for a match with the last character of the +title. If no match is found, the +runinhead.default.title.end.punct contents are +inserted. This is to avoid duplicated punctuation in the output. + + + + + + + +show.comments +boolean + + +show.comments +Display remark elements? + + + + +<xsl:param name="show.comments" select="1"></xsl:param> + + + +Description + +If non-zero, comments will be displayed, otherwise they +are suppressed. Comments here refers to the remark element +(which was called comment prior to DocBook +4.0), not XML comments (<-- like this -->) which are +unavailable. + + + + + + + +show.revisionflag +boolean + + +show.revisionflag +Enable decoration of elements that have a revisionflag + + + + +<xsl:param name="show.revisionflag" select="0"></xsl:param> + + + +Description + + +If show.revisionflag is turned on, then the stylesheets +may produce additional markup designed to allow a CSS stylesheet to +highlight elements that have specific revisionflag settings. + +The markup inserted will be usually be either a <span> or +<div> with an appropriate class +attribute. (The value of the class attribute will be the same as the +value of the revisionflag attribute). In some contexts, for example +tables, where extra markup would be structurally illegal, the class +attribute will be added to the appropriate container element. + +In general, the stylesheets only test for revisionflag in contexts +where an importing stylesheet would have to redefine whole templates. +Most of the revisionflag processing is expected to be done by another +stylesheet, for example changebars.xsl. + + + + + + +shade.verbatim +boolean + + +shade.verbatim +Should verbatim environments be shaded? + + + +<xsl:param name="shade.verbatim" select="0"></xsl:param> + + +Description + +In the FO stylesheet, if this parameter is non-zero then the +shade.verbatim.style properties will be applied +to verbatim environments. + +In the HTML stylesheet, this parameter is now deprecated. Use +CSS instead. + + + + + + +shade.verbatim.style +attribute set + + +shade.verbatim.style +Properties that specify the style of shaded verbatim listings + + + + +<xsl:attribute-set name="shade.verbatim.style"> + <xsl:attribute name="border">0</xsl:attribute> + <xsl:attribute name="bgcolor">#E0E0E0</xsl:attribute> +</xsl:attribute-set> + + + + +Description + +Properties that specify the style of shaded verbatim listings. The +parameters specified (the border and background color) are added to +the styling of the xsl-fo output. A border might be specified as "thin +black solid" for example. See xsl-fo + + + + + + +punct.honorific +string + + +punct.honorific +Punctuation after an honorific in a personal name. + + + + +<xsl:param name="punct.honorific">.</xsl:param> + + + +Description + +This parameter specifies the punctuation that should be added after an +honorific in a personal name. + + + + + + +tex.math.in.alt +list +plain +latex + + +tex.math.in.alt +TeX notation used for equations + + + + +<xsl:param name="tex.math.in.alt"></xsl:param> + + + +Description + +If you want type math directly in TeX notation in equations, +this parameter specifies notation used. Currently are supported two +values -- plain and latex. Empty +value means that you are not using TeX math at all. + +Preferred way for including TeX alternative of math is inside of +textobject element. Eg.: + +<inlineequation> +<inlinemediaobject> +<imageobject> +<imagedata fileref="eq1.gif"/> +</imageobject> +<textobject><phrase>E=mc squared</phrase></textobject> +<textobject role="tex"><phrase>E=mc^2</phrase></textobject> +</inlinemediaobject> +</inlineequation> + +If you are using graphic element, you can +store TeX inside alt element: + +<inlineequation> +<alt role="tex">a^2+b^2=c^2</alt> +<graphic fileref="a2b2c2.gif"/> +</inlineequation> + +If you want use this feature, you should process your FO with +PassiveTeX, which only supports TeX math notation. When calling +stylsheet, don't forget to specify also +passivetex.extensions=1. + +If you want equations in HTML, just process generated file +tex-math-equations.tex by TeX or LaTeX. Then run +dvi2bitmap program on result DVI file. You will get images for +equations in your document. + + + This feature is useful for print/PDF output only if you + use the obsolete and now unsupported PassiveTeX XSL-FO + engine. + + + + +Related Parameters + tex.math.delims, + passivetex.extensions, + tex.math.file + + + + + + +tex.math.file +string + + +tex.math.file +Name of temporary file for generating images from equations + + + + +<xsl:param name="tex.math.file">tex-math-equations.tex</xsl:param> + + + +Description + +Name of auxiliary file for TeX equations. This file can be +processed by dvi2bitmap to get bitmap versions of equations for HTML +output. + + +Related Parameters + tex.math.in.alt, + tex.math.delims, + + +More information + For how-to documentation on embedding TeX equations and + generating output from them, see + DBTeXMath. + + + + + +tex.math.delims +boolean + + +tex.math.delims +Should equations output for processing by TeX be +surrounded by math mode delimiters? + + + + +<xsl:param name="tex.math.delims" select="1"></xsl:param> + + + +Description + +For compatibility with DSSSL based DBTeXMath from Allin Cottrell +you should set this parameter to 0. + + + This feature is useful for print/PDF output only if you + use the obsolete and now unsupported PassiveTeX XSL-FO + engine. + + + +Related Parameters + tex.math.in.alt, + passivetex.extensions + + +See Also + You can also use the dbtex delims processing + instruction to control whether delimiters are output. + + + + + + + +pixels.per.inch +integer + + +pixels.per.inch +How many pixels are there per inch? + + + + +<xsl:param name="pixels.per.inch">90</xsl:param> + + + +Description + +When lengths are converted to pixels, this value is used to +determine the size of a pixel. The default value is taken from the +XSL +Recommendation. + + + + + + + +points.per.em +number + + +points.per.em +Specify the nominal size of an em-space in points + + + + +<xsl:param name="points.per.em">10</xsl:param> + + + +Description + +The fixed value used for calculations based upon the size of a +character. The assumption made is that ten point font is in use. This +assumption may not be valid. + + + + + + +use.svg +boolean + + +use.svg +Allow SVG in the result tree? + + + + +<xsl:param name="use.svg" select="1"></xsl:param> + + + +Description + +If non-zero, SVG will be considered an acceptable image format. SVG +is passed through to the result tree, so correct rendering of the resulting +diagram depends on the formatter (FO processor or web browser) that is used +to process the output from the stylesheet. + + + + + + +menuchoice.separator +string + + +menuchoice.separator +Separator between items of a menuchoice +other than guimenuitem and +guisubmenu + + + + +<xsl:param name="menuchoice.separator">+</xsl:param> + + + +Description + +Separator used to connect items of a menuchoice other +than guimenuitem and guisubmenu. The latter +elements are linked with menuchoice.menu.separator. + + + + + + + +menuchoice.menu.separator +string + + +menuchoice.menu.separator +Separator between items of a menuchoice +with guimenuitem or +guisubmenu + + + + +<xsl:param name="menuchoice.menu.separator"> → </xsl:param> + + + +Description + +Separator used to connect items of a menuchoice with +guimenuitem or guisubmenu. Other elements +are linked with menuchoice.separator. + +The default value is &#x2192;, which is the +&rarr; (right arrow) character entity. +The current FOP (0.20.5) requires setting the font-family +explicitly. + +The default value also includes spaces around the arrow, +which will allow a line to break. Replace the spaces with +&#xA0; (nonbreaking space) if you don't want those +spaces to break. + + + + + + + +default.float.class +string + + +default.float.class +Specifies the default float class + + + + +<xsl:param name="default.float.class"> + <xsl:choose> + <xsl:when test="contains($stylesheet.result.type,'html')">left</xsl:when> + <xsl:otherwise>before</xsl:otherwise> + </xsl:choose> +</xsl:param> + + + +Description + +Selects the direction in which a float should be placed. for +xsl-fo this is before, for html it is left. For Western texts, the +before direction is the top of the page. + + + + + + +footnote.number.format +list +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +footnote.number.format +Identifies the format used for footnote numbers + + + + +<xsl:param name="footnote.number.format">1</xsl:param> + + + +Description + +The footnote.number.format specifies the format +to use for footnote numeration (1, i, I, a, or A). + + + + + + +table.footnote.number.format +list +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +table.footnote.number.format +Identifies the format used for footnote numbers in tables + + + + +<xsl:param name="table.footnote.number.format">a</xsl:param> + + + +Description + +The table.footnote.number.format specifies the format +to use for footnote numeration (1, i, I, a, or A) in tables. + + + + + + +footnote.number.symbols + + + +footnote.number.symbols +Special characters to use as footnote markers + + + + +<xsl:param name="footnote.number.symbols"></xsl:param> + + + +Description + +If footnote.number.symbols is not the empty string, +footnotes will use the characters it contains as footnote symbols. For example, +*&#x2020;&#x2021;&#x25CA;&#x2720; will identify +footnotes with *, , , +, and . If there are more footnotes +than symbols, the stylesheets will fall back to numbered footnotes using +footnote.number.format. + +The use of symbols for footnotes depends on the ability of your +processor (or browser) to render the symbols you select. Not all systems are +capable of displaying the full range of Unicode characters. If the quoted characters +in the preceding paragraph are not displayed properly, that's a good indicator +that you may have trouble using those symbols for footnotes. + + + + + + +table.footnote.number.symbols +string + + +table.footnote.number.symbols +Special characters to use a footnote markers in tables + + + + +<xsl:param name="table.footnote.number.symbols"></xsl:param> + + + +Description + +If table.footnote.number.symbols is not the empty string, +table footnotes will use the characters it contains as footnote symbols. For example, +*&#x2020;&#x2021;&#x25CA;&#x2720; will identify +footnotes with *, , , +, and . If there are more footnotes +than symbols, the stylesheets will fall back to numbered footnotes using +table.footnote.number.format. + +The use of symbols for footnotes depends on the ability of your +processor (or browser) to render the symbols you select. Not all systems are +capable of displaying the full range of Unicode characters. If the quoted characters +in the preceding paragraph are not displayed properly, that's a good indicator +that you may have trouble using those symbols for footnotes. + + + + + + +highlight.source +boolean + + +highlight.source +Should the content of programlisting +be syntactically highlighted? + + + + +<xsl:param name="highlight.source" select="0"></xsl:param> + + + +Description + +When this parameter is non-zero, the stylesheets will try to do syntax highlighting of the +content of programlisting elements. You specify the language for each programlisting +by using the language attribute. The highlight.default.language +parameter can be used to specify the language for programlistings without a language +attribute. Syntax highlighting also works for screen and synopsis elements. + +The actual highlighting work is done by the XSLTHL extension module. This is an external Java library that has to be +downloaded separately (see below). + + +In order to use this extension, you must + +add xslthl-2.x.x.jar to your Java classpath. The latest version is available +from the XSLT syntax highlighting project +at SourceForge. + + +use a customization layer in which you import one of the following stylesheet modules: + + + html/highlight.xsl + + + + xhtml/highlight.xsl + + + + xhtml-1_1/highlight.xsl + + + + fo/highlight.xsl + + + + + +let either the xslthl.config Java system property or the +highlight.xslthl.config parameter point to the configuration file for syntax +highlighting (using URL syntax). DocBook XSL comes with a ready-to-use configuration file, +highlighting/xslthl-config.xml. + + + +The extension works with Saxon 6.5.x and Xalan-J. (Saxon 8.5 or later is also supported, but since it is +an XSLT 2.0 processor it is not guaranteed to work with DocBook XSL in all circumstances.) + +The following is an example of a Saxon 6 command adapted for syntax highlighting, to be used on Windows: + + +java -cp c:/Java/saxon.jar;c:/Java/xslthl-2.0.1.jar +-Dxslthl.config=file:///c:/docbook-xsl/highlighting/xslthl-config.xml com.icl.saxon.StyleSheet +-o test.html test.xml myhtml.xsl + + + + + + + +highlight.xslthl.config +uri + + +highlight.xslthl.config +Location of XSLTHL configuration file + + + + +<xsl:param name="highlight.xslthl.config"></xsl:param> + + + +Description + +This location has precedence over the corresponding Java property. + +Please note that usually you have to specify location as URL not +just as a simple path on the local +filesystem. E.g. file:///home/user/xslthl/my-xslthl-config.xml. + + + + + + + + +highlight.default.language +string + + +highlight.default.language +Default language of programlisting + + + + +<xsl:param name="highlight.default.language"></xsl:param> + + + +Description + +This language is used when there is no language attribute on programlisting. + + + + + + +email.delimiters.enabled +boolean + + +email.delimiters.enabled +Generate delimiters around email addresses? + + + + +<xsl:param name="email.delimiters.enabled" select="1"></xsl:param> + + + +Description + +If non-zero, delimiters + +For delimiters, the +stylesheets are currently hard-coded to output angle +brackets. + +are generated around e-mail addresses +(the output of the email element). + + + + + + +exsl.node.set.available +boolean + + +exsl.node.set.available +Is the test function-available('exsl:node-set') true? + + + +<xsl:param name="exsl.node.set.available"> + <xsl:choose> + <xsl:when exsl:foo="" test="function-available('exsl:node-set') or contains(system-property('xsl:vendor'), 'Apache Software Foundation')">1</xsl:when> + <xsl:otherwise>0</xsl:otherwise> + </xsl:choose> +</xsl:param> + + + +Description + +If non-zero, +then the exsl:node-set() function is available to be used in +the stylesheet. +If zero, then the function is not available. +This param automatically detects the presence of +the function and does not normally need to be set manually. + +This param was created to handle a long-standing +bug in the Xalan processor that fails to detect the +function even though it is available. + + + + + +Annotations + + +annotation.support +boolean + + +annotation.support +Enable annotations? + + + + +<xsl:param name="annotation.support" select="0"></xsl:param> + + + +Description + +If non-zero, the stylesheets will attempt to support annotation +elements in HTML by including some JavaScript (see +annotation.js). + + + + + + +annotation.js +string + + +annotation.js +URIs identifying JavaScript files with support for annotation popups + + + + + +<xsl:param name="annotation.js"> +<xsl:text>http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js</xsl:text></xsl:param> + + + + +Description + +If annotation.support is enabled and the +document contains annotations, then the URIs listed +in this parameter will be included. These JavaScript files are required +for popup annotation support. + + + + + + +annotation.css +string + + +annotation.css +CSS rules for annotations + + + + +<xsl:param name="annotation.css"> +/* ====================================================================== + Annotations +*/ + +div.annotation-list { visibility: hidden; + } + +div.annotation-nocss { position: absolute; + visibility: hidden; + } + +div.annotation-popup { position: absolute; + z-index: 4; + visibility: hidden; + padding: 0px; + margin: 2px; + border-style: solid; + border-width: 1px; + width: 200px; + background-color: white; + } + +div.annotation-title { padding: 1px; + font-weight: bold; + border-bottom-style: solid; + border-bottom-width: 1px; + color: white; + background-color: black; + } + +div.annotation-body { padding: 2px; + } + +div.annotation-body p { margin-top: 0px; + padding-top: 0px; + } + +div.annotation-close { position: absolute; + top: 2px; + right: 2px; + } +</xsl:param> + + + +Description + +If annotation.support is enabled and the +document contains annotations, then the CSS in this +parameter will be included in the document. + + + + + + +annotation.graphic.open +uri + + +annotation.graphic.open +Image for identifying a link that opens an annotation popup + + + + +<xsl:param name="annotation.graphic.open">http://docbook.sourceforge.net/release/images/annot-open.png</xsl:param> + + + +Description + +This image is used inline to identify the location of +annotations. It may be replaced by a user provided graphic. The size should be approximately 10x10 pixels. + + + + + + +annotation.graphic.close +uri + + +annotation.graphic.close +Image for identifying a link that closes an annotation popup + + + + +<xsl:param name="annotation.graphic.close"> +http://docbook.sourceforge.net/release/images/annot-close.png</xsl:param> + + + +Description + +This image is used on popup annotations as the “x” that the +user can click to dismiss the popup. +This image is used on popup annotations as the “x” that the user can +click to dismiss the popup. It may be replaced by a user provided graphic. The size should be approximately 10x10 pixels. + + + + + +Graphics + + +img.src.path +string + + +img.src.path +Path to HTML/FO image files + + + +<xsl:param name="img.src.path"></xsl:param> + + +Description + +Add a path prefix to the value of the fileref +attribute of graphic, inlinegraphic, and imagedata elements. The resulting +compound path is used in the output as the value of the src +attribute of img (HTML) or external-graphic (FO). + + + +The path given by img.src.path could be relative to the directory where the HTML/FO +files are created, or it could be an absolute URI. +The default value is empty. +Be sure to include a trailing slash if needed. + + +This prefix is not applied to any filerefs that start +with "/" or contain "//:". + + + + + + + +keep.relative.image.uris +boolean + + +keep.relative.image.uris +Should image URIs be resolved against xml:base? + + + + +<xsl:param name="keep.relative.image.uris" select="1"></xsl:param> + + + + +Description + +If non-zero, relative URIs (in, for example +fileref attributes) will be used in the generated +output. Otherwise, the URIs will be made absolute with respect to the +base URI. + +Note that the stylesheets calculate (and use) the absolute form +for some purposes, this only applies to the resulting output. + + + + + + +graphic.default.extension +string + + +graphic.default.extension +Default extension for graphic filenames + + + +<xsl:param name="graphic.default.extension"></xsl:param> + + +Description + +If a graphic or mediaobject +includes a reference to a filename that does not include an extension, +and the format attribute is +unspecified, the default extension will be used. + + + + + + + +default.image.width +length + + +default.image.width +The default width of images + + + + +<xsl:param name="default.image.width"></xsl:param> + + + +Description + +If specified, this value will be used for the +width attribute on images that do not specify any +viewport dimensions. + + + + + + +nominal.image.width +length + + +nominal.image.width +The nominal image width + + + + +<xsl:param name="nominal.image.width" select="6 * $pixels.per.inch"></xsl:param> + + + +Description + +Graphic widths expressed as a percentage are problematic. In the +following discussion, we speak of width and contentwidth, but +the same issues apply to depth and contentdepth. + +A width of 50% means "half of the available space for the image." +That's fine. But note that in HTML, this is a dynamic property and +the image size will vary if the browser window is resized. + +A contentwidth of 50% means "half of the actual image width". +But what does that mean if the stylesheets cannot assess the image's +actual size? Treating this as a width of 50% is one possibility, but +it produces behavior (dynamic scaling) that seems entirely out of +character with the meaning. + +Instead, the stylesheets define a +nominal.image.width and convert percentages to +actual values based on that nominal size. + + + + + + +nominal.image.depth +length + + +nominal.image.depth +Nominal image depth + + + + +<xsl:param name="nominal.image.depth" select="4 * $pixels.per.inch"></xsl:param> + + + +Description + +See nominal.image.width. + + + + + + +use.embed.for.svg +boolean + + +use.embed.for.svg +Use HTML embed for SVG? + + + + +<xsl:param name="use.embed.for.svg" select="0"></xsl:param> + + + +Description + +If non-zero, an embed element will be created for +SVG figures. An object is always created, +this parameter merely controls whether or not an additional embed +is generated inside the object. + +On the plus side, this may be more portable among browsers and plug-ins. +On the minus side, it isn't valid HTML. + + + + + + +make.graphic.viewport +boolean + + +make.graphic.viewport +Use tables in HTML to make viewports for graphics + + + + +<xsl:param name="make.graphic.viewport" select="1"></xsl:param> + + + +Description + +The HTML img element only supports the notion +of content-area scaling; it doesn't support the distinction between a +content-area and a viewport-area, so we have to make some compromises. + +If make.graphic.viewport is non-zero, a table +will be used to frame the image. This creates an effective viewport-area. + + +Tables and alignment don't work together, so this parameter is ignored +if alignment is specified on an image. + + + + + +preferred.mediaobject.role +string + + +preferred.mediaobject.role +Select which mediaobject to use based on +this value of an object's role attribute. + + + + + +<xsl:param name="preferred.mediaobject.role"></xsl:param> + + + +Description + +A mediaobject may contain several objects such as imageobjects. +If the parameter use.role.for.mediaobject is +non-zero, then the role attribute on +imageobjects and other objects within a +mediaobject container will be used to select which object +will be used. If one of the objects has a role value that matches the +preferred.mediaobject.role parameter, then it +has first priority for selection. If more than one has such a role +value, the first one is used. + + +See the use.role.for.mediaobject parameter +for the sequence of selection. + + + + + +use.role.for.mediaobject +boolean + + +use.role.for.mediaobject +Use role attribute +value for selecting which of several objects within a mediaobject to use. + + + + + +<xsl:param name="use.role.for.mediaobject" select="1"></xsl:param> + + + +Description + +If non-zero, the role attribute on +imageobjects or other objects within a mediaobject container will be used to select which object will be +used. + + +The order of selection when then parameter is non-zero is: + + + + If the stylesheet parameter preferred.mediaobject.role has a value, then the object whose role equals that value is selected. + + +Else if an object's role attribute has a value of +html for HTML processing or +fo for FO output, then the first +of such objects is selected. + + + +Else the first suitable object is selected. + + + +If the value of +use.role.for.mediaobject +is zero, then role attributes are not considered +and the first suitable object +with or without a role value is used. + + + + + + +ignore.image.scaling +boolean + + +ignore.image.scaling +Tell the stylesheets to ignore the author's image scaling attributes + + + + +<xsl:param name="ignore.image.scaling" select="0"></xsl:param> + + + +Description + +If non-zero, the scaling attributes on graphics and media objects are +ignored. + + + + + +Chunking + + +chunker.output.cdata-section-elements +string + + +chunker.output.cdata-section-elements +List of elements to escape with CDATA sections + + + +<xsl:param name="chunker.output.cdata-section-elements"></xsl:param> + + +Description +This parameter specifies the list of elements that should be escaped +as CDATA sections by the chunking stylesheet. Not all processors support +specification of this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +chunker.output.doctype-public +string + + +chunker.output.doctype-public +Public identifer to use in the document type of generated pages + + + +<xsl:param name="chunker.output.doctype-public"></xsl:param> + + +Description +This parameter specifies the public identifier that should be used by +the chunking stylesheet in the document type declaration of chunked pages. +Not all processors support specification of +this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +chunker.output.doctype-system +uri + + +chunker.output.doctype-system +System identifier to use for the document type in generated pages + + + +<xsl:param name="chunker.output.doctype-system"></xsl:param> + + +Description +This parameter specifies the system identifier that should be used by +the chunking stylesheet in the document type declaration of chunked pages. +Not all processors support specification of +this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +chunker.output.encoding +string + + +chunker.output.encoding +Encoding used in generated pages + + + +<xsl:param name="chunker.output.encoding">ISO-8859-1</xsl:param> + + +Description +This parameter specifies the encoding to be used in files +generated by the chunking stylesheet. Not all processors support +specification of this parameter. + +This parameter used to be named default.encoding. + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +chunker.output.indent +string + + +chunker.output.indent +Specification of indentation on generated pages + + + +<xsl:param name="chunker.output.indent">no</xsl:param> + + +Description +This parameter specifies the value of the indent +specification for generated pages. Not all processors support +specification of this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +chunker.output.media-type +string + + +chunker.output.media-type +Media type to use in generated pages + + + +<xsl:param name="chunker.output.media-type"></xsl:param> + + +Description +This parameter specifies the media type that should be used by +the chunking stylesheet. Not all processors support specification of +this parameter. + +This parameter specifies the media type that should be used by the +chunking stylesheet. This should be one from those defined in +[RFC2045] and + [RFC2046] + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. +It must be one from html, xml or text + + + + + + +chunker.output.method +list +html +xml + + +chunker.output.method +Method used in generated pages + + + +<xsl:param name="chunker.output.method">html</xsl:param> + + +Description +This parameter specifies the output method to be used in files +generated by the chunking stylesheet. + +This parameter used to be named output.method. + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +chunker.output.omit-xml-declaration +string + + +chunker.output.omit-xml-declaration +Omit-xml-declaration for generated pages + + + +<xsl:param name="chunker.output.omit-xml-declaration">no</xsl:param> + + +Description +This parameter specifies the value of the omit-xml-declaration +specification for generated pages. Not all processors support +specification of this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +chunker.output.standalone +string + + +chunker.output.standalone +Standalone declaration for generated pages + + + +<xsl:param name="chunker.output.standalone">no</xsl:param> + + +Description +This parameter specifies the value of the standalone + specification for generated pages. It must be either + yes or no. Not all + processors support specification of this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + +saxon.character.representation +string + + +saxon.character.representation +Saxon character representation used in generated HTML pages + + + + <xsl:param name="saxon.character.representation" select="'entity;decimal'"></xsl:param> + + +Description + +This parameter has effect only when Saxon 6 is used (version 6.4.2 or later). +It sets the character representation in files generated by the chunking stylesheets. +If you want to suppress entity references for characters with direct representations in +chunker.output.encoding, set the parameter value to native. + + + For more information, see Saxon output character representation. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + + + + +html.ext +string + + +html.ext +Identifies the extension of generated HTML files + + + + +<xsl:param name="html.ext">.html</xsl:param> + + + +Description + +The extension identified by html.ext will +be used as the filename extension for chunks created by this +stylesheet. + + + + + + +use.id.as.filename +boolean + + +use.id.as.filename +Use ID value of chunk elements as the filename? + + + + +<xsl:param name="use.id.as.filename" select="0"></xsl:param> + + + +Description + +If use.id.as.filename +is non-zero, the filename of chunk elements that have IDs will be +derived from the ID value. + + + + + + + +html.extra.head.links +boolean + + +html.extra.head.links +Toggle extra HTML head link information + + + + +<xsl:param name="html.extra.head.links" select="0"></xsl:param> + + + +Description + +If non-zero, extra link elements will be +generated in the head of chunked HTML files. These +extra links point to chapters, appendixes, sections, etc. as supported +by the Site Navigation Bar in Mozilla 1.0 (as of CR1, at least). + + + + + + + +root.filename +uri + + +root.filename +Identifies the name of the root HTML file when chunking + + + + +<xsl:param name="root.filename">index</xsl:param> + + + +Description + +The root.filename is the base filename for +the chunk created for the root of each document processed. + + + + + + + +base.dir +uri + + +base.dir +The base directory of chunks + + + + +<xsl:param name="base.dir"></xsl:param> + + + +Description + +If specified, the base.dir identifies +the output directory for chunks. (If not specified, the output directory +is system dependent.) + + + + + + + generate.manifest + boolean + + + generate.manifest + Generate a manifest file? + + + + <xsl:param name="generate.manifest" select="0"></xsl:param> + + + Description + + If non-zero, a list of HTML files generated by the + stylesheet transformation is written to the file named by + the manifest parameter. + + + + + + + manifest + string + + + manifest + Name of manifest file + + + + + <xsl:param name="manifest">HTML.manifest</xsl:param> + + + + Description + + The name of the file to which a manifest is written (if the + value of the generate.manifest parameter + is non-zero). + + + + + + +manifest.in.base.dir +boolean + + +manifest.in.base.dir +Should the manifest file be written into base.dir? + + + + +<xsl:param name="manifest.in.base.dir" select="0"></xsl:param> + + + +Description + +If non-zero, the manifest file as well as project files for HTML Help and +Eclipse Help are written into base.dir instead +of the current directory. + + + + + + +chunk.toc +string + + +chunk.toc +An explicit TOC to be used for chunking + + + + +<xsl:param name="chunk.toc"></xsl:param> + + + +Description + +The chunk.toc identifies an explicit TOC that +will be used for chunking. This parameter is only used by the +chunktoc.xsl stylesheet (and customization layers built +from it). + + + + + + +chunk.tocs.and.lots +boolean + + +chunk.tocs.and.lots +Should ToC and LoTs be in separate chunks? + + + + +<xsl:param name="chunk.tocs.and.lots" select="0"></xsl:param> + + + +Description + +If non-zero, ToC and LoT (List of Examples, List of Figures, etc.) +will be put in a separate chunk. At the moment, this chunk is not in the +normal forward/backward navigation list. Instead, a new link is added to the +navigation footer. + +This feature is still somewhat experimental. Feedback welcome. + + + + + + +chunk.separate.lots +boolean + + +chunk.separate.lots +Should each LoT be in its own separate chunk? + + + + +<xsl:param name="chunk.separate.lots" select="0"></xsl:param> + + + +Description + +If non-zero, each of the ToC and LoTs +(List of Examples, List of Figures, etc.) +will be put in its own separate chunk. +The title page includes generated links to each of the separate files. + + +This feature depends on the +chunk.tocs.and.lots +parameter also being non-zero. + + + + + + + +chunk.tocs.and.lots.has.title +boolean + + +chunk.tocs.and.lots.has.title +Should ToC and LoTs in a separate chunks have title? + + + + +<xsl:param name="chunk.tocs.and.lots.has.title" select="1"></xsl:param> + + + +Description + +If non-zero title of document is shown before ToC/LoT in +separate chunk. + + + + + + +chunk.section.depth +integer + + +chunk.section.depth +Depth to which sections should be chunked + + + + +<xsl:param name="chunk.section.depth" select="1"></xsl:param> + + + +Description + +This parameter sets the depth of section chunking. + + + + + + +chunk.first.sections +boolean + + +chunk.first.sections +Chunk the first top-level section? + + + + +<xsl:param name="chunk.first.sections" select="0"></xsl:param> + + + +Description + +If non-zero, a chunk will be created for the first top-level +sect1 or section elements in +each component. Otherwise, that section will be part of the chunk for +its parent. + + + + + + + +chunk.quietly +boolean + + +chunk.quietly +Omit the chunked filename messages. + + + + +<xsl:param name="chunk.quietly" select="0"></xsl:param> + + + +Description + +If zero (the default), the XSL processor emits a message naming +each separate chunk filename as it is being output. +If nonzero, then the messages are suppressed. + + + + + + + +chunk.append +string + + +chunk.append +Specifies content to append to chunked HTML output + + + +<xsl:param name="chunk.append"></xsl:param> + + +Description + +Specifies content to append to the end of HTML files output by +the html/chunk.xsl stylesheet, after the closing +<html> tag. You probably don’t want to set any value +for this parameter; but if you do, the only value it should ever be +set to is a newline character: &#x0a; or +&#10; + + + + + + +navig.graphics +boolean + + +navig.graphics +Use graphics in navigational headers and footers? + + + + +<xsl:param name="navig.graphics" select="0"></xsl:param> + + + +Description + +If non-zero, the navigational headers and footers in chunked +HTML are presented in an alternate style that uses graphical icons for +Next, Previous, Up, and Home. Default graphics are provided in the +distribution. If zero, text is used instead of graphics. + + + + + + + +navig.graphics.extension +string + + +navig.graphics.extension +Extension for navigational graphics + + + + +<xsl:param name="navig.graphics.extension">.gif</xsl:param> + + + +Description + +Sets the filename extension to use on navigational graphics used +in the headers and footers of chunked HTML. + + + + + + +navig.graphics.path +string + + +navig.graphics.path +Path to navigational graphics + + + + +<xsl:param name="navig.graphics.path">images/</xsl:param> + + + +Description + +Sets the path, probably relative to the directory where the HTML +files are created, to the navigational graphics used in the +headers and footers of chunked HTML. + + + + + + + +navig.showtitles +boolean + + +navig.showtitles +Display titles in HTML headers and footers? + + + +<xsl:param name="navig.showtitles">1</xsl:param> + + +Description + +If non-zero, +the headers and footers of chunked HTML +display the titles of the next and previous chunks, +along with the words 'Next' and 'Previous' (or the +equivalent graphical icons if navig.graphics is true). +If false (zero), then only the words 'Next' and 'Previous' +(or the icons) are displayed. + + + + + + +Profiling + +The following parameters can be used for attribute-based +profiling of your document. For more information about profiling, see +Profiling (conditional text). + + + +profile.arch +string + + +profile.arch +Target profile for arch +attribute + + + + +<xsl:param name="profile.arch"></xsl:param> + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.audience +string + + +profile.audience +Target profile for audience +attribute + + + + +<xsl:param name="profile.audience"></xsl:param> + + + +Description + +Value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.condition +string + + +profile.condition +Target profile for condition +attribute + + + + +<xsl:param name="profile.condition"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.conformance +string + + +profile.conformance +Target profile for conformance +attribute + + + + +<xsl:param name="profile.conformance"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.lang +string + + +profile.lang +Target profile for lang +attribute + + + + +<xsl:param name="profile.lang"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.os +string + + +profile.os +Target profile for os +attribute + + + + +<xsl:param name="profile.os"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.revision +string + + +profile.revision +Target profile for revision +attribute + + + + +<xsl:param name="profile.revision"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.revisionflag +string + + +profile.revisionflag +Target profile for revisionflag +attribute + + + + +<xsl:param name="profile.revisionflag"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.role +string + + +profile.role +Target profile for role +attribute + + + + +<xsl:param name="profile.role"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + +Note that role is often +used for other purposes than profiling. For example it is commonly +used to get emphasize in bold font: + +<emphasis role="bold">very important</emphasis> + +If you are using role for +these purposes do not forget to add values like bold to +value of this parameter. If you forgot you will get document with +small pieces missing which are very hard to track. + +For this reason it is not recommended to use role attribute for profiling. You should +rather use profiling specific attributes like userlevel, os, arch, condition, etc. + + + + + + + +profile.security +string + + +profile.security +Target profile for security +attribute + + + + +<xsl:param name="profile.security"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.status +string + + +profile.status +Target profile for status +attribute + + + + +<xsl:param name="profile.status"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.userlevel +string + + +profile.userlevel +Target profile for userlevel +attribute + + + + +<xsl:param name="profile.userlevel"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.vendor +string + + +profile.vendor +Target profile for vendor +attribute + + + + +<xsl:param name="profile.vendor"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.wordsize +string + + +profile.wordsize +Target profile for wordsize +attribute + + + + +<xsl:param name="profile.wordsize"></xsl:param> + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.attribute +string + + +profile.attribute +Name of user-specified profiling attribute + + + + +<xsl:param name="profile.attribute"></xsl:param> + + + +Description + +This parameter is used in conjuction with +profile.value. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.value +string + + +profile.value +Target profile for user-specified attribute + + + + +<xsl:param name="profile.value"></xsl:param> + + + +Description + +When you are using this parameter you must also specify name of +profiling attribute with parameter +profile.attribute. + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + + + + +profile.separator +string + + +profile.separator +Separator character for compound profile values + + + + +<xsl:param name="profile.separator">;</xsl:param> + + + +Description + +Separator character used for compound profile values. See profile.arch + + + + + +HTML Help + + +htmlhelp.encoding +string + + +htmlhelp.encoding +Character encoding to use in files for HTML Help compiler. + + + + +<xsl:param name="htmlhelp.encoding">iso-8859-1</xsl:param> + + + +Description + +HTML Help Compiler is not UTF-8 aware, so you should always use an +appropriate single-byte encoding here. Use one from iana, the registered charset values. + + + + + + +htmlhelp.autolabel +boolean + + +htmlhelp.autolabel +Should tree-like ToC use autonumbering feature? + + + + +<xsl:param name="htmlhelp.autolabel" select="0"></xsl:param> + + + +Description + +Set this to non-zero to include chapter and section numbers into ToC +in the left panel. + + + + + + +htmlhelp.chm +string + + +htmlhelp.chm +Filename of output HTML Help file. + + + + +<xsl:param name="htmlhelp.chm">htmlhelp.chm</xsl:param> + + + +Description + +Set the name of resulting CHM file + + + + + + +htmlhelp.default.topic +string + + +htmlhelp.default.topic +Name of file with default topic + + + + +<xsl:param name="htmlhelp.default.topic"></xsl:param> + + + +Description + +Normally first chunk of document is displayed when you open HTML +Help file. If you want to display another topic, simply set its +filename by this parameter. + +This is useful especially if you don't generate ToC in front of +your document and you also hide root element in ToC. E.g.: + +<xsl:param name="generate.book.toc" select="0"/> +<xsl:param name="htmlhelp.hhc.show.root" select="0"/> +<xsl:param name="htmlhelp.default.topic">pr01.html</xsl:param> + + + + + + + +htmlhelp.display.progress +boolean + + +htmlhelp.display.progress +Display compile progress? + + + + +<xsl:param name="htmlhelp.display.progress" select="1"></xsl:param> + + + +Description + +Set to non-zero to to display compile progress + + + + + + + +htmlhelp.hhp +string + + +htmlhelp.hhp +Filename of project file. + + + + +<xsl:param name="htmlhelp.hhp">htmlhelp.hhp</xsl:param> + + + +Description + +Change this parameter if you want different name of project +file than htmlhelp.hhp. + + + + + + +htmlhelp.hhc +string + + +htmlhelp.hhc +Filename of TOC file. + + + + +<xsl:param name="htmlhelp.hhc">toc.hhc</xsl:param> + + + +Description + +Set the name of the TOC file. The default is toc.hhc. + + + + + + +htmlhelp.hhk +string + + +htmlhelp.hhk +Filename of index file. + + + + +<xsl:param name="htmlhelp.hhk">index.hhk</xsl:param> + + + +Description + +set the name of the index file. The default is index.hhk. + + + + + + +htmlhelp.hhp.tail +string + + +htmlhelp.hhp.tail +Additional content for project file. + + + + +<xsl:param name="htmlhelp.hhp.tail"></xsl:param> + + + +Description + +If you want to include some additional parameters into project file, +store appropriate part of project file into this parameter. + + + + + + +htmlhelp.hhp.window +string + + +htmlhelp.hhp.window +Name of default window. + + + + +<xsl:param name="htmlhelp.hhp.window">Main</xsl:param> + + + +Description + +Name of default window. If empty no [WINDOWS] section will be +added to project file. + + + + + + +htmlhelp.hhp.windows +string + + +htmlhelp.hhp.windows +Definition of additional windows + + + + +<xsl:param name="htmlhelp.hhp.windows"></xsl:param> + + + +Description + +Content of this parameter is placed at the end of [WINDOWS] +section of project file. You can use it for defining your own +addtional windows. + + + + + + +htmlhelp.enhanced.decompilation +boolean + + +htmlhelp.enhanced.decompilation +Allow enhanced decompilation of CHM? + + + + +<xsl:param name="htmlhelp.enhanced.decompilation" select="0"></xsl:param> + + + +Description + +When non-zero this parameter enables enhanced decompilation of CHM. + + + + + + +htmlhelp.enumerate.images +boolean + + +htmlhelp.enumerate.images +Should the paths to all used images be added to the project file? + + + + +<xsl:param name="htmlhelp.enumerate.images" select="0"></xsl:param> + + + +Description + +Set to non-zero if you insert images into your documents as +external binary entities or if you are using absolute image paths. + + + + + + +htmlhelp.force.map.and.alias +boolean + + +htmlhelp.force.map.and.alias +Should [MAP] and [ALIAS] sections be added to the project file unconditionally? + + + +<xsl:param name="htmlhelp.force.map.and.alias" select="0"></xsl:param> + + +Description + Set to non-zero if you have your own + alias.h and context.h + files and you want to include references to them in the project + file. + + + + + +htmlhelp.map.file +string + + +htmlhelp.map.file +Filename of map file. + + + +<xsl:param name="htmlhelp.map.file">context.h</xsl:param> + + +Description +Set the name of map file. The default is + context.h. (used for context-sensitive + help). + + + + + +htmlhelp.alias.file +string + + +htmlhelp.alias.file +Filename of alias file. + + + + +<xsl:param name="htmlhelp.alias.file">alias.h</xsl:param> + + + +Description + +Specifies the filename of the alias file (used for context-sensitive help). + + + + + + +htmlhelp.hhc.section.depth +integer + + +htmlhelp.hhc.section.depth +Depth of TOC for sections in a left pane. + + + + +<xsl:param name="htmlhelp.hhc.section.depth">5</xsl:param> + + + +Description + +Set the section depth in the left pane of HTML Help viewer. + + + + + + +htmlhelp.hhc.show.root +boolean + + +htmlhelp.hhc.show.root +Should there be an entry for the root element in the ToC? + + + + +<xsl:param name="htmlhelp.hhc.show.root" select="1"></xsl:param> + + + +Description + +If set to zero, there will be no entry for the root element in the +ToC. This is useful when you want to provide the user with an expanded +ToC as a default. + + + + + + +htmlhelp.hhc.folders.instead.books +boolean + + +htmlhelp.hhc.folders.instead.books +Use folder icons in ToC (instead of book icons)? + + + + +<xsl:param name="htmlhelp.hhc.folders.instead.books" select="1"></xsl:param> + + + +Description + +Set to non-zero for folder-like icons or zero for book-like icons in the ToC. +If you want to use folder-like icons, you must switch off the binary ToC using +htmlhelp.hhc.binary. + + + + + + + + +htmlhelp.hhc.binary +boolean + + +htmlhelp.hhc.binary +Generate binary ToC? + + + + +<xsl:param name="htmlhelp.hhc.binary" select="1"></xsl:param> + + + +Description + +Set to non-zero to generate a binary TOC. You must create a binary TOC +if you want to add Prev/Next buttons to toolbar (which is default +behaviour). Files with binary TOC can't be merged. + + + + + + +htmlhelp.hhc.width +integer + + +htmlhelp.hhc.width +Width of navigation pane + + + + +<xsl:param name="htmlhelp.hhc.width"></xsl:param> + + + +Description + +This parameter specifies the width of the navigation pane (containing TOC and +other navigation tabs) in pixels. + + + + + + +htmlhelp.title +string + + +htmlhelp.title +Title of HTML Help + + + + +<xsl:param name="htmlhelp.title"></xsl:param> + + + +Description + +Content of this parameter will be used as a title for generated +HTML Help. If empty, title will be automatically taken from document. + + + + + + +htmlhelp.show.menu +boolean + + +htmlhelp.show.menu +Should the menu bar be shown? + + + + +<xsl:param name="htmlhelp.show.menu" select="0"></xsl:param> + + + +Description + +Set to non-zero to have an application menu bar in your HTML Help window. + + + + + + + +htmlhelp.show.toolbar.text +boolean + + +htmlhelp.show.toolbar.text +Show text under toolbar buttons? + + + + +<xsl:param name="htmlhelp.show.toolbar.text" select="1"></xsl:param> + + + +Description + +Set to non-zero to display texts under toolbar buttons, zero to switch +off displays. + + + + + + +htmlhelp.show.advanced.search +boolean + + +htmlhelp.show.advanced.search +Should advanced search features be available? + + + + +<xsl:param name="htmlhelp.show.advanced.search" select="0"></xsl:param> + + + +Description + +If you want advanced search features in your help, turn this +parameter to 1. + + + + + + +htmlhelp.show.favorities +boolean + + +htmlhelp.show.favorities +Should the Favorites tab be shown? + + + + +<xsl:param name="htmlhelp.show.favorities" select="0"></xsl:param> + + + +Description + +Set to non-zero to include a Favorites tab in the navigation pane +of the help window. + + + + + + +htmlhelp.button.hideshow +boolean + + +htmlhelp.button.hideshow +Should the Hide/Show button be shown? + + + + +<xsl:param name="htmlhelp.button.hideshow" select="1"></xsl:param> + + + +Description + +Set to non-zero to include the Hide/Show button shown on toolbar + + + + + + +htmlhelp.button.back +boolean + + +htmlhelp.button.back +Should the Back button be shown? + + + + +<xsl:param name="htmlhelp.button.back" select="1"></xsl:param> + + + +Description + +Set to non-zero to include the Hide/Show button shown on toolbar + + + + + + +htmlhelp.button.forward +boolean + + +htmlhelp.button.forward +Should the Forward button be shown? + + + + +<xsl:param name="htmlhelp.button.forward" select="0"></xsl:param> + + + +Description + +Set to non-zero to include the Forward button on the toolbar. + + + + + + +htmlhelp.button.stop +boolean + + +htmlhelp.button.stop +Should the Stop button be shown? + + + + +<xsl:param name="htmlhelp.button.stop" select="0"></xsl:param> + + + +Description + +If you want Stop button shown on toolbar, turn this +parameter to 1. + + + + + + +htmlhelp.button.refresh +boolean + + +htmlhelp.button.refresh +Should the Refresh button be shown? + + + + +<xsl:param name="htmlhelp.button.refresh" select="0"></xsl:param> + + + +Description + +Set to non-zero to include the Stop button on the toolbar. + + + + + + +htmlhelp.button.home +boolean + + +htmlhelp.button.home +Should the Home button be shown? + + + + +<xsl:param name="htmlhelp.button.home" select="0"></xsl:param> + + + +Description + +Set to non-zero to include the Home button on the toolbar. + + + + + + +htmlhelp.button.home.url +string + + +htmlhelp.button.home.url +URL address of page accessible by Home button + + + + +<xsl:param name="htmlhelp.button.home.url"></xsl:param> + + + +Description + +URL address of page accessible by Home button. + + + + + + +htmlhelp.button.options +boolean + + +htmlhelp.button.options +Should the Options button be shown? + + + + +<xsl:param name="htmlhelp.button.options" select="1"></xsl:param> + + + +Description + +If you want Options button shown on toolbar, turn this +parameter to 1. + + + + + + +htmlhelp.button.print +boolean + + +htmlhelp.button.print +Should the Print button be shown? + + + + +<xsl:param name="htmlhelp.button.print" select="1"></xsl:param> + + + +Description + +Set to non-zero to include the Print button on the toolbar. + + + + + + + +htmlhelp.button.locate +boolean + + +htmlhelp.button.locate +Should the Locate button be shown? + + + + +<xsl:param name="htmlhelp.button.locate" select="0"></xsl:param> + + + +Description + +If you want Locate button shown on toolbar, turn this +parameter to 1. + + + + + + +htmlhelp.button.jump1 +boolean + + +htmlhelp.button.jump1 +Should the Jump1 button be shown? + + + +<xsl:param name="htmlhelp.button.jump1" select="0"></xsl:param> + + +Description + Set to non-zero to include the Jump1 button on the toolbar. + + + + + +htmlhelp.button.jump1.url +string + + +htmlhelp.button.jump1.url +URL address of page accessible by Jump1 button + + + + +<xsl:param name="htmlhelp.button.jump1.url"></xsl:param> + + + +Description + +URL address of page accessible by Jump1 button. + + + + + + +htmlhelp.button.jump1.title +string + + +htmlhelp.button.jump1.title +Title of Jump1 button + + + + +<xsl:param name="htmlhelp.button.jump1.title">User1</xsl:param> + + + +Description + +Title of Jump1 button. + + + + + + +htmlhelp.button.jump2 +boolean + + +htmlhelp.button.jump2 +Should the Jump2 button be shown? + + + + +<xsl:param name="htmlhelp.button.jump2" select="0"></xsl:param> + + + +Description + +Set to non-zero to include the Jump2 button on the toolbar. + + + + + + +htmlhelp.button.jump2.url +string + + +htmlhelp.button.jump2.url +URL address of page accessible by Jump2 button + + + + +<xsl:param name="htmlhelp.button.jump2.url"></xsl:param> + + + +Description + +URL address of page accessible by Jump2 button. + + + + + + +htmlhelp.button.jump2.title +string + + +htmlhelp.button.jump2.title +Title of Jump2 button + + + + +<xsl:param name="htmlhelp.button.jump2.title">User2</xsl:param> + + + +Description + +Title of Jump2 button. + + + + + + +htmlhelp.button.next +boolean + + +htmlhelp.button.next +Should the Next button be shown? + + + + +<xsl:param name="htmlhelp.button.next" select="1"></xsl:param> + + + +Description + +Set to non-zero to include the Next button on the toolbar. + + + + + + +htmlhelp.button.prev +boolean + + +htmlhelp.button.prev +Should the Prev button be shown? + + + + +<xsl:param name="htmlhelp.button.prev" select="1"></xsl:param> + + + +Description + +Set to non-zero to include the Prev button on the toolbar. + + + + + + + +htmlhelp.button.zoom +boolean + + +htmlhelp.button.zoom +Should the Zoom button be shown? + + + + +<xsl:param name="htmlhelp.button.zoom" select="0"></xsl:param> + + + +Description + +Set to non-zero to include the Zoom button on the toolbar. + + + + + + + +htmlhelp.remember.window.position +boolean + + +htmlhelp.remember.window.position +Remember help window position? + + + + +<xsl:param name="htmlhelp.remember.window.position" select="0"></xsl:param> + + + +Description + +Set to non-zero to remember help window position between starts. + + + + + + +htmlhelp.window.geometry +string + + +htmlhelp.window.geometry +Set initial geometry of help window + + + + +<xsl:param name="htmlhelp.window.geometry"></xsl:param> + + + +Description + +This parameter specifies initial position of help +window. E.g. + +<xsl:param name="htmlhelp.window.geometry">[160,64,992,704]</xsl:param> + + + + + + +htmlhelp.use.hhk +boolean + + +htmlhelp.use.hhk +Should the index be built using the HHK file? + + + + +<xsl:param name="htmlhelp.use.hhk" select="0"></xsl:param> + + + +Description + +If non-zero, the index is created using the HHK file (instead of using object +elements in the HTML files). For more information, see Generating an index. + + + + + +htmlhelp.only +boolean + + +htmlhelp.only +Should only project files be generated? + + + + +<xsl:param name="htmlhelp.only" select="0"></xsl:param> + + + +Description + + +Set to non-zero if you want to play with various HTML Help parameters +and you don't need to regenerate all HTML files. This setting will not +process whole document, only project files (hhp, hhc, hhk,...) will be +generated. + + + + + + +Eclipse Help Platform + + +eclipse.autolabel +boolean + + +eclipse.autolabel +Should tree-like ToC use autonumbering feature? + + + + +<xsl:param name="eclipse.autolabel" select="0"></xsl:param> + + + +Description + +If you want to include chapter and section numbers into ToC in +the left panel, set this parameter to 1. + + + + + + +eclipse.plugin.name +string + + +eclipse.plugin.name +Eclipse Help plugin name + + + + +<xsl:param name="eclipse.plugin.name">DocBook Online Help Sample</xsl:param> + + + +Description + +Eclipse Help plugin name. + + + + + + +eclipse.plugin.id +string + + +eclipse.plugin.id +Eclipse Help plugin id + + + + +<xsl:param name="eclipse.plugin.id">com.example.help</xsl:param> + + + +Description + +Eclipse Help plugin id. You should change this id to something +unique for each help. + + + + + + +eclipse.plugin.provider +string + + +eclipse.plugin.provider +Eclipse Help plugin provider name + + + + +<xsl:param name="eclipse.plugin.provider">Example provider</xsl:param> + + + +Description + +Eclipse Help plugin provider name. + + + + + +JavaHelp + + +javahelp.encoding +string + + +javahelp.encoding +Character encoding to use in control files for JavaHelp. + + + + +<xsl:param name="javahelp.encoding">iso-8859-1</xsl:param> + + + +Description + +JavaHelp crashes on some characters when written as character +references. In that case you can use this parameter to select an appropriate encoding. + + + + + + + + +Localization + + +l10n.gentext.language +string + + +l10n.gentext.language +Sets the gentext language + + + + +<xsl:param name="l10n.gentext.language"></xsl:param> + + + +Description + +If this parameter is set to any value other than the empty string, its +value will be used as the value for the language when generating text. Setting +l10n.gentext.language overrides any settings within the +document being formatted. + +It's much more likely that you might want to set the +l10n.gentext.default.language parameter. + + + + + + + l10n.gentext.default.language + string + + + l10n.gentext.default.language + Sets the default language for generated text + + + + +<xsl:param name="l10n.gentext.default.language">en</xsl:param> + + + +Description + +The value of the l10n.gentext.default.language +parameter is used as the language for generated text if no setting is provided +in the source document. + + + + + + +l10n.gentext.use.xref.language +boolean + + +l10n.gentext.use.xref.language +Use the language of target when generating cross-reference text? + + + + +<xsl:param name="l10n.gentext.use.xref.language" select="0"></xsl:param> + + + +Description + +If non-zero, the language of the target will be used when +generating cross reference text. Usually, the current +language is used when generating text (that is, the language of the +element that contains the cross-reference element). But setting this parameter +allows the language of the element pointed to to control +the generated text. + +Consider the following example: + + +<para lang="en">See also <xref linkend="chap3"/>.</para> + + + +Suppose that Chapter 3 happens to be written in German. +If l10n.gentext.use.xref.language is non-zero, the +resulting text will be something like this: + +
    +See also Kapital 3. +
    + +Where the more traditional rendering would be: + +
    +See also Chapter 3. +
    + +
    +
    + + + +l10n.lang.value.rfc.compliant +boolean + + +l10n.lang.value.rfc.compliant +Make value of lang attribute RFC compliant? + + + + +<xsl:param name="l10n.lang.value.rfc.compliant" select="1"></xsl:param> + + + +Description + +If non-zero, ensure that the values for all lang attributes in HTML output are RFC +compliantSection 8.1.1, Language Codes, in the HTML 4.0 Recommendation states that: + +
    [RFC1766] defines and explains the language codes +that must be used in HTML documents. +Briefly, language codes consist of a primary code and a possibly +empty series of subcodes: + +language-code = primary-code ( "-" subcode )* + +And in RFC 1766, Tags for the Identification +of Languages, the EBNF for "language tag" is given as: + +Language-Tag = Primary-tag *( "-" Subtag ) +Primary-tag = 1*8ALPHA +Subtag = 1*8ALPHA + +
    +
    . + +by taking any underscore characters in any lang values found in source documents, and +replacing them with hyphen characters in output HTML files. For +example, zh_CN in a source document becomes +zh-CN in the HTML output form that source. + + +This parameter does not cause any case change in lang values, because RFC 1766 +explicitly states that all "language tags" (as it calls them) "are +to be treated as case insensitive". + +
    + +
    +
    + + + +writing.mode +string + + +writing.mode +Direction of text flow based on locale + + + + +<xsl:param name="writing.mode"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">writing-mode</xsl:with-param> + <xsl:with-param name="lang"> + <xsl:call-template name="l10n.language"> + <xsl:with-param name="target" select="/*[1]"></xsl:with-param> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> +</xsl:param> + + + +Description + +Sets direction of text flow and text alignment based on locale. +The value is normally taken from the gentext file for the +lang attribute of the document's root element, using the +key name 'writing-mode' to look it up in the gentext file. +But the param can also be +set on the command line to override that gentext value. + +Accepted values are: + + + lr-tb + + Left-to-right text flow in each line, lines stack top to bottom. + + + + rl-tb + + Right-to-left text flow in each line, lines stack top to bottom. + + + + tb-rl + + Top-to-bottom text flow in each vertical line, lines stack right to left. + Supported by only a few XSL-FO processors. Not supported in HTML output. + + + + lr + + Shorthand for lr-tb. + + + + rl + + Shorthand for rl-tb. + + + + tb + + Shorthand for tb-rl. + + + + + + + + +
    +The Stylesheet + +The param.xsl stylesheet is just a wrapper +around all these parameters. + + + +<!-- This file is generated from param.xweb --> + +<xsl:stylesheet exclude-result-prefixes="src" version="1.0"> + +<!-- ******************************************************************** + $Id: param.xweb 8552 2009-12-07 17:45:26Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<src:fragref linkend="abstract.notitle.enabled.frag"></src:fragref> +<src:fragref linkend="admon.graphics.extension.frag"></src:fragref> +<src:fragref linkend="admon.graphics.frag"></src:fragref> +<src:fragref linkend="admon.graphics.path.frag"></src:fragref> +<src:fragref linkend="admon.style.frag"></src:fragref> +<src:fragref linkend="admon.textlabel.frag"></src:fragref> +<src:fragref linkend="annotate.toc.frag"></src:fragref> +<src:fragref linkend="annotation.css.frag"></src:fragref> +<src:fragref linkend="annotation.graphic.close.frag"></src:fragref> +<src:fragref linkend="annotation.graphic.open.frag"></src:fragref> +<src:fragref linkend="annotation.js.frag"></src:fragref> +<src:fragref linkend="annotation.support.frag"></src:fragref> +<src:fragref linkend="appendix.autolabel.frag"></src:fragref> +<src:fragref linkend="author.othername.in.middle.frag"></src:fragref> +<src:fragref linkend="autotoc.label.in.hyperlink.frag"></src:fragref> +<src:fragref linkend="autotoc.label.separator.frag"></src:fragref> +<src:fragref linkend="base.dir.frag"></src:fragref> +<src:fragref linkend="biblioentry.item.separator.frag"></src:fragref> +<src:fragref linkend="bibliography.collection.frag"></src:fragref> +<src:fragref linkend="bibliography.numbered.frag"></src:fragref> +<src:fragref linkend="bibliography.style.frag"></src:fragref> +<src:fragref linkend="blurb.on.titlepage.enabled.frag"></src:fragref> +<src:fragref linkend="bridgehead.in.toc.frag"></src:fragref> +<src:fragref linkend="callout.defaultcolumn.frag"></src:fragref> +<src:fragref linkend="callout.graphics.extension.frag"></src:fragref> +<src:fragref linkend="callout.graphics.frag"></src:fragref> +<src:fragref linkend="callout.graphics.number.limit.frag"></src:fragref> +<src:fragref linkend="callout.graphics.path.frag"></src:fragref> +<src:fragref linkend="callout.list.table.frag"></src:fragref> +<src:fragref linkend="callout.unicode.frag"></src:fragref> +<src:fragref linkend="callout.unicode.number.limit.frag"></src:fragref> +<src:fragref linkend="callout.unicode.start.character.frag"></src:fragref> +<src:fragref linkend="callouts.extension.frag"></src:fragref> +<src:fragref linkend="chapter.autolabel.frag"></src:fragref> +<src:fragref linkend="chunk.append.frag"></src:fragref> +<src:fragref linkend="chunk.first.sections.frag"></src:fragref> +<src:fragref linkend="chunk.quietly.frag"></src:fragref> +<src:fragref linkend="chunk.section.depth.frag"></src:fragref> +<src:fragref linkend="chunk.separate.lots.frag"></src:fragref> +<src:fragref linkend="chunk.toc.frag"></src:fragref> +<src:fragref linkend="chunk.tocs.and.lots.frag"></src:fragref> +<src:fragref linkend="chunk.tocs.and.lots.has.title.frag"></src:fragref> +<src:fragref linkend="citerefentry.link.frag"></src:fragref> +<src:fragref linkend="collect.xref.targets.frag"></src:fragref> +<src:fragref linkend="component.label.includes.part.label.frag"></src:fragref> +<src:fragref linkend="contrib.inline.enabled.frag"></src:fragref> +<src:fragref linkend="css.decoration.frag"></src:fragref> +<src:fragref linkend="current.docid.frag"></src:fragref> +<src:fragref linkend="custom.css.source.frag"></src:fragref> +<src:fragref linkend="default.float.class.frag"></src:fragref> +<src:fragref linkend="default.image.width.frag"></src:fragref> +<src:fragref linkend="default.table.frame.frag"></src:fragref> +<src:fragref linkend="default.table.width.frag"></src:fragref> +<src:fragref linkend="docbook.css.link.frag"></src:fragref> +<src:fragref linkend="docbook.css.source.frag"></src:fragref> +<src:fragref linkend="draft.mode.frag"></src:fragref> +<src:fragref linkend="draft.watermark.image.frag"></src:fragref> +<src:fragref linkend="ebnf.assignment.frag"></src:fragref> +<src:fragref linkend="ebnf.statement.terminator.frag"></src:fragref> +<src:fragref linkend="ebnf.table.bgcolor.frag"></src:fragref> +<src:fragref linkend="ebnf.table.border.frag"></src:fragref> +<src:fragref linkend="eclipse.autolabel.frag"></src:fragref> +<src:fragref linkend="eclipse.plugin.id.frag"></src:fragref> +<src:fragref linkend="eclipse.plugin.name.frag"></src:fragref> +<src:fragref linkend="eclipse.plugin.provider.frag"></src:fragref> +<src:fragref linkend="editedby.enabled.frag"></src:fragref> +<src:fragref linkend="email.delimiters.enabled.frag"></src:fragref> +<src:fragref linkend="emphasis.propagates.style.frag"></src:fragref> +<src:fragref linkend="entry.propagates.style.frag"></src:fragref> +<src:fragref linkend="exsl.node.set.available.frag"></src:fragref> +<src:fragref linkend="firstterm.only.link.frag"></src:fragref> +<src:fragref linkend="footer.rule.frag"></src:fragref> +<src:fragref linkend="footnote.number.format.frag"></src:fragref> +<src:fragref linkend="footnote.number.symbols.frag"></src:fragref> +<src:fragref linkend="formal.procedures.frag"></src:fragref> +<src:fragref linkend="formal.title.placement.frag"></src:fragref> +<src:fragref linkend="funcsynopsis.decoration.frag"></src:fragref> +<src:fragref linkend="funcsynopsis.style.frag"></src:fragref> +<src:fragref linkend="function.parens.frag"></src:fragref> +<src:fragref linkend="generate.css.header.frag"></src:fragref> +<src:fragref linkend="generate.id.attributes.frag"></src:fragref> +<src:fragref linkend="generate.index.frag"></src:fragref> +<src:fragref linkend="generate.legalnotice.link.frag"></src:fragref> +<src:fragref linkend="generate.manifest.frag"></src:fragref> +<src:fragref linkend="generate.meta.abstract.frag"></src:fragref> +<src:fragref linkend="generate.revhistory.link.frag"></src:fragref> +<src:fragref linkend="generate.section.toc.level.frag"></src:fragref> +<src:fragref linkend="generate.toc.frag"></src:fragref> +<src:fragref linkend="glossary.collection.frag"></src:fragref> +<src:fragref linkend="glossary.sort.frag"></src:fragref> +<src:fragref linkend="glossentry.show.acronym.frag"></src:fragref> +<src:fragref linkend="glossterm.auto.link.frag"></src:fragref> +<src:fragref linkend="graphic.default.extension.frag"></src:fragref> +<src:fragref linkend="graphicsize.extension.frag"></src:fragref> +<src:fragref linkend="graphicsize.use.img.src.path.frag"></src:fragref> +<src:fragref linkend="header.rule.frag"></src:fragref> +<src:fragref linkend="highlight.default.language.frag"></src:fragref> +<src:fragref linkend="highlight.source.frag"></src:fragref> +<src:fragref linkend="highlight.xslthl.config.frag"></src:fragref> +<src:fragref linkend="html.append.frag"></src:fragref> +<src:fragref linkend="html.base.frag"></src:fragref> +<src:fragref linkend="html.cellpadding.frag"></src:fragref> +<src:fragref linkend="html.cellspacing.frag"></src:fragref> +<src:fragref linkend="html.cleanup.frag"></src:fragref> +<src:fragref linkend="html.ext.frag"></src:fragref> +<src:fragref linkend="html.extra.head.links.frag"></src:fragref> +<src:fragref linkend="html.head.legalnotice.link.multiple.frag"></src:fragref> +<src:fragref linkend="html.head.legalnotice.link.types.frag"></src:fragref> +<src:fragref linkend="html.longdesc.frag"></src:fragref> +<src:fragref linkend="html.longdesc.link.frag"></src:fragref> +<src:fragref linkend="html.stylesheet.frag"></src:fragref> +<src:fragref linkend="html.stylesheet.type.frag"></src:fragref> +<src:fragref linkend="htmlhelp.alias.file.frag"></src:fragref> +<src:fragref linkend="htmlhelp.autolabel.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.back.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.forward.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.hideshow.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.home.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.home.url.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.jump1.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.jump1.title.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.jump1.url.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.jump2.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.jump2.title.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.jump2.url.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.locate.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.next.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.options.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.prev.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.print.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.refresh.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.stop.frag"></src:fragref> +<src:fragref linkend="htmlhelp.button.zoom.frag"></src:fragref> +<src:fragref linkend="htmlhelp.chm.frag"></src:fragref> +<src:fragref linkend="htmlhelp.default.topic.frag"></src:fragref> +<src:fragref linkend="htmlhelp.display.progress.frag"></src:fragref> +<src:fragref linkend="htmlhelp.encoding.frag"></src:fragref> +<src:fragref linkend="htmlhelp.enhanced.decompilation.frag"></src:fragref> +<src:fragref linkend="htmlhelp.enumerate.images.frag"></src:fragref> +<src:fragref linkend="htmlhelp.force.map.and.alias.frag"></src:fragref> +<src:fragref linkend="htmlhelp.hhc.binary.frag"></src:fragref> +<src:fragref linkend="htmlhelp.hhc.folders.instead.books.frag"></src:fragref> +<src:fragref linkend="htmlhelp.hhc.frag"></src:fragref> +<src:fragref linkend="htmlhelp.hhc.section.depth.frag"></src:fragref> +<src:fragref linkend="htmlhelp.hhc.show.root.frag"></src:fragref> +<src:fragref linkend="htmlhelp.hhc.width.frag"></src:fragref> +<src:fragref linkend="htmlhelp.hhk.frag"></src:fragref> +<src:fragref linkend="htmlhelp.hhp.frag"></src:fragref> +<src:fragref linkend="htmlhelp.hhp.tail.frag"></src:fragref> +<src:fragref linkend="htmlhelp.hhp.window.frag"></src:fragref> +<src:fragref linkend="htmlhelp.hhp.windows.frag"></src:fragref> +<src:fragref linkend="htmlhelp.map.file.frag"></src:fragref> +<src:fragref linkend="htmlhelp.only.frag"></src:fragref> +<src:fragref linkend="htmlhelp.remember.window.position.frag"></src:fragref> +<src:fragref linkend="htmlhelp.show.advanced.search.frag"></src:fragref> +<src:fragref linkend="htmlhelp.show.favorities.frag"></src:fragref> +<src:fragref linkend="htmlhelp.show.menu.frag"></src:fragref> +<src:fragref linkend="htmlhelp.show.toolbar.text.frag"></src:fragref> +<src:fragref linkend="htmlhelp.title.frag"></src:fragref> +<src:fragref linkend="htmlhelp.use.hhk.frag"></src:fragref> +<src:fragref linkend="htmlhelp.window.geometry.frag"></src:fragref> +<src:fragref linkend="id.warnings.frag"></src:fragref> +<src:fragref linkend="ignore.image.scaling.frag"></src:fragref> +<src:fragref linkend="img.src.path.frag"></src:fragref> +<src:fragref linkend="index.links.to.section.frag"></src:fragref> +<src:fragref linkend="index.method.frag"></src:fragref> +<src:fragref linkend="index.number.separator.frag"></src:fragref> +<src:fragref linkend="index.on.role.frag"></src:fragref> +<src:fragref linkend="index.on.type.frag"></src:fragref> +<src:fragref linkend="index.prefer.titleabbrev.frag"></src:fragref> +<src:fragref linkend="index.range.separator.frag"></src:fragref> +<src:fragref linkend="index.term.separator.frag"></src:fragref> +<src:fragref linkend="inherit.keywords.frag"></src:fragref> +<src:fragref linkend="insert.olink.page.number.frag"></src:fragref> +<src:fragref linkend="insert.olink.pdf.frag.frag"></src:fragref> +<src:fragref linkend="insert.xref.page.number.frag"></src:fragref> +<src:fragref linkend="javahelp.encoding.frag"></src:fragref> +<src:fragref linkend="keep.relative.image.uris.frag"></src:fragref> +<src:fragref linkend="l10n.gentext.default.language.frag"></src:fragref> +<src:fragref linkend="l10n.gentext.language.frag"></src:fragref> +<src:fragref linkend="l10n.gentext.use.xref.language.frag"></src:fragref> +<src:fragref linkend="l10n.lang.value.rfc.compliant.frag"></src:fragref> +<src:fragref linkend="label.from.part.frag"></src:fragref> +<src:fragref linkend="linenumbering.everyNth.frag"></src:fragref> +<src:fragref linkend="linenumbering.extension.frag"></src:fragref> +<src:fragref linkend="linenumbering.separator.frag"></src:fragref> +<src:fragref linkend="linenumbering.width.frag"></src:fragref> +<src:fragref linkend="link.mailto.url.frag"></src:fragref> +<src:fragref linkend="make.clean.html.frag"></src:fragref> +<src:fragref linkend="make.graphic.viewport.frag"></src:fragref> +<src:fragref linkend="make.single.year.ranges.frag"></src:fragref> +<src:fragref linkend="make.valid.html.frag"></src:fragref> +<src:fragref linkend="make.year.ranges.frag"></src:fragref> +<src:fragref linkend="manifest.frag"></src:fragref> +<src:fragref linkend="manifest.in.base.dir.frag"></src:fragref> +<src:fragref linkend="manual.toc.frag"></src:fragref> +<src:fragref linkend="menuchoice.menu.separator.frag"></src:fragref> +<src:fragref linkend="menuchoice.separator.frag"></src:fragref> +<src:fragref linkend="navig.graphics.extension.frag"></src:fragref> +<src:fragref linkend="navig.graphics.frag"></src:fragref> +<src:fragref linkend="navig.graphics.path.frag"></src:fragref> +<src:fragref linkend="navig.showtitles.frag"></src:fragref> +<src:fragref linkend="nominal.image.depth.frag"></src:fragref> +<src:fragref linkend="nominal.image.width.frag"></src:fragref> +<src:fragref linkend="nominal.table.width.frag"></src:fragref> +<src:fragref linkend="olink.base.uri.frag"></src:fragref> +<src:fragref linkend="olink.debug.frag"></src:fragref> +<src:fragref linkend="olink.doctitle.frag"></src:fragref> +<src:fragref linkend="olink.fragid.frag"></src:fragref> +<src:fragref linkend="olink.lang.fallback.sequence.frag"></src:fragref> +<src:fragref linkend="olink.outline.ext.frag"></src:fragref> +<src:fragref linkend="olink.properties.frag"></src:fragref> +<src:fragref linkend="olink.pubid.frag"></src:fragref> +<src:fragref linkend="olink.resolver.frag"></src:fragref> +<src:fragref linkend="olink.sysid.frag"></src:fragref> +<src:fragref linkend="othercredit.like.author.enabled.frag"></src:fragref> +<src:fragref linkend="para.propagates.style.frag"></src:fragref> +<src:fragref linkend="part.autolabel.frag"></src:fragref> +<src:fragref linkend="phrase.propagates.style.frag"></src:fragref> +<src:fragref linkend="pixels.per.inch.frag"></src:fragref> +<src:fragref linkend="points.per.em.frag"></src:fragref> +<src:fragref linkend="preface.autolabel.frag"></src:fragref> +<src:fragref linkend="prefer.internal.olink.frag"></src:fragref> +<src:fragref linkend="preferred.mediaobject.role.frag"></src:fragref> +<src:fragref linkend="process.empty.source.toc.frag"></src:fragref> +<src:fragref linkend="process.source.toc.frag"></src:fragref> +<src:fragref linkend="profile.arch.frag"></src:fragref> +<src:fragref linkend="profile.attribute.frag"></src:fragref> +<src:fragref linkend="profile.audience.frag"></src:fragref> +<src:fragref linkend="profile.condition.frag"></src:fragref> +<src:fragref linkend="profile.conformance.frag"></src:fragref> +<src:fragref linkend="profile.lang.frag"></src:fragref> +<src:fragref linkend="profile.os.frag"></src:fragref> +<src:fragref linkend="profile.revision.frag"></src:fragref> +<src:fragref linkend="profile.revisionflag.frag"></src:fragref> +<src:fragref linkend="profile.role.frag"></src:fragref> +<src:fragref linkend="profile.security.frag"></src:fragref> +<src:fragref linkend="profile.separator.frag"></src:fragref> +<src:fragref linkend="profile.status.frag"></src:fragref> +<src:fragref linkend="profile.userlevel.frag"></src:fragref> +<src:fragref linkend="profile.value.frag"></src:fragref> +<src:fragref linkend="profile.vendor.frag"></src:fragref> +<src:fragref linkend="profile.wordsize.frag"></src:fragref> +<src:fragref linkend="punct.honorific.frag"></src:fragref> +<src:fragref linkend="qanda.defaultlabel.frag"></src:fragref> +<src:fragref linkend="qanda.in.toc.frag"></src:fragref> +<src:fragref linkend="qanda.inherit.numeration.frag"></src:fragref> +<src:fragref linkend="qanda.nested.in.toc.frag"></src:fragref> +<src:fragref linkend="qandadiv.autolabel.frag"></src:fragref> +<src:fragref linkend="refclass.suppress.frag"></src:fragref> +<src:fragref linkend="refentry.generate.name.frag"></src:fragref> +<src:fragref linkend="refentry.generate.title.frag"></src:fragref> +<src:fragref linkend="refentry.separator.frag"></src:fragref> +<src:fragref linkend="refentry.xref.manvolnum.frag"></src:fragref> +<src:fragref linkend="reference.autolabel.frag"></src:fragref> +<src:fragref linkend="root.filename.frag"></src:fragref> +<src:fragref linkend="rootid.frag"></src:fragref> +<src:fragref linkend="runinhead.default.title.end.punct.frag"></src:fragref> +<src:fragref linkend="runinhead.title.end.punct.frag"></src:fragref> +<src:fragref linkend="section.autolabel.frag"></src:fragref> +<src:fragref linkend="section.autolabel.max.depth.frag"></src:fragref> +<src:fragref linkend="section.label.includes.component.label.frag"></src:fragref> +<src:fragref linkend="segmentedlist.as.table.frag"></src:fragref> +<src:fragref linkend="shade.verbatim.frag"></src:fragref> +<src:fragref linkend="shade.verbatim.style.frag"></src:fragref> +<src:fragref linkend="show.comments.frag"></src:fragref> +<src:fragref linkend="show.revisionflag.frag"></src:fragref> +<src:fragref linkend="simplesect.in.toc.frag"></src:fragref> +<src:fragref linkend="spacing.paras.frag"></src:fragref> +<src:fragref linkend="suppress.footer.navigation.frag"></src:fragref> +<src:fragref linkend="suppress.header.navigation.frag"></src:fragref> +<src:fragref linkend="suppress.navigation.frag"></src:fragref> +<src:fragref linkend="table.borders.with.css.frag"></src:fragref> +<src:fragref linkend="table.cell.border.color.frag"></src:fragref> +<src:fragref linkend="table.cell.border.style.frag"></src:fragref> +<src:fragref linkend="table.cell.border.thickness.frag"></src:fragref> +<src:fragref linkend="table.footnote.number.format.frag"></src:fragref> +<src:fragref linkend="table.footnote.number.symbols.frag"></src:fragref> +<src:fragref linkend="table.frame.border.color.frag"></src:fragref> +<src:fragref linkend="table.frame.border.style.frag"></src:fragref> +<src:fragref linkend="table.frame.border.thickness.frag"></src:fragref> +<src:fragref linkend="tablecolumns.extension.frag"></src:fragref> +<src:fragref linkend="target.database.document.frag"></src:fragref> +<src:fragref linkend="targets.filename.frag"></src:fragref> +<src:fragref linkend="tex.math.delims.frag"></src:fragref> +<src:fragref linkend="tex.math.file.frag"></src:fragref> +<src:fragref linkend="tex.math.in.alt.frag"></src:fragref> +<src:fragref linkend="textdata.default.encoding.frag"></src:fragref> +<src:fragref linkend="textinsert.extension.frag"></src:fragref> +<src:fragref linkend="toc.list.type.frag"></src:fragref> +<src:fragref linkend="toc.max.depth.frag"></src:fragref> +<src:fragref linkend="toc.section.depth.frag"></src:fragref> +<src:fragref linkend="ulink.target.frag"></src:fragref> +<src:fragref linkend="use.embed.for.svg.frag"></src:fragref> +<src:fragref linkend="use.extensions.frag"></src:fragref> +<src:fragref linkend="use.id.as.filename.frag"></src:fragref> +<src:fragref linkend="use.local.olink.style.frag"></src:fragref> +<src:fragref linkend="use.role.as.xrefstyle.frag"></src:fragref> +<src:fragref linkend="use.role.for.mediaobject.frag"></src:fragref> +<src:fragref linkend="use.svg.frag"></src:fragref> +<src:fragref linkend="variablelist.as.table.frag"></src:fragref> +<src:fragref linkend="variablelist.term.break.after.frag"></src:fragref> +<src:fragref linkend="variablelist.term.separator.frag"></src:fragref> +<src:fragref linkend="writing.mode.frag"></src:fragref> +<src:fragref linkend="xref.label-page.separator.frag"></src:fragref> +<src:fragref linkend="xref.label-title.separator.frag"></src:fragref> +<src:fragref linkend="xref.title-page.separator.frag"></src:fragref> +<src:fragref linkend="xref.with.number.and.title.frag"></src:fragref> + +</xsl:stylesheet> + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xsl new file mode 100644 index 000000000..d5e608625 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/param.xsl @@ -0,0 +1,434 @@ + + + + + + + +.png + +images/ + + + + + + +/* ====================================================================== + Annotations +*/ + +div.annotation-list { visibility: hidden; + } + +div.annotation-nocss { position: absolute; + visibility: hidden; + } + +div.annotation-popup { position: absolute; + z-index: 4; + visibility: hidden; + padding: 0px; + margin: 2px; + border-style: solid; + border-width: 1px; + width: 200px; + background-color: white; + } + +div.annotation-title { padding: 1px; + font-weight: bold; + border-bottom-style: solid; + border-bottom-width: 1px; + color: white; + background-color: black; + } + +div.annotation-body { padding: 2px; + } + +div.annotation-body p { margin-top: 0px; + padding-top: 0px; + } + +div.annotation-close { position: absolute; + top: 2px; + right: 2px; + } + + +http://docbook.sourceforge.net/release/images/annot-close.png +http://docbook.sourceforge.net/release/images/annot-open.png + + +http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js + + +A + + +. + +. +http://docbook.sourceforge.net/release/bibliography/bibliography.xml + + +normal + + +60 +.png + + +15 + +images/callouts/ + + +10 +10102 + + + + + + + + + + + +no + +1 + + + + + + left + before + + + +all + + +docbook.css.xml +no +images/draft.png + +::= + + + + +#F5DCB3 + + +com.example.help +DocBook Online Help Sample +Example provider +1 + + + + + + 1 + 0 + + + + +1 + + + +figure before +example before +equation before +table before +procedure before +task before + + +kr + + + + + + + + + + +appendix toc,title +article/appendix nop +article toc,title +book toc,title,figure,table,example,equation +chapter toc,title +part toc,title +preface toc,title +qandadiv toc +qandaset toc +reference toc,title +sect1 toc +sect2 toc +sect3 toc +sect4 toc +sect5 toc +section toc +set toc,title + + + + +no + + + + + + + + + + + + + +.html + + +copyright + + + +text/css +alias.h + + + + + + + +User1 + + +User2 + + + + + + + + + +htmlhelp.chm + + +iso-8859-1 + + + + + +toc.hhc +5 + + +index.hhk +htmlhelp.hhp + +Main + +context.h + + + + + + + + + + + + + +basic + + + + + + + +no + +no +iso-8859-1 + + +en + + + + +5 + + +3 + + + + + + + HTML.manifest + + + + ++ +.gif + +images/ +1 + + +6in + + +no +fragid= + +.olink + + replace + +pubid + /cgi-bin/olink +sysid +0 + +I + +90 +10 + + + + + + + + + + + + + + + + +; + + + + + +. +number + + + + + + + + + + I +index + +. +.!?: + +8 + + + + + 0 + #E0E0E0 + + + + + + +0 + + + + + +solid +0.5pt +a + + + +solid +0.5pt + + olinkdb.xml +target.db + +tex-math-equations.tex + + + +dl +8 +2 +_top + + + + + + + + +0 +, + + + writing-mode + + + + + + + + +: + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xml new file mode 100644 index 000000000..a8f357e58 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xml @@ -0,0 +1,1113 @@ + + +HTML Processing Instruction Reference + + $Id: pi.xsl 8394 2009-04-02 20:31:30Z mzjn $ + + + + Introduction + +This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for HTML output. + + +You add these PIs at particular points in a document to + cause specific “exceptions†to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + +dbhtml_background-color +Sets background color for an image + + + + dbhtml background-color="color" + + +Description + +Use the dbhtml background-color PI before or + after an image (graphic, inlinegraphic, + imagedata, or videodata element) as a + sibling to the element, to set a background color for the + image. + + Parameters + + + background-color="color" + + +An HTML color value + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Background color + + + + + +dbhtml_bgcolor +Sets background color on a CALS table row or table cell + + + + dbhtml bgcolor="color" + + +Description + +Use the dbhtml bgcolor PI as child of a CALS table row + or cell to set a background color for that table row or cell. + + Parameters + + + bgcolor="color" + + +An HTML color value + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Cell background color + + + + + +dbhtml_cellpadding +Specifies cellpadding in CALS table or qandaset output + + + + dbhtml cellpadding="number" + + +Description + +Use the dbhtml cellpadding PI as a child of a + CALS table or qandaset to specify the value + for the HTML cellpadding attribute in the + output HTML table. + + Parameters + + + cellpadding="number" + + +Specifies the cellpadding + + + + + + Related Global Parameters + +html.cellpadding + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Cell spacing and cell padding, + Q and A formatting + + + + + +dbhtml_cellspacing +Specifies cellspacing in CALS table or qandaset output + + + + dbhtml cellspacing="number" + + +Description + +Use the dbhtml cellspacing PI as a child of a + CALS table or qandaset to specify the value + for the HTML cellspacing attribute in the + output HTML table. + + Parameters + + + cellspacing="number" + + +Specifies the cellspacing + + + + + + Related Global Parameters + +html.cellspacing + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Cell spacing and cell padding, + Q and A formatting + + + + + +dbhtml_class +Set value of the class attribute for a CALS table row + + + + dbhtml class="name" + + +Description + +Use the dbhtml class PI as a child of a + row to specify a class + attribute and value in the HTML output for that row. + + Parameters + + + class="name" + + +Specifies the class name + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Table styles in HTML output + + + + + +dbhtml_dir +Specifies a directory name in which to write files + + + + dbhtml dir="path" + + +Description + +When chunking output, use the dbhtml dir PI + as a child of a chunk source to cause the output of that + chunk to be written to the specified directory; also, use it + as a child of a mediaobject to specify a + directory into which any long-description files for that + mediaobject will be written. + + Parameters + + + dir="path" + + +Specifies the pathname for the directory + + + + + + Related Global Parameters + +base.dir + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +dbhtml dir processing instruction + + + + + +dbhtml_filename +Specifies a filename for a chunk + + + + dbhtml filename="filename" + + +Description + +When chunking output, use the dbhtml filename + PI as a child of a chunk source to specify a filename for + the output file for that chunk. + + Parameters + + + filename="path" + + +Specifies the filename for the file + + + + + + Related Global Parameters + +use.id.as.filename + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +dbhtml filenames + + + + + +dbhtml_funcsynopsis-style +Specifies presentation style for a funcsynopsis + + + + dbhtml funcsynopsis-style="kr"|"ansi" + + +Description + +Use the dbhtml funcsynopsis-style PI as a child of + a funcsynopsis or anywhere within a funcsynopsis + to control the presentation style for output of all + funcprototype instances within that funcsynopsis. + + Parameters + + + funcsynopsis-style="kr" + + +Displays funcprototype output in K&R style + + + + funcsynopsis-style="ansi" + + +Displays funcprototype output in ANSI style + + + + + + Related Global Parameters + +funcsynopsis.style + + + + + +dbhtml_img.src.path +Specifies a path to the location of an image file + + + + dbhtml img.src.path="path" + + +Description + +Use the dbhtml img.src.path PI before or + after an image (graphic, + inlinegraphic, imagedata, or + videodata element) as a sibling to the element, + to specify a path to the location of the image; in HTML + output, the value specified for the + img.src.path attribute is prepended to the + filename. + + Parameters + + + img.src.path="path" + + +Specifies the pathname to prepend to the name of the image file + + + + + + Related Global Parameters + +img.src.path + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Using fileref + + + + + +dbhtml_label-width +Specifies the label width for a qandaset + + + + dbhtml label-width="width" + + +Description + +Use the dbhtml label-width PI as a child of a + qandaset to specify the width of labels. + + Parameters + + + label-width="width" + + +Specifies the label width (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Q and A formatting + + + + + +dbhtml_linenumbering.everyNth +Specifies interval for line numbers in verbatims + + + + dbhtml linenumbering.everyNth="N" + + +Description + +Use the dbhtml linenumbering.everyNth PI as a child + of a “verbatim†element – programlisting, + screen, synopsis — to specify + the interval at which lines are numbered. + + Parameters + + + linenumbering.everyNth="N" + + +Specifies numbering interval; a number is output + before every Nth line + + + + + + Related Global Parameters + +linenumbering.everyNth + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Line numbering + + + + + +dbhtml_linenumbering.separator +Specifies separator text for line numbers in verbatims + + + + dbhtml linenumbering.separator="text" + + +Description + +Use the dbhtml linenumbering.separator PI as a child + of a “verbatim†element – programlisting, + screen, synopsis — to specify + the separator text output between the line numbers and content. + + Parameters + + + linenumbering.separator="text" + + +Specifies the text (zero or more characters) + + + + + + Related Global Parameters + +linenumbering.separator + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Line numbering + + + + + +dbhtml_linenumbering.width +Specifies width for line numbers in verbatims + + + + dbhtml linenumbering.width="width" + + +Description + +Use the dbhtml linenumbering.width PI as a child + of a “verbatim†element – programlisting, + screen, synopsis — to specify + the width set aside for line numbers. + + Parameters + + + linenumbering.width="width" + + +Specifies the width (inluding units) + + + + + + Related Global Parameters + +linenumbering.width + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Line numbering + + + + + +dbhtml_list-presentation +Specifies presentation style for a variablelist or + segmentedlist + + + + dbhtml list-presentation="list"|"table" + + +Description + +Use the dbhtml list-presentation PI as a child of + a variablelist or segmentedlist to + control the presentation style for the list (to cause it, for + example, to be displayed as a table). + + Parameters + + + list-presentation="list" + + +Displays the list as a list + + + + list-presentation="table" + + +Displays the list as a table + + + + + + Related Global Parameters + + + + +variablelist.as.table + + + + +segmentedlist.as.table + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in HTML + + + + + +dbhtml_list-width +Specifies the width of a variablelist or simplelist + + + + dbhtml list-width="width" + + +Description + +Use the dbhtml list-width PI as a child of a + variablelist or a simplelist presented + as a table, to specify the output width. + + Parameters + + + list-width="width" + + +Specifies the output width (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in HTML + + + + + +dbhtml_row-height +Specifies the height for a CALS table row + + + + dbhtml row-height="height" + + +Description + +Use the dbhtml row-height PI as a child of a + row to specify the height of the row. + + Parameters + + + row-height="height" + + +Specifies the row height (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Row height + + + + + +dbhtml_start +(obsolete) Sets the starting number on an ordered list + + + + dbhtml start="character" + + +Description + +This PI is obsolete. The intent of + this PI was to provide a means for setting a specific starting + number for an ordered list. Instead of this PI, set a value + for the override attribute on the first + listitem in the list; that will have the same + effect as what this PI was intended for. + + Parameters + + + start="character" + + +Specifies the character to use as the starting + number; use 0-9, a-z, A-Z, or lowercase or uppercase + Roman numerals + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +List starting number + + + + + +dbhtml_stop-chunking +Do not chunk any descendants of this element. + + + + dbhtml stop-chunking + + +Description + +When generating chunked HTML output, adding this PI as the child of an element that contains elements that would normally be generated on separate pages if generating chunked output causes chunking to stop at this point. No descendants of the current element will be split into new HTML pages: +<section> +<title>Configuring pencil</title> +<?dbhtml stop-chunking?> + +... + +</section> + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Chunking into multiple HTML files + + + + + +dbhtml_table-summary +Specifies summary for CALS table, variablelist, segmentedlist, or qandaset output + + + + dbhtml table-summary="text" + + +Description + +Use the dbhtml table-summary PI as a child of + a CALS table, variablelist, + segmentedlist, or qandaset to specify + the text for the HTML summary attribute + in the output HTML table. + + Parameters + + + table-summary="text" + + +Specifies the summary text (zero or more characters) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in HTML, + Table summary text + + + + + +dbhtml_table-width +Specifies the width for a CALS table + + + + dbhtml table-width="width" + + +Description + +Use the dbhtml table-width PI as a child of a + CALS table to specify the width of the table in + output. + + Parameters + + + table-width="width" + + +Specifies the table width (including units or as a percentage) + + + + + + Related Global Parameters + +default.table.width + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Table width + + + + + +dbhtml_term-presentation +Sets character formatting for terms in a variablelist + + + + dbhtml term-presentation="bold"|"italic"|"bold-italic" + + +Description + +Use the dbhtml term-presentation PI as a child + of a variablelist to set character formatting for + the term output of the list. + + Parameters + + + term-presentation="bold" + + +Specifies that terms are displayed in bold + + + + term-presentation="italic" + + +Specifies that terms are displayed in italic + + + + term-presentation="bold-italic" + + +Specifies that terms are displayed in bold-italic + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in HTML + + + + + +dbhtml_term-separator +Specifies separator text among terms in a varlistentry + + + + dbhtml term-separator="text" + + +Description + +Use the dbhtml term-separator PI as a child + of a variablelist to specify the separator text + among term instances. + + Parameters + + + term-separator="text" + + +Specifies the text (zero or more characters) + + + + + + Related Global Parameters + +variablelist.term.separator + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in HTML + + + + + +dbhtml_term-width +Specifies the term width for a variablelist + + + + dbhtml term-width="width" + + +Description + +Use the dbhtml term-width PI as a child of a + variablelist to specify the width for + term output. + + Parameters + + + term-width="width" + + +Specifies the term width (including units) + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Variable list formatting in HTML + + + + + +dbhtml_toc +Specifies whether a TOC should be generated for a qandaset + + + + dbhtml toc="0"|"1" + + +Description + +Use the dbhtml toc PI as a child of a + qandaset to specify whether a table of contents + (TOC) is generated for the qandaset. + + Parameters + + + toc="0" + + +If zero, no TOC is generated + + + + toc="1" + + +If 1 (or any non-zero value), + a TOC is generated + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Q and A list of questions, + Q and A formatting + + + + + +dbcmdlist +Generates a hyperlinked list of commands + + + + dbcmdlist + + +Description + +Use the dbcmdlist PI as the child of any + element (for example, refsynopsisdiv) containing multiple + cmdsynopsis instances; a hyperlinked navigational + “command list†will be generated at the top of output for that + element, enabling users to quickly jump + to each command synopsis. + + Parameters + +[No parameters] + + + + + +dbfunclist +Generates a hyperlinked list of functions + + + + dbfunclist + + +Description + +Use the dbfunclist PI as the child of any + element (for example, refsynopsisdiv) containing multiple + funcsynopsis instances; a hyperlinked + navigational “function list†will be generated at the top of + output for that element, enabling users to quickly + jump to to each function synopsis. + + Parameters + +[No parameters] + + + + + +dbhtml-include_href +Copies an external well-formed HTML/XML file into current doc + + + + dbhtml-include href="URI" + + +Description + +Use the dbhtml-include href PI anywhere in a + document to cause the contents of the file referenced by the + href pseudo-attribute to be copied/inserted “as + is†into your HTML output at the point in document order + where the PI occurs in the source. + + + +The referenced file may contain plain text (as long as + it is “wrapped†in an html element — see the + note below) or markup in any arbitrary vocabulary, + including HTML — but it must conform to XML + well-formedness constraints (because the feature in XSLT + 1.0 for opening external files, the + document() function, can only handle + files that meet XML well-formedness constraints). + + +Among other things, XML well-formedness constraints + require a document to have a single root + element. So if the content you want to + include is plain text or is markup that does + not have a single root element, + wrap the content in an + html element. The stylesheets will + strip out that surrounding html “wrapper†when + they find it, leaving just the content you want to + insert. + + + Parameters + + + href="URI" + + +Specifies the URI for the file to include; the URI + can be, for example, a remote http: + URI, or a local filesystem file: + URI + + + + + + Related Global Parameters + +textinsert.extension + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Inserting external HTML code, + External code files + + + + + +dbhh +Sets topic name and topic id for context-sensitive HTML Help + + + + dbhh topicname="name" topicid="id" + + +Description + +Use the dbhh PI as a child of components + that should be used as targets for context-sensitive help requests. + + Parameters + + + topicname="name" + + +Specifies a unique string constant that identifies a help topic + + + + topicid="id" + + +Specifies a unique integer value for the topicname string + + + + + + Related Information in <link xlink:href="http://www.sagehill.net/docbookxsl/">DocBook XSL: The Complete Guide</link> + +Context-sensitive help + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xsl new file mode 100644 index 000000000..ac1345fd7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/pi.xsl @@ -0,0 +1,1263 @@ + + + + + +HTML Processing Instruction Reference + + $Id: pi.xsl 8394 2009-04-02 20:31:30Z mzjn $ + + + + Introduction + This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for HTML output. + + You add these PIs at particular points in a document to + cause specific “exceptions†to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + + Sets background color for an image + + Use the dbhtml background-color PI before or + after an image (graphic, inlinegraphic, + imagedata, or videodata element) as a + sibling to the element, to set a background color for the + image. + + + dbhtml background-color="color" + + + + background-color="color" + + An HTML color value + + + + + + Background color + + + + + + + + + + + + Sets background color on a CALS table row or table cell + + Use the dbhtml bgcolor PI as child of a CALS table row + or cell to set a background color for that table row or cell. + + + dbhtml bgcolor="color" + + + + bgcolor="color" + + An HTML color value + + + + + + Cell background color + + + + + + + + + + + + Specifies cellpadding in CALS table or qandaset output + + Use the dbhtml cellpadding PI as a child of a + CALS table or qandaset to specify the value + for the HTML cellpadding attribute in the + output HTML table. + + + dbhtml cellpadding="number" + + + + cellpadding="number" + + Specifies the cellpadding + + + + + + html.cellpadding + + + Cell spacing and cell padding, + Q and A formatting + + + + + + + + + + + + Specifies cellspacing in CALS table or qandaset output + + Use the dbhtml cellspacing PI as a child of a + CALS table or qandaset to specify the value + for the HTML cellspacing attribute in the + output HTML table. + + + dbhtml cellspacing="number" + + + + cellspacing="number" + + Specifies the cellspacing + + + + + + html.cellspacing + + + Cell spacing and cell padding, + Q and A formatting + + + + + + + + + + + + Set value of the class attribute for a CALS table row + + Use the dbhtml class PI as a child of a + row to specify a class + attribute and value in the HTML output for that row. + + + dbhtml class="name" + + + + class="name" + + Specifies the class name + + + + + + Table styles in HTML output + + + + + + + + + + + + Specifies a directory name in which to write files + + When chunking output, use the dbhtml dir PI + as a child of a chunk source to cause the output of that + chunk to be written to the specified directory; also, use it + as a child of a mediaobject to specify a + directory into which any long-description files for that + mediaobject will be written. + + + dbhtml dir="path" + + + + dir="path" + + Specifies the pathname for the directory + + + + + + base.dir + + + dbhtml dir processing instruction + + + + + + + + + + + + Specifies a filename for a chunk + + When chunking output, use the dbhtml filename + PI as a child of a chunk source to specify a filename for + the output file for that chunk. + + + dbhtml filename="filename" + + + + filename="path" + + Specifies the filename for the file + + + + + + use.id.as.filename + + + dbhtml filenames + + + + + + + + + + + + Specifies presentation style for a funcsynopsis + + Use the dbhtml funcsynopsis-style PI as a child of + a funcsynopsis or anywhere within a funcsynopsis + to control the presentation style for output of all + funcprototype instances within that funcsynopsis. + + + dbhtml funcsynopsis-style="kr"|"ansi" + + + + funcsynopsis-style="kr" + + Displays funcprototype output in K&R style + + + funcsynopsis-style="ansi" + + Displays funcprototype output in ANSI style + + + + + + funcsynopsis.style + + + + + + + + + + + + Specifies a path to the location of an image file + + Use the dbhtml img.src.path PI before or + after an image (graphic, + inlinegraphic, imagedata, or + videodata element) as a sibling to the element, + to specify a path to the location of the image; in HTML + output, the value specified for the + img.src.path attribute is prepended to the + filename. + + + dbhtml img.src.path="path" + + + + img.src.path="path" + + Specifies the pathname to prepend to the name of the image file + + + + + + img.src.path + + + Using fileref + + + + + + + + + + + + Specifies the label width for a qandaset + + Use the dbhtml label-width PI as a child of a + qandaset to specify the width of labels. + + + dbhtml label-width="width" + + + + label-width="width" + + Specifies the label width (including units) + + + + + + Q and A formatting + + + + + + + + + + + + Specifies interval for line numbers in verbatims + + Use the dbhtml linenumbering.everyNth PI as a child + of a “verbatim†element – programlisting, + screen, synopsis — to specify + the interval at which lines are numbered. + + + dbhtml linenumbering.everyNth="N" + + + + linenumbering.everyNth="N" + + Specifies numbering interval; a number is output + before every Nth line + + + + + + linenumbering.everyNth + + + Line numbering + + + + + + + + + + + + Specifies separator text for line numbers in verbatims + + Use the dbhtml linenumbering.separator PI as a child + of a “verbatim†element – programlisting, + screen, synopsis — to specify + the separator text output between the line numbers and content. + + + dbhtml linenumbering.separator="text" + + + + linenumbering.separator="text" + + Specifies the text (zero or more characters) + + + + + + linenumbering.separator + + + Line numbering + + + + + + + + + + + + Specifies width for line numbers in verbatims + + Use the dbhtml linenumbering.width PI as a child + of a “verbatim†element – programlisting, + screen, synopsis — to specify + the width set aside for line numbers. + + + dbhtml linenumbering.width="width" + + + + linenumbering.width="width" + + Specifies the width (inluding units) + + + + + + linenumbering.width + + + Line numbering + + + + + + + + + + + + Specifies presentation style for a variablelist or + segmentedlist + + Use the dbhtml list-presentation PI as a child of + a variablelist or segmentedlist to + control the presentation style for the list (to cause it, for + example, to be displayed as a table). + + + dbhtml list-presentation="list"|"table" + + + + list-presentation="list" + + Displays the list as a list + + + list-presentation="table" + + Displays the list as a table + + + + + + + + variablelist.as.table + + + segmentedlist.as.table + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the width of a variablelist or simplelist + + Use the dbhtml list-width PI as a child of a + variablelist or a simplelist presented + as a table, to specify the output width. + + + dbhtml list-width="width" + + + + list-width="width" + + Specifies the output width (including units) + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the height for a CALS table row + + Use the dbhtml row-height PI as a child of a + row to specify the height of the row. + + + dbhtml row-height="height" + + + + row-height="height" + + Specifies the row height (including units) + + + + + + Row height + + + + + + + + + + + + (obsolete) Sets the starting number on an ordered list + + This PI is obsolete. The intent of + this PI was to provide a means for setting a specific starting + number for an ordered list. Instead of this PI, set a value + for the override attribute on the first + listitem in the list; that will have the same + effect as what this PI was intended for. + + + dbhtml start="character" + + + + start="character" + + Specifies the character to use as the starting + number; use 0-9, a-z, A-Z, or lowercase or uppercase + Roman numerals + + + + + + List starting number + + + + + + + + + + + + Do not chunk any descendants of this element. + + When generating chunked HTML output, adding this PI as the child of an element that contains elements that would normally be generated on separate pages if generating chunked output causes chunking to stop at this point. No descendants of the current element will be split into new HTML pages: + +Configuring pencil + + +... + +]]> + + + + dbhtml stop-chunking + + + Chunking into multiple HTML files + + + + + + Specifies summary for CALS table, variablelist, segmentedlist, or qandaset output + + Use the dbhtml table-summary PI as a child of + a CALS table, variablelist, + segmentedlist, or qandaset to specify + the text for the HTML summary attribute + in the output HTML table. + + + dbhtml table-summary="text" + + + + table-summary="text" + + Specifies the summary text (zero or more characters) + + + + + + Variable list formatting in HTML, + Table summary text + + + + + + + + + + + + Specifies the width for a CALS table + + Use the dbhtml table-width PI as a child of a + CALS table to specify the width of the table in + output. + + + dbhtml table-width="width" + + + + table-width="width" + + Specifies the table width (including units or as a percentage) + + + + + + default.table.width + + + Table width + + + + + + + + + + + + Sets character formatting for terms in a variablelist + + Use the dbhtml term-presentation PI as a child + of a variablelist to set character formatting for + the term output of the list. + + + dbhtml term-presentation="bold"|"italic"|"bold-italic" + + + + term-presentation="bold" + + Specifies that terms are displayed in bold + + + term-presentation="italic" + + Specifies that terms are displayed in italic + + + term-presentation="bold-italic" + + Specifies that terms are displayed in bold-italic + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies separator text among terms in a varlistentry + + Use the dbhtml term-separator PI as a child + of a variablelist to specify the separator text + among term instances. + + + dbhtml term-separator="text" + + + + term-separator="text" + + Specifies the text (zero or more characters) + + + + + + variablelist.term.separator + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the term width for a variablelist + + Use the dbhtml term-width PI as a child of a + variablelist to specify the width for + term output. + + + dbhtml term-width="width" + + + + term-width="width" + + Specifies the term width (including units) + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies whether a TOC should be generated for a qandaset + + Use the dbhtml toc PI as a child of a + qandaset to specify whether a table of contents + (TOC) is generated for the qandaset. + + + dbhtml toc="0"|"1" + + + + toc="0" + + If zero, no TOC is generated + + + toc="1" + + If 1 (or any non-zero value), + a TOC is generated + + + + + + Q and A list of questions, + Q and A formatting + + + + + + + + + + + + Generates a hyperlinked list of commands + + Use the dbcmdlist PI as the child of any + element (for example, refsynopsisdiv) containing multiple + cmdsynopsis instances; a hyperlinked navigational + “command list†will be generated at the top of output for that + element, enabling users to quickly jump + to each command synopsis. + + + dbcmdlist + + + [No parameters] + + + + + + No cmdsynopsis elements matched dbcmdlist PI, perhaps it's nested too deep? + + +
    + + + +
    +
    + + + Generates a hyperlinked list of functions + + Use the dbfunclist PI as the child of any + element (for example, refsynopsisdiv) containing multiple + funcsynopsis instances; a hyperlinked + navigational “function list†will be generated at the top of + output for that element, enabling users to quickly + jump to to each function synopsis. + + + dbfunclist + + + [No parameters] + + + + + + No funcsynopsis elements matched dbfunclist PI, perhaps it's nested too deep? + + +
    + + + +
    +
    + + + Copies an external well-formed HTML/XML file into current doc + + Use the dbhtml-include href PI anywhere in a + document to cause the contents of the file referenced by the + href pseudo-attribute to be copied/inserted “as + is†into your HTML output at the point in document order + where the PI occurs in the source. + + The referenced file may contain plain text (as long as + it is “wrapped†in an html element — see the + note below) or markup in any arbitrary vocabulary, + including HTML — but it must conform to XML + well-formedness constraints (because the feature in XSLT + 1.0 for opening external files, the + document() function, can only handle + files that meet XML well-formedness constraints). + Among other things, XML well-formedness constraints + require a document to have a single root + element. So if the content you want to + include is plain text or is markup that does + not have a single root element, + wrap the content in an + html element. The stylesheets will + strip out that surrounding html “wrapper†when + they find it, leaving just the content you want to + insert. + + + + dbhtml-include href="URI" + + + + href="URI" + + Specifies the URI for the file to include; the URI + can be, for example, a remote http: + URI, or a local filesystem file: + URI + + + + + + textinsert.extension + + + Inserting external HTML code, + External code files + + + + + + + href + + + + + + + + + + + + + + + + + + + + ERROR: dbhtml-include processing instruction + href has no content. + + + + + + + ERROR: dbhtml-include processing instruction has + missing or empty href value. + + + + + + + + Sets topic name and topic id for context-sensitive HTML Help + + Use the dbhh PI as a child of components + that should be used as targets for context-sensitive help requests. + + + dbhh topicname="name" topicid="id" + + + + topicname="name" + + Specifies a unique string constant that identifies a help topic + + + topicid="id" + + Specifies a unique integer value for the topicname string + + + + + + Context-sensitive help + + + + + + + + + + filename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + # + + + + + + + + + + + + + + + + + + +
    + + + + + +
    +
    +
    + + + + + + + + + + + + + + + +
    + + + # + + + + + + + + + + + + + + + + + + +
    + + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + / + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk-code.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk-code.xsl new file mode 100644 index 000000000..cabfd9114 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk-code.xsl @@ -0,0 +1,615 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bk + + + + + + + + + + + + + + + ar + + + + + + + + + + + + + + + pr + + + + + + + + + + + + + + + ch + + + + + + + + + + + + + + + ap + + + + + + + + + + + + + + + + + + + pt + + + + + + + + + + + + + + + + + + + rn + + + + + + + + + + + + + + + + + + + + + + + + re + + + + + + + + + + + + + + + + + + + co + + + + + + + + + + + s + + + + + + + + + + + + + + + + + + + bi + + + + + + + + + + + + + + + + + + + go + + + + + + + + + + + + + + + + + + + ix + + + + + + + + si + + + + + + + + chunk-filename-error- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Note: namesp. cut : stripped namespace before processingNote: namesp. cut : processing stripped document + + + + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk.xsl new file mode 100644 index 000000000..02920b12f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-chunk.xsl @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-docbook.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-docbook.xsl new file mode 100644 index 000000000..45e55f247 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-docbook.xsl @@ -0,0 +1,413 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Element + + in namespace ' + + ' encountered + + in + + + , but no template matches. + + + + < + + > + + </ + + > + + + + + + + + + white + black + #0000FF + #840084 + #0000FF + + rtl + + + + + + + + + + + <xsl:copy-of select="$title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Note: namesp. cut : stripped namespace before processingNote: namesp. cut : processing stripped document + + + + + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-onechunk.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-onechunk.xsl new file mode 100644 index 000000000..325b8b123 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/profile-onechunk.xsl @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + +1 + + + + # + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/qandaset.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/qandaset.xsl new file mode 100644 index 000000000..3bf35e8f6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/qandaset.xsl @@ -0,0 +1,437 @@ + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + + + + + + + + + + +
    + + + + + + + + + + + + + + +
    + + +
    +
    + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + +
    + + + + +
    + + + +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1% + + + + + + + + +
    +
    + + + + + + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/refentry.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/refentry.xsl new file mode 100644 index 000000000..8eaf7680a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/refentry.xsl @@ -0,0 +1,299 @@ + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + + + + +
    + + + + +
    +
    +
    +
    + + + + + + +
    +
    + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + +
    + + + + + + + + + + +

    + + + +

    +
    + +

    + + + + + + + + +

    +
    +
    + +

    + +

    +
    +
    + + + + + + , + + + + + + + + + em-dash + + + + + + + + + + + + + + + + : + + + + + + + +
    + + + + +

    + + + + + + + + + + +

    + +
    +
    + + + + + + + + + + + +
    + + + + + + + + + +
    +
    + + + + + + 0 + 1 + + + + 6 + + + + + + + + + + + + +

    + +

    +
    + + + +

    + +

    +
    + + + +

    + +

    +
    + + + + + + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/sections.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/sections.xsl new file mode 100644 index 000000000..4278d2f70 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/sections.xsl @@ -0,0 +1,615 @@ + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + 1 + 2 + 3 + 4 + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + +
    + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + + + + + + + + + + clear: both + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + 1 + + + + + + + 2 + 3 + 4 + 5 + 6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/synop.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/synop.xsl new file mode 100644 index 000000000..be1975674 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/synop.xsl @@ -0,0 +1,1554 @@ + + +]> + + + + + + + + + + + +
    + +

    + + + + + + + + + + + + +

    +
    +
    + + +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + + + + + + ( + + ) + +   + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + +
    +    
    +    
    +  
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + + +
    + +
    +

    +
    + + + + + + ( + + + + + + + + + + + + + + + + ) + ; + + + + ... + ) + ; + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + +
    + + + + ; +
    + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + +
    + +
     
    + +
    + +
    +
    +
     
    +
    + + + + + + ( + + + + + + + + + + + + + + + + + ) + ; + +   + + + + + ... + ) + ; + +   + + + + + + + + , + + + ) + ; + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + ; + + + + + + +

    + +

    +
    + + + + + + ( + + + + + + + + + + + + + + + + void) + ; + + + + ... + ) + ; + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + +
    + +
     
    +
     
    +
    + + + + + + ( + + + + + + + + + + + + + + + + + void) + ; + +   + + + + + ... + ) + ; + +   + + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + +java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unrecognized language on + + : + + + + + + + + + + + +
    +
    +
    + + + + + +
    +    
    +    
    +    
    +       extends
    +      
    +      
    +        
    +      +
    +
    + + implements + + +
    +      +
    +
    + + throws + + +  { +
    + + } +
    +
    + + + + + + + + + , + + + + + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + + + + + + + + + void  + + + + + + + + + + + + 0 + + , +
    + + +   + + + +
    + + + + +
    + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + ( + + + + ) + +
    +     throws  + +
    + + + + + ; +
    + +
    + + + + +
    +    
    +    
    +    
    +      : 
    +      
    +      
    +        
    +      +
    +
    + + implements + + +
    +      +
    +
    + + throws + + +  { +
    + + } +
    +
    + + + + + + + + , + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + ( + + ) + +
    +     throws  + +
    + + + + + ; +
    + +
    + + + + +
    +    
    +    interface 
    +    
    +    
    +      : 
    +      
    +      
    +        
    +      +
    +
    + + implements + + +
    +      +
    +
    + + throws + + +  { +
    + + } +
    +
    + + + + + + + + , + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + ( + + ) + +
    +     raises( + + ) +
    + + + + + ; +
    + +
    + + + + +
    +    
    +    package 
    +    
    +    ;
    +    
    + + + @ISA = ( + + ); +
    +
    + + +
    +
    + + + + + + + + , + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + sub + + + { ... }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/table.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/table.xsl new file mode 100644 index 000000000..405be1334 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/table.xsl @@ -0,0 +1,1200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + border- + + : + + + + + + ; + + + + + border- + + -width: + + ; + + + + border- + + -style: + + ; + + + + border- + + -color: + + ; + + + + + + + + + + + Error: CALS tables must specify the number of columns. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100% + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + border: none; + + + + + border-collapse: collapse; + + + + + + + 0 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + 100% + + + + + + + + + + + + + + + + + + + + + + + + No convertLength function available. + + + + + + + + + + + + + + + + + + + + + + + + + + No adjustColumnWidths function available. + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: overlapped row contains content! + + + This row intentionally left blank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + th + th + + th + + td + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + : + + + + + + + + 0: + + + + + + + + + + + + + + + 0 + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/task.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/task.xsl new file mode 100644 index 000000000..01da94024 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/task.xsl @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + before + + + + + + + + +
    + + + + + + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xml new file mode 100644 index 000000000..cae516026 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xml @@ -0,0 +1,708 @@ + + + + + + + + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <hr/> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="set" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <hr/> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="book" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <hr/> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="part" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="division.title" + param:node="ancestor-or-self::part[1]"/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="partintro" t:wrapper="div"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="reference" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <hr/> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="refentry" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> +<!-- uncomment this if you want refentry titlepages + <title t:force="1" + t:named-template="refentry.title" + param:node="ancestor-or-self::refentry[1]"/> +--> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator/> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + + <t:titlepage t:element="dedication" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::dedication[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="acknowledgements" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::acknowledgements[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="preface" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="chapter" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="appendix" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="section" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect1" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect2" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect3" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect4" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="sect5" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<t:titlepage t:element="simplesect" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title/> + <subtitle/> + <corpauthor/> + <authorgroup/> + <author/> + <othercredit/> + <releaseinfo/> + <copyright/> + <legalnotice/> + <pubdate/> + <revision/> + <revhistory/> + <abstract/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + <xsl:if test="count(parent::*)='0'"><hr/></xsl:if> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="bibliography" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::bibliography[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="glossary" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::glossary[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="index" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::index[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +<t:titlepage t:element="setindex" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:force="1" + t:named-template="component.title" + param:node="ancestor-or-self::setindex[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> +<t:titlepage t:element="sidebar" t:wrapper="div" class="titlepage"> + <t:titlepage-content t:side="recto"> + <title + t:named-template="formal.object.heading" + param:object="ancestor-or-self::sidebar[1]"/> + <subtitle/> + </t:titlepage-content> + + <t:titlepage-content t:side="verso"> + </t:titlepage-content> + + <t:titlepage-separator> + </t:titlepage-separator> + + <t:titlepage-before t:side="recto"> + </t:titlepage-before> + + <t:titlepage-before t:side="verso"> + </t:titlepage-before> +</t:titlepage> + +<!-- ==================================================================== --> + +</t:templates> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xsl new file mode 100644 index 000000000..a025c4378 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.templates.xsl @@ -0,0 +1,3817 @@ +<?xml version="1.0"?> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exsl="http://exslt.org/common" version="1.0" exclude-result-prefixes="exsl"> + +<!-- This stylesheet was created by template/titlepage.xsl--> + +<xsl:template name="article.titlepage.recto"> + <xsl:choose> + <xsl:when test="articleinfo/title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/title"/> + </xsl:when> + <xsl:when test="artheader/title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="articleinfo/subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/subtitle"/> + </xsl:when> + <xsl:when test="artheader/subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revision"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revision"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/revhistory"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/revhistory"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="articleinfo/abstract"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="artheader/abstract"/> + <xsl:apply-templates mode="article.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="article.titlepage.verso"> +</xsl:template> + +<xsl:template name="article.titlepage.separator"><hr/> +</xsl:template> + +<xsl:template name="article.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="article.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="article.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="article.titlepage.before.recto"/> + <xsl:call-template name="article.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="article.titlepage.before.verso"/> + <xsl:call-template name="article.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="article.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="article.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="article.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="article.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="article.titlepage.recto.style"> +<xsl:apply-templates select="." mode="article.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="set.titlepage.recto"> + <xsl:choose> + <xsl:when test="setinfo/title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="setinfo/subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/corpauthor"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/authorgroup"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/author"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/othercredit"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/releaseinfo"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/copyright"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/legalnotice"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/pubdate"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revision"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/revhistory"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="setinfo/abstract"/> + <xsl:apply-templates mode="set.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="set.titlepage.verso"> +</xsl:template> + +<xsl:template name="set.titlepage.separator"><hr/> +</xsl:template> + +<xsl:template name="set.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="set.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="set.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="set.titlepage.before.recto"/> + <xsl:call-template name="set.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="set.titlepage.before.verso"/> + <xsl:call-template name="set.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="set.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="set.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="set.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="set.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="set.titlepage.recto.style"> +<xsl:apply-templates select="." mode="set.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="book.titlepage.recto"> + <xsl:choose> + <xsl:when test="bookinfo/title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="bookinfo/subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/corpauthor"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/authorgroup"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/author"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/othercredit"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/releaseinfo"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/copyright"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/legalnotice"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/pubdate"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/revision"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/revhistory"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="bookinfo/abstract"/> + <xsl:apply-templates mode="book.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="book.titlepage.verso"> +</xsl:template> + +<xsl:template name="book.titlepage.separator"><hr/> +</xsl:template> + +<xsl:template name="book.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="book.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="book.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="book.titlepage.before.recto"/> + <xsl:call-template name="book.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="book.titlepage.before.verso"/> + <xsl:call-template name="book.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="book.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="book.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="book.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="book.titlepage.recto.style"> +<xsl:apply-templates select="." mode="book.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="part.titlepage.recto"> + <div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:call-template name="division.title"> +<xsl:with-param name="node" select="ancestor-or-self::part[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="partinfo/subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/corpauthor"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/authorgroup"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/author"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/othercredit"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/releaseinfo"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/copyright"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/legalnotice"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/pubdate"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/revision"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/revhistory"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="partinfo/abstract"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="part.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="part.titlepage.verso"> +</xsl:template> + +<xsl:template name="part.titlepage.separator"> +</xsl:template> + +<xsl:template name="part.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="part.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="part.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="part.titlepage.before.recto"/> + <xsl:call-template name="part.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="part.titlepage.before.verso"/> + <xsl:call-template name="part.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="part.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="part.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="part.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="part.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="part.titlepage.recto.style"> +<xsl:apply-templates select="." mode="part.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="partintro.titlepage.recto"> + <xsl:choose> + <xsl:when test="partintroinfo/title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="partintroinfo/subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/corpauthor"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/authorgroup"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/author"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/othercredit"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/releaseinfo"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/copyright"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/legalnotice"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/pubdate"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revision"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/revhistory"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="partintroinfo/abstract"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="partintro.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="partintro.titlepage.verso"> +</xsl:template> + +<xsl:template name="partintro.titlepage.separator"> +</xsl:template> + +<xsl:template name="partintro.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="partintro.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="partintro.titlepage"> + <div> + <xsl:variable name="recto.content"> + <xsl:call-template name="partintro.titlepage.before.recto"/> + <xsl:call-template name="partintro.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="partintro.titlepage.before.verso"/> + <xsl:call-template name="partintro.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="partintro.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="partintro.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="partintro.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="partintro.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="partintro.titlepage.recto.style"> +<xsl:apply-templates select="." mode="partintro.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="reference.titlepage.recto"> + <xsl:choose> + <xsl:when test="referenceinfo/title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="referenceinfo/subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/corpauthor"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/authorgroup"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/author"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/othercredit"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/releaseinfo"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/copyright"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/legalnotice"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/pubdate"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revision"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/revhistory"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="referenceinfo/abstract"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="reference.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="reference.titlepage.verso"> +</xsl:template> + +<xsl:template name="reference.titlepage.separator"><hr/> +</xsl:template> + +<xsl:template name="reference.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="reference.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="reference.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="reference.titlepage.before.recto"/> + <xsl:call-template name="reference.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="reference.titlepage.before.verso"/> + <xsl:call-template name="reference.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="reference.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="reference.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="reference.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="reference.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="reference.titlepage.recto.style"> +<xsl:apply-templates select="." mode="reference.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="refentry.titlepage.recto"> +</xsl:template> + +<xsl:template name="refentry.titlepage.verso"> +</xsl:template> + +<xsl:template name="refentry.titlepage.separator"> +</xsl:template> + +<xsl:template name="refentry.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="refentry.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="refentry.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="refentry.titlepage.before.recto"/> + <xsl:call-template name="refentry.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="refentry.titlepage.before.verso"/> + <xsl:call-template name="refentry.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="refentry.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="refentry.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="refentry.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template name="dedication.titlepage.recto"> + <div xsl:use-attribute-sets="dedication.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::dedication[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="dedicationinfo/subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="dedicationinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="dedication.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="dedication.titlepage.verso"> +</xsl:template> + +<xsl:template name="dedication.titlepage.separator"> +</xsl:template> + +<xsl:template name="dedication.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="dedication.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="dedication.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="dedication.titlepage.before.recto"/> + <xsl:call-template name="dedication.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="dedication.titlepage.before.verso"/> + <xsl:call-template name="dedication.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="dedication.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="dedication.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="dedication.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="dedication.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="dedication.titlepage.recto.style"> +<xsl:apply-templates select="." mode="dedication.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.recto"> + <div xsl:use-attribute-sets="acknowledgements.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::acknowledgements[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="acknowledgementsinfo/subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="acknowledgementsinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="acknowledgements.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.verso"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.separator"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="acknowledgements.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="acknowledgements.titlepage.before.recto"/> + <xsl:call-template name="acknowledgements.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="acknowledgements.titlepage.before.verso"/> + <xsl:call-template name="acknowledgements.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="acknowledgements.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="acknowledgements.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="acknowledgements.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="acknowledgements.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="acknowledgements.titlepage.recto.style"> +<xsl:apply-templates select="." mode="acknowledgements.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="preface.titlepage.recto"> + <xsl:choose> + <xsl:when test="prefaceinfo/title"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="prefaceinfo/subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/revhistory"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="prefaceinfo/abstract"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="preface.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="preface.titlepage.verso"> +</xsl:template> + +<xsl:template name="preface.titlepage.separator"> +</xsl:template> + +<xsl:template name="preface.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="preface.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="preface.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="preface.titlepage.before.recto"/> + <xsl:call-template name="preface.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="preface.titlepage.before.verso"/> + <xsl:call-template name="preface.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="preface.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="preface.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="preface.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="preface.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="preface.titlepage.recto.style"> +<xsl:apply-templates select="." mode="preface.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="chapter.titlepage.recto"> + <xsl:choose> + <xsl:when test="chapterinfo/title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="chapterinfo/subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/revhistory"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="chapterinfo/abstract"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="chapter.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="chapter.titlepage.verso"> +</xsl:template> + +<xsl:template name="chapter.titlepage.separator"> +</xsl:template> + +<xsl:template name="chapter.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="chapter.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="chapter.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="chapter.titlepage.before.recto"/> + <xsl:call-template name="chapter.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="chapter.titlepage.before.verso"/> + <xsl:call-template name="chapter.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="chapter.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="chapter.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="chapter.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="chapter.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="chapter.titlepage.recto.style"> +<xsl:apply-templates select="." mode="chapter.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="appendix.titlepage.recto"> + <xsl:choose> + <xsl:when test="appendixinfo/title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="appendixinfo/subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/revhistory"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="appendixinfo/abstract"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="appendix.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="appendix.titlepage.verso"> +</xsl:template> + +<xsl:template name="appendix.titlepage.separator"> +</xsl:template> + +<xsl:template name="appendix.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="appendix.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="appendix.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="appendix.titlepage.before.recto"/> + <xsl:call-template name="appendix.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="appendix.titlepage.before.verso"/> + <xsl:call-template name="appendix.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="appendix.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="appendix.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="appendix.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="appendix.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="appendix.titlepage.recto.style"> +<xsl:apply-templates select="." mode="appendix.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="section.titlepage.recto"> + <xsl:choose> + <xsl:when test="sectioninfo/title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sectioninfo/subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/corpauthor"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/authorgroup"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/author"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/othercredit"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/releaseinfo"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/copyright"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/legalnotice"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/pubdate"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revision"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/revhistory"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="sectioninfo/abstract"/> + <xsl:apply-templates mode="section.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="section.titlepage.verso"> +</xsl:template> + +<xsl:template name="section.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="section.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="section.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="section.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="section.titlepage.before.recto"/> + <xsl:call-template name="section.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="section.titlepage.before.verso"/> + <xsl:call-template name="section.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="section.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="section.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="section.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="section.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="section.titlepage.recto.style"> +<xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect1.titlepage.recto"> + <xsl:choose> + <xsl:when test="sect1info/title"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sect1info/subtitle"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/corpauthor"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/authorgroup"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/author"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/othercredit"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/releaseinfo"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/copyright"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/legalnotice"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/pubdate"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revision"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/revhistory"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="sect1info/abstract"/> + <xsl:apply-templates mode="sect1.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect1.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect1.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect1.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect1.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect1.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect1.titlepage.before.recto"/> + <xsl:call-template name="sect1.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect1.titlepage.before.verso"/> + <xsl:call-template name="sect1.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect1.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect1.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect1.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="sect1.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect1.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect1.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect2.titlepage.recto"> + <xsl:choose> + <xsl:when test="sect2info/title"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sect2info/subtitle"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/corpauthor"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/authorgroup"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/author"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/othercredit"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/releaseinfo"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/copyright"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/legalnotice"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/pubdate"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revision"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/revhistory"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="sect2info/abstract"/> + <xsl:apply-templates mode="sect2.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect2.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect2.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect2.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect2.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect2.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect2.titlepage.before.recto"/> + <xsl:call-template name="sect2.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect2.titlepage.before.verso"/> + <xsl:call-template name="sect2.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect2.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect2.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect2.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="sect2.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect2.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect2.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect3.titlepage.recto"> + <xsl:choose> + <xsl:when test="sect3info/title"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sect3info/subtitle"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/corpauthor"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/authorgroup"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/author"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/othercredit"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/releaseinfo"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/copyright"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/legalnotice"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/pubdate"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revision"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/revhistory"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="sect3info/abstract"/> + <xsl:apply-templates mode="sect3.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect3.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect3.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect3.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect3.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect3.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect3.titlepage.before.recto"/> + <xsl:call-template name="sect3.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect3.titlepage.before.verso"/> + <xsl:call-template name="sect3.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect3.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect3.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect3.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="sect3.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect3.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect3.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect4.titlepage.recto"> + <xsl:choose> + <xsl:when test="sect4info/title"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sect4info/subtitle"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/corpauthor"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/authorgroup"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/author"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/othercredit"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/releaseinfo"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/copyright"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/legalnotice"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/pubdate"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revision"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/revhistory"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="sect4info/abstract"/> + <xsl:apply-templates mode="sect4.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect4.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect4.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect4.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect4.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect4.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect4.titlepage.before.recto"/> + <xsl:call-template name="sect4.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect4.titlepage.before.verso"/> + <xsl:call-template name="sect4.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect4.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect4.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect4.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="sect4.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect4.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect4.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sect5.titlepage.recto"> + <xsl:choose> + <xsl:when test="sect5info/title"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sect5info/subtitle"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/corpauthor"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/authorgroup"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/author"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/othercredit"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/releaseinfo"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/copyright"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/legalnotice"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/pubdate"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revision"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/revhistory"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="sect5info/abstract"/> + <xsl:apply-templates mode="sect5.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="sect5.titlepage.verso"> +</xsl:template> + +<xsl:template name="sect5.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="sect5.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sect5.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sect5.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sect5.titlepage.before.recto"/> + <xsl:call-template name="sect5.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sect5.titlepage.before.verso"/> + <xsl:call-template name="sect5.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sect5.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sect5.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sect5.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="sect5.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sect5.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sect5.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="simplesect.titlepage.recto"> + <xsl:choose> + <xsl:when test="simplesectinfo/title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="simplesectinfo/subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/corpauthor"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/corpauthor"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/corpauthor"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/authorgroup"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/authorgroup"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/authorgroup"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/author"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/author"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/author"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/othercredit"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/othercredit"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/othercredit"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/releaseinfo"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/releaseinfo"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/releaseinfo"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/copyright"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/copyright"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/copyright"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/legalnotice"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/legalnotice"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/legalnotice"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/pubdate"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/pubdate"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/pubdate"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revision"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revision"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revision"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/revhistory"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/revhistory"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/revhistory"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="simplesectinfo/abstract"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="docinfo/abstract"/> + <xsl:apply-templates mode="simplesect.titlepage.recto.auto.mode" select="info/abstract"/> +</xsl:template> + +<xsl:template name="simplesect.titlepage.verso"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.separator"><xsl:if test="count(parent::*)='0'"><hr/></xsl:if> +</xsl:template> + +<xsl:template name="simplesect.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="simplesect.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="simplesect.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="simplesect.titlepage.before.recto"/> + <xsl:call-template name="simplesect.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="simplesect.titlepage.before.verso"/> + <xsl:call-template name="simplesect.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="simplesect.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="simplesect.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="simplesect.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="corpauthor" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="authorgroup" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="author" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="othercredit" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="releaseinfo" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="copyright" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="legalnotice" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="pubdate" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revision" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="revhistory" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template match="abstract" mode="simplesect.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="simplesect.titlepage.recto.style"> +<xsl:apply-templates select="." mode="simplesect.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="bibliography.titlepage.recto"> + <div xsl:use-attribute-sets="bibliography.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::bibliography[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="bibliographyinfo/subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="bibliographyinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="bibliography.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="bibliography.titlepage.verso"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.separator"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="bibliography.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="bibliography.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="bibliography.titlepage.before.recto"/> + <xsl:call-template name="bibliography.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="bibliography.titlepage.before.verso"/> + <xsl:call-template name="bibliography.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="bibliography.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="bibliography.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="bibliography.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="bibliography.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="bibliography.titlepage.recto.style"> +<xsl:apply-templates select="." mode="bibliography.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="glossary.titlepage.recto"> + <div xsl:use-attribute-sets="glossary.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::glossary[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="glossaryinfo/subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="glossaryinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="glossary.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="glossary.titlepage.verso"> +</xsl:template> + +<xsl:template name="glossary.titlepage.separator"> +</xsl:template> + +<xsl:template name="glossary.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="glossary.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="glossary.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="glossary.titlepage.before.recto"/> + <xsl:call-template name="glossary.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="glossary.titlepage.before.verso"/> + <xsl:call-template name="glossary.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="glossary.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="glossary.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="glossary.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="glossary.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="glossary.titlepage.recto.style"> +<xsl:apply-templates select="." mode="glossary.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="index.titlepage.recto"> + <div xsl:use-attribute-sets="index.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::index[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="indexinfo/subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="indexinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="index.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="index.titlepage.verso"> +</xsl:template> + +<xsl:template name="index.titlepage.separator"> +</xsl:template> + +<xsl:template name="index.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="index.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="index.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="index.titlepage.before.recto"/> + <xsl:call-template name="index.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="index.titlepage.before.verso"/> + <xsl:call-template name="index.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="index.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="index.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="index.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="index.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="index.titlepage.recto.style"> +<xsl:apply-templates select="." mode="index.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="setindex.titlepage.recto"> + <div xsl:use-attribute-sets="setindex.titlepage.recto.style"> +<xsl:call-template name="component.title"> +<xsl:with-param name="node" select="ancestor-or-self::setindex[1]"/> +</xsl:call-template></div> + <xsl:choose> + <xsl:when test="setindexinfo/subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="setindexinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="setindex.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="setindex.titlepage.verso"> +</xsl:template> + +<xsl:template name="setindex.titlepage.separator"> +</xsl:template> + +<xsl:template name="setindex.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="setindex.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="setindex.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="setindex.titlepage.before.recto"/> + <xsl:call-template name="setindex.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="setindex.titlepage.before.verso"/> + <xsl:call-template name="setindex.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="setindex.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="setindex.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="setindex.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="subtitle" mode="setindex.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="setindex.titlepage.recto.style"> +<xsl:apply-templates select="." mode="setindex.titlepage.recto.mode"/> +</div> +</xsl:template> + +<xsl:template name="sidebar.titlepage.recto"> + <xsl:choose> + <xsl:when test="sidebarinfo/title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/title"/> + </xsl:when> + <xsl:when test="docinfo/title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/title"/> + </xsl:when> + <xsl:when test="info/title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/title"/> + </xsl:when> + <xsl:when test="title"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="title"/> + </xsl:when> + </xsl:choose> + + <xsl:choose> + <xsl:when test="sidebarinfo/subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="sidebarinfo/subtitle"/> + </xsl:when> + <xsl:when test="docinfo/subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="docinfo/subtitle"/> + </xsl:when> + <xsl:when test="info/subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="info/subtitle"/> + </xsl:when> + <xsl:when test="subtitle"> + <xsl:apply-templates mode="sidebar.titlepage.recto.auto.mode" select="subtitle"/> + </xsl:when> + </xsl:choose> + +</xsl:template> + +<xsl:template name="sidebar.titlepage.verso"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.separator"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.before.recto"> +</xsl:template> + +<xsl:template name="sidebar.titlepage.before.verso"> +</xsl:template> + +<xsl:template name="sidebar.titlepage"> + <div class="titlepage"> + <xsl:variable name="recto.content"> + <xsl:call-template name="sidebar.titlepage.before.recto"/> + <xsl:call-template name="sidebar.titlepage.recto"/> + </xsl:variable> + <xsl:variable name="recto.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($recto.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($recto.content) != '') or ($recto.elements.count > 0)"> + <div><xsl:copy-of select="$recto.content"/></div> + </xsl:if> + <xsl:variable name="verso.content"> + <xsl:call-template name="sidebar.titlepage.before.verso"/> + <xsl:call-template name="sidebar.titlepage.verso"/> + </xsl:variable> + <xsl:variable name="verso.elements.count"> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set')"><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:when test="contains(system-property('xsl:vendor'), 'Apache Software Foundation')"> + <!--Xalan quirk--><xsl:value-of select="count(exsl:node-set($verso.content)/*)"/></xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="(normalize-space($verso.content) != '') or ($verso.elements.count > 0)"> + <div><xsl:copy-of select="$verso.content"/></div> + </xsl:if> + <xsl:call-template name="sidebar.titlepage.separator"/> + </div> +</xsl:template> + +<xsl:template match="*" mode="sidebar.titlepage.recto.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="*" mode="sidebar.titlepage.verso.mode"> + <!-- if an element isn't found in this mode, --> + <!-- try the generic titlepage.mode --> + <xsl:apply-templates select="." mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="title" mode="sidebar.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sidebar.titlepage.recto.style"> +<xsl:call-template name="formal.object.heading"> +<xsl:with-param name="object" select="ancestor-or-self::sidebar[1]"/> +</xsl:call-template> +</div> +</xsl:template> + +<xsl:template match="subtitle" mode="sidebar.titlepage.recto.auto.mode"> +<div xsl:use-attribute-sets="sidebar.titlepage.recto.style"> +<xsl:apply-templates select="." mode="sidebar.titlepage.recto.mode"/> +</div> +</xsl:template> + +</xsl:stylesheet> + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.xsl new file mode 100644 index 000000000..3c285f0a2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/titlepage.xsl @@ -0,0 +1,1047 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + +<!-- ******************************************************************** + $Id: titlepage.xsl 8816 2010-08-10 11:56:35Z mzjn $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:attribute-set name="book.titlepage.recto.style"/> +<xsl:attribute-set name="book.titlepage.verso.style"/> + +<xsl:attribute-set name="article.titlepage.recto.style"/> +<xsl:attribute-set name="article.titlepage.verso.style"/> + +<xsl:attribute-set name="set.titlepage.recto.style"/> +<xsl:attribute-set name="set.titlepage.verso.style"/> + +<xsl:attribute-set name="part.titlepage.recto.style"/> +<xsl:attribute-set name="part.titlepage.verso.style"/> + +<xsl:attribute-set name="partintro.titlepage.recto.style"/> +<xsl:attribute-set name="partintro.titlepage.verso.style"/> + +<xsl:attribute-set name="reference.titlepage.recto.style"/> +<xsl:attribute-set name="reference.titlepage.verso.style"/> + +<xsl:attribute-set name="refentry.titlepage.recto.style"/> +<xsl:attribute-set name="refentry.titlepage.verso.style"/> + +<xsl:attribute-set name="dedication.titlepage.recto.style"/> +<xsl:attribute-set name="dedication.titlepage.verso.style"/> + +<xsl:attribute-set name="acknowledgements.titlepage.recto.style"/> +<xsl:attribute-set name="acknowledgements.titlepage.verso.style"/> + +<xsl:attribute-set name="preface.titlepage.recto.style"/> +<xsl:attribute-set name="preface.titlepage.verso.style"/> + +<xsl:attribute-set name="chapter.titlepage.recto.style"/> +<xsl:attribute-set name="chapter.titlepage.verso.style"/> + +<xsl:attribute-set name="appendix.titlepage.recto.style"/> +<xsl:attribute-set name="appendix.titlepage.verso.style"/> + +<xsl:attribute-set name="bibliography.titlepage.recto.style"/> +<xsl:attribute-set name="bibliography.titlepage.verso.style"/> + +<xsl:attribute-set name="glossary.titlepage.recto.style"/> +<xsl:attribute-set name="glossary.titlepage.verso.style"/> + +<xsl:attribute-set name="index.titlepage.recto.style"/> +<xsl:attribute-set name="index.titlepage.verso.style"/> + +<xsl:attribute-set name="setindex.titlepage.recto.style"/> +<xsl:attribute-set name="setindex.titlepage.verso.style"/> + +<xsl:attribute-set name="sidebar.titlepage.recto.style"/> +<xsl:attribute-set name="sidebar.titlepage.verso.style"/> + +<xsl:attribute-set name="section.titlepage.recto.style"/> +<xsl:attribute-set name="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect1.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect1.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect2.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect2.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect3.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect3.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect4.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect4.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="sect5.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="sect5.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="simplesect.titlepage.recto.style" + use-attribute-sets="section.titlepage.recto.style"/> +<xsl:attribute-set name="simplesect.titlepage.verso.style" + use-attribute-sets="section.titlepage.verso.style"/> + +<xsl:attribute-set name="table.of.contents.titlepage.recto.style"/> +<xsl:attribute-set name="table.of.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.tables.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.tables.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.figures.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.figures.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.equations.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.equations.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.examples.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.examples.contents.titlepage.verso.style"/> + +<xsl:attribute-set name="list.of.unknowns.titlepage.recto.style"/> +<xsl:attribute-set name="list.of.unknowns.contents.titlepage.verso.style"/> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="titlepage.mode"> + <!-- if an element isn't found in this mode, try the default mode --> + <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="abbrev" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="abstract" mode="titlepage.mode"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="anchor"/> + <xsl:if test="$abstract.notitle.enabled = 0"> + <xsl:call-template name="formal.object.heading"> + <xsl:with-param name="title"> + <xsl:apply-templates select="." mode="title.markup"/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + <xsl:apply-templates mode="titlepage.mode"/> + <xsl:call-template name="process.footnotes"/> + </div> +</xsl:template> + +<xsl:template match="abstract/title" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="address" mode="titlepage.mode"> + <xsl:param name="suppress-numbers" select="'0'"/> + + <xsl:variable name="rtf"> + <xsl:apply-templates mode="titlepage.mode"/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$suppress-numbers = '0' + and @linenumbering = 'numbered' + and $use.extensions != '0' + and $linenumbering.extension != '0'"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="paragraph"> + <xsl:with-param name="content"> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:when> + + <xsl:otherwise> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="paragraph"> + <xsl:with-param name="content"> + <xsl:call-template name="make-verbatim"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="affiliation" mode="titlepage.mode"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + </div> +</xsl:template> + +<xsl:template match="artpagenums" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="author|editor" mode="titlepage.mode"> + <xsl:call-template name="credits.div"/> +</xsl:template> + +<xsl:template name="credits.div"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="self::editor[position()=1] and not($editedby.enabled = 0)"> + <h4 class="editedby"><xsl:call-template name="gentext.edited.by"/></h4> + </xsl:if> + <h3> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:choose> + <xsl:when test="orgname"> + <xsl:apply-templates/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="person.name"/> + </xsl:otherwise> + </xsl:choose> + </h3> + <xsl:if test="not($contrib.inline.enabled = 0)"> + <xsl:apply-templates mode="titlepage.mode" select="contrib"/> + </xsl:if> + <xsl:apply-templates mode="titlepage.mode" select="affiliation"/> + <xsl:apply-templates mode="titlepage.mode" select="email"/> + <xsl:if test="not($blurb.on.titlepage.enabled = 0)"> + <xsl:choose> + <xsl:when test="$contrib.inline.enabled = 0"> + <xsl:apply-templates mode="titlepage.mode" + select="contrib|authorblurb|personblurb"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="titlepage.mode" + select="authorblurb|personblurb"/> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </div> +</xsl:template> + +<xsl:template match="authorblurb|personblurb" mode="titlepage.mode"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + </div> +</xsl:template> + +<xsl:template match="authorgroup" mode="titlepage.mode"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="parent::refentryinfo"> + <h2>Authors</h2> + </xsl:if> + + <xsl:call-template name="anchor"/> + <xsl:apply-templates mode="titlepage.mode"/> + </div> +</xsl:template> + +<xsl:template match="authorinitials" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="bibliomisc" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="bibliomset" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="collab" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="collabname" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + </span> +</xsl:template> + +<xsl:template match="confgroup" mode="titlepage.mode"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + </div> +</xsl:template> + +<xsl:template match="confdates" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="confsponsor" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="conftitle" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="confnum" mode="titlepage.mode"> + <!-- suppress --> +</xsl:template> + +<xsl:template match="contractnum" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="contractsponsor" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="contrib" mode="titlepage.mode"> + <xsl:choose> + <xsl:when test="not($contrib.inline.enabled = 0)"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + </span><xsl:text> </xsl:text> + </xsl:when> + <xsl:otherwise> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <p><xsl:apply-templates mode="titlepage.mode"/></p> + </div> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="copyright" mode="titlepage.mode"> + + <xsl:if test="generate-id() = generate-id(//refentryinfo/copyright[1]) + and ($stylesheet.result.type = 'html' or $stylesheet.result.type = 'xhtml')"> + <h2>Copyright</h2> + </xsl:if> + + <p> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Copyright'"/> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:call-template name="dingbat"> + <xsl:with-param name="dingbat">copyright</xsl:with-param> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:call-template name="copyright.years"> + <xsl:with-param name="years" select="year"/> + <xsl:with-param name="print.ranges" select="$make.year.ranges"/> + <xsl:with-param name="single.year.ranges" + select="$make.single.year.ranges"/> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:apply-templates select="holder" mode="titlepage.mode"/> + </p> +</xsl:template> + +<xsl:template match="year" mode="titlepage.mode"> + <xsl:choose> + <xsl:when test="$show.revisionflag != 0 and @revisionflag"> + <span class="{@revisionflag}"> + <xsl:apply-templates mode="titlepage.mode"/> + </span> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="titlepage.mode"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="holder" mode="titlepage.mode"> + <xsl:choose> + <xsl:when test="$show.revisionflag != 0 and @revisionflag"> + <span class="{@revisionflag}"> + <xsl:apply-templates mode="titlepage.mode"/> + </span> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="titlepage.mode"/> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="position() < last()"> + <xsl:text>, </xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template match="corpauthor" mode="titlepage.mode"> + <h3> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + </h3> +</xsl:template> + +<xsl:template match="corpcredit" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="corpname" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="date" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="edition" mode="titlepage.mode"> + <p> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <xsl:call-template name="gentext.space"/> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Edition'"/> + </xsl:call-template> + </p> +</xsl:template> + +<xsl:template match="email" mode="titlepage.mode"> + <!-- use the normal e-mail handling code --> + <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="firstname" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="graphic" mode="titlepage.mode"> + <!-- use the normal graphic handling code --> + <xsl:apply-templates select="."/> +</xsl:template> + +<xsl:template match="honorific" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="isbn" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="issn" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="biblioid" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="itermset" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="invpartnumber" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="issuenum" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="jobtitle" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="keywordset" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="legalnotice" mode="titlepage.mode"> + <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + + <xsl:choose> + <xsl:when test="$generate.legalnotice.link != 0"> + + <!-- Compute name of legalnotice file --> + <xsl:variable name="file"> + <xsl:call-template name="ln.or.rh.filename"/> + </xsl:variable> + + <xsl:variable name="filename"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir" select="$base.dir"/> + <xsl:with-param name="base.name" select="$file"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="title"> + <xsl:apply-templates select="." mode="title.markup"/> + </xsl:variable> + + <a href="{$file}"> + <xsl:copy-of select="$title"/> + </a> + + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename" select="$filename"/> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + <xsl:with-param name="content"> + <xsl:call-template name="user.preroot"/> + <html> + <head> + <xsl:call-template name="system.head.content"/> + <xsl:call-template name="head.content"/> + <xsl:call-template name="user.head.content"/> + </head> + <body> + <xsl:call-template name="body.attributes"/> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + </div> + </body> + </html> + <xsl:value-of select="$chunk.append"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <a name="{$id}"/> + <xsl:apply-templates mode="titlepage.mode"/> + </div> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="legalnotice/title" mode="titlepage.mode"> + <p class="legalnotice-title"><b><xsl:apply-templates/></b></p> +</xsl:template> + +<xsl:template match="lineage" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="modespec" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="orgdiv" mode="titlepage.mode"> + <xsl:if test="preceding-sibling::*[1][self::orgname]"> + <xsl:text> </xsl:text> + </xsl:if> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="orgname" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="othercredit" mode="titlepage.mode"> +<xsl:choose> + <xsl:when test="not($othercredit.like.author.enabled = 0)"> + <xsl:variable name="contrib" select="string(contrib)"/> + <xsl:choose> + <xsl:when test="contrib"> + <xsl:if test="not(preceding-sibling::othercredit[string(contrib)=$contrib])"> + <xsl:call-template name="paragraph"> + <xsl:with-param name="class" select="local-name(.)"/> + <xsl:with-param name="content"> + <xsl:apply-templates mode="titlepage.mode" select="contrib"/> + <xsl:text>: </xsl:text> + <xsl:call-template name="person.name"/> + <xsl:apply-templates mode="titlepage.mode" select="affiliation"/> + <xsl:apply-templates select="following-sibling::othercredit[string(contrib)=$contrib]" mode="titlepage.othercredits"/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="paragraph"> + <xsl:with-param name="class" select="local-name(.)"/> + <xsl:with-param name="content"> + <xsl:call-template name="person.name"/> + </xsl:with-param> + </xsl:call-template> + <xsl:apply-templates mode="titlepage.mode" select="affiliation"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="credits.div"/> + </xsl:otherwise> +</xsl:choose> +</xsl:template> + +<xsl:template match="othercredit" mode="titlepage.othercredits"> + <xsl:text>, </xsl:text> + <xsl:call-template name="person.name"/> +</xsl:template> + +<xsl:template match="othername" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="pagenums" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="printhistory" mode="titlepage.mode"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + </div> +</xsl:template> + +<xsl:template match="productname" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="productnumber" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="pubdate" mode="titlepage.mode"> + <xsl:call-template name="paragraph"> + <xsl:with-param name="class" select="local-name(.)"/> + <xsl:with-param name="content"> + <xsl:apply-templates mode="titlepage.mode"/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template match="publisher" mode="titlepage.mode"> + <xsl:call-template name="paragraph"> + <xsl:with-param name="class" select="local-name(.)"/> + <xsl:with-param name="content"> + <xsl:apply-templates mode="titlepage.mode"/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template match="publishername" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="pubsnumber" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="releaseinfo" mode="titlepage.mode"> + <xsl:call-template name="paragraph"> + <xsl:with-param name="class" select="local-name(.)"/> + <xsl:with-param name="content"> + <xsl:apply-templates mode="titlepage.mode"/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template match="revhistory" mode="titlepage.mode"> + <xsl:variable name="numcols"> + <xsl:choose> + <xsl:when test=".//authorinitials|.//author">3</xsl:when> + <xsl:otherwise>2</xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + + <xsl:variable name="title"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">RevHistory</xsl:with-param> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="contents"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <table border="1" width="100%" summary="Revision history"> + <tr> + <th align="{$direction.align.start}" valign="top" colspan="{$numcols}"> + <b> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'RevHistory'"/> + </xsl:call-template> + </b> + </th> + </tr> + <xsl:apply-templates mode="titlepage.mode"> + <xsl:with-param name="numcols" select="$numcols"/> + </xsl:apply-templates> + </table> + </div> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$generate.revhistory.link != 0"> + + <!-- Compute name of revhistory file --> + <xsl:variable name="file"> + <xsl:call-template name="ln.or.rh.filename"> + <xsl:with-param name="is.ln" select="false()"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="filename"> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir" select="$base.dir"/> + <xsl:with-param name="base.name" select="$file"/> + </xsl:call-template> + </xsl:variable> + + <a href="{$file}"> + <xsl:copy-of select="$title"/> + </a> + + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename" select="$filename"/> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + <xsl:with-param name="content"> + <xsl:call-template name="user.preroot"/> + <html> + <head> + <xsl:call-template name="system.head.content"/> + <xsl:call-template name="head.content"> + <xsl:with-param name="title"> + <xsl:value-of select="$title"/> + <xsl:if test="../../title"> + <xsl:value-of select="concat(' (', ../../title, ')')"/> + </xsl:if> + </xsl:with-param> + </xsl:call-template> + <xsl:call-template name="user.head.content"/> + </head> + <body> + <xsl:call-template name="body.attributes"/> + <xsl:copy-of select="$contents"/> + </body> + </html> + <xsl:text> </xsl:text> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$contents"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="revhistory/revision" mode="titlepage.mode"> + <xsl:param name="numcols" select="'3'"/> + <xsl:variable name="revnumber" select="revnumber"/> + <xsl:variable name="revdate" select="date"/> + <xsl:variable name="revauthor" select="authorinitials|author"/> + <xsl:variable name="revremark" select="revremark|revdescription"/> + <tr> + <td align="{$direction.align.start}"> + <xsl:if test="$revnumber"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Revision'"/> + </xsl:call-template> + <xsl:call-template name="gentext.space"/> + <xsl:apply-templates select="$revnumber[1]" mode="titlepage.mode"/> + </xsl:if> + </td> + <td align="{$direction.align.start}"> + <xsl:apply-templates select="$revdate[1]" mode="titlepage.mode"/> + </td> + <xsl:choose> + <xsl:when test="$revauthor"> + <td align="{$direction.align.start}"> + <xsl:for-each select="$revauthor"> + <xsl:apply-templates select="." mode="titlepage.mode"/> + <xsl:if test="position() != last()"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + </td> + </xsl:when> + <xsl:when test="$numcols > 2"> + <td> </td> + </xsl:when> + <xsl:otherwise></xsl:otherwise> + </xsl:choose> + </tr> + <xsl:if test="$revremark"> + <tr> + <td align="{$direction.align.start}" colspan="{$numcols}"> + <xsl:apply-templates select="$revremark[1]" mode="titlepage.mode"/> + </td> + </tr> + </xsl:if> +</xsl:template> + +<xsl:template match="revision/revnumber" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/date" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/authorinitials" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/author" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/revremark" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="revision/revdescription" mode="titlepage.mode"> + <xsl:apply-templates mode="titlepage.mode"/> +</xsl:template> + +<xsl:template match="seriesvolnums" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="shortaffil" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="subjectset" mode="titlepage.mode"> +</xsl:template> + +<xsl:template match="subtitle" mode="titlepage.mode"> + <h2> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + </h2> +</xsl:template> + +<xsl:template match="surname" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<xsl:template match="title" mode="titlepage.mode"> + <xsl:variable name="id"> + <xsl:choose> + <!-- if title is in an *info wrapper, get the grandparent --> + <xsl:when test="contains(local-name(..), 'info')"> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select="../.."/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="object.id"> + <xsl:with-param name="object" select=".."/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <h1> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="$generate.id.attributes = 0"> + <a name="{$id}"/> + </xsl:if> + <xsl:choose> + <xsl:when test="$show.revisionflag != 0 and @revisionflag"> + <span class="{@revisionflag}"> + <xsl:apply-templates mode="titlepage.mode"/> + </span> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates mode="titlepage.mode"/> + </xsl:otherwise> + </xsl:choose> + </h1> +</xsl:template> + +<xsl:template match="titleabbrev" mode="titlepage.mode"> + <!-- nop; title abbreviations don't belong on the title page! --> +</xsl:template> + +<xsl:template match="volumenum" mode="titlepage.mode"> + <span> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates mode="titlepage.mode"/> + <br/> + </span> +</xsl:template> + +<!-- This template computes the filename for legalnotice and revhistory chunks --> +<xsl:template name="ln.or.rh.filename"> + <xsl:param name="node" select="."/> + <xsl:param name="is.ln" select="true()"/> + + <xsl:variable name="dbhtml-filename"> + <xsl:call-template name="pi.dbhtml_filename"> + <xsl:with-param name="node" select="$node"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <!-- 1. If there is a dbhtml_filename PI, use that --> + <xsl:when test="$dbhtml-filename != ''"> + <xsl:value-of select="$dbhtml-filename"/> + </xsl:when> + <xsl:when test="($node/@id or $node/@xml:id) and not($use.id.as.filename = 0)"> + <!-- * 2. If this legalnotice/revhistory has an ID, then go ahead and use --> + <!-- * just the value of that ID as the basename for the file --> + <!-- * (that is, without prepending an "ln-" or "rh-" to it) --> + <xsl:value-of select="($node/@id|$node/@xml:id)[1]"/> + <xsl:value-of select="$html.ext"/> + </xsl:when> + <xsl:when test="not ($node/@id or $node/@xml:id) or $use.id.as.filename = 0"> + <!-- * 3. Otherwise, if this legalnotice/revhistory does not have an ID, or --> + <!-- * if $use.id.as.filename = 0 --> + <!-- * then we generate an ID... --> + <xsl:variable name="id"> + <xsl:value-of select="generate-id($node)"/> + </xsl:variable> + <!-- * ...and then we take that generated ID, prepend a --> + <!-- * prefix to it, and use that as the basename for the file --> + <xsl:choose> + <xsl:when test="$is.ln"> + <xsl:value-of select="concat('ln-',$id,$html.ext)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat('rh-',$id,$html.ext)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/toc.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/toc.xsl new file mode 100644 index 000000000..d8c1be507 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/toc.xsl @@ -0,0 +1,350 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version='1.0'> + +<!-- ******************************************************************** + $Id: toc.xsl 8421 2009-05-04 07:49:49Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="set/toc | book/toc | part/toc"> + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="node" select="parent::*"/> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + + <!-- Do not output the toc element if one is already generated + by the use of $generate.toc parameter, or if + generating a source toc is turned off --> + <xsl:if test="not(contains($toc.params, 'toc')) and + ($process.source.toc != 0 or $process.empty.source.toc != 0)"> + <xsl:variable name="content"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <xsl:apply-templates /> + </xsl:when> + <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0"> + <!-- trick to switch context node to parent element --> + <xsl:for-each select="parent::*"> + <xsl:choose> + <xsl:when test="self::set"> + <xsl:call-template name="set.toc"> + <xsl:with-param name="toc.title.p" + select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="self::book"> + <xsl:call-template name="division.toc"> + <xsl:with-param name="toc.title.p" + select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="self::part"> + <xsl:call-template name="division.toc"> + <xsl:with-param name="toc.title.p" + select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:when> + </xsl:choose> + </xsl:for-each> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:if test="string-length(normalize-space($content)) != 0"> + <xsl:copy-of select="$content"/> + </xsl:if> + </xsl:if> +</xsl:template> + +<xsl:template match="chapter/toc | appendix/toc | preface/toc | article/toc"> + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="node" select="parent::*"/> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + + <!-- Do not output the toc element if one is already generated + by the use of $generate.toc parameter, or if + generating a source toc is turned off --> + <xsl:if test="not(contains($toc.params, 'toc')) and + ($process.source.toc != 0 or $process.empty.source.toc != 0)"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="title"/> + <dl> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="*[not(self::title)]"/> + </dl> + </div> + <xsl:call-template name="component.toc.separator"/> + </xsl:when> + <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0"> + <!-- trick to switch context node to section element --> + <xsl:for-each select="parent::*"> + <xsl:call-template name="component.toc"> + <xsl:with-param name="toc.title.p" + select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:for-each> + <xsl:call-template name="component.toc.separator"/> + </xsl:when> + </xsl:choose> + </xsl:if> +</xsl:template> + +<xsl:template match="section/toc + |sect1/toc + |sect2/toc + |sect3/toc + |sect4/toc + |sect5/toc"> + + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="node" select="parent::*"/> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + + <!-- Do not output the toc element if one is already generated + by the use of $generate.toc parameter, or if + generating a source toc is turned off --> + <xsl:if test="not(contains($toc.params, 'toc')) and + ($process.source.toc != 0 or $process.empty.source.toc != 0)"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="title"/> + <dl> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="*[not(self::title)]"/> + </dl> + </div> + <xsl:call-template name="section.toc.separator"/> + </xsl:when> + <xsl:when test="count(*) = 0 and $process.empty.source.toc != 0"> + <!-- trick to switch context node to section element --> + <xsl:for-each select="parent::*"> + <xsl:call-template name="section.toc"> + <xsl:with-param name="toc.title.p" + select="contains($toc.params, 'title')"/> + </xsl:call-template> + </xsl:for-each> + <xsl:call-template name="section.toc.separator"/> + </xsl:when> + </xsl:choose> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="tocpart|tocchap + |toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"> + <xsl:variable name="sub-toc"> + <xsl:if test="tocchap|toclevel1|toclevel2|toclevel3|toclevel4|toclevel5"> + <xsl:choose> + <xsl:when test="$toc.list.type = 'dl'"> + <dd> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:element name="{$toc.list.type}"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="tocchap|toclevel1|toclevel2| + toclevel3|toclevel4|toclevel5"/> + </xsl:element> + </dd> + </xsl:when> + <xsl:otherwise> + <xsl:element name="{$toc.list.type}"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="tocchap|toclevel1|toclevel2| + toclevel3|toclevel4|toclevel5"/> + </xsl:element> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:variable> + + <xsl:apply-templates select="tocentry[position() != last()]"/> + + <xsl:choose> + <xsl:when test="$toc.list.type = 'dl'"> + <dt> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="tocentry[position() = last()]"/> + </dt> + <xsl:copy-of select="$sub-toc"/> + </xsl:when> + <xsl:otherwise> + <li> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="tocentry[position() = last()]"/> + <xsl:copy-of select="$sub-toc"/> + </li> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="tocentry|tocdiv|lotentry|tocfront|tocback"> + <xsl:choose> + <xsl:when test="$toc.list.type = 'dl'"> + <dt> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="tocentry-content"/> + </dt> + </xsl:when> + <xsl:otherwise> + <li> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="tocentry-content"/> + </li> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="tocentry[position() = last()]" priority="2"> + <xsl:call-template name="tocentry-content"/> +</xsl:template> + +<xsl:template name="tocentry-content"> + <xsl:variable name="targets" select="key('id',@linkend)"/> + <xsl:variable name="target" select="$targets[1]"/> + + <xsl:choose> + <xsl:when test="@linkend"> + <xsl:call-template name="check.id.unique"> + <xsl:with-param name="linkend" select="@linkend"/> + </xsl:call-template> + <a> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$target"/> + </xsl:call-template> + </xsl:attribute> + <xsl:apply-templates/> + </a> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="toc/title"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates/> + </div> +</xsl:template> + +<xsl:template match="toc/subtitle"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates/> + </div> +</xsl:template> + +<xsl:template match="toc/titleabbrev"> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- A lot element must have content, because there is no attribute + to select what kind of list should be generated --> +<xsl:template match="book/lot | part/lot"> + <!-- Don't generate a page sequence unless there is content --> + <xsl:variable name="content"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates /> + </div> + </xsl:when> + <xsl:when test="not(child::*) and $process.empty.source.toc != 0"> + <xsl:call-template name="process.empty.lot"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:if test="string-length(normalize-space($content)) != 0"> + <xsl:copy-of select="$content"/> + </xsl:if> +</xsl:template> + +<xsl:template match="chapter/lot | appendix/lot | preface/lot | article/lot"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates /> + </div> + <xsl:call-template name="component.toc.separator"/> + </xsl:when> + <xsl:when test="not(child::*) and $process.empty.source.toc != 0"> + <xsl:call-template name="process.empty.lot"/> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template match="section/lot + |sect1/lot + |sect2/lot + |sect3/lot + |sect4/lot + |sect5/lot"> + <xsl:choose> + <xsl:when test="* and $process.source.toc != 0"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates/> + </div> + <xsl:call-template name="section.toc.separator"/> + </xsl:when> + <xsl:when test="not(child::*) and $process.empty.source.toc != 0"> + <xsl:call-template name="process.empty.lot"/> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template name="process.empty.lot"> + <!-- An empty lot element does not provide any information to indicate + what should be included in it. You can customize this + template to generate a lot based on @role or something --> + <xsl:message> + <xsl:text>Warning: don't know what to generate for </xsl:text> + <xsl:text>lot that has no children.</xsl:text> + </xsl:message> +</xsl:template> + +<xsl:template match="lot/title"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates/> + </div> +</xsl:template> + +<xsl:template match="lot/subtitle"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates/> + </div> +</xsl:template> + +<xsl:template match="lot/titleabbrev"> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/verbatim.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/verbatim.xsl new file mode 100644 index 000000000..8c7b26392 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/verbatim.xsl @@ -0,0 +1,410 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim" + xmlns:xverb="xalan://com.nwalsh.xalan.Verbatim" + xmlns:lxslt="http://xml.apache.org/xslt" + xmlns:exsl="http://exslt.org/common" + exclude-result-prefixes="sverb xverb lxslt exsl" + version='1.0'> + +<!-- ******************************************************************** + $Id: verbatim.xsl 8807 2010-08-09 18:57:41Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- XSLTHL highlighting is turned off by default. See highlighting/README + for instructions on how to turn on XSLTHL --> +<xsl:template name="apply-highlighting"> + <xsl:apply-templates/> +</xsl:template> + +<lxslt:component prefix="xverb" + functions="numberLines"/> + +<xsl:template match="programlisting|screen|synopsis"> + <xsl:param name="suppress-numbers" select="'0'"/> + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + + <xsl:call-template name="anchor"/> + + <xsl:variable name="div.element"> + <xsl:choose> + <xsl:when test="$make.clean.html != 0">div</xsl:when> + <xsl:otherwise>pre</xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:if test="$shade.verbatim != 0"> + <xsl:message> + <xsl:text>The shade.verbatim parameter is deprecated. </xsl:text> + <xsl:text>Use CSS instead,</xsl:text> + </xsl:message> + <xsl:message> + <xsl:text>for example: pre.</xsl:text> + <xsl:value-of select="local-name(.)"/> + <xsl:text> { background-color: #E0E0E0; }</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:choose> + <xsl:when test="$suppress-numbers = '0' + and @linenumbering = 'numbered' + and $use.extensions != '0' + and $linenumbering.extension != '0'"> + <xsl:variable name="rtf"> + <xsl:choose> + <xsl:when test="$highlight.source != 0"> + <xsl:call-template name="apply-highlighting"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:element name="{$div.element}"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="@width != ''"> + <xsl:attribute name="width"> + <xsl:value-of select="@width"/> + </xsl:attribute> + </xsl:if> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </xsl:element> + </xsl:when> + <xsl:otherwise> + <xsl:element name="{$div.element}"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="@width != ''"> + <xsl:attribute name="width"> + <xsl:value-of select="@width"/> + </xsl:attribute> + </xsl:if> + <xsl:choose> + <xsl:when test="$highlight.source != 0"> + <xsl:call-template name="apply-highlighting"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </xsl:element> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="literallayout"> + <xsl:param name="suppress-numbers" select="'0'"/> + + <xsl:variable name="rtf"> + <xsl:apply-templates/> + </xsl:variable> + + <xsl:if test="$shade.verbatim != 0 and @class='monospaced'"> + <xsl:message> + <xsl:text>The shade.verbatim parameter is deprecated. </xsl:text> + <xsl:text>Use CSS instead,</xsl:text> + </xsl:message> + <xsl:message> + <xsl:text>for example: pre.</xsl:text> + <xsl:value-of select="local-name(.)"/> + <xsl:text> { background-color: #E0E0E0; }</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:choose> + <xsl:when test="$suppress-numbers = '0' + and @linenumbering = 'numbered' + and $use.extensions != '0' + and $linenumbering.extension != '0'"> + <xsl:choose> + <xsl:when test="@class='monospaced'"> + <pre> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </pre> + </xsl:when> + <xsl:otherwise> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <p> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </p> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="@class='monospaced'"> + <pre> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:copy-of select="$rtf"/> + </pre> + </xsl:when> + <xsl:otherwise> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <p> + <xsl:call-template name="make-verbatim"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </p> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="address"> + <xsl:param name="suppress-numbers" select="'0'"/> + + <xsl:variable name="rtf"> + <xsl:apply-templates/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$suppress-numbers = '0' + and @linenumbering = 'numbered' + and $use.extensions != '0' + and $linenumbering.extension != '0'"> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <p> + <xsl:call-template name="number.rtf.lines"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </p> + </div> + </xsl:when> + + <xsl:otherwise> + <div> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <p> + <xsl:call-template name="make-verbatim"> + <xsl:with-param name="rtf" select="$rtf"/> + </xsl:call-template> + </p> + </div> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="number.rtf.lines"> + <xsl:param name="rtf" select="''"/> + <xsl:param name="pi.context" select="."/> + + <!-- Save the global values --> + <xsl:variable name="global.linenumbering.everyNth" + select="$linenumbering.everyNth"/> + + <xsl:variable name="global.linenumbering.separator" + select="$linenumbering.separator"/> + + <xsl:variable name="global.linenumbering.width" + select="$linenumbering.width"/> + + <!-- Extract the <?dbhtml linenumbering.*?> PI values --> + <xsl:variable name="pi.linenumbering.everyNth"> + <xsl:call-template name="pi.dbhtml_linenumbering.everyNth"> + <xsl:with-param name="node" select="$pi.context"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="pi.linenumbering.separator"> + <xsl:call-template name="pi.dbhtml_linenumbering.separator"> + <xsl:with-param name="node" select="$pi.context"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="pi.linenumbering.width"> + <xsl:call-template name="pi.dbhtml_linenumbering.width"> + <xsl:with-param name="node" select="$pi.context"/> + </xsl:call-template> + </xsl:variable> + + <!-- Construct the 'in-context' values --> + <xsl:variable name="linenumbering.everyNth"> + <xsl:choose> + <xsl:when test="$pi.linenumbering.everyNth != ''"> + <xsl:value-of select="$pi.linenumbering.everyNth"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$global.linenumbering.everyNth"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="linenumbering.separator"> + <xsl:choose> + <xsl:when test="$pi.linenumbering.separator != ''"> + <xsl:value-of select="$pi.linenumbering.separator"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$global.linenumbering.separator"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="linenumbering.width"> + <xsl:choose> + <xsl:when test="$pi.linenumbering.width != ''"> + <xsl:value-of select="$pi.linenumbering.width"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$global.linenumbering.width"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="linenumbering.startinglinenumber"> + <xsl:choose> + <xsl:when test="$pi.context/@startinglinenumber"> + <xsl:value-of select="$pi.context/@startinglinenumber"/> + </xsl:when> + <xsl:when test="$pi.context/@continuation='continues'"> + <xsl:variable name="lastLine"> + <xsl:choose> + <xsl:when test="$pi.context/self::programlisting"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" + select="preceding::programlisting[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$pi.context/self::screen"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" + select="preceding::screen[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$pi.context/self::literallayout"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" + select="preceding::literallayout[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$pi.context/self::address"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" + select="preceding::address[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="$pi.context/self::synopsis"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" + select="preceding::synopsis[@linenumbering='numbered']"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Unexpected verbatim environment: </xsl:text> + <xsl:value-of select="local-name($pi.context)"/> + </xsl:message> + <xsl:value-of select="0"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:value-of select="$lastLine + 1"/> + </xsl:when> + <xsl:otherwise>1</xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="function-available('sverb:numberLines')"> + <xsl:copy-of select="sverb:numberLines($rtf)"/> + </xsl:when> + <xsl:when test="function-available('xverb:numberLines')"> + <xsl:copy-of select="xverb:numberLines($rtf)"/> + </xsl:when> + <xsl:otherwise> + <xsl:message terminate="yes"> + <xsl:text>No numberLines function available.</xsl:text> + </xsl:message> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="make-verbatim"> + <xsl:param name="rtf"/> + + <!-- I want to make this RTF verbatim. There are two possibilities: either + I have access to the exsl:node-set extension function and I can "do it right" + or I have to rely on CSS. --> + + <xsl:choose> + <xsl:when test="$exsl.node.set.available != 0"> + <xsl:apply-templates select="exsl:node-set($rtf)" mode="make.verbatim.mode"/> + </xsl:when> + <xsl:otherwise> + <span style="white-space: pre;"> + <xsl:copy-of select="$rtf"/> + </span> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ======================================================================== --> + +<xsl:template name="lastLineNumber"> + <xsl:param name="listings"/> + <xsl:param name="number" select="0"/> + + <xsl:variable name="lines"> + <xsl:call-template name="countLines"> + <xsl:with-param name="listing" select="string($listings[1])"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="not($listings)"> + <xsl:value-of select="$number"/> + </xsl:when> + <xsl:when test="$listings[1]/@startinglinenumber"> + <xsl:value-of select="$number + $listings[1]/@startinglinenumber + $lines - 1"/> + </xsl:when> + <xsl:when test="$listings[1]/@continuation='continues'"> + <xsl:call-template name="lastLineNumber"> + <xsl:with-param name="listings" select="listings[position() > 1]"/> + <xsl:with-param name="number" select="$number + $lines"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$lines"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template name="countLines"> + <xsl:param name="listing"/> + <xsl:param name="count" select="1"/> + + <xsl:choose> + <xsl:when test="contains($listing, ' ')"> + <xsl:call-template name="countLines"> + <xsl:with-param name="listing" select="substring-after($listing, ' ')"/> + <xsl:with-param name="count" select="$count + 1"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$count"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/xref.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/xref.xsl new file mode 100644 index 000000000..771bca53c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/html/xref.xsl @@ -0,0 +1,1377 @@ +<?xml version='1.0'?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:suwl="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.UnwrapLinks" + xmlns:exsl="http://exslt.org/common" + xmlns:xlink='http://www.w3.org/1999/xlink' + exclude-result-prefixes="suwl exsl xlink" + version='1.0'> + +<!-- ******************************************************************** + $Id: xref.xsl 8421 2009-05-04 07:49:49Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- Use internal variable for olink xlink role for consistency --> +<xsl:variable + name="xolink.role">http://docbook.org/xlink/role/olink</xsl:variable> + +<!-- ==================================================================== --> + +<xsl:template match="anchor"> + <xsl:call-template name="anchor"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="xref" name="xref"> + <xsl:param name="xhref" select="@xlink:href"/> + <!-- is the @xlink:href a local idref link? --> + <xsl:param name="xlink.idref"> + <xsl:if test="starts-with($xhref,'#') + and (not(contains($xhref,'(')) + or starts-with($xhref, '#xpointer(id('))"> + <xsl:call-template name="xpointer.idref"> + <xsl:with-param name="xpointer" select="$xhref"/> + </xsl:call-template> + </xsl:if> + </xsl:param> + <xsl:param name="xlink.targets" select="key('id',$xlink.idref)"/> + <xsl:param name="linkend.targets" select="key('id',@linkend)"/> + <xsl:param name="target" select="($xlink.targets | $linkend.targets)[1]"/> + + <xsl:variable name="xrefstyle"> + <xsl:choose> + <xsl:when test="@role and not(@xrefstyle) + and $use.role.as.xrefstyle != 0"> + <xsl:value-of select="@role"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@xrefstyle"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:call-template name="anchor"/> + + <xsl:variable name="content"> + <xsl:choose> + + <xsl:when test="@endterm"> + <xsl:variable name="etargets" select="key('id',@endterm)"/> + <xsl:variable name="etarget" select="$etargets[1]"/> + <xsl:choose> + <xsl:when test="count($etarget) = 0"> + <xsl:message> + <xsl:value-of select="count($etargets)"/> + <xsl:text>Endterm points to nonexistent ID: </xsl:text> + <xsl:value-of select="@endterm"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$etarget" mode="endterm"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + + <xsl:when test="$target/@xreflabel"> + <xsl:call-template name="xref.xreflabel"> + <xsl:with-param name="target" select="$target"/> + </xsl:call-template> + </xsl:when> + + <xsl:when test="$target"> + <xsl:if test="not(parent::citation)"> + <xsl:apply-templates select="$target" mode="xref-to-prefix"/> + </xsl:if> + + <xsl:apply-templates select="$target" mode="xref-to"> + <xsl:with-param name="referrer" select="."/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + </xsl:apply-templates> + + <xsl:if test="not(parent::citation)"> + <xsl:apply-templates select="$target" mode="xref-to-suffix"/> + </xsl:if> + </xsl:when> + + <xsl:otherwise> + <xsl:message> + <xsl:text>ERROR: xref linking to </xsl:text> + <xsl:value-of select="@linkend|@xlink:href"/> + <xsl:text> has no generated link text.</xsl:text> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:call-template name="simple.xlink"> + <xsl:with-param name="content" select="$content"/> + </xsl:call-template> + +</xsl:template> + +<!-- ==================================================================== --> + +<!-- biblioref handled largely like an xref --> +<!-- To be done: add support for begin, end, and units attributes --> +<xsl:template match="biblioref"> + <xsl:variable name="targets" select="key('id',@linkend)"/> + <xsl:variable name="target" select="$targets[1]"/> + <xsl:variable name="refelem" select="local-name($target)"/> + + <xsl:call-template name="check.id.unique"> + <xsl:with-param name="linkend" select="@linkend"/> + </xsl:call-template> + + <xsl:call-template name="anchor"/> + + <xsl:choose> + <xsl:when test="count($target) = 0"> + <xsl:message> + <xsl:text>XRef to nonexistent id: </xsl:text> + <xsl:value-of select="@linkend"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:when> + + <xsl:when test="@endterm"> + <xsl:variable name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$target"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="etargets" select="key('id',@endterm)"/> + <xsl:variable name="etarget" select="$etargets[1]"/> + <xsl:choose> + <xsl:when test="count($etarget) = 0"> + <xsl:message> + <xsl:value-of select="count($etargets)"/> + <xsl:text>Endterm points to nonexistent ID: </xsl:text> + <xsl:value-of select="@endterm"/> + </xsl:message> + <a href="{$href}"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:text>???</xsl:text> + </a> + </xsl:when> + <xsl:otherwise> + <a href="{$href}"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:apply-templates select="$etarget" mode="endterm"/> + </a> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + + <xsl:when test="$target/@xreflabel"> + <a> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:attribute name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$target"/> + </xsl:call-template> + </xsl:attribute> + <xsl:call-template name="xref.xreflabel"> + <xsl:with-param name="target" select="$target"/> + </xsl:call-template> + </a> + </xsl:when> + + <xsl:otherwise> + <xsl:variable name="href"> + <xsl:call-template name="href.target"> + <xsl:with-param name="object" select="$target"/> + </xsl:call-template> + </xsl:variable> + + <xsl:if test="not(parent::citation)"> + <xsl:apply-templates select="$target" mode="xref-to-prefix"/> + </xsl:if> + + <a href="{$href}"> + <xsl:apply-templates select="." mode="class.attribute"/> + <xsl:if test="$target/title or $target/*/title"> + <xsl:attribute name="title"> + <xsl:apply-templates select="$target" mode="xref-title"/> + </xsl:attribute> + </xsl:if> + <xsl:apply-templates select="$target" mode="xref-to"> + <xsl:with-param name="referrer" select="."/> + <xsl:with-param name="xrefstyle"> + <xsl:choose> + <xsl:when test="@role and not(@xrefstyle) and $use.role.as.xrefstyle != 0"> + <xsl:value-of select="@role"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@xrefstyle"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:apply-templates> + </a> + + <xsl:if test="not(parent::citation)"> + <xsl:apply-templates select="$target" mode="xref-to-suffix"/> + </xsl:if> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="endterm"> + <!-- Process the children of the endterm element --> + <xsl:variable name="endterm"> + <xsl:apply-templates select="child::node()"/> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$exsl.node.set.available != 0"> + <xsl:apply-templates select="exsl:node-set($endterm)" mode="remove-ids"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$endterm"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="remove-ids"> + <xsl:choose> + <!-- handle html or xhtml --> + <xsl:when test="local-name(.) = 'a' + and (namespace-uri(.) = '' + or namespace-uri(.) = 'http://www.w3.org/1999/xhtml')"> + <xsl:choose> + <xsl:when test="(@name and count(@*) = 1) + or (@id and count(@*) = 1) + or (@xml:id and count(@*) = 1) + or (@xml:id and @name and count(@*) = 2) + or (@id and @name and count(@*) = 2)"> + <xsl:message>suppress anchor</xsl:message> + <!-- suppress the whole thing --> + </xsl:when> + <xsl:otherwise> + <xsl:copy> + <xsl:for-each select="@*"> + <xsl:choose> + <xsl:when test="local-name(.) != 'name' and local-name(.) != 'id'"> + <xsl:copy/> + </xsl:when> + <xsl:otherwise> + <xsl:message>removing <xsl:value-of + select="local-name(.)"/></xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:copy> + <xsl:apply-templates mode="remove-ids"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:copy> + <xsl:for-each select="@*"> + <xsl:choose> + <xsl:when test="local-name(.) != 'id'"> + <xsl:copy/> + </xsl:when> + <xsl:otherwise> + <xsl:message>removing <xsl:value-of + select="local-name(.)"/></xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + <xsl:apply-templates mode="remove-ids"/> + </xsl:copy> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="xref-to-prefix"/> +<xsl:template match="*" mode="xref-to-suffix"/> + +<xsl:template match="*" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:if test="$verbose"> + <xsl:message> + <xsl:text>Don't know what gentext to create for xref to: "</xsl:text> + <xsl:value-of select="name(.)"/> + <xsl:text>", ("</xsl:text> + <xsl:value-of select="(@id|@xml:id)[1]"/> + <xsl:text>")</xsl:text> + </xsl:message> + </xsl:if> + <xsl:text>???</xsl:text> +</xsl:template> + +<xsl:template match="title" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <!-- if you xref to a title, xref to the parent... --> + <xsl:choose> + <!-- FIXME: how reliable is this? --> + <xsl:when test="contains(local-name(parent::*), 'info')"> + <xsl:apply-templates select="parent::*[2]" mode="xref-to"> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="parent::*" mode="xref-to"> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="abstract|authorblurb|personblurb|bibliodiv|bibliomset + |biblioset|blockquote|calloutlist|caution|colophon + |constraintdef|formalpara|glossdiv|important|indexdiv + |itemizedlist|legalnotice|lot|msg|msgexplan|msgmain + |msgrel|msgset|msgsub|note|orderedlist|partintro + |productionset|qandadiv|refsynopsisdiv|segmentedlist + |set|setindex|sidebar|tip|toc|variablelist|warning" + mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <!-- catch-all for things with (possibly optional) titles --> + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="author|editor|othercredit|personname" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <xsl:call-template name="person.name"/> +</xsl:template> + +<xsl:template match="authorgroup" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <xsl:call-template name="person.name.list"/> +</xsl:template> + +<xsl:template match="figure|example|table|equation" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="procedure" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="task" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="cmdsynopsis" mode="xref-to"> + <xsl:apply-templates select="(.//command)[1]" mode="xref"/> +</xsl:template> + +<xsl:template match="funcsynopsis" mode="xref-to"> + <xsl:apply-templates select="(.//function)[1]" mode="xref"/> +</xsl:template> + +<xsl:template match="dedication|acknowledgements|preface|chapter|appendix|article" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="bibliography" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="xref-to-prefix"> + <xsl:text>[</xsl:text> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="xref-to-suffix"> + <xsl:text>]</xsl:text> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <!-- handles both biblioentry and bibliomixed --> + <xsl:choose> + <xsl:when test="string(.) = ''"> + <xsl:variable name="bib" select="document($bibliography.collection,.)"/> + <xsl:variable name="id" select="(@id|@xml:id)[1]"/> + <xsl:variable name="entry" select="$bib/bibliography/ + *[@id=$id or @xml:id=$id][1]"/> + <xsl:choose> + <xsl:when test="$entry"> + <xsl:choose> + <xsl:when test="$bibliography.numbered != 0"> + <xsl:number from="bibliography" count="biblioentry|bibliomixed" + level="any" format="1"/> + </xsl:when> + <xsl:when test="local-name($entry/*[1]) = 'abbrev'"> + <xsl:apply-templates select="$entry/*[1]"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>No bibliography entry: </xsl:text> + <xsl:value-of select="$id"/> + <xsl:text> found in </xsl:text> + <xsl:value-of select="$bibliography.collection"/> + </xsl:message> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$bibliography.numbered != 0"> + <xsl:number from="bibliography" count="biblioentry|bibliomixed" + level="any" format="1"/> + </xsl:when> + <xsl:when test="local-name(*[1]) = 'abbrev'"> + <xsl:apply-templates select="*[1]"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="glossary" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="glossentry" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + <xsl:choose> + <xsl:when test="$glossentry.show.acronym = 'primary'"> + <xsl:choose> + <xsl:when test="acronym|abbrev"> + <xsl:apply-templates select="(acronym|abbrev)[1]"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="glossterm[1]" mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="glossterm[1]" mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="glossterm|firstterm" mode="xref-to"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="index" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="listitem" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="section|simplesect + |sect1|sect2|sect3|sect4|sect5 + |refsect1|refsect2|refsect3|refsection" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + <!-- FIXME: What about "in Chapter X"? --> +</xsl:template> + +<xsl:template match="bridgehead" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + <!-- FIXME: What about "in Chapter X"? --> +</xsl:template> + +<xsl:template match="qandaset" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="qandadiv" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="qandaentry" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="question[1]" mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="question|answer" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:choose> + <xsl:when test="string-length(label) != 0"> + <xsl:apply-templates select="." mode="label.markup"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="part|reference" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="refentry" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <xsl:choose> + <xsl:when test="refmeta/refentrytitle"> + <xsl:apply-templates select="refmeta/refentrytitle"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="refnamediv/refname[1]"/> + </xsl:otherwise> + </xsl:choose> + <xsl:apply-templates select="refmeta/manvolnum"/> +</xsl:template> + +<xsl:template match="refnamediv" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="refname[1]" mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="refname" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates mode="xref-to"/> +</xsl:template> + +<xsl:template match="step" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Step'"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:apply-templates select="." mode="number"/> +</xsl:template> + +<xsl:template match="varlistentry" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="term[1]" mode="xref-to"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="primary|secondary|tertiary" mode="xref-to"> + <xsl:value-of select="."/> +</xsl:template> + +<xsl:template match="indexterm" mode="xref-to"> + <xsl:value-of select="primary"/> +</xsl:template> + +<xsl:template match="varlistentry/term" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <!-- to avoid the comma that will be generated if there are several terms --> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="co" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <xsl:apply-templates select="." mode="callout-bug"/> +</xsl:template> + +<xsl:template match="area|areaset" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + + <xsl:call-template name="callout-bug"> + <xsl:with-param name="conum"> + <xsl:apply-templates select="." mode="conumber"/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template match="book" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> +</xsl:template> + +<!-- These are elements for which no link text exists, so an xref to one + uses the xrefstyle attribute if specified, or if not it falls back + to the container element's link text --> +<xsl:template match="para|phrase|simpara|anchor|quote" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="verbose" select="1"/> + + <xsl:variable name="context" select="(ancestor::simplesect + |ancestor::section + |ancestor::sect1 + |ancestor::sect2 + |ancestor::sect3 + |ancestor::sect4 + |ancestor::sect5 + |ancestor::refsection + |ancestor::refsect1 + |ancestor::refsect2 + |ancestor::refsect3 + |ancestor::chapter + |ancestor::appendix + |ancestor::preface + |ancestor::partintro + |ancestor::dedication + |ancestor::acknowledgements + |ancestor::colophon + |ancestor::bibliography + |ancestor::index + |ancestor::glossary + |ancestor::glossentry + |ancestor::listitem + |ancestor::varlistentry)[last()]"/> + + <xsl:choose> + <xsl:when test="$xrefstyle != ''"> + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$context" mode="xref-to"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="verbose" select="$verbose"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="xref-title"> + <xsl:variable name="title"> + <xsl:apply-templates select="." mode="object.title.markup"/> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<xsl:template match="author" mode="xref-title"> + <xsl:variable name="title"> + <xsl:call-template name="person.name"/> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<xsl:template match="authorgroup" mode="xref-title"> + <xsl:variable name="title"> + <xsl:call-template name="person.name.list"/> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<xsl:template match="cmdsynopsis" mode="xref-title"> + <xsl:variable name="title"> + <xsl:apply-templates select="(.//command)[1]" mode="xref"/> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<xsl:template match="funcsynopsis" mode="xref-title"> + <xsl:variable name="title"> + <xsl:apply-templates select="(.//function)[1]" mode="xref"/> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<xsl:template match="biblioentry|bibliomixed" mode="xref-title"> + <!-- handles both biblioentry and bibliomixed --> + <xsl:variable name="title"> + <xsl:text>[</xsl:text> + <xsl:choose> + <xsl:when test="local-name(*[1]) = 'abbrev'"> + <xsl:apply-templates select="*[1]"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:otherwise> + </xsl:choose> + <xsl:text>]</xsl:text> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<xsl:template match="step" mode="xref-title"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Step'"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:apply-templates select="." mode="number"/> +</xsl:template> + +<xsl:template match="step[not(./title)]" mode="title.markup"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'Step'"/> + </xsl:call-template> + <xsl:text> </xsl:text> + <xsl:apply-templates select="." mode="number"/> +</xsl:template> + +<xsl:template match="co" mode="xref-title"> + <xsl:variable name="title"> + <xsl:apply-templates select="." mode="callout-bug"/> + </xsl:variable> + + <xsl:value-of select="$title"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="link" name="link"> + <xsl:param name="linkend" select="@linkend"/> + <xsl:param name="a.target"/> + <xsl:param name="xhref" select="@xlink:href"/> + + <xsl:variable name="content"> + <xsl:call-template name="anchor"/> + <xsl:choose> + <xsl:when test="count(child::node()) > 0"> + <!-- If it has content, use it --> + <xsl:apply-templates/> + </xsl:when> + <!-- else look for an endterm --> + <xsl:when test="@endterm"> + <xsl:variable name="etargets" select="key('id',@endterm)"/> + <xsl:variable name="etarget" select="$etargets[1]"/> + <xsl:choose> + <xsl:when test="count($etarget) = 0"> + <xsl:message> + <xsl:value-of select="count($etargets)"/> + <xsl:text>Endterm points to nonexistent ID: </xsl:text> + <xsl:value-of select="@endterm"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$etarget" mode="endterm"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <!-- Use the xlink:href if no other text --> + <xsl:when test="@xlink:href"> + <xsl:value-of select="@xlink:href"/> + </xsl:when> + <xsl:otherwise> + <xsl:message> + <xsl:text>Link element has no content and no Endterm. </xsl:text> + <xsl:text>Nothing to show in the link to </xsl:text> + <xsl:value-of select="(@xlink:href|@linkend)[1]"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:call-template name="simple.xlink"> + <xsl:with-param name="node" select="."/> + <xsl:with-param name="linkend" select="$linkend"/> + <xsl:with-param name="content" select="$content"/> + <xsl:with-param name="a.target" select="$a.target"/> + <xsl:with-param name="xhref" select="$xhref"/> + </xsl:call-template> + +</xsl:template> + +<xsl:template match="ulink" name="ulink"> + <xsl:param name="url" select="@url"/> + <xsl:variable name="link"> + <a> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:if test="@id or @xml:id"> + <xsl:attribute name="name"> + <xsl:value-of select="(@id|@xml:id)[1]"/> + </xsl:attribute> + </xsl:if> + <xsl:attribute name="href"><xsl:value-of select="$url"/></xsl:attribute> + <xsl:if test="$ulink.target != ''"> + <xsl:attribute name="target"> + <xsl:value-of select="$ulink.target"/> + </xsl:attribute> + </xsl:if> + <xsl:choose> + <xsl:when test="count(child::node())=0"> + <xsl:value-of select="$url"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </a> + </xsl:variable> + + <xsl:choose> + <xsl:when test="function-available('suwl:unwrapLinks')"> + <xsl:copy-of select="suwl:unwrapLinks($link)"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$link"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="olink" name="olink"> + <!-- olink content may be passed in from xlink olink --> + <xsl:param name="content" select="NOTANELEMENT"/> + + <xsl:call-template name="anchor"/> + + <xsl:variable name="localinfo" select="@localinfo"/> + + <xsl:choose> + <!-- olinks resolved by stylesheet and target database --> + <xsl:when test="@targetdoc or @targetptr or + (@xlink:role=$xolink.role and + contains(@xlink:href, '#') )" > + + <xsl:variable name="targetdoc.att"> + <xsl:choose> + <xsl:when test="@targetdoc != ''"> + <xsl:value-of select="@targetdoc"/> + </xsl:when> + <xsl:when test="@xlink:role=$xolink.role and + contains(@xlink:href, '#')" > + <xsl:value-of select="substring-before(@xlink:href, '#')"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="targetptr.att"> + <xsl:choose> + <xsl:when test="@targetptr != ''"> + <xsl:value-of select="@targetptr"/> + </xsl:when> + <xsl:when test="@xlink:role=$xolink.role and + contains(@xlink:href, '#')" > + <xsl:value-of select="substring-after(@xlink:href, '#')"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="olink.lang"> + <xsl:call-template name="l10n.language"> + <xsl:with-param name="xref-context" select="true()"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="target.database.filename"> + <xsl:call-template name="select.target.database"> + <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> + <xsl:with-param name="targetptr.att" select="$targetptr.att"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="target.database" + select="document($target.database.filename,/)"/> + + <xsl:if test="$olink.debug != 0"> + <xsl:message> + <xsl:text>Olink debug: root element of target.database '</xsl:text> + <xsl:value-of select="$target.database.filename"/> + <xsl:text>' is '</xsl:text> + <xsl:value-of select="local-name($target.database/*[1])"/> + <xsl:text>'.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:variable name="olink.key"> + <xsl:call-template name="select.olink.key"> + <xsl:with-param name="targetdoc.att" select="$targetdoc.att"/> + <xsl:with-param name="targetptr.att" select="$targetptr.att"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:variable> + + <xsl:if test="string-length($olink.key) = 0"> + <xsl:message> + <xsl:text>Error: unresolved olink: </xsl:text> + <xsl:text>targetdoc/targetptr = '</xsl:text> + <xsl:value-of select="$targetdoc.att"/> + <xsl:text>/</xsl:text> + <xsl:value-of select="$targetptr.att"/> + <xsl:text>'.</xsl:text> + </xsl:message> + </xsl:if> + + <xsl:variable name="href"> + <xsl:call-template name="make.olink.href"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="hottext"> + <xsl:choose> + <xsl:when test="string-length($content) != 0"> + <xsl:copy-of select="$content"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="olink.hottext"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + <xsl:with-param name="target.database" select="$target.database"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="olink.docname.citation"> + <xsl:call-template name="olink.document.citation"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="target.database" select="$target.database"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="olink.page.citation"> + <xsl:call-template name="olink.page.citation"> + <xsl:with-param name="olink.key" select="$olink.key"/> + <xsl:with-param name="target.database" select="$target.database"/> + <xsl:with-param name="olink.lang" select="$olink.lang"/> + </xsl:call-template> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$href != ''"> + <a href="{$href}"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:copy-of select="$hottext"/> + </a> + <xsl:copy-of select="$olink.page.citation"/> + <xsl:copy-of select="$olink.docname.citation"/> + </xsl:when> + <xsl:otherwise> + <span class="olink"><xsl:copy-of select="$hottext"/></span> + <xsl:copy-of select="$olink.page.citation"/> + <xsl:copy-of select="$olink.docname.citation"/> + </xsl:otherwise> + </xsl:choose> + + </xsl:when> + + <!-- Or use old olink mechanism --> + <xsl:otherwise> + <xsl:variable name="href"> + <xsl:choose> + <xsl:when test="@linkmode"> + <!-- use the linkmode to get the base URI, use localinfo as fragid --> + <xsl:variable name="modespec" select="key('id',@linkmode)"/> + <xsl:if test="count($modespec) != 1 + or local-name($modespec) != 'modespec'"> + <xsl:message>Warning: olink linkmode pointer is wrong.</xsl:message> + </xsl:if> + <xsl:value-of select="$modespec"/> + <xsl:if test="@localinfo"> + <xsl:text>#</xsl:text> + <xsl:value-of select="@localinfo"/> + </xsl:if> + </xsl:when> + <xsl:when test="@type = 'href'"> + <xsl:call-template name="olink.outline"> + <xsl:with-param name="outline.base.uri" + select="unparsed-entity-uri(@targetdocent)"/> + <xsl:with-param name="localinfo" select="@localinfo"/> + <xsl:with-param name="return" select="'href'"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$olink.resolver"/> + <xsl:text>?</xsl:text> + <xsl:value-of select="$olink.sysid"/> + <xsl:value-of select="unparsed-entity-uri(@targetdocent)"/> + <!-- XSL gives no access to the public identifier (grumble...) --> + <xsl:if test="@localinfo"> + <xsl:text>&</xsl:text> + <xsl:value-of select="$olink.fragid"/> + <xsl:value-of select="@localinfo"/> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$href != ''"> + <a href="{$href}"> + <xsl:apply-templates select="." mode="common.html.attributes"/> + <xsl:call-template name="olink.hottext"/> + </a> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="olink.hottext"/> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="pagenumber.markup"> + <!-- no-op in HTML --> +</xsl:template> + + +<xsl:template name="olink.outline"> + <xsl:param name="outline.base.uri"/> + <xsl:param name="localinfo"/> + <xsl:param name="return" select="href"/> + + <xsl:variable name="outline-file" + select="concat($outline.base.uri, + $olink.outline.ext)"/> + + <xsl:variable name="outline" select="document($outline-file,.)/div"/> + + <xsl:variable name="node-href"> + <xsl:choose> + <xsl:when test="$localinfo != ''"> + <xsl:variable name="node" select="$outline// + *[@id=$localinfo or @xml:id=$localinfo]"/> + <xsl:value-of select="$node/@href"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$outline/@href"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="node-xref"> + <xsl:choose> + <xsl:when test="$localinfo != ''"> + <xsl:variable name="node" select="$outline// + *[@id=$localinfo or @xml:id=$localinfo]"/> + <xsl:copy-of select="$node/xref"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$outline/xref"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$return = 'href'"> + <xsl:value-of select="$node-href"/> + </xsl:when> + <xsl:when test="$return = 'xref'"> + <xsl:value-of select="$node-xref"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$node-xref"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="xref.xreflabel"> + <!-- called to process an xreflabel...you might use this to make --> + <!-- xreflabels come out in the right font for different targets, --> + <!-- for example. --> + <xsl:param name="target" select="."/> + <xsl:value-of select="$target/@xreflabel"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="title" mode="xref"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="command" mode="xref"> + <xsl:call-template name="inline.boldseq"/> +</xsl:template> + +<xsl:template match="function" mode="xref"> + <xsl:call-template name="inline.monoseq"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="*" mode="insert.title.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="title"/> + + <xsl:choose> + <!-- FIXME: what about the case where titleabbrev is inside the info? --> + <xsl:when test="$purpose = 'xref' and titleabbrev"> + <xsl:apply-templates select="." mode="titleabbrev.markup"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$title"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="chapter|appendix" mode="insert.title.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="title"/> + + <xsl:choose> + <xsl:when test="$purpose = 'xref'"> + <i> + <xsl:copy-of select="$title"/> + </i> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$title"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<xsl:template match="*" mode="insert.subtitle.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="subtitle"/> + + <xsl:copy-of select="$subtitle"/> +</xsl:template> + +<xsl:template match="*" mode="insert.label.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="label"/> + + <xsl:copy-of select="$label"/> +</xsl:template> + +<xsl:template match="*" mode="insert.pagenumber.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="pagenumber"/> + + <xsl:copy-of select="$pagenumber"/> +</xsl:template> + +<xsl:template match="*" mode="insert.direction.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="direction"/> + + <xsl:copy-of select="$direction"/> +</xsl:template> + +<xsl:template match="*" mode="insert.olink.docname.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="docname"/> + + <span class="olinkdocname"> + <xsl:copy-of select="$docname"/> + </span> + +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp-common.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp-common.xsl new file mode 100644 index 000000000..303b81ec5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp-common.xsl @@ -0,0 +1,1120 @@ +<?xml version="1.0"?> +<!DOCTYPE xsl:stylesheet [ +<!ENTITY lf '<xsl:text xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> </xsl:text>'> +]> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" + xmlns:exsl="http://exslt.org/common" + xmlns:set="http://exslt.org/sets" + xmlns:h="urn:x-hex" + xmlns:ng="http://docbook.org/docbook-ng" + xmlns:db="http://docbook.org/ns/docbook" + version="1.0" + exclude-result-prefixes="doc exsl set h db ng"> + +<!-- ******************************************************************** + $Id: htmlhelp-common.xsl 8400 2009-04-08 07:44:54Z bobstayton $ + ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- Customizations of standard HTML stylesheet parameters --> + +<!-- no navigation on pages by default, HTML Help provides its own navigation controls --> +<xsl:param name="suppress.navigation" select="1"/> + +<!-- no separate HTML page with index, index is built inside CHM index pane --> +<xsl:param name="generate.index" select="0"/> + +<!-- ==================================================================== --> + +<xsl:param name="htmlhelp.generate.index" select="//indexterm[1]|//db:indexterm[1]|//ng:indexterm[1]"/> + +<!-- Set up HTML Help flag --> +<xsl:variable name="htmlhelp.output" select="1"/> + +<!-- ==================================================================== --> + +<xsl:template match="/"> + + <!-- * Get a title for current doc so that we let the user --> + <!-- * know what document we are processing at this point. --> + <xsl:variable name="doc.title"> + <xsl:call-template name="get.doc.title"/> + </xsl:variable> + <xsl:choose> + <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document, + toss the namespace and continue. Use the docbook5 namespaced + stylesheets for DocBook5 if you don't want to use this feature.--> + <xsl:when test="$exsl.node.set.available != 0 + and (*/self::ng:* or */self::db:*)"> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$doc.title"/> + <xsl:with-param name="context-desc"> + <xsl:text>namesp. cut</xsl:text> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>stripped namespace before processing</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:variable name="nons"> + <xsl:apply-templates mode="stripNS"/> + </xsl:variable> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$doc.title"/> + <xsl:with-param name="context-desc"> + <xsl:text>namesp. cut</xsl:text> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>processing stripped document</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:apply-templates select="exsl:node-set($nons)"/> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$htmlhelp.only != 1"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:choose> + <xsl:when test="count(key('id',$rootid)) = 0"> + <xsl:message terminate="yes"> + <xsl:text>ID '</xsl:text> + <xsl:value-of select="$rootid"/> + <xsl:text>' not found in document.</xsl:text> + </xsl:message> + </xsl:when> + <xsl:otherwise> + <xsl:message>Formatting from <xsl:value-of select="$rootid"/></xsl:message> + <xsl:apply-templates select="key('id',$rootid)" mode="process.root"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$collect.xref.targets = 'yes' or + $collect.xref.targets = 'only'"> + <xsl:apply-templates select="/" mode="collect.targets"/> + </xsl:if> + <xsl:if test="$collect.xref.targets != 'only'"> + <xsl:apply-templates select="/" mode="process.root"/> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + + <xsl:if test="$collect.xref.targets != 'only'"> + <xsl:call-template name="hhp"/> + <xsl:call-template name="hhc"/> + <xsl:if test="($rootid = '' and //processing-instruction('dbhh')) or + ($rootid != '' and key('id',$rootid)//processing-instruction('dbhh'))"> + <xsl:call-template name="hh-map"/> + <xsl:call-template name="hh-alias"/> + </xsl:if> + <xsl:if test="$htmlhelp.generate.index"> + <xsl:call-template name="hhk"/> + </xsl:if> + </xsl:if> +</xsl:otherwise> +</xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="hhp"> + <xsl:call-template name="write.text.chunk"> + <xsl:with-param name="filename"> + <xsl:if test="$manifest.in.base.dir != 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + <xsl:value-of select="$htmlhelp.hhp"/> + </xsl:with-param> + <xsl:with-param name="method" select="'text'"/> + <xsl:with-param name="content"> + <xsl:call-template name="hhp-main"/> + </xsl:with-param> + <xsl:with-param name="encoding" select="$htmlhelp.encoding"/> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> +<xsl:template name="hhp-main"> + + <xsl:variable name="raw.help.title"> + <xsl:choose> + <xsl:when test="$htmlhelp.title = ''"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="key('id',$rootid)" mode="title.markup"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/*" mode="title.markup"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$htmlhelp.title"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="help.title" select="normalize-space($raw.help.title)"/> + +<xsl:variable name="default.topic"> + <xsl:choose> + <xsl:when test="$htmlhelp.default.topic != ''"> + <xsl:value-of select="$htmlhelp.default.topic"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir"> + <xsl:if test="$manifest.in.base.dir = 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + </xsl:with-param> + <xsl:with-param name="base.name"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="key('id',$rootid)" mode="chunk-filename"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/" mode="chunk-filename"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:variable> +<xsl:variable name="xnavigation"> + <xsl:text>0x</xsl:text> + <xsl:call-template name="toHex"> + <xsl:with-param name="n" select="9504 + $htmlhelp.show.menu * 65536 + + $htmlhelp.show.advanced.search * 131072 + + $htmlhelp.show.favorities * 4096 + + (1 - $htmlhelp.show.toolbar.text) * 64 + + $htmlhelp.remember.window.position * 262144"/> + </xsl:call-template> +</xsl:variable> +<xsl:variable name="xbuttons"> + <xsl:text>0x</xsl:text> + <xsl:call-template name="toHex"> + <xsl:with-param name="n" select="0 + $htmlhelp.button.hideshow * 2 + + $htmlhelp.button.back * 4 + + $htmlhelp.button.forward * 8 + + $htmlhelp.button.stop * 16 + + $htmlhelp.button.refresh * 32 + + $htmlhelp.button.home * 64 + + $htmlhelp.button.options * 4096 + + $htmlhelp.button.print * 8192 + + $htmlhelp.button.locate * 2048 + + $htmlhelp.button.jump1 * 262144 + + $htmlhelp.button.jump2 * 524288 + + $htmlhelp.button.next * 2097152 + + $htmlhelp.button.prev * 4194304 + + $htmlhelp.button.zoom * 1048576"/> + </xsl:call-template> +</xsl:variable> +<xsl:text>[OPTIONS] +</xsl:text> +<xsl:if test="$htmlhelp.generate.index"> +<xsl:text>Auto Index=Yes +</xsl:text></xsl:if> +<xsl:if test="$htmlhelp.hhc.binary != 0"> +<xsl:text>Binary TOC=Yes +</xsl:text></xsl:if> +<xsl:text>Compatibility=1.1 or later +Compiled file=</xsl:text><xsl:value-of select="$htmlhelp.chm"/><xsl:text> +Contents file=</xsl:text><xsl:value-of select="$htmlhelp.hhc"/><xsl:text> +</xsl:text> +<xsl:if test="$htmlhelp.hhp.window != ''"> +<xsl:text>Default Window=</xsl:text><xsl:value-of select="$htmlhelp.hhp.window"/><xsl:text> +</xsl:text></xsl:if> +<xsl:text>Default topic=</xsl:text><xsl:value-of select="$default.topic"/> +<xsl:text> +Display compile progress=</xsl:text> + <xsl:choose> + <xsl:when test="$htmlhelp.display.progress != 1"> + <xsl:text>No</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>Yes</xsl:text> + </xsl:otherwise> + </xsl:choose> +<xsl:text> +Full-text search=Yes +</xsl:text> +<xsl:if test="$htmlhelp.generate.index"> +<xsl:text>Index file=</xsl:text><xsl:value-of select="$htmlhelp.hhk"/><xsl:text> +</xsl:text></xsl:if> +<xsl:text>Language=</xsl:text> +<xsl:for-each select="*"> <!-- Change context from / to root element --> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'htmlhelp'"/> + <xsl:with-param name="name" select="'langcode'"/> + </xsl:call-template> +</xsl:for-each> +<xsl:text> +Title=</xsl:text> + <xsl:value-of select="$help.title"/> +<xsl:text> +Enhanced decompilation=</xsl:text> + <xsl:choose> + <xsl:when test="$htmlhelp.enhanced.decompilation != 0"> + <xsl:text>Yes</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>No</xsl:text> + </xsl:otherwise> + </xsl:choose> + +<xsl:if test="$htmlhelp.hhp.window != ''"> + <xsl:text> + +[WINDOWS] +</xsl:text> +<xsl:value-of select="$htmlhelp.hhp.window"/> +<xsl:text>="</xsl:text> +<xsl:value-of select="$help.title"/> +<xsl:text>","</xsl:text><xsl:value-of select="$htmlhelp.hhc"/> +<xsl:text>",</xsl:text> +<xsl:if test="$htmlhelp.generate.index"> + <xsl:text>"</xsl:text> + <xsl:value-of select="$htmlhelp.hhk"/> + <xsl:text>"</xsl:text> +</xsl:if> +<xsl:text>,"</xsl:text> +<xsl:value-of select="$default.topic"/> +<xsl:text>",</xsl:text> +<xsl:text>"</xsl:text> +<xsl:choose> + <xsl:when test="$htmlhelp.button.home != 0"> + <xsl:value-of select="$htmlhelp.button.home.url"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$default.topic"/> + </xsl:otherwise> +</xsl:choose> +<xsl:text>"</xsl:text> +<xsl:text>,</xsl:text> +<xsl:if test="$htmlhelp.button.jump1 != 0"> + <xsl:text>"</xsl:text> + <xsl:value-of select="$htmlhelp.button.jump1.url"/> + <xsl:text>"</xsl:text> +</xsl:if> +<xsl:text>,</xsl:text> +<xsl:if test="$htmlhelp.button.jump1 != 0"> + <xsl:text>"</xsl:text> + <xsl:value-of select="$htmlhelp.button.jump1.title"/> + <xsl:text>"</xsl:text> +</xsl:if> +<xsl:text>,</xsl:text> +<xsl:if test="$htmlhelp.button.jump2 != 0"> + <xsl:text>"</xsl:text> + <xsl:value-of select="$htmlhelp.button.jump2.url"/> + <xsl:text>"</xsl:text> +</xsl:if> +<xsl:text>,</xsl:text> +<xsl:if test="$htmlhelp.button.jump2 != 0"> + <xsl:text>"</xsl:text> + <xsl:value-of select="$htmlhelp.button.jump2.title"/> + <xsl:text>"</xsl:text> +</xsl:if> +<xsl:text>,</xsl:text> +<xsl:value-of select="$xnavigation"/> +<xsl:text>,</xsl:text><xsl:value-of select="$htmlhelp.hhc.width"/><xsl:text>,</xsl:text> +<xsl:value-of select="$xbuttons"/> +<xsl:text>,</xsl:text><xsl:value-of select="$htmlhelp.window.geometry"/><xsl:text>,,,,,,,0 +</xsl:text> +</xsl:if> + +<!-- + Needs more investigation to generate propetly all fields +<xsl:text>search="</xsl:text> +<xsl:value-of select="normalize-space(//title[1])"/> +<xsl:text>","toc.hhc","index.hhk","</xsl:text> +<xsl:value-of select="$root.filename"/> +<xsl:text>.html","</xsl:text> +<xsl:value-of select="$root.filename"/> +<xsl:text>.html",,,,,</xsl:text> +<xsl:value-of select="$xnavigation"/> +<xsl:text>,</xsl:text> +<xsl:value-of select="$htmlhelp.hhc.width"/> +<xsl:text>,</xsl:text> +<xsl:value-of select="$xbuttons"/> +<xsl:text>,</xsl:text> +<xsl:value-of select="$htmlhelp.window.geometry"/> +<xsl:text>,,,,,2,,0 +</xsl:text> +--> + +<xsl:if test="$htmlhelp.hhp.windows"> + <xsl:value-of select="$htmlhelp.hhp.windows"/> +</xsl:if> +<xsl:text> + +[FILES] +</xsl:text> + +<xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="key('id',$rootid)" mode="enumerate-files"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/" mode="enumerate-files"/> + </xsl:otherwise> +</xsl:choose> + +<xsl:if test="$htmlhelp.enumerate.images"> + <xsl:variable name="imagelist"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="key('id',$rootid)" mode="enumerate-images"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/" mode="enumerate-images"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <xsl:when test="$exsl.node.set.available != 0 + and function-available('set:distinct')"> + <xsl:for-each select="set:distinct(exsl:node-set($imagelist)/filename)"> + <xsl:value-of select="."/> + <xsl:text> </xsl:text> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$imagelist"/> + </xsl:otherwise> + </xsl:choose> +</xsl:if> + +<xsl:if test="($htmlhelp.force.map.and.alias != 0) or + ($rootid = '' and //processing-instruction('dbhh')) or + ($rootid != '' and key('id',$rootid)//processing-instruction('dbhh'))"> + <xsl:text> +[ALIAS] +#include </xsl:text><xsl:value-of select="$htmlhelp.alias.file"/><xsl:text> + +[MAP] +#include </xsl:text><xsl:value-of select="$htmlhelp.map.file"/><xsl:text> +</xsl:text> +</xsl:if> + +<xsl:value-of select="$htmlhelp.hhp.tail"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="graphic|inlinegraphic[@format!='linespecific']" mode="enumerate-images"> + <xsl:call-template name="write.filename.enumerate-images"> + <xsl:with-param name="filename"> + <xsl:call-template name="mediaobject.filename.enumerate-images"> + <xsl:with-param name="object" select="."/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template match="mediaobject|inlinemediaobject" mode="enumerate-images"> + <xsl:call-template name="select.mediaobject.enumerate-images"/> +</xsl:template> + +<xsl:template name="select.mediaobject.enumerate-images"> + <xsl:param name="olist" + select="imageobject|imageobjectco + |videoobject|audioobject|textobject"/> + <xsl:param name="count">1</xsl:param> + + <xsl:if test="$count <= count($olist)"> + <xsl:variable name="object" select="$olist[position()=$count]"/> + + <xsl:variable name="useobject"> + <xsl:choose> + <!-- The phrase is never used --> + <xsl:when test="name($object)='textobject' and $object/phrase"> + <xsl:text>0</xsl:text> + </xsl:when> + <!-- The first textobject is a reasonable fallback (but not for image in HH) --> + <xsl:when test="name($object)='textobject'"> + <xsl:text>0</xsl:text> + </xsl:when> + <!-- If there's only one object, use it --> + <xsl:when test="$count = 1 and count($olist) = 1"> + <xsl:text>1</xsl:text> + </xsl:when> + <!-- Otherwise, see if this one is a useable graphic --> + <xsl:otherwise> + <xsl:choose> + <!-- peek inside imageobjectco to simplify the test --> + <xsl:when test="local-name($object) = 'imageobjectco'"> + <xsl:call-template name="is.acceptable.mediaobject"> + <xsl:with-param name="object" select="$object/imageobject"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="is.acceptable.mediaobject"> + <xsl:with-param name="object" select="$object"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$useobject='1' and $object[not(*/@format='linespecific')]"> + <xsl:call-template name="write.filename.enumerate-images"> + <xsl:with-param name="filename"> + <xsl:call-template name="mediaobject.filename.enumerate-images"> + <xsl:with-param name="object" select="$object"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="select.mediaobject.enumerate-images"> + <xsl:with-param name="olist" select="$olist"/> + <xsl:with-param name="count" select="$count + 1"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> +</xsl:template> + +<xsl:template name="mediaobject.filename.enumerate-images"> + <xsl:param name="object"/> + + <xsl:variable name="urifilename"> + <xsl:call-template name="mediaobject.filename"> + <xsl:with-param name="object" select="$object"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="filename"> + <xsl:choose> + <xsl:when test="starts-with($urifilename, 'file:/')"> + <xsl:value-of select="substring-after($urifilename, 'file:/')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$urifilename"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:value-of select="translate($filename, '/', '\')"/> + +</xsl:template> + +<xsl:template match="text()" mode="enumerate-images"> +</xsl:template> + +<xsl:template name="write.filename.enumerate-images"> + <xsl:param name="filename"/> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set') and function-available('set:distinct')"> + <filename><xsl:value-of select="$filename"/></filename> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$filename"/> + <xsl:text> </xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- HHC and HHK files are processed by compiler line by line + and therefore are very sensitive to whitespaces (linefeeds for sure). --> + +<xsl:template name="hhc"> + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename"> + <xsl:if test="$manifest.in.base.dir != 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + <xsl:value-of select="$htmlhelp.hhc"/> + </xsl:with-param> + <xsl:with-param name="indent" select="'no'"/> + <xsl:with-param name="content"> + <xsl:call-template name="hhc-main"/> + </xsl:with-param> + <xsl:with-param name="encoding" select="$htmlhelp.encoding"/> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="hhc-main"> +<HTML>&lf; + <HEAD></HEAD>&lf; + <BODY>&lf; + <xsl:if test="$htmlhelp.hhc.folders.instead.books != 0"> + <OBJECT type="text/site properties">&lf; + <param name="ImageType" value="Folder"/>&lf; + </OBJECT>&lf; + </xsl:if> + <xsl:variable name="content"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="key('id',$rootid)" mode="hhc"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/" mode="hhc"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$htmlhelp.hhc.show.root != 0"> + <UL>&lf; + <xsl:copy-of select="$content"/> + </UL>&lf; + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$content"/> + </xsl:otherwise> + </xsl:choose> + + </BODY> +</HTML> +</xsl:template> + +<xsl:template name="hhc.entry"> + <xsl:param name="title"> + <xsl:if test="$htmlhelp.autolabel=1"> + <xsl:variable name="label.markup"> + <xsl:apply-templates select="." mode="label.markup"/> + </xsl:variable> + <xsl:if test="normalize-space($label.markup)"> + <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/> + </xsl:if> + </xsl:if> + <xsl:apply-templates select="." mode="title.markup"/> + </xsl:param> + + <LI><OBJECT type="text/sitemap">&lf; + <param name="Name"> + <xsl:attribute name="value"> + <xsl:value-of select="normalize-space($title)"/> + </xsl:attribute> + </param>&lf; + <param name="Local"> + <xsl:attribute name="value"> + <xsl:call-template name="href.target.with.base.dir"/> + </xsl:attribute> + </param> + </OBJECT></LI>&lf; +</xsl:template> + +<xsl:template match="set" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="book"> + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + <UL> + <xsl:if test="contains($toc.params, 'toc') and $htmlhelp.hhc.show.root = 0"> + <LI><OBJECT type="text/sitemap">&lf; + <param name="Name"> + <xsl:attribute name="value"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'TableofContents'"/> + </xsl:call-template> + </xsl:attribute> + </param>&lf; + <param name="Local"> + <xsl:attribute name="value"> + <xsl:choose> + <xsl:when test="$chunk.tocs.and.lots != 0"> + <xsl:apply-templates select="." mode="recursive-chunk-filename"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + <xsl:text>-toc</xsl:text> + <xsl:value-of select="$html.ext"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="href.target.with.base.dir"/> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + </param> + </OBJECT></LI>&lf; + </xsl:if> + <xsl:apply-templates select="book" mode="hhc"/> + </UL>&lf; + </xsl:if> +</xsl:template> + +<xsl:template match="book" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="part|reference|preface|chapter|appendix|bibliography|article|colophon|glossary"> + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + <UL> + <xsl:if test="contains($toc.params, 'toc') and $htmlhelp.hhc.show.root = 0 and not(parent::*)"> + <LI><OBJECT type="text/sitemap">&lf; + <param name="Name"> + <xsl:attribute name="value"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'TableofContents'"/> + </xsl:call-template> + </xsl:attribute> + </param>&lf; + <param name="Local"> + <xsl:attribute name="value"> + <xsl:choose> + <xsl:when test="$chunk.tocs.and.lots != 0"> + <xsl:apply-templates select="." mode="recursive-chunk-filename"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + <xsl:text>-toc</xsl:text> + <xsl:value-of select="$html.ext"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="href.target.with.base.dir"/> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + </param> + </OBJECT></LI>&lf; + </xsl:if> + <xsl:apply-templates select="part|reference|preface|chapter|bibliography|appendix|article|colophon|glossary" + mode="hhc"/> + </UL>&lf; + </xsl:if> +</xsl:template> + +<xsl:template match="part|reference|preface|chapter|bibliography|appendix|article|glossary" + mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="article|reference|preface|chapter|appendix|refentry|section|sect1|bibliodiv"> + <UL>&lf; + <xsl:apply-templates + select="article|reference|preface|chapter|appendix|refentry|section|sect1|bibliodiv" + mode="hhc"/> + </UL> + </xsl:if> +</xsl:template> + +<xsl:template match="section" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="section[count(ancestor::section) < $htmlhelp.hhc.section.depth]|refentry"> + <UL>&lf; + <xsl:apply-templates select="section|refentry" mode="hhc"/> + </UL> + </xsl:if> +</xsl:template> + +<xsl:template match="sect1" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="sect2[$htmlhelp.hhc.section.depth > 1]|refentry"> + <UL>&lf; + <xsl:apply-templates select="sect2|refentry" + mode="hhc"/> + </UL> + </xsl:if> +</xsl:template> + +<xsl:template match="sect2" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="sect3[$htmlhelp.hhc.section.depth > 2]|refentry"> + <UL>&lf; + <xsl:apply-templates select="sect3|refentry" + mode="hhc"/> + </UL> + </xsl:if> +</xsl:template> + +<xsl:template match="sect3" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="sect4[$htmlhelp.hhc.section.depth > 3]|refentry"> + <UL>&lf; + <xsl:apply-templates select="sect4|refentry" + mode="hhc"/> + </UL> + </xsl:if> +</xsl:template> + +<xsl:template match="sect4" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="sect5[$htmlhelp.hhc.section.depth > 4]|refentry"> + <UL>&lf; + <xsl:apply-templates select="sect5|refentry" + mode="hhc"/> + </UL> + </xsl:if> +</xsl:template> + +<xsl:template match="sect5|refentry|colophon|bibliodiv" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="refentry"> + <UL>&lf; + <xsl:apply-templates select="refentry" + mode="hhc"/> + </UL> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="indexterm"> + <xsl:choose> + <xsl:when test="$htmlhelp.use.hhk = 0"> + + <xsl:variable name="primary" select="normalize-space(primary)"/> + <xsl:variable name="secondary" select="normalize-space(secondary)"/> + <xsl:variable name="tertiary" select="normalize-space(tertiary)"/> + + <xsl:variable name="text"> + <xsl:value-of select="$primary"/> + <xsl:if test="secondary"> + <xsl:text>, </xsl:text> + <xsl:value-of select="$secondary"/> + </xsl:if> + <xsl:if test="tertiary"> + <xsl:text>, </xsl:text> + <xsl:value-of select="$tertiary"/> + </xsl:if> + </xsl:variable> + + <xsl:if test="secondary"> + <xsl:if test="not(//indexterm[normalize-space(primary)=$primary and not(secondary)])"> + <xsl:call-template name="write.indexterm"> + <xsl:with-param name="text" select="$primary"/> + </xsl:call-template> + </xsl:if> + </xsl:if> + + <xsl:if test="tertiary"> + <xsl:if test="not(//indexterm[normalize-space(primary)=$primary and + normalize-space(secondary)=$secondary and not(tertiary)])"> + <xsl:call-template name="write.indexterm"> + <xsl:with-param name="text" select="concat($primary, ', ', $secondary)"/> + </xsl:call-template> + </xsl:if> + </xsl:if> + + <xsl:call-template name="write.indexterm"> + <xsl:with-param name="text" select="$text"/> + </xsl:call-template> + + </xsl:when> + <xsl:otherwise> + <a> + <xsl:attribute name="name"> + <xsl:call-template name="object.id"/> + </xsl:attribute> + </a> + </xsl:otherwise> + + </xsl:choose> +</xsl:template> + +<xsl:template name="write.indexterm"> + <xsl:param name="text"/> + <OBJECT type="application/x-oleobject" + classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e"> + <param name="Keyword" value="{$text}"/> + </OBJECT> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="hhk"> + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename"> + <xsl:if test="$manifest.in.base.dir != 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + <xsl:value-of select="$htmlhelp.hhk"/> + </xsl:with-param> + <xsl:with-param name="indent" select="'no'"/> + <xsl:with-param name="content"><xsl:text disable-output-escaping="yes"><![CDATA[<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> +<HEAD> +<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1"> +<!-- Sitemap 1.0 --> +</HEAD><BODY> +<OBJECT type="text/site properties"> +</OBJECT> +<UL>]]> +</xsl:text> +<xsl:if test="($htmlhelp.use.hhk != 0) and $htmlhelp.generate.index"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="key('id',$rootid)" mode="hhk"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/" mode="hhk"/> + </xsl:otherwise> + </xsl:choose> +</xsl:if> +<xsl:text disable-output-escaping="yes"><![CDATA[</UL> +</BODY></HTML>]]> +</xsl:text></xsl:with-param> + <xsl:with-param name="encoding" select="$htmlhelp.encoding"/> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="indexterm[@class='endofrange']" mode="hhk"/> + +<xsl:template match="indexterm" mode="hhk"> + <xsl:variable name="primary" select="normalize-space(primary)"/> + <xsl:variable name="secondary" select="normalize-space(secondary)"/> + <xsl:variable name="tertiary" select="normalize-space(tertiary)"/> + + <xsl:call-template name="write.indexterm.hhk"> + <xsl:with-param name="text" select="$primary"/> + <xsl:with-param name="seealso" select="seealso"/> + </xsl:call-template> + + <xsl:if test="secondary"> + <xsl:if test="not(//indexterm[normalize-space(primary)=$primary and not(secondary)])"> + <xsl:call-template name="write.indexterm.hhk"> + <!-- We must create fake entry when there is secondary without primary --> + <xsl:with-param name="text" select="$primary"/> + <xsl:with-param name="seealso" select="$primary"/> + </xsl:call-template> + </xsl:if> + <UL> + <xsl:call-template name="write.indexterm.hhk"> + <xsl:with-param name="text" select="$secondary"/> + <xsl:with-param name="seealso" select="secondary/seealso"/> + </xsl:call-template> + <xsl:if test="tertiary"> + <UL>&lf; + <xsl:call-template name="write.indexterm.hhk"> + <xsl:with-param name="text" select="$tertiary"/> + <xsl:with-param name="seealso" select="tertiary/seealso"/> + </xsl:call-template> + </UL> + </xsl:if> + </UL> + </xsl:if> + +</xsl:template> + +<xsl:template name="write.indexterm.hhk"> + <xsl:param name="text"/> + <xsl:param name="seealso"/> + + <LI> <OBJECT type="text/sitemap">&lf; + <param name="Name"> + <xsl:attribute name="value"> + <xsl:value-of select="$text"/> + </xsl:attribute> + </param>&lf; + + <xsl:if test="not(seealso)"> + <xsl:variable name="href"> + <xsl:call-template name="href.target.with.base.dir"/> + </xsl:variable> + <xsl:variable name="title"> + <xsl:call-template name="nearest.title"> + <xsl:with-param name="object" select=".."/> + </xsl:call-template> + </xsl:variable> + + <param name="Name"> + <xsl:attribute name="value"> + <xsl:value-of select="$title"/> + </xsl:attribute> + </param>&lf; + <param name="Local"> + <xsl:attribute name="value"> + <xsl:value-of select="$href"/> + </xsl:attribute> + </param>&lf; + </xsl:if> + + <xsl:if test="seealso"> + <param name="See Also"> + <xsl:attribute name="value"> + <xsl:value-of select="$seealso"/> + </xsl:attribute> + </param>&lf; + </xsl:if> + </OBJECT></LI> +</xsl:template> + +<xsl:template match="text()" mode="hhk"/> + +<xsl:template name="nearest.title"> + <xsl:param name="object"/> + <xsl:apply-templates select="$object/ancestor-or-self::*[title][1]" mode="title.markup"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="hh-map"> + <xsl:call-template name="write.text.chunk"> + <xsl:with-param name="filename"> + <xsl:if test="$manifest.in.base.dir != 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + <xsl:value-of select="$htmlhelp.map.file"/> + </xsl:with-param> + <xsl:with-param name="method" select="'text'"/> + <xsl:with-param name="content"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="key('id',$rootid)" mode="hh-map"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/" mode="hh-map"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + <xsl:with-param name="encoding" select="$htmlhelp.encoding"/> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="processing-instruction('dbhh')" mode="hh-map"> + <xsl:variable name="topicname"> + <xsl:call-template name="pi-attribute"> + <xsl:with-param name="pis" + select="."/> + <xsl:with-param name="attribute" select="'topicname'"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="topicid"> + <xsl:call-template name="pi-attribute"> + <xsl:with-param name="pis" + select="."/> + <xsl:with-param name="attribute" select="'topicid'"/> + </xsl:call-template> + </xsl:variable> + <xsl:text>#define </xsl:text> + <xsl:value-of select="$topicname"/> + <xsl:text> </xsl:text> + <xsl:value-of select="$topicid"/> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="text()" mode="hh-map"/> + +<!-- ==================================================================== --> + +<xsl:template name="hh-alias"> + <xsl:call-template name="write.text.chunk"> + <xsl:with-param name="filename"> + <xsl:if test="$manifest.in.base.dir != 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + <xsl:value-of select="$htmlhelp.alias.file"/> + </xsl:with-param> + <xsl:with-param name="method" select="'text'"/> + <xsl:with-param name="content"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="key('id',$rootid)" mode="hh-alias"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/" mode="hh-alias"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + <xsl:with-param name="encoding" select="$htmlhelp.encoding"/> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="processing-instruction('dbhh')" mode="hh-alias"> + <xsl:variable name="topicname"> + <xsl:call-template name="pi-attribute"> + <xsl:with-param name="pis" + select="."/> + <xsl:with-param name="attribute" select="'topicname'"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="href"> + <xsl:call-template name="href.target.with.base.dir"> + <xsl:with-param name="object" select=".."/> + </xsl:call-template> + </xsl:variable> + <xsl:value-of select="$topicname"/> + <xsl:text>=</xsl:text> + <!-- Some versions of HH doesn't like fragment identifires, but some does. --> + <!-- <xsl:value-of select="substring-before(concat($href, '#'), '#')"/> --> + <xsl:value-of select="$href"/> + <xsl:text> </xsl:text> +</xsl:template> + +<xsl:template match="text()" mode="hh-alias"/> + +<!-- ==================================================================== --> +<!-- This code can be used to convert any number to hexadecimal format --> + + <h:hex> + <d>0</d> + <d>1</d> + <d>2</d> + <d>3</d> + <d>4</d> + <d>5</d> + <d>6</d> + <d>7</d> + <d>8</d> + <d>9</d> + <d>A</d> + <d>B</d> + <d>C</d> + <d>D</d> + <d>E</d> + <d>F</d> + </h:hex> + + <xsl:template name="toHex"> + <xsl:param name="n" select="0"/> + <xsl:param name="digit" select="$n mod 16"/> + <xsl:param name="rest" select="floor($n div 16)"/> + <xsl:if test="$rest > 0"> + <xsl:call-template name="toHex"> + <xsl:with-param name="n" select="$rest"/> + </xsl:call-template> + </xsl:if> + <xsl:value-of select="document('')//h:hex/d[$digit+1]"/> + </xsl:template> + +<!-- ==================================================================== --> +<!-- Modification to standard HTML stylesheets --> + +<!-- There are links from ToC pane to bibliodivs, so there must be anchor --> +<xsl:template match="bibliodiv/title"> + <h3 class="{name(.)}"> + <xsl:call-template name="anchor"> + <xsl:with-param name="node" select=".."/> + <xsl:with-param name="conditional" select="0"/> + </xsl:call-template> + <xsl:apply-templates/> + </h3> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp.xsl new file mode 100644 index 000000000..8e8ee95df --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/htmlhelp.xsl @@ -0,0 +1,22 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" + xmlns:exsl="http://exslt.org/common" + xmlns:set="http://exslt.org/sets" + version="1.0" + exclude-result-prefixes="doc exsl set"> + +<!-- ******************************************************************** + $Id: htmlhelp.xsl 1676 2002-06-12 13:21:54Z kosek $ + ******************************************************************** + + This file is used by htmlhelp.xsl if you want to generate source + files for HTML Help. It is based on the XSL DocBook Stylesheet + distribution (especially on JavaHelp code) from Norman Walsh. + + ******************************************************************** --> + +<xsl:import href="../html/chunk.xsl"/> +<xsl:include href="htmlhelp-common.xsl"/> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp-common.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp-common.xsl new file mode 100644 index 000000000..d2ab70eca --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp-common.xsl @@ -0,0 +1,1083 @@ +<?xml version="1.0" encoding="US-ASCII"?> +<!--This file was created automatically by xsl2profile--> +<!--from the DocBook XSL stylesheets.--> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" xmlns:exsl="http://exslt.org/common" xmlns:set="http://exslt.org/sets" xmlns:h="urn:x-hex" xmlns:ng="http://docbook.org/docbook-ng" xmlns:db="http://docbook.org/ns/docbook" xmlns:exslt="http://exslt.org/common" exslt:dummy="dummy" ng:dummy="dummy" db:dummy="dummy" extension-element-prefixes="exslt" version="1.0" exclude-result-prefixes="doc exsl set h db ng exslt"> + +<!-- ******************************************************************** + $Id: htmlhelp-common.xsl 8400 2009-04-08 07:44:54Z bobstayton $ + ******************************************************************** --> + +<!-- ==================================================================== --> +<!-- Customizations of standard HTML stylesheet parameters --> + +<!-- no navigation on pages by default, HTML Help provides its own navigation controls --> +<xsl:param name="suppress.navigation" select="1"/> + +<!-- no separate HTML page with index, index is built inside CHM index pane --> +<xsl:param name="generate.index" select="0"/> + +<!-- ==================================================================== --> + +<xsl:param name="htmlhelp.generate.index" select="//indexterm[1]|//db:indexterm[1]|//ng:indexterm[1]"/> + +<!-- Set up HTML Help flag --> +<xsl:variable name="htmlhelp.output" select="1"/> + +<!-- ==================================================================== --> + +<xslo:include xmlns:xslo="http://www.w3.org/1999/XSL/Transform" href="../profiling/profile-mode.xsl"/><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-content"><xslo:choose><xslo:when test="*/self::ng:* or */self::db:*"><xslo:message>Note: namesp. cut : stripped namespace before processing</xslo:message><xslo:variable name="stripped-content"><xslo:apply-templates select="/" mode="stripNS"/></xslo:variable><xslo:message>Note: namesp. cut : processing stripped document</xslo:message><xslo:apply-templates select="exslt:node-set($stripped-content)" mode="profile"/></xslo:when><xslo:otherwise><xslo:apply-templates select="/" mode="profile"/></xslo:otherwise></xslo:choose></xslo:variable><xslo:variable xmlns:xslo="http://www.w3.org/1999/XSL/Transform" name="profiled-nodes" select="exslt:node-set($profiled-content)"/><xsl:template match="/"> + + <!-- * Get a title for current doc so that we let the user --> + <!-- * know what document we are processing at this point. --> + <xsl:variable name="doc.title"> + <xsl:call-template name="get.doc.title"/> + </xsl:variable> + <xsl:choose> + <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document, + toss the namespace and continue. Use the docbook5 namespaced + stylesheets for DocBook5 if you don't want to use this feature.--> + <xsl:when test="false()"/> + <xsl:otherwise> + <xsl:if test="$htmlhelp.only != 1"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:choose> + <xsl:when test="count($profiled-nodes//*[@id=$rootid]) = 0"> + <xsl:message terminate="yes"> + <xsl:text>ID '</xsl:text> + <xsl:value-of select="$rootid"/> + <xsl:text>' not found in document.</xsl:text> + </xsl:message> + </xsl:when> + <xsl:otherwise> + <xsl:message>Formatting from <xsl:value-of select="$rootid"/></xsl:message> + <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="process.root"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$collect.xref.targets = 'yes' or $collect.xref.targets = 'only'"> + <xsl:apply-templates select="$profiled-nodes" mode="collect.targets"/> + </xsl:if> + <xsl:if test="$collect.xref.targets != 'only'"> + <xsl:apply-templates select="$profiled-nodes" mode="process.root"/> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + + <xsl:if test="$collect.xref.targets != 'only'"> + <xsl:call-template name="hhp"/> + <xsl:call-template name="hhc"/> + <xsl:if test="($rootid = '' and //processing-instruction('dbhh')) or ($rootid != '' and $profiled-nodes//*[@id=$rootid]//processing-instruction('dbhh'))"> + <xsl:call-template name="hh-map"/> + <xsl:call-template name="hh-alias"/> + </xsl:if> + <xsl:if test="$htmlhelp.generate.index"> + <xsl:call-template name="hhk"/> + </xsl:if> + </xsl:if> +</xsl:otherwise> +</xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="hhp"> + <xsl:call-template name="write.text.chunk"> + <xsl:with-param name="filename"> + <xsl:if test="$manifest.in.base.dir != 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + <xsl:value-of select="$htmlhelp.hhp"/> + </xsl:with-param> + <xsl:with-param name="method" select="'text'"/> + <xsl:with-param name="content"> + <xsl:call-template name="hhp-main"/> + </xsl:with-param> + <xsl:with-param name="encoding" select="$htmlhelp.encoding"/> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> +</xsl:template> + +<!-- ==================================================================== --> +<xsl:template name="hhp-main"> + + <xsl:variable name="raw.help.title"> + <xsl:choose> + <xsl:when test="$htmlhelp.title = ''"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="title.markup"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$profiled-nodes/*" mode="title.markup"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$htmlhelp.title"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="help.title" select="normalize-space($raw.help.title)"/> + +<xsl:variable name="default.topic"> + <xsl:choose> + <xsl:when test="$htmlhelp.default.topic != ''"> + <xsl:value-of select="$htmlhelp.default.topic"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="make-relative-filename"> + <xsl:with-param name="base.dir"> + <xsl:if test="$manifest.in.base.dir = 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + </xsl:with-param> + <xsl:with-param name="base.name"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="chunk-filename"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$profiled-nodes" mode="chunk-filename"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> +</xsl:variable> +<xsl:variable name="xnavigation"> + <xsl:text>0x</xsl:text> + <xsl:call-template name="toHex"> + <xsl:with-param name="n" select="9504 + $htmlhelp.show.menu * 65536 + $htmlhelp.show.advanced.search * 131072 + $htmlhelp.show.favorities * 4096 + (1 - $htmlhelp.show.toolbar.text) * 64 + $htmlhelp.remember.window.position * 262144"/> + </xsl:call-template> +</xsl:variable> +<xsl:variable name="xbuttons"> + <xsl:text>0x</xsl:text> + <xsl:call-template name="toHex"> + <xsl:with-param name="n" select="0 + $htmlhelp.button.hideshow * 2 + $htmlhelp.button.back * 4 + $htmlhelp.button.forward * 8 + $htmlhelp.button.stop * 16 + $htmlhelp.button.refresh * 32 + $htmlhelp.button.home * 64 + $htmlhelp.button.options * 4096 + $htmlhelp.button.print * 8192 + $htmlhelp.button.locate * 2048 + $htmlhelp.button.jump1 * 262144 + $htmlhelp.button.jump2 * 524288 + $htmlhelp.button.next * 2097152 + $htmlhelp.button.prev * 4194304 + $htmlhelp.button.zoom * 1048576"/> + </xsl:call-template> +</xsl:variable> +<xsl:text>[OPTIONS] +</xsl:text> +<xsl:if test="$htmlhelp.generate.index"> +<xsl:text>Auto Index=Yes +</xsl:text></xsl:if> +<xsl:if test="$htmlhelp.hhc.binary != 0"> +<xsl:text>Binary TOC=Yes +</xsl:text></xsl:if> +<xsl:text>Compatibility=1.1 or later +Compiled file=</xsl:text><xsl:value-of select="$htmlhelp.chm"/><xsl:text> +Contents file=</xsl:text><xsl:value-of select="$htmlhelp.hhc"/><xsl:text> +</xsl:text> +<xsl:if test="$htmlhelp.hhp.window != ''"> +<xsl:text>Default Window=</xsl:text><xsl:value-of select="$htmlhelp.hhp.window"/><xsl:text> +</xsl:text></xsl:if> +<xsl:text>Default topic=</xsl:text><xsl:value-of select="$default.topic"/> +<xsl:text> +Display compile progress=</xsl:text> + <xsl:choose> + <xsl:when test="$htmlhelp.display.progress != 1"> + <xsl:text>No</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>Yes</xsl:text> + </xsl:otherwise> + </xsl:choose> +<xsl:text> +Full-text search=Yes +</xsl:text> +<xsl:if test="$htmlhelp.generate.index"> +<xsl:text>Index file=</xsl:text><xsl:value-of select="$htmlhelp.hhk"/><xsl:text> +</xsl:text></xsl:if> +<xsl:text>Language=</xsl:text> +<xsl:for-each select="*"> <!-- Change context from / to root element --> + <xsl:call-template name="gentext.template"> + <xsl:with-param name="context" select="'htmlhelp'"/> + <xsl:with-param name="name" select="'langcode'"/> + </xsl:call-template> +</xsl:for-each> +<xsl:text> +Title=</xsl:text> + <xsl:value-of select="$help.title"/> +<xsl:text> +Enhanced decompilation=</xsl:text> + <xsl:choose> + <xsl:when test="$htmlhelp.enhanced.decompilation != 0"> + <xsl:text>Yes</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>No</xsl:text> + </xsl:otherwise> + </xsl:choose> + +<xsl:if test="$htmlhelp.hhp.window != ''"> + <xsl:text> + +[WINDOWS] +</xsl:text> +<xsl:value-of select="$htmlhelp.hhp.window"/> +<xsl:text>="</xsl:text> +<xsl:value-of select="$help.title"/> +<xsl:text>","</xsl:text><xsl:value-of select="$htmlhelp.hhc"/> +<xsl:text>",</xsl:text> +<xsl:if test="$htmlhelp.generate.index"> + <xsl:text>"</xsl:text> + <xsl:value-of select="$htmlhelp.hhk"/> + <xsl:text>"</xsl:text> +</xsl:if> +<xsl:text>,"</xsl:text> +<xsl:value-of select="$default.topic"/> +<xsl:text>",</xsl:text> +<xsl:text>"</xsl:text> +<xsl:choose> + <xsl:when test="$htmlhelp.button.home != 0"> + <xsl:value-of select="$htmlhelp.button.home.url"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$default.topic"/> + </xsl:otherwise> +</xsl:choose> +<xsl:text>"</xsl:text> +<xsl:text>,</xsl:text> +<xsl:if test="$htmlhelp.button.jump1 != 0"> + <xsl:text>"</xsl:text> + <xsl:value-of select="$htmlhelp.button.jump1.url"/> + <xsl:text>"</xsl:text> +</xsl:if> +<xsl:text>,</xsl:text> +<xsl:if test="$htmlhelp.button.jump1 != 0"> + <xsl:text>"</xsl:text> + <xsl:value-of select="$htmlhelp.button.jump1.title"/> + <xsl:text>"</xsl:text> +</xsl:if> +<xsl:text>,</xsl:text> +<xsl:if test="$htmlhelp.button.jump2 != 0"> + <xsl:text>"</xsl:text> + <xsl:value-of select="$htmlhelp.button.jump2.url"/> + <xsl:text>"</xsl:text> +</xsl:if> +<xsl:text>,</xsl:text> +<xsl:if test="$htmlhelp.button.jump2 != 0"> + <xsl:text>"</xsl:text> + <xsl:value-of select="$htmlhelp.button.jump2.title"/> + <xsl:text>"</xsl:text> +</xsl:if> +<xsl:text>,</xsl:text> +<xsl:value-of select="$xnavigation"/> +<xsl:text>,</xsl:text><xsl:value-of select="$htmlhelp.hhc.width"/><xsl:text>,</xsl:text> +<xsl:value-of select="$xbuttons"/> +<xsl:text>,</xsl:text><xsl:value-of select="$htmlhelp.window.geometry"/><xsl:text>,,,,,,,0 +</xsl:text> +</xsl:if> + +<!-- + Needs more investigation to generate propetly all fields +<xsl:text>search="</xsl:text> +<xsl:value-of select="normalize-space(//title[1])"/> +<xsl:text>","toc.hhc","index.hhk","</xsl:text> +<xsl:value-of select="$root.filename"/> +<xsl:text>.html","</xsl:text> +<xsl:value-of select="$root.filename"/> +<xsl:text>.html",,,,,</xsl:text> +<xsl:value-of select="$xnavigation"/> +<xsl:text>,</xsl:text> +<xsl:value-of select="$htmlhelp.hhc.width"/> +<xsl:text>,</xsl:text> +<xsl:value-of select="$xbuttons"/> +<xsl:text>,</xsl:text> +<xsl:value-of select="$htmlhelp.window.geometry"/> +<xsl:text>,,,,,2,,0 +</xsl:text> +--> + +<xsl:if test="$htmlhelp.hhp.windows"> + <xsl:value-of select="$htmlhelp.hhp.windows"/> +</xsl:if> +<xsl:text> + +[FILES] +</xsl:text> + +<xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="enumerate-files"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$profiled-nodes" mode="enumerate-files"/> + </xsl:otherwise> +</xsl:choose> + +<xsl:if test="$htmlhelp.enumerate.images"> + <xsl:variable name="imagelist"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="enumerate-images"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$profiled-nodes" mode="enumerate-images"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <xsl:when test="$exsl.node.set.available != 0 and function-available('set:distinct')"> + <xsl:for-each select="set:distinct(exsl:node-set($imagelist)/filename)"> + <xsl:value-of select="."/> + <xsl:text> +</xsl:text> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$imagelist"/> + </xsl:otherwise> + </xsl:choose> +</xsl:if> + +<xsl:if test="($htmlhelp.force.map.and.alias != 0) or ($rootid = '' and //processing-instruction('dbhh')) or ($rootid != '' and $profiled-nodes//*[@id=$rootid]//processing-instruction('dbhh'))"> + <xsl:text> +[ALIAS] +#include </xsl:text><xsl:value-of select="$htmlhelp.alias.file"/><xsl:text> + +[MAP] +#include </xsl:text><xsl:value-of select="$htmlhelp.map.file"/><xsl:text> +</xsl:text> +</xsl:if> + +<xsl:value-of select="$htmlhelp.hhp.tail"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="graphic|inlinegraphic[@format!='linespecific']" mode="enumerate-images"> + <xsl:call-template name="write.filename.enumerate-images"> + <xsl:with-param name="filename"> + <xsl:call-template name="mediaobject.filename.enumerate-images"> + <xsl:with-param name="object" select="."/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + +<xsl:template match="mediaobject|inlinemediaobject" mode="enumerate-images"> + <xsl:call-template name="select.mediaobject.enumerate-images"/> +</xsl:template> + +<xsl:template name="select.mediaobject.enumerate-images"> + <xsl:param name="olist" select="imageobject|imageobjectco |videoobject|audioobject|textobject"/> + <xsl:param name="count">1</xsl:param> + + <xsl:if test="$count <= count($olist)"> + <xsl:variable name="object" select="$olist[position()=$count]"/> + + <xsl:variable name="useobject"> + <xsl:choose> + <!-- The phrase is never used --> + <xsl:when test="name($object)='textobject' and $object/phrase"> + <xsl:text>0</xsl:text> + </xsl:when> + <!-- The first textobject is a reasonable fallback (but not for image in HH) --> + <xsl:when test="name($object)='textobject'"> + <xsl:text>0</xsl:text> + </xsl:when> + <!-- If there's only one object, use it --> + <xsl:when test="$count = 1 and count($olist) = 1"> + <xsl:text>1</xsl:text> + </xsl:when> + <!-- Otherwise, see if this one is a useable graphic --> + <xsl:otherwise> + <xsl:choose> + <!-- peek inside imageobjectco to simplify the test --> + <xsl:when test="local-name($object) = 'imageobjectco'"> + <xsl:call-template name="is.acceptable.mediaobject"> + <xsl:with-param name="object" select="$object/imageobject"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="is.acceptable.mediaobject"> + <xsl:with-param name="object" select="$object"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$useobject='1' and $object[not(*/@format='linespecific')]"> + <xsl:call-template name="write.filename.enumerate-images"> + <xsl:with-param name="filename"> + <xsl:call-template name="mediaobject.filename.enumerate-images"> + <xsl:with-param name="object" select="$object"/> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="select.mediaobject.enumerate-images"> + <xsl:with-param name="olist" select="$olist"/> + <xsl:with-param name="count" select="$count + 1"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> +</xsl:template> + +<xsl:template name="mediaobject.filename.enumerate-images"> + <xsl:param name="object"/> + + <xsl:variable name="urifilename"> + <xsl:call-template name="mediaobject.filename"> + <xsl:with-param name="object" select="$object"/> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="filename"> + <xsl:choose> + <xsl:when test="starts-with($urifilename, 'file:/')"> + <xsl:value-of select="substring-after($urifilename, 'file:/')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$urifilename"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:value-of select="translate($filename, '/', '\')"/> + +</xsl:template> + +<xsl:template match="text()" mode="enumerate-images"> +</xsl:template> + +<xsl:template name="write.filename.enumerate-images"> + <xsl:param name="filename"/> + <xsl:choose> + <xsl:when test="function-available('exsl:node-set') and function-available('set:distinct')"> + <filename><xsl:value-of select="$filename"/></filename> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$filename"/> + <xsl:text> +</xsl:text> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- ==================================================================== --> + +<!-- HHC and HHK files are processed by compiler line by line + and therefore are very sensitive to whitespaces (linefeeds for sure). --> + +<xsl:template name="hhc"> + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename"> + <xsl:if test="$manifest.in.base.dir != 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + <xsl:value-of select="$htmlhelp.hhc"/> + </xsl:with-param> + <xsl:with-param name="indent" select="'no'"/> + <xsl:with-param name="content"> + <xsl:call-template name="hhc-main"/> + </xsl:with-param> + <xsl:with-param name="encoding" select="$htmlhelp.encoding"/> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="hhc-main"> +<HTML><xsl:text> +</xsl:text> + <HEAD/><xsl:text> +</xsl:text> + <BODY><xsl:text> +</xsl:text> + <xsl:if test="$htmlhelp.hhc.folders.instead.books != 0"> + <OBJECT type="text/site properties"><xsl:text> +</xsl:text> + <param name="ImageType" value="Folder"/><xsl:text> +</xsl:text> + </OBJECT><xsl:text> +</xsl:text> + </xsl:if> + <xsl:variable name="content"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="hhc"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$profiled-nodes" mode="hhc"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:choose> + <xsl:when test="$htmlhelp.hhc.show.root != 0"> + <UL><xsl:text> +</xsl:text> + <xsl:copy-of select="$content"/> + </UL><xsl:text> +</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$content"/> + </xsl:otherwise> + </xsl:choose> + + </BODY> +</HTML> +</xsl:template> + +<xsl:template name="hhc.entry"> + <xsl:param name="title"> + <xsl:if test="$htmlhelp.autolabel=1"> + <xsl:variable name="label.markup"> + <xsl:apply-templates select="." mode="label.markup"/> + </xsl:variable> + <xsl:if test="normalize-space($label.markup)"> + <xsl:value-of select="concat($label.markup,$autotoc.label.separator)"/> + </xsl:if> + </xsl:if> + <xsl:apply-templates select="." mode="title.markup"/> + </xsl:param> + + <LI><OBJECT type="text/sitemap"><xsl:text> +</xsl:text> + <param name="Name"> + <xsl:attribute name="value"> + <xsl:value-of select="normalize-space($title)"/> + </xsl:attribute> + </param><xsl:text> +</xsl:text> + <param name="Local"> + <xsl:attribute name="value"> + <xsl:call-template name="href.target.with.base.dir"/> + </xsl:attribute> + </param> + </OBJECT></LI><xsl:text> +</xsl:text> +</xsl:template> + +<xsl:template match="set" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="book"> + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + <UL> + <xsl:if test="contains($toc.params, 'toc') and $htmlhelp.hhc.show.root = 0"> + <LI><OBJECT type="text/sitemap"><xsl:text> +</xsl:text> + <param name="Name"> + <xsl:attribute name="value"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'TableofContents'"/> + </xsl:call-template> + </xsl:attribute> + </param><xsl:text> +</xsl:text> + <param name="Local"> + <xsl:attribute name="value"> + <xsl:choose> + <xsl:when test="$chunk.tocs.and.lots != 0"> + <xsl:apply-templates select="." mode="recursive-chunk-filename"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + <xsl:text>-toc</xsl:text> + <xsl:value-of select="$html.ext"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="href.target.with.base.dir"/> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + </param> + </OBJECT></LI><xsl:text> +</xsl:text> + </xsl:if> + <xsl:apply-templates select="book" mode="hhc"/> + </UL><xsl:text> +</xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template match="book" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="part|reference|preface|chapter|appendix|bibliography|article|colophon|glossary"> + <xsl:variable name="toc.params"> + <xsl:call-template name="find.path.params"> + <xsl:with-param name="table" select="normalize-space($generate.toc)"/> + </xsl:call-template> + </xsl:variable> + <UL> + <xsl:if test="contains($toc.params, 'toc') and $htmlhelp.hhc.show.root = 0 and not(parent::*)"> + <LI><OBJECT type="text/sitemap"><xsl:text> +</xsl:text> + <param name="Name"> + <xsl:attribute name="value"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'TableofContents'"/> + </xsl:call-template> + </xsl:attribute> + </param><xsl:text> +</xsl:text> + <param name="Local"> + <xsl:attribute name="value"> + <xsl:choose> + <xsl:when test="$chunk.tocs.and.lots != 0"> + <xsl:apply-templates select="." mode="recursive-chunk-filename"> + <xsl:with-param name="recursive" select="true()"/> + </xsl:apply-templates> + <xsl:text>-toc</xsl:text> + <xsl:value-of select="$html.ext"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="href.target.with.base.dir"/> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + </param> + </OBJECT></LI><xsl:text> +</xsl:text> + </xsl:if> + <xsl:apply-templates select="part|reference|preface|chapter|bibliography|appendix|article|colophon|glossary" mode="hhc"/> + </UL><xsl:text> +</xsl:text> + </xsl:if> +</xsl:template> + +<xsl:template match="part|reference|preface|chapter|bibliography|appendix|article|glossary" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="article|reference|preface|chapter|appendix|refentry|section|sect1|bibliodiv"> + <UL><xsl:text> +</xsl:text> + <xsl:apply-templates select="article|reference|preface|chapter|appendix|refentry|section|sect1|bibliodiv" mode="hhc"/> + </UL> + </xsl:if> +</xsl:template> + +<xsl:template match="section" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="section[count(ancestor::section) < $htmlhelp.hhc.section.depth]|refentry"> + <UL><xsl:text> +</xsl:text> + <xsl:apply-templates select="section|refentry" mode="hhc"/> + </UL> + </xsl:if> +</xsl:template> + +<xsl:template match="sect1" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="sect2[$htmlhelp.hhc.section.depth > 1]|refentry"> + <UL><xsl:text> +</xsl:text> + <xsl:apply-templates select="sect2|refentry" mode="hhc"/> + </UL> + </xsl:if> +</xsl:template> + +<xsl:template match="sect2" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="sect3[$htmlhelp.hhc.section.depth > 2]|refentry"> + <UL><xsl:text> +</xsl:text> + <xsl:apply-templates select="sect3|refentry" mode="hhc"/> + </UL> + </xsl:if> +</xsl:template> + +<xsl:template match="sect3" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="sect4[$htmlhelp.hhc.section.depth > 3]|refentry"> + <UL><xsl:text> +</xsl:text> + <xsl:apply-templates select="sect4|refentry" mode="hhc"/> + </UL> + </xsl:if> +</xsl:template> + +<xsl:template match="sect4" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="sect5[$htmlhelp.hhc.section.depth > 4]|refentry"> + <UL><xsl:text> +</xsl:text> + <xsl:apply-templates select="sect5|refentry" mode="hhc"/> + </UL> + </xsl:if> +</xsl:template> + +<xsl:template match="sect5|refentry|colophon|bibliodiv" mode="hhc"> + <xsl:if test="$htmlhelp.hhc.show.root != 0 or parent::*"> + <xsl:call-template name="hhc.entry"/> + </xsl:if> + <xsl:if test="refentry"> + <UL><xsl:text> +</xsl:text> + <xsl:apply-templates select="refentry" mode="hhc"/> + </UL> + </xsl:if> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template match="indexterm"> + <xsl:choose> + <xsl:when test="$htmlhelp.use.hhk = 0"> + + <xsl:variable name="primary" select="normalize-space(primary)"/> + <xsl:variable name="secondary" select="normalize-space(secondary)"/> + <xsl:variable name="tertiary" select="normalize-space(tertiary)"/> + + <xsl:variable name="text"> + <xsl:value-of select="$primary"/> + <xsl:if test="secondary"> + <xsl:text>, </xsl:text> + <xsl:value-of select="$secondary"/> + </xsl:if> + <xsl:if test="tertiary"> + <xsl:text>, </xsl:text> + <xsl:value-of select="$tertiary"/> + </xsl:if> + </xsl:variable> + + <xsl:if test="secondary"> + <xsl:if test="not(//indexterm[normalize-space(primary)=$primary and not(secondary)])"> + <xsl:call-template name="write.indexterm"> + <xsl:with-param name="text" select="$primary"/> + </xsl:call-template> + </xsl:if> + </xsl:if> + + <xsl:if test="tertiary"> + <xsl:if test="not(//indexterm[normalize-space(primary)=$primary and normalize-space(secondary)=$secondary and not(tertiary)])"> + <xsl:call-template name="write.indexterm"> + <xsl:with-param name="text" select="concat($primary, ', ', $secondary)"/> + </xsl:call-template> + </xsl:if> + </xsl:if> + + <xsl:call-template name="write.indexterm"> + <xsl:with-param name="text" select="$text"/> + </xsl:call-template> + + </xsl:when> + <xsl:otherwise> + <a> + <xsl:attribute name="name"> + <xsl:call-template name="object.id"/> + </xsl:attribute> + </a> + </xsl:otherwise> + + </xsl:choose> +</xsl:template> + +<xsl:template name="write.indexterm"> + <xsl:param name="text"/> + <OBJECT type="application/x-oleobject" classid="clsid:1e2a7bd0-dab9-11d0-b93a-00c04fc99f9e"> + <param name="Keyword" value="{$text}"/> + </OBJECT> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="hhk"> + <xsl:call-template name="write.chunk"> + <xsl:with-param name="filename"> + <xsl:if test="$manifest.in.base.dir != 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + <xsl:value-of select="$htmlhelp.hhk"/> + </xsl:with-param> + <xsl:with-param name="indent" select="'no'"/> + <xsl:with-param name="content"><xsl:text disable-output-escaping="yes"><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<HTML> +<HEAD> +<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1"> +<!-- Sitemap 1.0 --> +</HEAD><BODY> +<OBJECT type="text/site properties"> +</OBJECT> +<UL> +</xsl:text> +<xsl:if test="($htmlhelp.use.hhk != 0) and $htmlhelp.generate.index"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="hhk"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$profiled-nodes" mode="hhk"/> + </xsl:otherwise> + </xsl:choose> +</xsl:if> +<xsl:text disable-output-escaping="yes"></UL> +</BODY></HTML> +</xsl:text></xsl:with-param> + <xsl:with-param name="encoding" select="$htmlhelp.encoding"/> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="indexterm[@class='endofrange']" mode="hhk"/> + +<xsl:template match="indexterm" mode="hhk"> + <xsl:variable name="primary" select="normalize-space(primary)"/> + <xsl:variable name="secondary" select="normalize-space(secondary)"/> + <xsl:variable name="tertiary" select="normalize-space(tertiary)"/> + + <xsl:call-template name="write.indexterm.hhk"> + <xsl:with-param name="text" select="$primary"/> + <xsl:with-param name="seealso" select="seealso"/> + </xsl:call-template> + + <xsl:if test="secondary"> + <xsl:if test="not(//indexterm[normalize-space(primary)=$primary and not(secondary)])"> + <xsl:call-template name="write.indexterm.hhk"> + <!-- We must create fake entry when there is secondary without primary --> + <xsl:with-param name="text" select="$primary"/> + <xsl:with-param name="seealso" select="$primary"/> + </xsl:call-template> + </xsl:if> + <UL> + <xsl:call-template name="write.indexterm.hhk"> + <xsl:with-param name="text" select="$secondary"/> + <xsl:with-param name="seealso" select="secondary/seealso"/> + </xsl:call-template> + <xsl:if test="tertiary"> + <UL><xsl:text> +</xsl:text> + <xsl:call-template name="write.indexterm.hhk"> + <xsl:with-param name="text" select="$tertiary"/> + <xsl:with-param name="seealso" select="tertiary/seealso"/> + </xsl:call-template> + </UL> + </xsl:if> + </UL> + </xsl:if> + +</xsl:template> + +<xsl:template name="write.indexterm.hhk"> + <xsl:param name="text"/> + <xsl:param name="seealso"/> + + <LI> <OBJECT type="text/sitemap"><xsl:text> +</xsl:text> + <param name="Name"> + <xsl:attribute name="value"> + <xsl:value-of select="$text"/> + </xsl:attribute> + </param><xsl:text> +</xsl:text> + + <xsl:if test="not(seealso)"> + <xsl:variable name="href"> + <xsl:call-template name="href.target.with.base.dir"/> + </xsl:variable> + <xsl:variable name="title"> + <xsl:call-template name="nearest.title"> + <xsl:with-param name="object" select=".."/> + </xsl:call-template> + </xsl:variable> + + <param name="Name"> + <xsl:attribute name="value"> + <xsl:value-of select="$title"/> + </xsl:attribute> + </param><xsl:text> +</xsl:text> + <param name="Local"> + <xsl:attribute name="value"> + <xsl:value-of select="$href"/> + </xsl:attribute> + </param><xsl:text> +</xsl:text> + </xsl:if> + + <xsl:if test="seealso"> + <param name="See Also"> + <xsl:attribute name="value"> + <xsl:value-of select="$seealso"/> + </xsl:attribute> + </param><xsl:text> +</xsl:text> + </xsl:if> + </OBJECT></LI> +</xsl:template> + +<xsl:template match="text()" mode="hhk"/> + +<xsl:template name="nearest.title"> + <xsl:param name="object"/> + <xsl:apply-templates select="$object/ancestor-or-self::*[title][1]" mode="title.markup"/> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="hh-map"> + <xsl:call-template name="write.text.chunk"> + <xsl:with-param name="filename"> + <xsl:if test="$manifest.in.base.dir != 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + <xsl:value-of select="$htmlhelp.map.file"/> + </xsl:with-param> + <xsl:with-param name="method" select="'text'"/> + <xsl:with-param name="content"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="hh-map"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$profiled-nodes" mode="hh-map"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + <xsl:with-param name="encoding" select="$htmlhelp.encoding"/> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="processing-instruction('dbhh')" mode="hh-map"> + <xsl:variable name="topicname"> + <xsl:call-template name="pi-attribute"> + <xsl:with-param name="pis" select="."/> + <xsl:with-param name="attribute" select="'topicname'"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="topicid"> + <xsl:call-template name="pi-attribute"> + <xsl:with-param name="pis" select="."/> + <xsl:with-param name="attribute" select="'topicid'"/> + </xsl:call-template> + </xsl:variable> + <xsl:text>#define </xsl:text> + <xsl:value-of select="$topicname"/> + <xsl:text> </xsl:text> + <xsl:value-of select="$topicid"/> + <xsl:text> +</xsl:text> +</xsl:template> + +<xsl:template match="text()" mode="hh-map"/> + +<!-- ==================================================================== --> + +<xsl:template name="hh-alias"> + <xsl:call-template name="write.text.chunk"> + <xsl:with-param name="filename"> + <xsl:if test="$manifest.in.base.dir != 0"> + <xsl:value-of select="$base.dir"/> + </xsl:if> + <xsl:value-of select="$htmlhelp.alias.file"/> + </xsl:with-param> + <xsl:with-param name="method" select="'text'"/> + <xsl:with-param name="content"> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:apply-templates select="$profiled-nodes//*[@id=$rootid]" mode="hh-alias"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="$profiled-nodes" mode="hh-alias"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + <xsl:with-param name="encoding" select="$htmlhelp.encoding"/> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> +</xsl:template> + +<xsl:template match="processing-instruction('dbhh')" mode="hh-alias"> + <xsl:variable name="topicname"> + <xsl:call-template name="pi-attribute"> + <xsl:with-param name="pis" select="."/> + <xsl:with-param name="attribute" select="'topicname'"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="href"> + <xsl:call-template name="href.target.with.base.dir"> + <xsl:with-param name="object" select=".."/> + </xsl:call-template> + </xsl:variable> + <xsl:value-of select="$topicname"/> + <xsl:text>=</xsl:text> + <!-- Some versions of HH doesn't like fragment identifires, but some does. --> + <!-- <xsl:value-of select="substring-before(concat($href, '#'), '#')"/> --> + <xsl:value-of select="$href"/> + <xsl:text> +</xsl:text> +</xsl:template> + +<xsl:template match="text()" mode="hh-alias"/> + +<!-- ==================================================================== --> +<!-- This code can be used to convert any number to hexadecimal format --> + + <h:hex> + <d>0</d> + <d>1</d> + <d>2</d> + <d>3</d> + <d>4</d> + <d>5</d> + <d>6</d> + <d>7</d> + <d>8</d> + <d>9</d> + <d>A</d> + <d>B</d> + <d>C</d> + <d>D</d> + <d>E</d> + <d>F</d> + </h:hex> + + <xsl:template name="toHex"> + <xsl:param name="n" select="0"/> + <xsl:param name="digit" select="$n mod 16"/> + <xsl:param name="rest" select="floor($n div 16)"/> + <xsl:if test="$rest > 0"> + <xsl:call-template name="toHex"> + <xsl:with-param name="n" select="$rest"/> + </xsl:call-template> + </xsl:if> + <xsl:value-of select="document('')//h:hex/d[$digit+1]"/> + </xsl:template> + +<!-- ==================================================================== --> +<!-- Modification to standard HTML stylesheets --> + +<!-- There are links from ToC pane to bibliodivs, so there must be anchor --> +<xsl:template match="bibliodiv/title"> + <h3 class="{name(.)}"> + <xsl:call-template name="anchor"> + <xsl:with-param name="node" select=".."/> + <xsl:with-param name="conditional" select="0"/> + </xsl:call-template> + <xsl:apply-templates/> + </h3> +</xsl:template> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp.xsl new file mode 100644 index 000000000..eddde3be1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/htmlhelp/profile-htmlhelp.xsl @@ -0,0 +1,22 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" + xmlns:exsl="http://exslt.org/common" + xmlns:set="http://exslt.org/sets" + version="1.0" + exclude-result-prefixes="doc exsl set"> + +<!-- ******************************************************************** + $Id: profile-htmlhelp.xsl 1676 2002-06-12 13:21:54Z kosek $ + ******************************************************************** + + This file is used by htmlhelp.xsl if you want to generate source + files for HTML Help. It is based on the XSL DocBook Stylesheet + distribution (especially on JavaHelp code) from Norman Walsh. + + ******************************************************************** --> + +<xsl:import href="../html/chunk.xsl"/> +<xsl:include href="profile-htmlhelp-common.xsl"/> + +</xsl:stylesheet> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/1.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/1.svg new file mode 100644 index 000000000..e2e87dc52 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/1.svg @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M10.428,10.411h0.56c3.78,0,4.788-1.96,4.872-3.444h3.22v19.88h-3.92V13.154h-4.732V10.411z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/10.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/10.svg new file mode 100644 index 000000000..4740f587b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/10.svg @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M3.815,10.758h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76v17.04h-3.36V13.11H3.815V10.758z"/> + <path style="fill:#FFFFFF;" d="M22.175,7.806c4.009,0,5.904,2.76,5.904,8.736c0,5.975-1.896,8.76-5.904,8.76 + c-4.008,0-5.904-2.785-5.904-8.76C16.271,10.566,18.167,7.806,22.175,7.806z M22.175,22.613c1.921,0,2.448-1.68,2.448-6.071 + c0-4.393-0.527-6.049-2.448-6.049c-1.92,0-2.448,1.656-2.448,6.049C19.727,20.934,20.255,22.613,22.175,22.613z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/11.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/11.svg new file mode 100644 index 000000000..09a0b2cf7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/11.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M5.209,10.412h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76V24.5h-3.36V12.764H5.209V10.412z"/> + <path style="fill:#FFFFFF;" d="M18.553,10.412h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76V24.5h-3.359V12.764h-4.056V10.412z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/12.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/12.svg new file mode 100644 index 000000000..9794044c7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/12.svg @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M4.813,10.412h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76V24.5h-3.36V12.764H4.813V10.412z"/> + <path style="fill:#FFFFFF;" d="M17.316,13.484c0-5.545,4.056-6.024,5.568-6.024c3.265,0,5.856,1.92,5.856,5.376 + c0,2.928-1.896,4.416-3.553,5.544c-2.256,1.584-3.432,2.353-3.815,3.145h7.392V24.5h-11.64c0.12-1.992,0.264-4.08,3.96-6.768 + c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.353-2.424c-2.352,0-2.423,1.944-2.447,3.192H17.316z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/13.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/13.svg new file mode 100644 index 000000000..64268bb4f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/13.svg @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M3.813,10.412h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76V24.5h-3.36V12.764H3.813V10.412z"/> + <path style="fill:#FFFFFF;" d="M20.611,14.636h0.529c1.008,0,2.855-0.096,2.855-2.304c0-0.624-0.288-2.185-2.137-2.185 + c-2.303,0-2.303,2.185-2.303,2.784h-3.12c0-3.191,1.8-5.472,5.64-5.472c2.279,0,5.279,1.152,5.279,4.752 + c0,1.728-1.08,2.808-2.039,3.24V15.5c0.6,0.168,2.568,1.056,2.568,3.96c0,3.216-2.377,5.496-5.809,5.496 + c-1.607,0-5.928-0.36-5.928-5.688h3.288l-0.024,0.024c0,0.912,0.24,2.976,2.496,2.976c1.344,0,2.52-0.911,2.52-2.808 + c0-2.328-2.256-2.424-3.816-2.424V14.636z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/14.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/14.svg new file mode 100644 index 000000000..469aa9748 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/14.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M4.146,10.412h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76V24.5h-3.36V12.764H4.146V10.412z"/> + <path style="fill:#FFFFFF;" d="M28.457,20.732h-1.896V24.5h-3.36v-3.768h-6.72v-2.904L22.746,7.46h3.815v10.656h1.896V20.732z + M23.201,18.116c0-4.128,0.072-6.792,0.072-7.32h-0.048l-4.272,7.32H23.201z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/15.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/15.svg new file mode 100644 index 000000000..8202233ef --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/15.svg @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M3.479,11.079h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76v17.04h-3.36V13.43H3.479V11.079z"/> + <path style="fill:#FFFFFF;" d="M19.342,14.943c0.625-0.433,1.392-0.937,3.048-0.937c2.279,0,5.16,1.584,5.16,5.496 + c0,2.328-1.176,6.121-6.192,6.121c-2.664,0-5.376-1.584-5.544-5.016h3.36c0.144,1.391,0.888,2.326,2.376,2.326 + c1.607,0,2.544-1.367,2.544-3.191c0-1.512-0.72-3.047-2.496-3.047c-0.456,0-1.608,0.023-2.256,1.223l-3-0.143l1.176-9.361h9.36 + v2.832h-6.937L19.342,14.943z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/16.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/16.svg new file mode 100644 index 000000000..01d6bf816 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/16.svg @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M3.813,10.412h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76V24.5h-3.36V12.764H3.813V10.412z"/> + <path style="fill:#FFFFFF;" d="M24.309,11.78c-0.097-0.96-0.721-1.633-1.969-1.633c-2.184,0-2.688,2.496-2.808,4.704L19.58,14.9 + c0.456-0.624,1.296-1.416,3.191-1.416c3.529,0,5.209,2.712,5.209,5.256c0,3.72-2.28,6.216-5.568,6.216 + c-5.16,0-6.168-4.32-6.168-8.568c0-3.24,0.432-8.928,6.336-8.928c0.695,0,2.641,0.264,3.48,1.104 + c0.936,0.912,1.271,1.416,1.584,3.217H24.309z M22.172,16.172c-1.271,0-2.568,0.792-2.568,2.928c0,1.849,1.056,3.168,2.664,3.168 + c1.225,0,2.353-0.936,2.353-3.239C24.62,16.868,23.229,16.172,22.172,16.172z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/17.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/17.svg new file mode 100644 index 000000000..0a04c5560 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/17.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M3.479,11.079h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76v17.04h-3.36V13.43H3.479V11.079z"/> + <path style="fill:#FFFFFF;" d="M27.838,11.006c-1.631,1.776-5.807,6.816-6.215,14.16h-3.457c0.36-6.816,4.632-12.24,6.072-13.776 + h-8.472l0.072-2.976h12V11.006z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/18.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/18.svg new file mode 100644 index 000000000..1cb891b34 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/18.svg @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M4.813,10.412h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76V24.5h-3.36V12.764H4.813V10.412z"/> + <path style="fill:#FFFFFF;" d="M23.172,24.956c-4.392,0-5.904-2.856-5.904-5.185c0-0.863,0-3.119,2.592-4.319 + c-1.344-0.672-2.064-1.752-2.064-3.336c0-2.904,2.328-4.656,5.304-4.656c3.528,0,5.4,2.088,5.4,4.44 + c0,1.464-0.6,2.712-1.968,3.432c1.632,0.815,2.544,1.896,2.544,4.104C29.076,21.596,27.684,24.956,23.172,24.956z M23.124,16.916 + c-1.224,0-2.4,0.792-2.4,2.64c0,1.632,0.936,2.712,2.472,2.712c1.752,0,2.424-1.512,2.424-2.688 + C25.62,18.38,24.996,16.916,23.124,16.916z M25.284,12.26c0-1.296-0.888-2.112-1.968-2.112c-1.512,0-2.305,0.864-2.305,2.112 + c0,1.008,0.744,2.112,2.185,2.112C24.516,14.372,25.284,13.484,25.284,12.26z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/19.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/19.svg new file mode 100644 index 000000000..e6fbb179f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/19.svg @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M4.146,10.746h0.48c3.24,0,4.104-1.681,4.176-2.952h2.76v17.041h-3.36V13.097H4.146V10.746z"/> + <path style="fill:#FFFFFF;" d="M20.225,20.898v0.023c0.192,1.176,0.936,1.68,1.968,1.68c1.392,0,2.783-1.176,2.808-4.752 + l-0.048-0.049c-0.768,1.152-2.088,1.441-3.24,1.441c-3.264,0-5.16-2.473-5.16-5.329c0-4.176,2.472-6.12,5.808-6.12 + c5.904,0,6,6.36,6,8.76c0,6.601-3.12,8.736-6.192,8.736c-2.904,0-4.992-1.68-5.28-4.391H20.225z M22.434,16.553 + c1.176,0,2.472-0.84,2.472-2.855c0-1.944-0.841-3.145-2.568-3.145c-0.864,0-2.424,0.433-2.424,2.88 + C19.913,16.001,21.161,16.553,22.434,16.553z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/2.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/2.svg new file mode 100644 index 000000000..07d03395d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/2.svg @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M9.668,12.328c0-6.469,4.732-7.028,6.496-7.028c3.808,0,6.833,2.24,6.833,6.271 + c0,3.416-2.213,5.152-4.145,6.469c-2.632,1.848-4.004,2.744-4.452,3.668h8.624v3.472H9.444c0.14-2.324,0.308-4.76,4.62-7.896 + c3.584-2.604,5.012-3.612,5.012-5.853c0-1.315-0.84-2.828-2.744-2.828c-2.744,0-2.828,2.269-2.856,3.725H9.668z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/20.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/20.svg new file mode 100644 index 000000000..ccbfd4031 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/20.svg @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376 + c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768 + c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/> + <path style="fill:#FFFFFF;" d="M23.172,7.46c4.008,0,5.904,2.76,5.904,8.736c0,5.976-1.896,8.76-5.904,8.76 + s-5.904-2.784-5.904-8.76C17.268,10.22,19.164,7.46,23.172,7.46z M23.172,22.268c1.92,0,2.448-1.68,2.448-6.071 + c0-4.393-0.528-6.049-2.448-6.049s-2.448,1.656-2.448,6.049C20.724,20.588,21.252,22.268,23.172,22.268z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/21.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/21.svg new file mode 100644 index 000000000..93ec53fdd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/21.svg @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M5.306,13.151c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376 + c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392v2.976H5.114c0.12-1.992,0.264-4.08,3.96-6.768 + c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H5.306z"/> + <path style="fill:#FFFFFF;" d="M19.49,10.079h0.48c3.239,0,4.104-1.681,4.176-2.952h2.761v17.04h-3.361V12.431H19.49V10.079z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/22.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/22.svg new file mode 100644 index 000000000..f48c5f3fd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/22.svg @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376 + c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768 + c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/> + <path style="fill:#FFFFFF;" d="M17.316,13.484c0-5.545,4.056-6.024,5.568-6.024c3.265,0,5.856,1.92,5.856,5.376 + c0,2.928-1.896,4.416-3.553,5.544c-2.256,1.584-3.432,2.353-3.815,3.145h7.392V24.5h-11.64c0.12-1.992,0.264-4.08,3.96-6.768 + c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.353-2.424c-2.352,0-2.423,1.944-2.447,3.192H17.316z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/23.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/23.svg new file mode 100644 index 000000000..662421295 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/23.svg @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376 + c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768 + c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/> + <path style="fill:#FFFFFF;" d="M21.612,14.636h0.528c1.008,0,2.855-0.096,2.855-2.304c0-0.624-0.287-2.185-2.136-2.185 + c-2.304,0-2.304,2.185-2.304,2.784h-3.12c0-3.191,1.8-5.472,5.64-5.472c2.28,0,5.28,1.152,5.28,4.752 + c0,1.728-1.08,2.808-2.04,3.24V15.5c0.6,0.168,2.568,1.056,2.568,3.96c0,3.216-2.377,5.496-5.809,5.496 + c-1.607,0-5.928-0.36-5.928-5.688h3.288l-0.024,0.024c0,0.912,0.24,2.976,2.496,2.976c1.344,0,2.521-0.911,2.521-2.808 + c0-2.328-2.257-2.424-3.816-2.424V14.636z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/24.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/24.svg new file mode 100644 index 000000000..a3d552535 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/24.svg @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M4.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376 + c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H4.78c0.12-1.992,0.264-4.08,3.96-6.768 + c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H4.972z"/> + <path style="fill:#FFFFFF;" d="M30.124,20.732h-1.896V24.5h-3.36v-3.768h-6.72v-2.904L24.412,7.46h3.816v10.656h1.896V20.732z + M24.868,18.116c0-4.128,0.071-6.792,0.071-7.32h-0.047l-4.272,7.32H24.868z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/25.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/25.svg new file mode 100644 index 000000000..56614a979 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/25.svg @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376 + c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768 + c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/> + <path style="fill:#FFFFFF;" d="M20.676,14.276c0.624-0.433,1.393-0.937,3.049-0.937c2.279,0,5.16,1.584,5.16,5.496 + c0,2.328-1.177,6.12-6.193,6.12c-2.664,0-5.375-1.584-5.543-5.016h3.36c0.144,1.392,0.889,2.327,2.376,2.327 + c1.608,0,2.544-1.367,2.544-3.191c0-1.513-0.72-3.048-2.496-3.048c-0.455,0-1.607,0.023-2.256,1.224l-3-0.144l1.176-9.36h9.36 + v2.832h-6.937L20.676,14.276z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/26.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/26.svg new file mode 100644 index 000000000..56faeaca3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/26.svg @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376 + c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768 + c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/> + <path style="fill:#FFFFFF;" d="M25.309,11.78c-0.097-0.96-0.721-1.633-1.969-1.633c-2.184,0-2.688,2.496-2.808,4.704L20.58,14.9 + c0.456-0.624,1.296-1.416,3.191-1.416c3.529,0,5.209,2.712,5.209,5.256c0,3.72-2.28,6.216-5.568,6.216 + c-5.16,0-6.168-4.32-6.168-8.568c0-3.24,0.432-8.928,6.336-8.928c0.695,0,2.641,0.264,3.48,1.104 + c0.936,0.912,1.271,1.416,1.584,3.217H25.309z M23.172,16.172c-1.271,0-2.568,0.792-2.568,2.928c0,1.849,1.056,3.168,2.664,3.168 + c1.225,0,2.353-0.936,2.353-3.239C25.62,16.868,24.229,16.172,23.172,16.172z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/27.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/27.svg new file mode 100644 index 000000000..a75c81215 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/27.svg @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376 + c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768 + c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/> + <path style="fill:#FFFFFF;" d="M29.172,10.34c-1.632,1.776-5.808,6.816-6.216,14.16H19.5c0.36-6.816,4.632-12.24,6.072-13.776 + H17.1l0.072-2.976h12V10.34z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/28.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/28.svg new file mode 100644 index 000000000..7f8cf1a35 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/28.svg @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376 + c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768 + c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/> + <path style="fill:#FFFFFF;" d="M23.172,24.956c-4.392,0-5.904-2.856-5.904-5.185c0-0.863,0-3.119,2.592-4.319 + c-1.344-0.672-2.064-1.752-2.064-3.336c0-2.904,2.328-4.656,5.304-4.656c3.528,0,5.4,2.088,5.4,4.44 + c0,1.464-0.6,2.712-1.968,3.432c1.632,0.815,2.544,1.896,2.544,4.104C29.076,21.596,27.684,24.956,23.172,24.956z M23.124,16.916 + c-1.224,0-2.4,0.792-2.4,2.64c0,1.632,0.936,2.712,2.472,2.712c1.752,0,2.424-1.512,2.424-2.688 + C25.62,18.38,24.996,16.916,23.124,16.916z M25.284,12.26c0-1.296-0.888-2.112-1.968-2.112c-1.512,0-2.305,0.864-2.305,2.112 + c0,1.008,0.744,2.112,2.185,2.112C24.516,14.372,25.284,13.484,25.284,12.26z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/29.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/29.svg new file mode 100644 index 000000000..cb63adf1f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/29.svg @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M3.972,13.484c0-5.545,4.056-6.024,5.568-6.024c3.264,0,5.856,1.92,5.856,5.376 + c0,2.928-1.896,4.416-3.552,5.544c-2.256,1.584-3.432,2.353-3.816,3.145h7.392V24.5H3.78c0.12-1.992,0.264-4.08,3.96-6.768 + c3.072-2.232,4.296-3.097,4.296-5.017c0-1.128-0.72-2.424-2.352-2.424c-2.352,0-2.424,1.944-2.448,3.192H3.972z"/> + <path style="fill:#FFFFFF;" d="M20.893,20.564v0.023c0.191,1.176,0.936,1.68,1.967,1.68c1.393,0,2.785-1.176,2.809-4.752 + l-0.048-0.048c-0.769,1.152-2.088,1.44-3.24,1.44c-3.264,0-5.16-2.473-5.16-5.328c0-4.176,2.472-6.12,5.807-6.12 + c5.904,0,6.001,6.36,6.001,8.76c0,6.601-3.12,8.736-6.192,8.736c-2.904,0-4.992-1.68-5.28-4.392H20.893z M23.1,16.22 + c1.176,0,2.473-0.84,2.473-2.855c0-1.944-0.84-3.145-2.568-3.145c-0.863,0-2.424,0.433-2.424,2.88 + C20.58,15.668,21.828,16.22,23.1,16.22z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/3.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/3.svg new file mode 100644 index 000000000..918be806f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/3.svg @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M15.127,14.005h0.616c1.176,0,3.332-0.112,3.332-2.688c0-0.728-0.336-2.548-2.492-2.548 + c-2.688,0-2.688,2.548-2.688,3.248h-3.64c0-3.724,2.1-6.384,6.58-6.384c2.66,0,6.16,1.344,6.16,5.544 + c0,2.016-1.261,3.276-2.38,3.78v0.056c0.699,0.196,2.996,1.232,2.996,4.62c0,3.752-2.772,6.412-6.776,6.412 + c-1.876,0-6.916-0.42-6.916-6.636h3.836l-0.028,0.027c0,1.064,0.28,3.473,2.912,3.473c1.568,0,2.94-1.064,2.94-3.276 + c0-2.716-2.632-2.828-4.452-2.828V14.005z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/30.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/30.svg new file mode 100644 index 000000000..dc43ba1e3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/30.svg @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M8.268,14.636h0.528c1.008,0,2.856-0.096,2.856-2.304c0-0.624-0.288-2.185-2.136-2.185 + c-2.304,0-2.304,2.185-2.304,2.784h-3.12c0-3.191,1.8-5.472,5.64-5.472c2.28,0,5.28,1.152,5.28,4.752 + c0,1.728-1.08,2.808-2.04,3.24V15.5c0.6,0.168,2.568,1.056,2.568,3.96c0,3.216-2.376,5.496-5.808,5.496 + c-1.608,0-5.928-0.36-5.928-5.688h3.288l-0.024,0.024c0,0.912,0.24,2.976,2.496,2.976c1.344,0,2.52-0.911,2.52-2.808 + c0-2.328-2.256-2.424-3.816-2.424V14.636z"/> + <path style="fill:#FFFFFF;" d="M23.172,7.46c4.008,0,5.904,2.76,5.904,8.736c0,5.976-1.896,8.76-5.904,8.76 + s-5.904-2.784-5.904-8.76C17.268,10.22,19.164,7.46,23.172,7.46z M23.172,22.268c1.92,0,2.448-1.68,2.448-6.071 + c0-4.393-0.528-6.049-2.448-6.049s-2.448,1.656-2.448,6.049C20.724,20.588,21.252,22.268,23.172,22.268z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/4.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/4.svg new file mode 100644 index 000000000..8eb6a53b3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/4.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M21.891,20.784h-2.212v4.396h-3.92v-4.396h-7.84v-3.389L15.227,5.3h4.452v12.432h2.212V20.784z + M15.759,17.731c0-4.815,0.084-7.924,0.084-8.54h-0.056l-4.984,8.54H15.759z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/5.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/5.svg new file mode 100644 index 000000000..ca7a9f22f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/5.svg @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M14.035,14.252c0.728-0.504,1.624-1.092,3.556-1.092c2.66,0,6.02,1.848,6.02,6.411 + c0,2.717-1.372,7.141-7.224,7.141c-3.108,0-6.272-1.849-6.468-5.853h3.92c0.168,1.624,1.036,2.717,2.772,2.717 + c1.876,0,2.968-1.597,2.968-3.725c0-1.764-0.839-3.556-2.912-3.556c-0.532,0-1.876,0.028-2.632,1.428l-3.5-0.168l1.372-10.92 + h10.919v3.304h-8.092L14.035,14.252z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/6.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/6.svg new file mode 100644 index 000000000..783a0b9d7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/6.svg @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M19.106,10.673c-0.112-1.12-0.84-1.904-2.296-1.904c-2.548,0-3.136,2.912-3.276,5.488l0.056,0.056 + c0.532-0.728,1.512-1.651,3.724-1.651c4.116,0,6.077,3.164,6.077,6.131c0,4.34-2.66,7.252-6.497,7.252 + c-6.02,0-7.196-5.039-7.196-9.996c0-3.78,0.504-10.416,7.392-10.416c0.812,0,3.08,0.308,4.061,1.288 + c1.092,1.063,1.483,1.652,1.848,3.752H19.106z M16.614,15.797c-1.484,0-2.996,0.924-2.996,3.416c0,2.156,1.232,3.697,3.108,3.697 + c1.428,0,2.745-1.094,2.745-3.781C19.471,16.609,17.846,15.797,16.614,15.797z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/7.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/7.svg new file mode 100644 index 000000000..59b3714b5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/7.svg @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M24.28,9.66c-1.904,2.071-6.776,7.951-7.252,16.52h-4.032c0.42-7.952,5.404-14.28,7.084-16.072 + h-9.884l0.084-3.472h14V9.66z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/8.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/8.svg new file mode 100644 index 000000000..c1803a3c0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/8.svg @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M16.28,26.712c-5.124,0-6.888-3.332-6.888-6.048c0-1.009,0-3.641,3.024-5.04 + c-1.568-0.784-2.408-2.044-2.408-3.893c0-3.388,2.716-5.432,6.188-5.432c4.116,0,6.3,2.436,6.3,5.18 + c0,1.708-0.7,3.164-2.296,4.004c1.903,0.952,2.968,2.212,2.968,4.788C23.168,22.792,21.544,26.712,16.28,26.712z M16.224,17.332 + c-1.428,0-2.8,0.924-2.8,3.08c0,1.903,1.092,3.164,2.884,3.164c2.043,0,2.829-1.765,2.829-3.137 + C19.137,19.04,18.408,17.332,16.224,17.332z M18.744,11.899c0-1.512-1.036-2.464-2.296-2.464c-1.764,0-2.688,1.008-2.688,2.464 + c0,1.177,0.868,2.464,2.548,2.464C17.848,14.363,18.744,13.328,18.744,11.899z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/9.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/9.svg new file mode 100644 index 000000000..bc149d3cb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/callouts/9.svg @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.0" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="33" height="33" viewBox="0 0 33 33" + style="overflow:visible;enable-background:new 0 0 33 33;" xml:space="preserve"> +<circle style="stroke:#000000;" cx="16.5" cy="16.5" r="16"/> +<g> + <g style="enable-background:new ;"> + <path style="fill:#FFFFFF;" d="M13.953,21.921v0.027c0.224,1.372,1.092,1.961,2.296,1.961c1.624,0,3.248-1.372,3.276-5.545 + l-0.057-0.056c-0.896,1.344-2.436,1.68-3.78,1.68c-3.808,0-6.02-2.884-6.02-6.216c0-4.872,2.884-7.14,6.776-7.14 + c6.888,0,7,7.42,7,10.22c0,7.7-3.641,10.192-7.224,10.192c-3.388,0-5.824-1.96-6.16-5.124H13.953z M16.529,16.853 + c1.372,0,2.884-0.979,2.884-3.332c0-2.268-0.98-3.668-2.996-3.668c-1.008,0-2.828,0.504-2.828,3.36 + C13.589,16.209,15.045,16.853,16.529,16.853z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/caution.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/caution.svg new file mode 100644 index 000000000..dd84f3fe3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/caution.svg @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In --> +<!DOCTYPE svg [ + <!ENTITY st0 "fill:#FFFFFF;stroke:none;"> + <!ENTITY st1 "fill:#FFFFFF;stroke-width:6.6112;stroke-linecap:round;stroke-linejoin:round;"> + <!ENTITY st2 "stroke:#FFFFFF;stroke-width:6.6112;"> + <!ENTITY st3 "fill:none;stroke:none;"> + <!ENTITY st4 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;"> + <!ENTITY st5 "stroke:none;"> +]> +<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> + <g id="Layer_x0020_3" style="&st4;"> + <g> + <path style="&st2;" d="M41.7,35.3L26.6,9.4c-0.6-1-1.7-1.7-2.9-1.6c-1.2,0-2.3,0.7-2.9,1.7L6.3,35.4c-0.6,1-0.6,2.3,0,3.3c0.6,1,1.7,1.6,2.9,1.6h29.6c1.2,0,2.3-0.6,2.9-1.7c0.6-1,0.6-2.3,0-3.3z"/> + <path style="&st1;" d="M23.7,11L9.2,37h29.6L23.7,11z"/> + <path style="&st0;" d="M23.7,11.9L10.3,36.1h27.5l-14-24.1z"/> + <g> + <path style="&st5;" d="M24.1,34c-1.1,0-1.8-0.8-1.8-1.8c0-1.1,0.7-1.8,1.8-1.8c1.1,0,1.8,0.7,1.8,1.8c0,1-0.7,1.8-1.8,1.8h0z M22.9,29.3l-0.4-9.1h3.2l-0.4,9.1h-2.3z"/> + </g> + </g> + </g> + <g id="crop_x0020_marks" style="&st4;"> + <path style="&st3;" d="M48,48H0V0h48v48z"/> + </g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/caution.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/caution.svg new file mode 100644 index 000000000..223fff213 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/caution.svg @@ -0,0 +1,141 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.1" id="caution" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48" + overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve"> +<g> + <g> + <g> + <path stroke="#FFFFFF" stroke-width="6.6112" d="M41.629,36.303L26.527,10.403c-0.602-1-1.698-1.7-2.898-1.6 + c-1.2,0-2.3,0.7-2.9,1.7l-14.5,25.899c-0.6,1-0.6,2.301,0,3.301s1.7,1.6,2.9,1.6h29.599c1.199,0,2.301-0.6,2.899-1.699 + C42.229,38.604,42.229,37.303,41.629,36.303L41.629,36.303z"/> + <g> + <path fill="#FFFFFF" stroke="#FFCC00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" d="M23.581,12.003 + l-14.5,26H38.68L23.581,12.003z"/> + <polygon fill="#FFFFFF" stroke="#FFCD00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.582,12.054 9.137,37.953 38.622,37.953 "/> + <polygon fill="#FFFFFF" stroke="#FFCE00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.583,12.104 9.193,37.9 38.566,37.9 "/> + <polygon fill="#FFFFFF" stroke="#FFCF00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.583,12.153 9.25,37.854 38.508,37.854 "/> + <polygon fill="#FFFFFF" stroke="#FFD000" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.584,12.205 9.309,37.805 38.451,37.805 "/> + <polygon fill="#FFFFFF" stroke="#FFD100" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.585,12.253 9.364,37.753 38.395,37.753 "/> + <polygon fill="#FFFFFF" stroke="#FFD200" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.586,12.304 9.421,37.703 38.337,37.703 "/> + <polygon fill="#FFFFFF" stroke="#FFD300" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.587,12.354 9.479,37.652 38.279,37.652 "/> + <polygon fill="#FFFFFF" stroke="#FFD400" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.588,12.403 9.537,37.604 38.223,37.604 "/> + <polygon fill="#FFFFFF" stroke="#FFD500" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.589,12.455 9.591,37.553 38.166,37.553 "/> + <polygon fill="#FFFFFF" stroke="#FFD600" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.591,12.503 9.649,37.503 38.109,37.503 "/> + <polygon fill="#FFFFFF" stroke="#FFD700" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.591,12.554 9.707,37.453 38.053,37.453 "/> + <polygon fill="#FFFFFF" stroke="#FFD800" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.593,12.604 9.764,37.402 37.996,37.402 "/> + <polygon fill="#FFFFFF" stroke="#FFD900" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.594,12.653 9.819,37.354 37.939,37.354 "/> + <polygon fill="#FFFFFF" stroke="#FFDA00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.596,12.705 9.876,37.303 37.882,37.303 "/> + <polygon fill="#FFFFFF" stroke="#FFDB00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.597,12.753 9.935,37.253 37.824,37.253 "/> + <polygon fill="#FFFFFF" stroke="#FFDC00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.599,12.804 9.991,37.203 37.768,37.203 "/> + <polygon fill="#FFFFFF" stroke="#FFDD00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.601,12.854 10.047,37.152 37.711,37.152 "/> + <polygon fill="#FFFFFF" stroke="#FFDE00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.602,12.903 10.104,37.104 37.654,37.104 "/> + <polygon fill="#FFFFFF" stroke="#FFDF00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.603,12.955 10.163,37.053 37.598,37.053 "/> + <polygon fill="#FFFFFF" stroke="#FFE000" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.604,13.003 10.218,37.003 37.54,37.003 "/> + <polygon fill="#FFFFFF" stroke="#FFE100" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.604,13.054 10.275,36.953 37.482,36.953 "/> + <polygon fill="#FFFFFF" stroke="#FFE200" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.605,13.104 10.333,36.902 37.427,36.902 "/> + <polygon fill="#FFFFFF" stroke="#FFE300" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.606,13.153 10.389,36.854 37.37,36.854 "/> + <polygon fill="#FFFFFF" stroke="#FFE400" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.607,13.205 10.445,36.805 37.312,36.805 "/> + <polygon fill="#FFFFFF" stroke="#FFE500" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.608,13.253 10.502,36.753 37.256,36.753 "/> + <polygon fill="#FFFFFF" stroke="#FFE600" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.609,13.304 10.561,36.703 37.197,36.703 "/> + <polygon fill="#FFFFFF" stroke="#FFE600" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.61,13.354 10.617,36.652 37.143,36.652 "/> + <polygon fill="#FFFFFF" stroke="#FFE700" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.611,13.403 10.673,36.604 37.085,36.604 "/> + <polygon fill="#FFFFFF" stroke="#FFE800" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.613,13.455 10.73,36.553 37.027,36.553 "/> + <polygon fill="#FFFFFF" stroke="#FFE900" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.614,13.503 10.789,36.503 36.971,36.503 "/> + <polygon fill="#FFFFFF" stroke="#FFEA00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.616,13.554 10.844,36.453 36.914,36.453 "/> + <polygon fill="#FFFFFF" stroke="#FFEB00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.617,13.604 10.901,36.402 36.857,36.402 "/> + <polygon fill="#FFFFFF" stroke="#FFEC00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.618,13.653 10.958,36.354 36.8,36.354 "/> + <polygon fill="#FFFFFF" stroke="#FFED00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.619,13.705 11.017,36.303 36.742,36.303 "/> + <polygon fill="#FFFFFF" stroke="#FFEE00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.622,13.753 11.071,36.253 36.688,36.253 "/> + <polygon fill="#FFFFFF" stroke="#FFEF00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.623,13.804 11.129,36.203 36.63,36.203 "/> + <polygon fill="#FFFFFF" stroke="#FFF000" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.624,13.854 11.188,36.152 36.572,36.152 "/> + <polygon fill="#FFFFFF" stroke="#FFF100" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.625,13.903 11.243,36.104 36.516,36.104 "/> + <polygon fill="#FFFFFF" stroke="#FFF200" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.625,13.955 11.299,36.053 36.459,36.053 "/> + <polygon fill="#FFFFFF" stroke="#FFF300" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.626,14.003 11.356,36.003 36.4,36.003 "/> + <polygon fill="#FFFFFF" stroke="#FFF400" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.627,14.054 11.415,35.953 36.346,35.953 "/> + <polygon fill="#FFFFFF" stroke="#FFF500" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.628,14.104 11.471,35.902 36.288,35.902 "/> + <polygon fill="#FFFFFF" stroke="#FFF600" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.629,14.153 11.527,35.854 36.232,35.854 "/> + <polygon fill="#FFFFFF" stroke="#FFF700" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.63,14.205 11.584,35.805 36.174,35.805 "/> + <polygon fill="#FFFFFF" stroke="#FFF800" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.631,14.253 11.643,35.753 36.117,35.753 "/> + <polygon fill="#FFFFFF" stroke="#FFF900" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.632,14.304 11.699,35.703 36.061,35.703 "/> + <polygon fill="#FFFFFF" stroke="#FFFA00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.633,14.354 11.754,35.652 36.003,35.652 "/> + <polygon fill="#FFFFFF" stroke="#FFFB00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.635,14.403 11.812,35.604 35.945,35.604 "/> + <polygon fill="#FFFFFF" stroke="#FFFC00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.637,14.455 11.869,35.555 35.891,35.555 "/> + <polygon fill="#FFFFFF" stroke="#FFFD00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.638,14.503 11.925,35.503 35.833,35.503 "/> + <polygon fill="#FFFFFF" stroke="#FFFE00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 23.639,14.554 11.982,35.453 35.775,35.453 "/> + <path fill="#FFFFFF" stroke="#FFFF00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" d="M23.64,14.604 + l-11.6,20.8h23.678L23.64,14.604z"/> + </g> + </g> + + <linearGradient id="XMLID_50_" gradientUnits="userSpaceOnUse" x1="395.8457" y1="758.1504" x2="395.8457" y2="785.7822" gradientTransform="matrix(1 0 0 1 -372 -747)"> + <stop offset="0" style="stop-color:#FFFFFF"/> + <stop offset="1" style="stop-color:#FFFF00"/> + </linearGradient> + <path fill="url(#XMLID_50_)" d="M38.891,34.532L26.055,12.519c-0.511-0.85-1.443-1.445-2.462-1.36 + c-1.02,0-1.955,0.595-2.465,1.445L8.8,34.617c-0.51,0.851-0.51,1.953,0,2.805c0.51,0.852,1.445,1.36,2.465,1.36h25.158 + c1.021,0,1.956-0.511,2.467-1.445C39.4,36.484,39.4,35.382,38.891,34.532L38.891,34.532z"/> + </g> + <g> + <path d="M23.929,33.948c-1.1,0-1.8-0.8-1.8-1.8c0-1.102,0.7-1.801,1.8-1.801c1.101,0,1.8,0.699,1.8,1.801 + C25.729,33.148,25.029,33.948,23.929,33.948L23.929,33.948z M22.729,29.248l-0.4-9.1h3.2l-0.399,9.1h-2.297H22.729z"/> + </g> +</g> +<g id="crop_x0020_marks"> + <path fill="none" d="M47.93,49.049H-0.071v-48H47.93V49.049z"/> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/home.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/home.svg new file mode 100644 index 000000000..d43722758 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/home.svg @@ -0,0 +1,498 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48" + overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve"> +<g id="Home"> + <g> + <g id="Chimney"> + <g> + <path fill="#660000" d="M30.417,17.563c2.776,2.348,8.258,0.835,7.742,0.434c0-1.2,0-6.9,0-6.9c0-1.2-0.802-2-2-2h-4.802 + c-1,0-1.698,0.6-1.899,1.5C28.648,9.916,28.359,15.822,30.417,17.563z"/> + <path fill="#670000" d="M30.422,17.556c2.771,2.343,8.244,0.833,7.729,0.433c0-1.199,0-6.889,0-6.889 + c0-1.198-0.799-1.997-1.996-1.997h-4.793c-0.998,0-1.695,0.599-1.896,1.498C28.657,9.921,28.368,15.818,30.422,17.556z"/> + <path fill="#680000" d="M30.428,17.548c2.768,2.34,8.229,0.832,7.717,0.432c0-1.196,0-6.876,0-6.876 + c0-1.196-0.799-1.993-1.994-1.993h-4.783c-0.997,0-1.693,0.598-1.895,1.495C28.665,9.927,28.377,15.813,30.428,17.548z"/> + <path fill="#690000" d="M30.434,17.541c2.762,2.336,8.215,0.831,7.703,0.432c0-1.194,0-6.865,0-6.865 + c0-1.194-0.798-1.989-1.99-1.989H31.37c-0.994,0-1.69,0.596-1.892,1.492C28.674,9.932,28.387,15.809,30.434,17.541z"/> + <path fill="#6B0000" d="M30.438,17.533c2.758,2.332,8.203,0.829,7.69,0.431c0-1.192,0-6.853,0-6.853 + c0-1.192-0.796-1.987-1.987-1.987h-4.768c-0.993,0-1.688,0.596-1.889,1.49C28.682,9.937,28.395,15.804,30.438,17.533z"/> + <path fill="#6C0000" d="M30.443,17.525c2.752,2.328,8.188,0.828,7.677,0.43c0-1.19,0-6.841,0-6.841 + c0-1.19-0.795-1.983-1.983-1.983h-4.76c-0.99,0-1.686,0.595-1.885,1.487C28.689,9.943,28.402,15.799,30.443,17.525z"/> + <path fill="#6D0000" d="M30.448,17.518c2.747,2.323,8.174,0.826,7.663,0.429c0-1.188,0-6.829,0-6.829 + c0-1.188-0.793-1.979-1.979-1.979h-4.751c-0.99,0-1.682,0.593-1.881,1.485C28.698,9.949,28.412,15.795,30.448,17.518z"/> + <path fill="#6E0000" d="M30.454,17.51c2.743,2.32,8.159,0.825,7.649,0.429c0-1.187,0-6.818,0-6.818 + c0-1.186-0.791-1.976-1.977-1.976h-4.744c-0.986,0-1.679,0.592-1.877,1.482C28.707,9.954,28.421,15.791,30.454,17.51z"/> + <path fill="#6F0000" d="M30.46,17.503c2.738,2.315,8.146,0.824,7.636,0.427c0-1.184,0-6.806,0-6.806 + c0-1.184-0.789-1.973-1.972-1.973h-4.735c-0.986,0-1.677,0.592-1.875,1.479C28.715,9.96,28.43,15.786,30.46,17.503z"/> + <path fill="#700000" d="M30.465,17.495c2.733,2.312,8.131,0.822,7.623,0.427c0-1.182,0-6.794,0-6.794 + c0-1.182-0.789-1.969-1.969-1.969h-4.729c-0.983,0-1.673,0.59-1.871,1.477C28.725,9.965,28.438,15.781,30.465,17.495z"/> + <path fill="#720000" d="M30.471,17.487c2.729,2.308,8.116,0.821,7.609,0.426c0-1.18,0-6.782,0-6.782 + c0-1.179-0.787-1.966-1.967-1.966h-4.719c-0.982,0-1.67,0.589-1.867,1.475C28.73,9.97,28.447,15.776,30.471,17.487z"/> + <path fill="#730000" d="M30.477,17.48c2.724,2.304,8.103,0.819,7.597,0.426c0-1.178,0-6.771,0-6.771 + c0-1.177-0.786-1.962-1.962-1.962H31.4c-0.981,0-1.668,0.589-1.865,1.472C28.74,9.976,28.456,15.772,30.477,17.48z"/> + <path fill="#740000" d="M30.48,17.473c2.72,2.299,8.088,0.817,7.584,0.424c0-1.176,0-6.759,0-6.759 + c0-1.175-0.785-1.959-1.959-1.959h-4.703c-0.979,0-1.664,0.587-1.861,1.469C28.748,9.981,28.465,15.767,30.48,17.473z"/> + <path fill="#750000" d="M30.484,17.465c2.717,2.295,8.076,0.816,7.572,0.424c0-1.174,0-6.747,0-6.747 + c0-1.174-0.783-1.956-1.957-1.956h-4.693c-0.979,0-1.661,0.586-1.858,1.467C28.757,9.987,28.475,15.763,30.484,17.465z"/> + <path fill="#760000" d="M30.491,17.458c2.71,2.292,8.061,0.815,7.558,0.423c0-1.172,0-6.735,0-6.735 + c0-1.171-0.781-1.953-1.953-1.953H31.41c-0.977,0-1.658,0.585-1.854,1.465C28.766,9.993,28.482,15.758,30.491,17.458z"/> + <path fill="#770000" d="M30.496,17.45c2.706,2.288,8.047,0.813,7.545,0.422c0-1.17,0-6.724,0-6.724 + c0-1.169-0.781-1.949-1.949-1.949h-4.678c-0.975,0-1.656,0.584-1.854,1.461C28.773,9.998,28.491,15.754,30.496,17.45z"/> + <path fill="#790000" d="M30.502,17.442c2.701,2.284,8.032,0.812,7.531,0.422c0-1.167,0-6.712,0-6.712 + c0-1.167-0.779-1.945-1.945-1.945h-4.671c-0.972,0-1.651,0.583-1.849,1.458C28.781,10.004,28.5,15.749,30.502,17.442z"/> + <path fill="#7A0000" d="M30.507,17.435c2.696,2.28,8.019,0.811,7.519,0.421c0-1.166,0-6.7,0-6.7 + c0-1.166-0.777-1.942-1.942-1.942h-4.661c-0.971,0-1.648,0.583-1.845,1.457C28.79,10.009,28.509,15.745,30.507,17.435z"/> + <path fill="#7B0000" d="M30.514,17.427c2.689,2.276,8.004,0.81,7.504,0.42c0-1.164,0-6.688,0-6.688 + c0-1.163-0.776-1.938-1.938-1.938h-4.653c-0.97,0-1.646,0.582-1.842,1.454C28.798,10.014,28.518,15.74,30.514,17.427z"/> + <path fill="#7C0000" d="M30.518,17.42c2.688,2.271,7.99,0.808,7.491,0.419c0-1.162,0-6.677,0-6.677 + c0-1.161-0.774-1.935-1.935-1.935h-4.646c-0.968,0-1.645,0.58-1.839,1.451C28.807,10.02,28.525,15.736,30.518,17.42z"/> + <path fill="#7D0000" d="M30.521,17.412c2.683,2.268,7.978,0.806,7.479,0.418c0-1.159,0-6.665,0-6.665 + c0-1.159-0.774-1.932-1.933-1.932h-4.637c-0.967,0-1.642,0.58-1.836,1.449C28.814,10.025,28.535,15.73,30.521,17.412z"/> + <path fill="#7E0000" d="M30.527,17.404c2.678,2.264,7.963,0.805,7.466,0.418c0-1.157,0-6.652,0-6.652 + c0-1.158-0.772-1.929-1.929-1.929h-4.629c-0.965,0-1.639,0.578-1.832,1.446C28.823,10.031,28.544,15.726,30.527,17.404z"/> + <path fill="#800000" d="M30.533,17.397c2.673,2.26,7.947,0.804,7.451,0.417c0-1.155,0-6.641,0-6.641 + c0-1.155-0.771-1.925-1.924-1.925h-4.621c-0.963,0-1.635,0.577-1.83,1.443C28.831,10.037,28.553,15.722,30.533,17.397z"/> + <path fill="#810000" d="M30.538,17.39c2.668,2.255,7.935,0.802,7.438,0.417c0-1.153,0-6.629,0-6.629 + c0-1.153-0.77-1.922-1.922-1.922h-4.611c-0.961,0-1.633,0.576-1.826,1.442C28.84,10.042,28.562,15.717,30.538,17.39z"/> + <path fill="#820000" d="M30.544,17.382c2.663,2.252,7.92,0.801,7.427,0.416c0-1.151,0-6.618,0-6.618 + c0-1.151-0.77-1.918-1.92-1.918h-4.604c-0.961,0-1.631,0.575-1.823,1.438C28.85,10.047,28.57,15.713,30.544,17.382z"/> + <path fill="#830000" d="M30.549,17.375c2.659,2.248,7.906,0.799,7.413,0.415c0-1.149,0-6.606,0-6.606 + c0-1.149-0.769-1.915-1.915-1.915H31.45c-0.957,0-1.626,0.574-1.819,1.436C28.855,10.053,28.579,15.708,30.549,17.375z"/> + <path fill="#840000" d="M30.555,17.367c2.653,2.243,7.893,0.797,7.399,0.414c0-1.147,0-6.594,0-6.594 + c0-1.147-0.767-1.911-1.912-1.911h-4.588c-0.955,0-1.623,0.573-1.815,1.434C28.865,10.059,28.588,15.704,30.555,17.367z"/> + <path fill="#850000" d="M30.561,17.359c2.648,2.24,7.877,0.797,7.387,0.414c0-1.145,0-6.583,0-6.583 + c0-1.145-0.766-1.908-1.908-1.908h-4.58c-0.954,0-1.621,0.572-1.812,1.431C28.873,10.064,28.598,15.699,30.561,17.359z"/> + <path fill="#860000" d="M30.564,17.352c2.645,2.235,7.863,0.795,7.373,0.413c0-1.143,0-6.57,0-6.57 + c0-1.143-0.764-1.905-1.904-1.905h-4.571c-0.953,0-1.618,0.571-1.81,1.428C28.882,10.069,28.605,15.694,30.564,17.352z"/> + <path fill="#880000" d="M30.57,17.344c2.64,2.232,7.85,0.794,7.359,0.412c0-1.141,0-6.559,0-6.559 + c0-1.141-0.762-1.901-1.902-1.901h-4.562c-0.949,0-1.613,0.57-1.806,1.426C28.891,10.075,28.613,15.689,30.57,17.344z"/> + <path fill="#890000" d="M30.576,17.337c2.634,2.228,7.835,0.792,7.346,0.411c0-1.139,0-6.547,0-6.547 + c0-1.139-0.76-1.898-1.896-1.898h-4.557c-0.947,0-1.611,0.569-1.803,1.423C28.898,10.08,28.623,15.685,30.576,17.337z"/> + <path fill="#8A0000" d="M30.581,17.33c2.63,2.223,7.821,0.79,7.333,0.41c0-1.137,0-6.535,0-6.535 + c0-1.137-0.76-1.894-1.895-1.894h-4.547c-0.947,0-1.609,0.567-1.801,1.421C28.906,10.086,28.632,15.681,30.581,17.33z"/> + <path fill="#8B0000" d="M30.587,17.321c2.625,2.22,7.808,0.79,7.319,0.41c0-1.135,0-6.523,0-6.523 + c0-1.135-0.758-1.891-1.891-1.891h-4.539c-0.945,0-1.606,0.567-1.797,1.418C28.915,10.091,28.641,15.676,30.587,17.321z"/> + <path fill="#8C0000" d="M30.592,17.314c2.62,2.216,7.793,0.788,7.307,0.409c0-1.132,0-6.512,0-6.512 + c0-1.132-0.756-1.887-1.887-1.887H31.48c-0.943,0-1.604,0.566-1.793,1.416C28.923,10.097,28.648,15.671,30.592,17.314z"/> + <path fill="#8D0000" d="M30.598,17.307c2.614,2.211,7.778,0.787,7.293,0.409c0-1.131,0-6.5,0-6.5 + c0-1.13-0.754-1.884-1.884-1.884h-4.522c-0.941,0-1.601,0.564-1.791,1.413C28.932,10.103,28.658,15.667,30.598,17.307z"/> + <path fill="#8F0000" d="M30.604,17.299c2.609,2.208,7.765,0.785,7.279,0.408c0-1.128,0-6.488,0-6.488 + c0-1.128-0.753-1.881-1.881-1.881h-4.516c-0.939,0-1.598,0.564-1.786,1.411C28.939,10.107,28.668,15.662,30.604,17.299z"/> + <path fill="#900000" d="M30.607,17.292c2.605,2.204,7.75,0.784,7.268,0.407c0-1.127,0-6.477,0-6.477 + c0-1.127-0.753-1.877-1.878-1.877h-4.506c-0.938,0-1.595,0.563-1.783,1.408C28.948,10.113,28.676,15.658,30.607,17.292z"/> + <path fill="#910000" d="M30.611,17.284c2.604,2.199,7.738,0.782,7.256,0.406c0-1.124,0-6.464,0-6.464 + c0-1.125-0.751-1.874-1.874-1.874h-4.498c-0.938,0-1.593,0.562-1.781,1.405C28.956,10.119,28.686,15.653,30.611,17.284z"/> + <path fill="#920000" d="M30.618,17.276c2.597,2.196,7.723,0.781,7.241,0.406c0-1.123,0-6.453,0-6.453 + c0-1.123-0.75-1.871-1.871-1.871h-4.49c-0.936,0-1.588,0.561-1.775,1.403C28.965,10.124,28.693,15.649,30.618,17.276z"/> + <path fill="#930000" d="M30.623,17.269c2.592,2.191,7.709,0.779,7.229,0.404c0-1.12,0-6.441,0-6.441 + c0-1.121-0.748-1.867-1.867-1.867h-4.481c-0.935,0-1.586,0.56-1.772,1.4C28.973,10.13,28.703,15.644,30.623,17.269z"/> + <path fill="#940000" d="M30.629,17.261c2.587,2.188,7.694,0.778,7.214,0.404c0-1.119,0-6.43,0-6.43 + c0-1.119-0.745-1.863-1.862-1.863h-4.475c-0.932,0-1.583,0.559-1.771,1.397C28.98,10.135,28.711,15.64,30.629,17.261z"/> + <path fill="#960000" d="M30.634,17.254c2.583,2.184,7.681,0.776,7.201,0.403c0-1.116,0-6.417,0-6.417 + c0-1.116-0.745-1.86-1.86-1.86H31.51c-0.93,0-1.58,0.558-1.768,1.395C28.988,10.141,28.721,15.635,30.634,17.254z"/> + <path fill="#970000" d="M30.641,17.247c2.576,2.179,7.666,0.775,7.188,0.402c0-1.115,0-6.406,0-6.406 + c0-1.114-0.744-1.856-1.855-1.856h-4.459c-0.928,0-1.576,0.557-1.764,1.393C28.998,10.146,28.729,15.63,30.641,17.247z"/> + <path fill="#980000" d="M30.645,17.239c2.573,2.176,7.652,0.774,7.176,0.401c0-1.112,0-6.394,0-6.394 + c0-1.112-0.742-1.853-1.854-1.853h-4.448c-0.928,0-1.574,0.556-1.762,1.39C29.006,10.151,28.738,15.625,30.645,17.239z"/> + <path fill="#990000" d="M30.65,17.231c2.567,2.172,7.638,0.772,7.16,0.401c0-1.11,0-6.383,0-6.383c0-1.11-0.74-1.85-1.85-1.85 + H31.52c-0.924,0-1.57,0.555-1.758,1.387C29.016,10.157,28.747,15.621,30.65,17.231z"/> + <path fill="#9A0000" d="M30.654,17.224c2.563,2.167,7.625,0.771,7.148,0.4c0-1.108,0-6.371,0-6.371 + c0-1.108-0.74-1.846-1.847-1.846h-4.433c-0.924,0-1.568,0.554-1.756,1.385C29.021,10.163,28.755,15.616,30.654,17.224z"/> + <path fill="#9B0000" d="M30.66,17.216c2.561,2.164,7.609,0.769,7.136,0.399c0-1.106,0-6.359,0-6.359 + c0-1.106-0.737-1.843-1.844-1.843h-4.425c-0.922,0-1.564,0.553-1.752,1.382C29.031,10.168,28.766,15.612,30.66,17.216z"/> + <path fill="#9C0000" d="M30.666,17.209c2.555,2.16,7.596,0.768,7.122,0.399c0-1.104,0-6.347,0-6.347 + c0-1.104-0.737-1.84-1.84-1.84h-4.417c-0.92,0-1.562,0.552-1.748,1.38C29.039,10.174,28.771,15.607,30.666,17.209z"/> + <path fill="#9E0000" d="M30.671,17.201c2.55,2.155,7.582,0.767,7.108,0.398c0-1.102,0-6.335,0-6.335 + c0-1.102-0.735-1.836-1.836-1.836h-4.408c-0.918,0-1.561,0.551-1.745,1.377C29.048,10.179,28.782,15.603,30.671,17.201z"/> + <path fill="#9F0000" d="M30.677,17.193c2.544,2.152,7.567,0.765,7.097,0.397c0-1.1,0-6.324,0-6.324 + c0-1.1-0.735-1.833-1.834-1.833H31.54c-0.916,0-1.558,0.549-1.741,1.375C29.057,10.185,28.79,15.598,30.677,17.193z"/> + <path fill="#A00000" d="M30.682,17.186c2.541,2.147,7.555,0.764,7.082,0.396c0-1.098,0-6.312,0-6.312 + c0-1.098-0.731-1.829-1.828-1.829h-4.393c-0.915,0-1.555,0.548-1.738,1.372C29.064,10.19,28.8,15.594,30.682,17.186z"/> + <path fill="#A10000" d="M30.688,17.178c2.535,2.144,7.539,0.763,7.068,0.396c0-1.096,0-6.3,0-6.3 + c0-1.096-0.73-1.826-1.826-1.826h-4.384c-0.912,0-1.551,0.547-1.733,1.37C29.072,10.196,28.809,15.589,30.688,17.178z"/> + <path fill="#A20000" d="M30.691,17.171c2.531,2.14,7.525,0.761,7.057,0.395c0-1.094,0-6.289,0-6.289 + c0-1.093-0.73-1.822-1.822-1.822H31.55c-0.911,0-1.548,0.546-1.731,1.367C29.081,10.201,28.816,15.584,30.691,17.171z"/> + <path fill="#A30000" d="M30.697,17.163c2.525,2.136,7.512,0.76,7.043,0.395c0-1.092,0-6.277,0-6.277 + c0-1.091-0.729-1.819-1.819-1.819h-4.366c-0.91,0-1.546,0.545-1.729,1.365C29.089,10.207,28.825,15.58,30.697,17.163z"/> + <path fill="#A50000" d="M30.703,17.156c2.521,2.132,7.497,0.758,7.029,0.394c0-1.09,0-6.265,0-6.265 + c0-1.09-0.729-1.816-1.815-1.816h-4.358c-0.908,0-1.543,0.544-1.727,1.362C29.098,10.212,28.835,15.575,30.703,17.156z"/> + <path fill="#A60000" d="M30.708,17.148c2.517,2.127,7.483,0.756,7.017,0.393c0-1.087,0-6.253,0-6.253 + c0-1.088-0.727-1.812-1.812-1.812h-4.351c-0.906,0-1.541,0.543-1.724,1.359C29.105,10.218,28.844,15.571,30.708,17.148z"/> + <path fill="#A70000" d="M30.714,17.141c2.511,2.124,7.47,0.755,7.003,0.392c0-1.086,0-6.241,0-6.241 + c0-1.085-0.725-1.809-1.81-1.809h-4.343c-0.904,0-1.537,0.542-1.719,1.357C29.113,10.223,28.854,15.566,30.714,17.141z"/> + <path fill="#A80000" d="M30.719,17.133c2.508,2.12,7.455,0.753,6.99,0.391c0-1.083,0-6.229,0-6.229 + c0-1.083-0.725-1.806-1.807-1.806h-4.334c-0.902,0-1.533,0.542-1.717,1.354C29.122,10.229,28.861,15.562,30.719,17.133z"/> + <path fill="#A90000" d="M30.725,17.125c2.502,2.116,7.44,0.752,6.978,0.391c0-1.082,0-6.218,0-6.218 + c0-1.081-0.724-1.802-1.804-1.802h-4.325c-0.901,0-1.53,0.54-1.714,1.352C29.131,10.234,28.87,15.557,30.725,17.125z"/> + <path fill="#AA0000" d="M30.729,17.118c2.498,2.111,7.428,0.75,6.965,0.39c0-1.08,0-6.206,0-6.206 + c0-1.079-0.721-1.798-1.799-1.798h-4.318c-0.899,0-1.528,0.539-1.71,1.349C29.139,10.24,28.879,15.552,30.729,17.118z"/> + <path fill="#AC0000" d="M30.734,17.11c2.492,2.108,7.412,0.75,6.951,0.389c0-1.078,0-6.194,0-6.194 + c0-1.077-0.721-1.795-1.797-1.795h-4.311c-0.896,0-1.523,0.538-1.705,1.346C29.146,10.245,28.889,15.548,30.734,17.11z"/> + <path fill="#AD0000" d="M30.74,17.103c2.486,2.104,7.398,0.748,6.937,0.389c0-1.076,0-6.183,0-6.183 + c0-1.075-0.718-1.792-1.792-1.792h-4.302c-0.896,0-1.521,0.537-1.702,1.344C29.154,10.251,28.896,15.543,30.74,17.103z"/> + <path fill="#AE0000" d="M30.745,17.096c2.483,2.1,7.385,0.746,6.924,0.388c0-1.074,0-6.171,0-6.171 + c0-1.073-0.717-1.789-1.788-1.789h-4.294c-0.896,0-1.519,0.537-1.698,1.341C29.164,10.256,28.904,15.539,30.745,17.096z"/> + <path fill="#AF0000" d="M30.751,17.088c2.478,2.096,7.37,0.745,6.91,0.387c0-1.072,0-6.159,0-6.159 + c0-1.071-0.716-1.785-1.785-1.785h-4.285c-0.893,0-1.517,0.535-1.696,1.339C29.172,10.262,28.914,15.534,30.751,17.088z"/> + <path fill="#B00000" d="M30.756,17.08c2.475,2.092,7.355,0.744,6.896,0.387c0-1.07,0-6.147,0-6.147 + c0-1.069-0.713-1.782-1.781-1.782h-4.277c-0.891,0-1.513,0.535-1.691,1.336C29.182,10.267,28.923,15.53,30.756,17.08z"/> + <path fill="#B10000" d="M30.762,17.073c2.469,2.088,7.342,0.743,6.885,0.386c0-1.067,0-6.136,0-6.136 + c0-1.067-0.713-1.778-1.778-1.778h-4.271c-0.889,0-1.51,0.533-1.688,1.334C29.188,10.272,28.932,15.525,30.762,17.073z"/> + <path fill="#B30000" d="M30.768,17.065c2.463,2.083,7.328,0.741,6.871,0.385c0-1.065,0-6.124,0-6.124 + c0-1.065-0.712-1.775-1.775-1.775h-4.262c-0.887,0-1.506,0.532-1.687,1.332C29.197,10.278,28.939,15.521,30.768,17.065z"/> + <path fill="#B40000" d="M30.771,17.058c2.459,2.08,7.313,0.74,6.857,0.384c0-1.063,0-6.112,0-6.112 + c0-1.063-0.71-1.771-1.771-1.771h-4.252c-0.887,0-1.506,0.531-1.685,1.329C29.205,10.284,28.949,15.516,30.771,17.058z"/> + <path fill="#B50000" d="M30.777,17.05c2.453,2.076,7.3,0.738,6.845,0.383c0-1.062,0-6.101,0-6.101 + c0-1.061-0.709-1.768-1.769-1.768h-4.244c-0.885,0-1.502,0.53-1.682,1.326C29.214,10.289,28.958,15.511,30.777,17.05z"/> + <path fill="#B60000" d="M30.782,17.043c2.45,2.071,7.286,0.736,6.831,0.382c0-1.059,0-6.088,0-6.088 + c0-1.059-0.707-1.765-1.766-1.765h-4.236c-0.881,0-1.498,0.529-1.676,1.323C29.223,10.294,28.967,15.507,30.782,17.043z"/> + <path fill="#B70000" d="M30.787,17.035c2.445,2.067,7.271,0.735,6.818,0.382c0-1.057,0-6.077,0-6.077 + c0-1.057-0.705-1.761-1.762-1.761h-4.229c-0.881,0-1.495,0.528-1.674,1.321C29.23,10.3,28.977,15.502,30.787,17.035z"/> + <path fill="#B80000" d="M30.793,17.028c2.439,2.063,7.258,0.733,6.807,0.381c0-1.055,0-6.065,0-6.065 + c0-1.055-0.705-1.758-1.76-1.758h-4.22c-0.879,0-1.493,0.527-1.67,1.318C29.238,10.306,28.984,15.498,30.793,17.028z"/> + <path fill="#B90000" d="M30.798,17.02c2.437,2.06,7.244,0.732,6.792,0.38c0-1.053,0-6.053,0-6.053 + c0-1.053-0.703-1.754-1.754-1.754h-4.212c-0.877,0-1.49,0.526-1.667,1.316C29.247,10.311,28.993,15.493,30.798,17.02z"/> + <path fill="#BB0000" d="M30.805,17.013c2.43,2.056,7.229,0.731,6.777,0.379c0-1.051,0-6.042,0-6.042 + c0-1.051-0.701-1.751-1.751-1.751h-4.204c-0.875,0-1.486,0.525-1.663,1.313C29.255,10.316,29.002,15.488,30.805,17.013z"/> + <path fill="#BC0000" d="M30.809,17.005c2.428,2.052,7.217,0.729,6.767,0.379c0-1.049,0-6.03,0-6.03 + c0-1.048-0.7-1.748-1.748-1.748h-4.195c-0.873,0-1.483,0.524-1.659,1.311C29.264,10.322,29.012,15.484,30.809,17.005z"/> + <path fill="#BD0000" d="M30.814,16.998c2.42,2.047,7.201,0.728,6.752,0.378c0-1.047,0-6.018,0-6.018 + c0-1.046-0.699-1.744-1.744-1.744h-4.188c-0.872,0-1.481,0.523-1.657,1.309C29.271,10.328,29.02,15.48,30.814,16.998z"/> + <path fill="#BE0000" d="M30.818,16.99c2.418,2.044,7.188,0.727,6.74,0.377c0-1.045,0-6.006,0-6.006 + c0-1.044-0.699-1.74-1.742-1.74h-4.178c-0.871,0-1.479,0.522-1.654,1.305C29.279,10.333,29.027,15.475,30.818,16.99z"/> + <path fill="#BF0000" d="M30.824,16.982c2.412,2.04,7.174,0.725,6.727,0.376c0-1.043,0-5.994,0-5.994 + c0-1.043-0.695-1.737-1.736-1.737h-4.172c-0.869,0-1.476,0.521-1.65,1.303C29.288,10.338,29.037,15.47,30.824,16.982z"/> + <path fill="#C00000" d="M30.83,16.975c2.406,2.036,7.158,0.724,6.713,0.376c0-1.041,0-5.982,0-5.982 + c0-1.041-0.695-1.734-1.734-1.734h-4.162c-0.867,0-1.473,0.52-1.647,1.3C29.297,10.344,29.046,15.466,30.83,16.975z"/> + <path fill="#C20000" d="M30.835,16.967c2.403,2.032,7.146,0.722,6.7,0.375c0-1.039,0-5.971,0-5.971 + c0-1.039-0.694-1.73-1.73-1.73H31.65c-0.865,0-1.471,0.519-1.646,1.298C29.305,10.35,29.055,15.461,30.835,16.967z"/> + <path fill="#C30000" d="M30.841,16.96c2.397,2.027,7.132,0.721,6.687,0.375c0-1.037,0-5.959,0-5.959 + c0-1.037-0.691-1.727-1.728-1.727h-4.146c-0.863,0-1.467,0.518-1.643,1.295C29.312,10.355,29.062,15.457,30.841,16.96z"/> + <path fill="#C40000" d="M30.846,16.952c2.395,2.023,7.117,0.72,6.674,0.374c0-1.035,0-5.948,0-5.948 + c0-1.034-0.69-1.724-1.725-1.724h-4.138c-0.862,0-1.464,0.517-1.64,1.293C29.32,10.36,29.072,15.452,30.846,16.952z"/> + <path fill="#C50000" d="M30.852,16.945c2.39,2.02,7.104,0.718,6.66,0.373c0-1.033,0-5.936,0-5.936 + c0-1.032-0.689-1.72-1.721-1.72H31.66c-0.859,0-1.46,0.516-1.635,1.291C29.33,10.366,29.081,15.447,30.852,16.945z"/> + <path fill="#C60000" d="M30.855,16.937c2.385,2.016,7.09,0.717,6.646,0.373c0-1.031,0-5.924,0-5.924 + c0-1.03-0.688-1.717-1.717-1.717h-4.122c-0.858,0-1.458,0.515-1.631,1.288C29.338,10.372,29.09,15.443,30.855,16.937z"/> + <path fill="#C70000" d="M30.861,16.93c2.38,2.012,7.074,0.715,6.634,0.372c0-1.029,0-5.913,0-5.913 + c0-1.028-0.687-1.713-1.714-1.713h-4.113c-0.855,0-1.455,0.514-1.628,1.285C29.348,10.377,29.1,15.438,30.861,16.93z"/> + <path fill="#C90000" d="M30.867,16.922c2.374,2.008,7.061,0.714,6.619,0.371c0-1.027,0-5.9,0-5.9c0-1.026-0.686-1.71-1.709-1.71 + h-4.105c-0.855,0-1.451,0.513-1.625,1.282C29.354,10.382,29.107,15.434,30.867,16.922z"/> + <path fill="#CA0000" d="M30.872,16.915c2.37,2.003,7.047,0.712,6.606,0.37c0-1.024,0-5.889,0-5.889 + c0-1.024-0.685-1.707-1.707-1.707h-4.098c-0.854,0-1.447,0.512-1.621,1.28C29.363,10.388,29.116,15.429,30.872,16.915z"/> + <path fill="#CB0000" d="M30.878,16.907c2.364,2,7.032,0.711,6.595,0.37c0-1.022,0-5.877,0-5.877 + c0-1.022-0.684-1.703-1.703-1.703h-4.09c-0.853,0-1.447,0.511-1.619,1.277C29.371,10.394,29.125,15.424,30.878,16.907z"/> + <path fill="#CC0000" d="M30.883,16.899c2.36,1.996,7.02,0.709,6.581,0.369c0-1.021,0-5.865,0-5.865c0-1.02-0.682-1.7-1.7-1.7 + h-4.08c-0.851,0-1.443,0.51-1.615,1.275C29.38,10.399,29.134,15.42,30.883,16.899z"/> + </g> + + <linearGradient id="Chimney_Highlight_1_" gradientUnits="userSpaceOnUse" x1="219.5195" y1="-239.7031" x2="219.5195" y2="-247.9902" gradientTransform="matrix(1 0 0 -1 -186 -230)"> + <stop offset="0" style="stop-color:#FFFFFF"/> + <stop offset="1" style="stop-color:#CC0000"/> + </linearGradient> + <path id="Chimney_Highlight" fill="url(#Chimney_Highlight_1_)" d="M30.883,16.899c2.36,1.996,7.02,0.709,6.581,0.369 + c0-1.021,0-5.865,0-5.865c0-1.02-0.682-1.7-1.7-1.7h-4.08c-0.851,0-1.443,0.51-1.615,1.275 + C29.38,10.399,29.134,15.42,30.883,16.899z"/> + </g> + <g id="House"> + <g> + <path fill="#FFCC00" d="M8.5,24.788c0,2.4,0,14.2,0,14.2c0,1.101,0.8,1.9,1.8,1.9h27.4c1.1,0,1.899-0.9,1.899-2 + c0,0,0-11.8,0-14.2C40.6,24.688,7.4,24.788,8.5,24.788z"/> + <path fill="#FFCD00" d="M8.545,24.812c0,2.395,0,14.159,0,14.159c0,1.097,0.798,1.895,1.794,1.895h27.322 + c1.097,0,1.894-0.897,1.894-1.993c0,0,0-11.767,0-14.16C40.552,24.711,7.448,24.812,8.545,24.812z"/> + <path fill="#FFCE00" d="M8.589,24.835c0,2.387,0,14.119,0,14.119c0,1.094,0.795,1.889,1.79,1.889h27.242 + c1.094,0,1.889-0.896,1.889-1.988c0,0,0-11.73,0-14.118C40.504,24.735,7.496,24.835,8.589,24.835z"/> + <path fill="#FFCF00" d="M8.634,24.857c0,2.38,0,14.077,0,14.077c0,1.091,0.793,1.884,1.785,1.884h27.163 + c1.09,0,1.883-0.894,1.883-1.981c0,0,0-11.698,0-14.078C40.456,24.758,7.543,24.857,8.634,24.857z"/> + <path fill="#FFD000" d="M8.68,24.88c0,2.373,0,14.037,0,14.037c0,1.088,0.791,1.879,1.779,1.879h27.084 + c1.087,0,1.877-0.892,1.877-1.979c0,0,0-11.663,0-14.036C40.409,24.782,7.592,24.88,8.68,24.88z"/> + <path fill="#FFD100" d="M8.725,24.903c0,2.366,0,13.995,0,13.995c0,1.085,0.788,1.874,1.773,1.874h27.006 + c1.083,0,1.872-0.889,1.872-1.973c0,0,0-11.629,0-13.994C40.361,24.806,7.64,24.903,8.725,24.903z"/> + <path fill="#FFD200" d="M8.769,24.925c0,2.359,0,13.955,0,13.955c0,1.082,0.786,1.867,1.769,1.867h26.926 + c1.081,0,1.866-0.884,1.866-1.965c0,0,0-11.596,0-13.953C40.312,24.829,7.688,24.925,8.769,24.925z"/> + <path fill="#FFD300" d="M8.814,24.949c0,2.354,0,13.914,0,13.914c0,1.078,0.784,1.861,1.763,1.861h26.848 + c1.077,0,1.86-0.882,1.86-1.959c0,0,0-11.562,0-13.914C40.266,24.852,7.736,24.949,8.814,24.949z"/> + <path fill="#FFD400" d="M8.858,24.973c0,2.345,0,13.872,0,13.872c0,1.074,0.781,1.855,1.758,1.855h26.768 + c1.074,0,1.854-0.88,1.854-1.953c0,0,0-11.526,0-13.873C40.217,24.876,7.784,24.973,8.858,24.973z"/> + <path fill="#FFD500" d="M8.903,24.997c0,2.338,0,13.83,0,13.83c0,1.072,0.779,1.853,1.753,1.853h26.689 + c1.07,0,1.85-0.877,1.85-1.948c0,0,0-11.493,0-13.832C40.17,24.898,7.832,24.997,8.903,24.997z"/> + <path fill="#FFD600" d="M8.949,25.019c0,2.331,0,13.791,0,13.791c0,1.068,0.777,1.846,1.748,1.846h26.61 + c1.067,0,1.846-0.875,1.846-1.941c0,0,0-11.459,0-13.791C40.122,24.921,7.88,25.019,8.949,25.019z"/> + <path fill="#FFD700" d="M8.993,25.042c0,2.324,0,13.75,0,13.75c0,1.064,0.774,1.84,1.743,1.84h26.532 + c1.064,0,1.838-0.871,1.838-1.937c0,0,0-11.426,0-13.75C40.074,24.945,7.928,25.042,8.993,25.042z"/> + <path fill="#FFD800" d="M9.039,25.065c0,2.316,0,13.708,0,13.708c0,1.063,0.772,1.835,1.737,1.835h26.453 + c1.062,0,1.834-0.869,1.834-1.931c0,0,0-11.392,0-13.71C40.027,24.968,7.977,25.065,9.039,25.065z"/> + <path fill="#FFD900" d="M9.083,25.087c0,2.312,0,13.668,0,13.668c0,1.061,0.77,1.83,1.732,1.83h26.373 + c1.06,0,1.828-0.867,1.828-1.926c0,0,0-11.356,0-13.668C39.979,24.993,8.024,25.087,9.083,25.087z"/> + <path fill="#FFDA00" d="M9.128,25.111c0,2.304,0,13.626,0,13.626c0,1.057,0.767,1.824,1.727,1.824h26.293 + c1.056,0,1.822-0.864,1.822-1.919c0,0,0-11.323,0-13.627C39.932,25.016,8.072,25.111,9.128,25.111z"/> + <path fill="#FFDB00" d="M9.172,25.134c0,2.297,0,13.586,0,13.586c0,1.053,0.766,1.818,1.722,1.818h26.215 + c1.052,0,1.816-0.861,1.816-1.914c0,0,0-11.289,0-13.586C39.884,25.04,8.12,25.134,9.172,25.134z"/> + <path fill="#FFDC00" d="M9.217,25.157c0,2.29,0,13.545,0,13.545c0,1.051,0.763,1.812,1.717,1.812H37.07 + c1.049,0,1.812-0.858,1.812-1.907c0,0,0-11.256,0-13.545C39.836,25.062,8.168,25.157,9.217,25.157z"/> + <path fill="#FFDD00" d="M9.263,25.18c0,2.282,0,13.505,0,13.505c0,1.046,0.76,1.807,1.711,1.807h26.055 + c1.047,0,1.808-0.855,1.808-1.902c0,0,0-11.221,0-13.502C39.788,25.085,8.216,25.18,9.263,25.18z"/> + <path fill="#FFDE00" d="M9.307,25.204c0,2.275,0,13.463,0,13.463c0,1.043,0.758,1.801,1.707,1.801h25.978 + c1.043,0,1.801-0.854,1.801-1.896c0,0,0-11.188,0-13.463C39.74,25.109,8.265,25.204,9.307,25.204z"/> + <path fill="#FFDF00" d="M9.352,25.226c0,2.27,0,13.423,0,13.423c0,1.04,0.756,1.796,1.701,1.796h25.899 + c1.039,0,1.795-0.852,1.795-1.89c0,0,0-11.153,0-13.423C39.691,25.132,8.312,25.226,9.352,25.226z"/> + <path fill="#FFE000" d="M9.397,25.251c0,2.262,0,13.379,0,13.379c0,1.037,0.753,1.791,1.696,1.791h25.819 + c1.036,0,1.79-0.849,1.79-1.883c0,0,0-11.119,0-13.383C39.645,25.155,8.36,25.251,9.397,25.251z"/> + <path fill="#FFE100" d="M9.442,25.272c0,2.255,0,13.34,0,13.34c0,1.034,0.751,1.785,1.691,1.785h25.74 + c1.033,0,1.784-0.846,1.784-1.879c0,0,0-11.084,0-13.34C39.598,25.179,8.408,25.272,9.442,25.272z"/> + <path fill="#FFE200" d="M9.486,25.296c0,2.248,0,13.299,0,13.299c0,1.029,0.749,1.779,1.686,1.779h25.662 + c1.029,0,1.777-0.844,1.777-1.873c0,0,0-11.051,0-13.299C39.549,25.202,8.457,25.296,9.486,25.296z"/> + <path fill="#FFE300" d="M9.532,25.318c0,2.241,0,13.259,0,13.259c0,1.027,0.747,1.773,1.68,1.773h25.583 + c1.025,0,1.771-0.84,1.771-1.866c0,0,0-11.017,0-13.259C39.502,25.226,8.504,25.318,9.532,25.318z"/> + <path fill="#FFE400" d="M9.577,25.341c0,2.234,0,13.218,0,13.218c0,1.024,0.744,1.769,1.675,1.769h25.503 + c1.022,0,1.769-0.838,1.769-1.859c0,0,0-10.983,0-13.219C39.454,25.249,8.553,25.341,9.577,25.341z"/> + <path fill="#FFE500" d="M9.621,25.364c0,2.229,0,13.178,0,13.178c0,1.021,0.742,1.763,1.67,1.763h25.424 + c1.02,0,1.764-0.835,1.764-1.855c0,0,0-10.948,0-13.176C39.406,25.272,8.601,25.364,9.621,25.364z"/> + <path fill="#FFE600" d="M9.666,25.388c0,2.221,0,13.135,0,13.135c0,1.02,0.74,1.758,1.665,1.758h25.345 + c1.018,0,1.758-0.832,1.758-1.85c0,0,0-10.914,0-13.135C39.357,25.296,8.648,25.388,9.666,25.388z"/> + <path fill="#FFE600" d="M9.711,25.411c0,2.215,0,13.094,0,13.094c0,1.016,0.737,1.754,1.66,1.754h25.266 + c1.016,0,1.752-0.83,1.752-1.846c0,0,0-10.879,0-13.094C39.311,25.319,8.696,25.411,9.711,25.411z"/> + <path fill="#FFE700" d="M9.756,25.434c0,2.207,0,13.054,0,13.054c0,1.012,0.735,1.747,1.654,1.747h25.188 + c1.012,0,1.746-0.827,1.746-1.839c0,0,0-10.846,0-13.053C39.264,25.343,8.745,25.434,9.756,25.434z"/> + <path fill="#FFE800" d="M9.801,25.458c0,2.199,0,13.013,0,13.013c0,1.008,0.732,1.741,1.649,1.741h25.108 + c1.008,0,1.74-0.825,1.74-1.834c0,0,0-10.812,0-13.012C39.215,25.366,8.792,25.458,9.801,25.458z"/> + <path fill="#FFE900" d="M9.845,25.48c0,2.192,0,12.972,0,12.972c0,1.006,0.73,1.735,1.644,1.735h25.029 + c1.006,0,1.735-0.822,1.735-1.827c0,0,0-10.777,0-12.971C39.167,25.39,8.84,25.48,9.845,25.48z"/> + <path fill="#FFEA00" d="M9.89,25.503c0,2.187,0,12.931,0,12.931c0,1.002,0.729,1.729,1.639,1.729h24.95 + c1.002,0,1.729-0.818,1.729-1.82c0,0,0-10.744,0-12.93C39.12,25.413,8.889,25.503,9.89,25.503z"/> + <path fill="#FFEB00" d="M9.935,25.526c0,2.18,0,12.891,0,12.891c0,0.998,0.726,1.725,1.634,1.725h24.871 + c1,0,1.726-0.817,1.726-1.814c0,0,0-10.711,0-12.89C39.072,25.437,8.937,25.526,9.935,25.526z"/> + <path fill="#FFEC00" d="M9.98,25.548c0,2.174,0,12.85,0,12.85c0,0.996,0.724,1.721,1.628,1.721H36.4 + c0.994,0,1.719-0.814,1.719-1.811c0,0,0-10.676,0-12.85C39.023,25.46,8.985,25.548,9.98,25.548z"/> + <path fill="#FFED00" d="M10.025,25.572c0,2.165,0,12.808,0,12.808c0,0.992,0.721,1.715,1.623,1.715h24.713 + c0.99,0,1.713-0.812,1.713-1.805c0,0,0-10.642,0-12.808C38.977,25.482,9.033,25.572,10.025,25.572z"/> + <path fill="#FFEE00" d="M10.07,25.595c0,2.158,0,12.768,0,12.768c0,0.989,0.719,1.708,1.618,1.708h24.635 + c0.987,0,1.706-0.809,1.706-1.798c0,0,0-10.607,0-12.768C38.93,25.505,9.081,25.595,10.07,25.595z"/> + <path fill="#FFEF00" d="M10.114,25.618c0,2.151,0,12.727,0,12.727c0,0.986,0.717,1.703,1.613,1.703h24.555 + c0.985,0,1.702-0.808,1.702-1.793c0,0,0-10.573,0-12.726C38.881,25.529,9.129,25.618,10.114,25.618z"/> + <path fill="#FFF000" d="M10.159,25.642c0,2.145,0,12.686,0,12.686c0,0.982,0.714,1.696,1.608,1.696h24.476 + c0.981,0,1.696-0.804,1.696-1.786c0,0,0-10.54,0-12.685C38.833,25.553,9.177,25.642,10.159,25.642z"/> + <path fill="#FFF100" d="M10.204,25.665c0,2.138,0,12.644,0,12.644c0,0.979,0.712,1.692,1.603,1.692h24.397 + c0.979,0,1.69-0.802,1.69-1.78c0,0,0-10.507,0-12.644C38.785,25.577,9.225,25.665,10.204,25.665z"/> + <path fill="#FFF200" d="M10.249,25.688c0,2.131,0,12.603,0,12.603c0,0.978,0.71,1.688,1.597,1.688h24.318 + c0.977,0,1.686-0.799,1.686-1.773c0,0,0-10.473,0-12.604C38.736,25.6,9.273,25.688,10.249,25.688z"/> + <path fill="#FFF300" d="M10.294,25.71c0,2.125,0,12.562,0,12.562c0,0.975,0.708,1.682,1.592,1.682h24.239 + c0.973,0,1.68-0.797,1.68-1.77c0,0,0-10.438,0-12.562C38.689,25.624,9.321,25.71,10.294,25.71z"/> + <path fill="#FFF400" d="M10.339,25.733c0,2.117,0,12.521,0,12.521c0,0.97,0.705,1.675,1.587,1.675h24.16 + c0.969,0,1.674-0.793,1.674-1.763c0,0,0-10.403,0-12.521C38.643,25.646,9.369,25.733,10.339,25.733z"/> + <path fill="#FFF500" d="M10.384,25.757c0,2.109,0,12.479,0,12.479c0,0.969,0.703,1.67,1.582,1.67h24.081 + c0.967,0,1.669-0.79,1.669-1.757c0,0,0-10.369,0-12.479C38.596,25.669,9.417,25.757,10.384,25.757z"/> + <path fill="#FFF600" d="M10.428,25.779c0,2.104,0,12.438,0,12.438c0,0.965,0.701,1.664,1.577,1.664h24.002 + c0.964,0,1.663-0.787,1.663-1.75c0,0,0-10.336,0-12.438C38.547,25.693,9.465,25.779,10.428,25.779z"/> + <path fill="#FFF700" d="M10.473,25.803c0,2.097,0,12.397,0,12.397c0,0.961,0.698,1.659,1.571,1.659h23.923 + c0.96,0,1.658-0.786,1.658-1.746c0,0,0-10.302,0-12.397C38.499,25.716,9.513,25.803,10.473,25.803z"/> + <path fill="#FFF800" d="M10.518,25.827c0,2.088,0,12.355,0,12.355c0,0.958,0.696,1.654,1.566,1.654h23.844 + c0.957,0,1.653-0.783,1.653-1.74c0,0,0-10.268,0-12.356C38.451,25.74,9.561,25.827,10.518,25.827z"/> + <path fill="#FFF900" d="M10.563,25.849c0,2.083,0,12.316,0,12.316c0,0.953,0.693,1.647,1.561,1.647h23.765 + c0.953,0,1.647-0.78,1.647-1.733c0,0,0-10.233,0-12.316C38.402,25.763,9.609,25.849,10.563,25.849z"/> + <path fill="#FFFA00" d="M10.608,25.872c0,2.075,0,12.275,0,12.275c0,0.951,0.691,1.643,1.556,1.643H35.85 + c0.95,0,1.643-0.777,1.643-1.729c0,0,0-10.199,0-12.275C38.355,25.786,9.657,25.872,10.608,25.872z"/> + <path fill="#FFFB00" d="M10.653,25.896c0,2.068,0,12.232,0,12.232c0,0.949,0.689,1.639,1.55,1.639h23.607 + c0.946,0,1.637-0.775,1.637-1.723c0,0,0-10.166,0-12.234C38.309,25.81,9.705,25.896,10.653,25.896z"/> + <path fill="#FFFC00" d="M10.697,25.917c0,2.062,0,12.193,0,12.193c0,0.945,0.687,1.633,1.545,1.633H35.77 + c0.944,0,1.631-0.772,1.631-1.718c0,0,0-10.132,0-12.192C38.262,25.833,9.753,25.917,10.697,25.917z"/> + <path fill="#FFFD00" d="M10.742,25.941c0,2.056,0,12.151,0,12.151c0,0.941,0.685,1.627,1.541,1.627h23.449 + c0.939,0,1.625-0.771,1.625-1.711c0,0,0-10.098,0-12.152C38.213,25.856,9.801,25.941,10.742,25.941z"/> + <path fill="#FFFE00" d="M10.787,25.964c0,2.048,0,12.11,0,12.11c0,0.939,0.682,1.621,1.535,1.621h23.37 + c0.938,0,1.619-0.768,1.619-1.705c0,0,0-10.062,0-12.11C38.165,25.88,9.849,25.964,10.787,25.964z"/> + <path fill="#FFFF00" d="M10.832,25.987c0,2.041,0,12.07,0,12.07c0,0.936,0.68,1.615,1.53,1.615h23.291 + c0.936,0,1.615-0.766,1.615-1.699c0,0,0-10.029,0-12.07C38.117,25.903,9.897,25.987,10.832,25.987z"/> + </g> + + <linearGradient id="House_Highlight_1_" gradientUnits="userSpaceOnUse" x1="210.0469" y1="-255.9038" x2="210.0469" y2="-269.6733" gradientTransform="matrix(1 0 0 -1 -186 -230)"> + <stop offset="0" style="stop-color:#FFFFFF"/> + <stop offset="1" style="stop-color:#FFFF00"/> + </linearGradient> + <path id="House_Highlight" fill="url(#House_Highlight_1_)" d="M10.832,25.987c0,2.041,0,12.07,0,12.07 + c0,0.936,0.68,1.615,1.53,1.615h23.291c0.936,0,1.615-0.766,1.615-1.699c0,0,0-10.029,0-12.07 + C38.117,25.903,9.897,25.987,10.832,25.987z"/> + </g> + <g id="Roof"> + <g> + <path fill="#006600" d="M22.8,6.963l-17.7,15.1l0,0c-0.3,0.301-0.5,0.801-0.5,1.2c0,0.2,0,0.399,0.1,0.601c0.3,0.6,0.9,1,1.6,1 + l35.3-0.1c0.801,0,1.4-0.5,1.7-1.201c0.101-0.199,0.101-0.4,0.101-0.6c0-0.5-0.199-1-0.699-1.4L25.4,6.963l0.1,0.1 + C24.8,6.363,23.7,6.263,22.8,6.963L22.8,6.963z"/> + <path fill="#006700" d="M22.803,6.989L5.155,22.044l0,0c-0.299,0.3-0.499,0.799-0.499,1.197c0,0.2,0,0.398,0.1,0.599 + c0.299,0.598,0.897,0.997,1.595,0.997l35.198-0.1c0.799,0,1.396-0.5,1.695-1.197c0.102-0.198,0.102-0.399,0.102-0.598 + c0-0.498-0.199-0.997-0.699-1.396L25.396,6.989l0.1,0.099C24.798,6.391,23.701,6.291,22.803,6.989L22.803,6.989z"/> + <path fill="#006800" d="M22.807,7.014L5.209,22.026l0,0c-0.298,0.299-0.497,0.796-0.497,1.193c0,0.199,0,0.397,0.1,0.598 + c0.298,0.596,0.895,0.994,1.591,0.994l35.096-0.1c0.796,0,1.394-0.498,1.69-1.194c0.1-0.198,0.1-0.397,0.1-0.596 + c0-0.497-0.198-0.995-0.696-1.393l-17.2-14.514l0.099,0.099C24.795,6.417,23.702,6.317,22.807,7.014L22.807,7.014z"/> + <path fill="#006900" d="M22.81,7.039L5.264,22.008l0,0c-0.298,0.298-0.496,0.793-0.496,1.189c0,0.198,0,0.396,0.099,0.596 + c0.297,0.594,0.893,0.99,1.586,0.99l34.995-0.099c0.794,0,1.388-0.497,1.686-1.19c0.101-0.198,0.101-0.397,0.101-0.594 + c0-0.496-0.198-0.991-0.694-1.389L25.389,7.039l0.1,0.099C24.793,6.444,23.703,6.345,22.81,7.039L22.81,7.039z"/> + <path fill="#006A00" d="M22.814,7.064L5.318,21.989l0,0c-0.296,0.298-0.494,0.792-0.494,1.187c0,0.198,0,0.395,0.099,0.594 + c0.295,0.593,0.89,0.987,1.582,0.987l34.892-0.098c0.793,0,1.386-0.494,1.682-1.187c0.1-0.197,0.1-0.396,0.1-0.593 + c0-0.494-0.197-0.988-0.691-1.384l-17.1-14.431l0.098,0.099C24.791,6.471,23.704,6.372,22.814,7.064L22.814,7.064z"/> + <path fill="#006B00" d="M22.817,7.089L5.373,21.971l0,0C5.077,22.267,4.88,22.76,4.88,23.154c0,0.197,0,0.394,0.099,0.592 + c0.295,0.591,0.887,0.984,1.577,0.984l34.792-0.099c0.789,0,1.381-0.493,1.676-1.183c0.1-0.196,0.1-0.395,0.1-0.591 + c0-0.493-0.197-0.986-0.689-1.38L25.381,7.089l0.098,0.098C24.788,6.498,23.705,6.399,22.817,7.089L22.817,7.089z"/> + <path fill="#006C00" d="M22.821,7.114L5.427,21.953l0,0c-0.295,0.295-0.492,0.787-0.492,1.179c0,0.197,0,0.393,0.099,0.59 + c0.294,0.589,0.884,0.981,1.572,0.981l34.688-0.098c0.787,0,1.376-0.492,1.671-1.181c0.1-0.196,0.1-0.393,0.1-0.589 + c0-0.492-0.196-0.983-0.688-1.376l-17-14.347l0.099,0.098C24.786,6.524,23.706,6.426,22.821,7.114L22.821,7.114z"/> + <path fill="#006D00" d="M22.824,7.139L5.481,21.934l0,0c-0.294,0.295-0.49,0.785-0.49,1.176c0,0.196,0,0.391,0.098,0.589 + c0.293,0.587,0.882,0.98,1.567,0.98l34.587-0.099c0.784,0,1.372-0.49,1.666-1.176c0.099-0.195,0.099-0.393,0.099-0.588 + c0-0.49-0.195-0.979-0.688-1.372L25.372,7.139l0.099,0.098C24.783,6.551,23.706,6.453,22.824,7.139L22.824,7.139z"/> + <path fill="#006E00" d="M22.827,7.164L5.536,21.915l0,0c-0.293,0.294-0.488,0.783-0.488,1.173c0,0.195,0,0.39,0.098,0.587 + c0.293,0.585,0.879,0.977,1.563,0.977l34.484-0.097c0.783,0,1.369-0.49,1.662-1.173c0.098-0.194,0.098-0.391,0.098-0.586 + c0-0.489-0.195-0.977-0.684-1.368L25.367,7.164l0.098,0.098C24.781,6.578,23.707,6.48,22.827,7.164L22.827,7.164z"/> + <path fill="#006F00" d="M22.831,7.189L5.591,21.897l0,0c-0.292,0.292-0.487,0.78-0.487,1.168c0,0.195,0,0.39,0.097,0.585 + c0.292,0.584,0.876,0.973,1.558,0.973l34.384-0.097c0.779,0,1.363-0.487,1.655-1.169c0.099-0.194,0.099-0.39,0.099-0.584 + c0-0.487-0.194-0.974-0.683-1.364L25.363,7.189l0.099,0.098C24.779,6.605,23.708,6.507,22.831,7.189L22.831,7.189z"/> + <path fill="#007000" d="M22.834,7.215L5.646,21.879l0,0c-0.292,0.292-0.486,0.778-0.486,1.165c0,0.195,0,0.388,0.098,0.584 + c0.291,0.582,0.874,0.971,1.554,0.971l34.281-0.098c0.778,0,1.36-0.485,1.651-1.166c0.098-0.193,0.098-0.389,0.098-0.583 + c0-0.485-0.193-0.971-0.68-1.36L25.359,7.215l0.098,0.097C24.775,6.632,23.709,6.535,22.834,7.215L22.834,7.215z"/> + <path fill="#007100" d="M22.838,7.24L5.7,21.86l0,0c-0.291,0.292-0.484,0.775-0.484,1.162c0,0.194,0,0.387,0.097,0.582 + c0.29,0.58,0.871,0.967,1.549,0.967l34.18-0.096c0.774,0,1.354-0.484,1.646-1.162c0.1-0.193,0.1-0.388,0.1-0.581 + c0-0.484-0.194-0.968-0.68-1.356L25.355,7.24l0.097,0.097C24.773,6.659,23.709,6.562,22.838,7.24L22.838,7.24z"/> + <path fill="#007200" d="M22.842,7.265L5.755,21.842l0,0C5.465,22.133,5.272,22.615,5.272,23c0,0.194,0,0.386,0.097,0.581 + c0.289,0.578,0.868,0.964,1.544,0.964l34.077-0.096c0.773,0,1.353-0.483,1.642-1.159c0.097-0.192,0.097-0.387,0.097-0.579 + c0-0.483-0.191-0.965-0.676-1.352L25.352,7.265l0.098,0.096C24.771,6.686,23.711,6.589,22.842,7.265L22.842,7.265z"/> + <path fill="#007300" d="M22.845,7.29L5.809,21.824l0,0c-0.29,0.29-0.481,0.771-0.481,1.155c0,0.193,0,0.385,0.096,0.579 + c0.289,0.577,0.867,0.961,1.54,0.961l33.976-0.097c0.771,0,1.35-0.481,1.638-1.155c0.097-0.192,0.097-0.386,0.097-0.577 + c0-0.481-0.191-0.963-0.674-1.348L25.348,7.29l0.098,0.096C24.771,6.712,23.711,6.616,22.845,7.29L22.845,7.29z"/> + <path fill="#007400" d="M22.848,7.315L5.863,21.805l0,0c-0.288,0.289-0.48,0.769-0.48,1.152c0,0.192,0,0.383,0.096,0.576 + c0.288,0.575,0.864,0.959,1.535,0.959l33.875-0.096c0.769,0,1.344-0.479,1.631-1.152c0.098-0.191,0.098-0.384,0.098-0.575 + c0-0.479-0.192-0.959-0.672-1.344L25.344,7.315l0.096,0.096C24.768,6.739,23.712,6.643,22.848,7.315L22.848,7.315z"/> + <path fill="#007500" d="M22.852,7.34L5.918,21.787l0,0c-0.288,0.288-0.479,0.767-0.479,1.148c0,0.191,0,0.382,0.096,0.575 + c0.287,0.574,0.861,0.956,1.53,0.956l33.772-0.096c0.767,0,1.34-0.478,1.627-1.148c0.097-0.19,0.097-0.383,0.097-0.574 + c0-0.479-0.19-0.957-0.67-1.34L25.34,7.34l0.096,0.095C24.766,6.767,23.713,6.67,22.852,7.34L22.852,7.34z"/> + <path fill="#007600" d="M22.855,7.365L5.973,21.768l0,0c-0.287,0.287-0.477,0.764-0.477,1.145c0,0.191,0,0.381,0.095,0.573 + c0.286,0.572,0.858,0.953,1.526,0.953l33.67-0.095c0.764,0,1.336-0.477,1.622-1.146c0.096-0.19,0.096-0.382,0.096-0.572 + c0-0.477-0.19-0.954-0.668-1.336L25.336,7.365l0.096,0.095C24.764,6.793,23.714,6.697,22.855,7.365L22.855,7.365z"/> + <path fill="#007700" d="M22.858,7.391L6.027,21.75l0,0c-0.286,0.286-0.476,0.762-0.476,1.142c0,0.19,0,0.38,0.095,0.571 + c0.285,0.57,0.856,0.95,1.521,0.95l33.567-0.095c0.763,0,1.332-0.476,1.617-1.141c0.097-0.189,0.097-0.381,0.097-0.57 + c0-0.476-0.19-0.951-0.666-1.332L25.331,7.391l0.096,0.095C24.762,6.82,23.715,6.725,22.858,7.391L22.858,7.391z"/> + <path fill="#007800" d="M22.862,7.416L6.082,21.731l0,0c-0.285,0.285-0.475,0.759-0.475,1.138c0,0.19,0,0.379,0.095,0.57 + c0.284,0.568,0.854,0.947,1.517,0.947l33.467-0.095c0.76,0,1.328-0.474,1.61-1.138c0.097-0.189,0.097-0.379,0.097-0.568 + c0-0.474-0.189-0.948-0.664-1.328L25.327,7.416l0.095,0.095C24.758,6.847,23.716,6.751,22.862,7.416L22.862,7.416z"/> + <path fill="#007900" d="M22.865,7.441L6.136,21.713l0,0c-0.284,0.284-0.473,0.757-0.473,1.135c0,0.189,0,0.377,0.095,0.567 + c0.283,0.567,0.851,0.944,1.512,0.944l33.365-0.094c0.758,0,1.324-0.473,1.607-1.135c0.095-0.188,0.095-0.378,0.095-0.566 + c0-0.473-0.188-0.945-0.662-1.324L25.323,7.441l0.095,0.094C24.756,6.874,23.716,6.779,22.865,7.441L22.865,7.441z"/> + <path fill="#007A00" d="M22.869,7.466L6.19,21.694l0,0c-0.283,0.283-0.471,0.754-0.471,1.131c0,0.188,0,0.376,0.094,0.566 + c0.283,0.564,0.848,0.941,1.507,0.941l33.263-0.094c0.755,0,1.319-0.471,1.603-1.131c0.096-0.188,0.096-0.377,0.096-0.565 + c0-0.471-0.188-0.942-0.66-1.32L25.318,7.466l0.095,0.094C24.754,6.901,23.717,6.806,22.869,7.466L22.869,7.466z"/> + <path fill="#007B00" d="M22.872,7.491L6.245,21.676l0,0c-0.282,0.283-0.47,0.752-0.47,1.128c0,0.188,0,0.375,0.094,0.564 + c0.282,0.563,0.846,0.939,1.503,0.939l33.161-0.094c0.753,0,1.316-0.469,1.598-1.127c0.096-0.187,0.096-0.376,0.096-0.563 + c0-0.47-0.188-0.939-0.658-1.316L25.314,7.491l0.095,0.094C24.751,6.927,23.718,6.833,22.872,7.491L22.872,7.491z"/> + <path fill="#007C00" d="M22.876,7.516L6.299,21.658l0,0c-0.281,0.281-0.468,0.75-0.468,1.124c0,0.188,0,0.374,0.094,0.562 + c0.281,0.562,0.843,0.936,1.499,0.936l33.059-0.093c0.75,0,1.312-0.468,1.594-1.124c0.094-0.187,0.094-0.375,0.094-0.562 + c0-0.468-0.188-0.937-0.656-1.312L25.312,7.516l0.094,0.094C24.749,6.954,23.719,6.86,22.876,7.516L22.876,7.516z"/> + <path fill="#007D00" d="M22.879,7.542L6.354,21.639l0,0c-0.281,0.281-0.467,0.748-0.467,1.121c0,0.187,0,0.373,0.094,0.561 + c0.28,0.56,0.84,0.933,1.494,0.933l32.958-0.093c0.748,0,1.308-0.467,1.586-1.121c0.096-0.186,0.096-0.374,0.096-0.56 + c0-0.467-0.188-0.934-0.654-1.307L25.307,7.542L25.4,7.635C24.746,6.981,23.72,6.887,22.879,7.542L22.879,7.542z"/> + <path fill="#007E00" d="M22.883,7.566L6.408,21.621l0,0c-0.279,0.28-0.465,0.745-0.465,1.117c0,0.187,0,0.372,0.093,0.559 + c0.279,0.558,0.838,0.93,1.489,0.93l32.856-0.093c0.746,0,1.305-0.465,1.583-1.117c0.095-0.186,0.095-0.373,0.095-0.559 + c0-0.465-0.188-0.93-0.652-1.303L25.303,7.566l0.094,0.093C24.744,7.008,23.721,6.915,22.883,7.566L22.883,7.566z"/> + <path fill="#007F00" d="M22.886,7.592L6.463,21.603l0,0c-0.279,0.279-0.464,0.743-0.464,1.113c0,0.186,0,0.371,0.093,0.558 + c0.278,0.556,0.835,0.927,1.484,0.927l32.754-0.092c0.743,0,1.3-0.464,1.577-1.114c0.094-0.185,0.094-0.372,0.094-0.557 + c0-0.464-0.187-0.928-0.649-1.299L25.299,7.592l0.094,0.092C24.742,7.035,23.722,6.941,22.886,7.592L22.886,7.592z"/> + <path fill="#007F00" d="M22.89,7.617L6.518,21.584l0,0c-0.278,0.278-0.462,0.741-0.462,1.11c0,0.185,0,0.369,0.092,0.556 + c0.276,0.555,0.833,0.924,1.48,0.924l32.651-0.092c0.742,0,1.297-0.462,1.572-1.11c0.094-0.185,0.094-0.371,0.094-0.555 + c0-0.462-0.186-0.925-0.647-1.295L25.295,7.617l0.094,0.092C24.738,7.062,23.723,6.969,22.89,7.617L22.89,7.617z"/> + <path fill="#008000" d="M22.893,7.642L6.572,21.565l0,0c-0.277,0.277-0.461,0.739-0.461,1.107c0,0.185,0,0.368,0.092,0.554 + c0.276,0.553,0.83,0.921,1.475,0.921l32.55-0.092c0.738,0,1.291-0.461,1.566-1.106c0.094-0.184,0.094-0.369,0.094-0.553 + c0-0.461-0.185-0.922-0.646-1.292L25.291,7.642l0.093,0.092C24.736,7.088,23.724,6.996,22.893,7.642L22.893,7.642z"/> + <path fill="#008100" d="M22.896,7.667l-16.27,13.88l0,0c-0.276,0.277-0.459,0.736-0.459,1.104c0,0.184,0,0.367,0.092,0.552 + c0.275,0.551,0.827,0.918,1.471,0.918l32.448-0.091c0.736,0,1.288-0.459,1.562-1.104c0.093-0.183,0.093-0.368,0.093-0.551 + c0-0.459-0.185-0.919-0.644-1.287L25.287,7.667l0.092,0.092C24.734,7.116,23.725,7.023,22.896,7.667L22.896,7.667z"/> + <path fill="#008200" d="M22.9,7.692L6.681,21.529l0,0c-0.275,0.275-0.458,0.734-0.458,1.1c0,0.184,0,0.366,0.092,0.55 + c0.275,0.549,0.825,0.916,1.466,0.916l32.347-0.091c0.733,0,1.284-0.458,1.558-1.1c0.094-0.183,0.094-0.367,0.094-0.55 + c0-0.458-0.184-0.917-0.643-1.283L25.282,7.692l0.093,0.091C24.732,7.143,23.725,7.05,22.9,7.692L22.9,7.692z"/> + <path fill="#008300" d="M22.903,7.717L6.735,21.51l0,0c-0.274,0.275-0.457,0.731-0.457,1.096c0,0.183,0,0.365,0.091,0.549 + c0.274,0.547,0.822,0.913,1.461,0.913l32.245-0.091c0.731,0,1.28-0.457,1.554-1.096c0.092-0.182,0.092-0.366,0.092-0.548 + c0-0.457-0.183-0.914-0.64-1.279L25.277,7.717l0.093,0.091C24.73,7.169,23.726,7.078,22.903,7.717L22.903,7.717z"/> + <path fill="#008400" d="M22.907,7.742L6.79,21.492l0,0c-0.273,0.274-0.456,0.729-0.456,1.093c0,0.183,0,0.364,0.091,0.547 + c0.273,0.546,0.82,0.909,1.457,0.909l32.144-0.09c0.729,0,1.274-0.455,1.548-1.093c0.092-0.181,0.092-0.364,0.092-0.546 + c0-0.455-0.183-0.911-0.638-1.275L25.273,7.742l0.093,0.091C24.729,7.196,23.727,7.105,22.907,7.742L22.907,7.742z"/> + <path fill="#008500" d="M22.911,7.768L6.845,21.474l0,0c-0.272,0.273-0.454,0.727-0.454,1.089c0,0.182,0,0.363,0.091,0.546 + c0.272,0.543,0.817,0.906,1.452,0.906l32.041-0.09c0.729,0,1.271-0.454,1.543-1.089c0.092-0.181,0.092-0.363,0.092-0.544 + c0-0.454-0.182-0.908-0.635-1.271L25.271,7.768l0.09,0.09C24.727,7.223,23.728,7.132,22.911,7.768L22.911,7.768z"/> + <path fill="#008600" d="M22.914,7.792L6.899,21.455l0,0c-0.272,0.272-0.453,0.725-0.453,1.086c0,0.181,0,0.361,0.091,0.543 + c0.271,0.542,0.814,0.904,1.447,0.904l31.939-0.09c0.726,0,1.269-0.452,1.538-1.086c0.092-0.18,0.092-0.362,0.092-0.542 + c0-0.452-0.181-0.905-0.634-1.267L25.268,7.792l0.09,0.09C24.725,7.25,23.729,7.159,22.914,7.792L22.914,7.792z"/> + <path fill="#008700" d="M22.917,7.818L6.954,21.437l0,0c-0.271,0.271-0.451,0.722-0.451,1.083c0,0.181,0,0.36,0.09,0.542 + c0.271,0.54,0.812,0.901,1.443,0.901l31.837-0.09c0.723,0,1.264-0.451,1.533-1.082c0.092-0.18,0.092-0.361,0.092-0.541 + c0-0.451-0.182-0.902-0.633-1.263L25.264,7.818l0.09,0.09C24.723,7.277,23.729,7.186,22.917,7.818L22.917,7.818z"/> + <path fill="#008800" d="M22.921,7.843L7.008,21.418l0,0c-0.27,0.27-0.45,0.72-0.45,1.079c0,0.18,0,0.359,0.09,0.54 + c0.27,0.539,0.809,0.898,1.438,0.898l31.734-0.09c0.722,0,1.261-0.449,1.529-1.079c0.09-0.179,0.09-0.36,0.09-0.539 + c0-0.449-0.18-0.899-0.629-1.259L25.259,7.843l0.091,0.09C24.719,7.303,23.73,7.213,22.921,7.843L22.921,7.843z"/> + <path fill="#008900" d="M22.924,7.868L7.062,21.4l0,0c-0.269,0.269-0.448,0.717-0.448,1.075c0,0.18,0,0.358,0.09,0.539 + c0.269,0.537,0.807,0.895,1.434,0.895l31.633-0.089c0.72,0,1.256-0.448,1.523-1.075c0.092-0.179,0.092-0.359,0.092-0.538 + c0-0.448-0.181-0.896-0.629-1.255L25.255,7.868l0.091,0.089C24.717,7.331,23.731,7.241,22.924,7.868L22.924,7.868z"/> + <path fill="#008A00" d="M22.928,7.893L7.117,21.381l0,0C6.849,21.65,6.67,22.097,6.67,22.453c0,0.179,0,0.357,0.089,0.537 + c0.268,0.536,0.804,0.893,1.429,0.893l31.533-0.089c0.715,0,1.252-0.446,1.518-1.072c0.092-0.178,0.092-0.358,0.092-0.536 + c0-0.446-0.18-0.894-0.626-1.251L25.25,7.893l0.09,0.089C24.714,7.357,23.732,7.268,22.928,7.893L22.928,7.893z"/> + <path fill="#008B00" d="M22.931,7.918L7.172,21.363l0,0c-0.268,0.268-0.445,0.713-0.445,1.069c0,0.178,0,0.355,0.089,0.535 + c0.267,0.534,0.801,0.89,1.424,0.89l31.43-0.089c0.714,0,1.248-0.445,1.514-1.068c0.09-0.178,0.09-0.357,0.09-0.534 + c0-0.445-0.178-0.891-0.623-1.247L25.246,7.918l0.09,0.089C24.712,7.384,23.733,7.295,22.931,7.918L22.931,7.918z"/> + <path fill="#008C00" d="M22.935,7.943L7.227,21.345l0,0c-0.267,0.267-0.444,0.71-0.444,1.065c0,0.178,0,0.354,0.089,0.533 + c0.266,0.532,0.799,0.887,1.42,0.887l31.328-0.089c0.711,0,1.243-0.443,1.509-1.065c0.09-0.177,0.09-0.355,0.09-0.532 + c0-0.444-0.178-0.888-0.621-1.243L25.242,7.943l0.089,0.089C24.71,7.411,23.734,7.322,22.935,7.943L22.935,7.943z"/> + <path fill="#008D00" d="M22.938,7.968L7.281,21.326l0,0c-0.266,0.266-0.442,0.708-0.442,1.062c0,0.177,0,0.353,0.088,0.532 + c0.264,0.53,0.796,0.883,1.415,0.883l31.227-0.088c0.709,0,1.24-0.442,1.505-1.062c0.09-0.176,0.09-0.354,0.09-0.53 + c0-0.442-0.177-0.885-0.62-1.239L25.238,7.968l0.089,0.088C24.707,7.438,23.735,7.349,22.938,7.968L22.938,7.968z"/> + <path fill="#008E00" d="M22.941,7.994L7.335,21.308l0,0c-0.265,0.265-0.441,0.706-0.441,1.058c0,0.177,0,0.352,0.088,0.53 + c0.264,0.528,0.793,0.881,1.411,0.881l31.125-0.088c0.707,0,1.235-0.441,1.5-1.058c0.088-0.176,0.088-0.353,0.088-0.529 + c0-0.441-0.176-0.882-0.617-1.235L25.234,7.994l0.089,0.088C24.705,7.465,23.736,7.376,22.941,7.994L22.941,7.994z"/> + <path fill="#008F00" d="M22.945,8.019L7.39,21.289l0,0c-0.264,0.264-0.44,0.704-0.44,1.055c0,0.176,0,0.351,0.088,0.528 + c0.263,0.527,0.791,0.878,1.406,0.878l31.022-0.088c0.704,0,1.231-0.439,1.494-1.055c0.089-0.175,0.089-0.352,0.089-0.527 + c0-0.439-0.176-0.879-0.615-1.231L25.229,8.019l0.09,0.088C24.703,7.492,23.736,7.403,22.945,8.019L22.945,8.019z"/> + <path fill="#009000" d="M22.948,8.044L7.444,21.271l0,0c-0.263,0.263-0.438,0.701-0.438,1.051c0,0.175,0,0.35,0.087,0.526 + c0.263,0.525,0.789,0.875,1.401,0.875l30.921-0.088c0.702,0,1.228-0.438,1.489-1.051c0.089-0.174,0.089-0.351,0.089-0.525 + c0-0.438-0.177-0.876-0.614-1.227L25.227,8.044l0.088,0.087C24.7,7.519,23.737,7.431,22.948,8.044L22.948,8.044z"/> + <path fill="#009100" d="M22.952,8.069L7.499,21.252l0,0c-0.262,0.262-0.437,0.699-0.437,1.048c0,0.175,0,0.349,0.087,0.524 + c0.262,0.523,0.786,0.872,1.397,0.872l30.819-0.087c0.699,0,1.224-0.436,1.484-1.047c0.088-0.174,0.088-0.35,0.088-0.524 + c0-0.436-0.174-0.873-0.611-1.223L25.223,8.069l0.088,0.087C24.698,7.545,23.738,7.458,22.952,8.069L22.952,8.069z"/> + <path fill="#009200" d="M22.955,8.094L7.553,21.234l0,0c-0.261,0.262-0.435,0.697-0.435,1.044c0,0.174,0,0.347,0.087,0.523 + c0.259,0.521,0.783,0.869,1.392,0.869l30.717-0.087c0.697,0,1.22-0.435,1.479-1.044c0.088-0.173,0.088-0.348,0.088-0.522 + c0-0.435-0.174-0.87-0.609-1.218L25.218,8.094l0.089,0.087C24.695,7.572,23.739,7.485,22.955,8.094L22.955,8.094z"/> + <path fill="#009300" d="M22.959,8.119L7.608,21.215l0,0c-0.26,0.261-0.434,0.695-0.434,1.041c0,0.174,0,0.346,0.087,0.521 + c0.26,0.52,0.781,0.867,1.388,0.867l30.615-0.087c0.695,0,1.217-0.434,1.475-1.041c0.089-0.173,0.089-0.348,0.089-0.521 + c0-0.433-0.175-0.867-0.606-1.214L25.214,8.119l0.088,0.087C24.693,7.599,23.74,7.512,22.959,8.119L22.959,8.119z"/> + <path fill="#009400" d="M22.962,8.145l-15.3,13.053l0,0c-0.26,0.26-0.433,0.692-0.433,1.037c0,0.173,0,0.345,0.086,0.52 + c0.259,0.518,0.778,0.863,1.383,0.863l30.514-0.086c0.692,0,1.212-0.432,1.47-1.038c0.088-0.172,0.088-0.346,0.088-0.519 + c0-0.432-0.172-0.864-0.605-1.21L25.21,8.145l0.087,0.086C24.691,7.626,23.741,7.539,22.962,8.145L22.962,8.145z"/> + <path fill="#009500" d="M22.966,8.169L7.717,21.179l0,0c-0.259,0.259-0.431,0.69-0.431,1.034c0,0.173,0,0.344,0.086,0.518 + c0.257,0.517,0.775,0.86,1.378,0.86l30.412-0.086c0.689,0,1.207-0.431,1.465-1.034c0.087-0.171,0.087-0.345,0.087-0.517 + c0-0.431-0.172-0.861-0.604-1.207L25.206,8.169l0.087,0.086C24.688,7.653,23.742,7.566,22.966,8.169L22.966,8.169z"/> + <path fill="#009600" d="M22.969,8.195L7.771,21.16l0,0c-0.258,0.258-0.43,0.688-0.43,1.03c0,0.172,0,0.343,0.086,0.516 + c0.257,0.515,0.773,0.858,1.374,0.858l30.311-0.086c0.688,0,1.203-0.429,1.459-1.03c0.088-0.171,0.088-0.344,0.088-0.515 + c0-0.429-0.172-0.859-0.602-1.203L25.201,8.195l0.087,0.085C24.688,7.68,23.743,7.593,22.969,8.195L22.969,8.195z"/> + <path fill="#009700" d="M22.973,8.22L7.826,21.142l0,0c-0.257,0.257-0.428,0.686-0.428,1.027c0,0.171,0,0.341,0.085,0.514 + c0.255,0.513,0.771,0.855,1.369,0.855l30.208-0.086c0.687,0,1.198-0.428,1.455-1.027c0.086-0.17,0.086-0.343,0.086-0.513 + c0-0.428-0.172-0.856-0.6-1.198L25.197,8.22l0.087,0.085C24.686,7.707,23.743,7.621,22.973,8.22L22.973,8.22z"/> + <path fill="#009800" d="M22.976,8.245L7.88,21.124l0,0c-0.256,0.256-0.427,0.683-0.427,1.023c0,0.171,0,0.34,0.085,0.512 + c0.256,0.511,0.768,0.852,1.364,0.852l30.106-0.085c0.684,0,1.195-0.426,1.45-1.023c0.086-0.17,0.086-0.342,0.086-0.512 + c0-0.426-0.17-0.853-0.599-1.194L25.193,8.245l0.086,0.085C24.682,7.733,23.744,7.647,22.976,8.245L22.976,8.245z"/> + <path fill="#009900" d="M22.979,8.27L7.935,21.105l0,0C7.68,21.36,7.51,21.786,7.51,22.125c0,0.17,0,0.339,0.085,0.511 + c0.255,0.509,0.765,0.849,1.36,0.849L38.959,23.4c0.682,0,1.191-0.425,1.445-1.02c0.086-0.169,0.086-0.34,0.086-0.51 + c0-0.425-0.17-0.85-0.596-1.19L25.189,8.27l0.086,0.085C24.68,7.76,23.745,7.675,22.979,8.27L22.979,8.27z"/> + </g> + + <linearGradient id="Roof_Highlight_1_" gradientUnits="userSpaceOnUse" x1="210" y1="-237.8638" x2="210" y2="-253.4849" gradientTransform="matrix(1 0 0 -1 -186 -230)"> + <stop offset="0" style="stop-color:#FFFFFF"/> + <stop offset="1" style="stop-color:#009900"/> + </linearGradient> + <path id="Roof_Highlight" fill="url(#Roof_Highlight_1_)" d="M22.979,8.27L7.935,21.105l0,0C7.68,21.36,7.51,21.786,7.51,22.125 + c0,0.17,0,0.339,0.085,0.51c0.255,0.51,0.765,0.85,1.36,0.85L38.959,23.4c0.682,0,1.191-0.425,1.445-1.021 + c0.086-0.169,0.086-0.34,0.086-0.51c0-0.424-0.17-0.85-0.596-1.189L25.189,8.27l0.086,0.085C24.68,7.76,23.745,7.675,22.979,8.27 + L22.979,8.27z"/> + </g> + </g> +</g> +<g id="Layer_2"> + <g id="crop_x0020_marks"> + <path fill="none" d="M48,47.687H0v-48h48V47.687z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/important.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/important.svg new file mode 100644 index 000000000..ddb9a30fc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/important.svg @@ -0,0 +1,239 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.1" id="Caution" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48" + overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve"> +<g> + <path stroke="#FFFFFF" stroke-width="6.6112" d="M42.35,35.841L27.248,9.941c-0.602-1-1.699-1.7-2.899-1.6c-1.2,0-2.3,0.7-2.9,1.7 + l-14.5,25.901c-0.6,1-0.6,2.299,0,3.299c0.6,1,1.7,1.6,2.9,1.6h29.601c1.199,0,2.301-0.6,2.898-1.697 + C42.949,38.142,42.949,36.841,42.35,35.841L42.35,35.841z"/> + <g> + <path fill="#FFFFFF" stroke="#009900" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" d="M24.349,11.586 + l-14.5,26h29.601L24.349,11.586z"/> + <polygon fill="#FFFFFF" stroke="#009A00" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.35,11.611 9.877,37.562 39.42,37.562 "/> + <polygon fill="#FFFFFF" stroke="#009B01" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.35,11.637 9.907,37.536 39.391,37.536 "/> + <polygon fill="#FFFFFF" stroke="#009C01" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.351,11.662 9.935,37.511 39.361,37.511 "/> + <polygon fill="#FFFFFF" stroke="#009D02" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.352,11.688 9.963,37.485 39.334,37.485 "/> + <polygon fill="#FFFFFF" stroke="#009E02" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.352,11.712 9.993,37.46 39.305,37.46 "/> + <polygon fill="#FFFFFF" stroke="#009F03" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.353,11.738 10.021,37.435 39.275,37.435 "/> + <polygon fill="#FFFFFF" stroke="#00A003" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.353,11.763 10.049,37.409 39.248,37.409 "/> + <polygon fill="#FFFFFF" stroke="#00A104" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.354,11.789 10.079,37.386 39.219,37.386 "/> + <polygon fill="#FFFFFF" stroke="#00A204" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.354,11.813 10.106,37.36 39.189,37.36 "/> + <polygon fill="#FFFFFF" stroke="#00A305" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.354,11.838 10.135,37.335 39.16,37.335 "/> + <polygon fill="#FFFFFF" stroke="#00A405" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.355,11.864 10.166,37.31 39.133,37.31 "/> + <polygon fill="#FFFFFF" stroke="#00A506" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.355,11.89 10.193,37.284 39.104,37.284 "/> + <polygon fill="#FFFFFF" stroke="#00A606" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.355,11.915 10.223,37.259 39.074,37.259 "/> + <polygon fill="#FFFFFF" stroke="#00A707" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.356,11.939 10.25,37.233 39.047,37.233 "/> + <polygon fill="#FFFFFF" stroke="#00A807" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.357,11.965 10.279,37.21 39.018,37.21 "/> + <polygon fill="#FFFFFF" stroke="#00A908" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.357,11.99 10.309,37.183 38.988,37.183 "/> + <polygon fill="#FFFFFF" stroke="#00AA08" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.357,12.016 10.336,37.157 38.959,37.157 "/> + <polygon fill="#FFFFFF" stroke="#00AB09" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.358,12.041 10.367,37.132 38.932,37.132 "/> + <polygon fill="#FFFFFF" stroke="#00AC09" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.359,12.066 10.396,37.106 38.902,37.106 "/> + <polygon fill="#FFFFFF" stroke="#00AD0A" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.359,12.091 10.423,37.083 38.873,37.083 "/> + <polygon fill="#FFFFFF" stroke="#00AE0A" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.36,12.116 10.453,37.056 38.846,37.056 "/> + <polygon fill="#FFFFFF" stroke="#00AF0B" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.361,12.142 10.48,37.032 38.816,37.032 "/> + <polygon fill="#FFFFFF" stroke="#00B00B" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.362,12.167 10.509,37.007 38.789,37.007 "/> + <polygon fill="#FFFFFF" stroke="#00B10C" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.362,12.191 10.539,36.981 38.76,36.981 "/> + <polygon fill="#FFFFFF" stroke="#00B20C" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.362,12.217 10.566,36.956 38.729,36.956 "/> + <polygon fill="#FFFFFF" stroke="#00B30D" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.363,12.242 10.596,36.931 38.701,36.931 "/> + <polygon fill="#FFFFFF" stroke="#00B40D" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.364,12.269 10.625,36.905 38.674,36.905 "/> + <polygon fill="#FFFFFF" stroke="#00B50E" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.364,12.293 10.653,36.88 38.645,36.88 "/> + <polygon fill="#FFFFFF" stroke="#00B60E" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.366,12.317 10.682,36.854 38.613,36.854 "/> + <polygon fill="#FFFFFF" stroke="#00B70F" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.367,12.343 10.71,36.829 38.586,36.829 "/> + <polygon fill="#FFFFFF" stroke="#00B80F" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.367,12.37 10.739,36.804 38.559,36.804 "/> + <polygon fill="#FFFFFF" stroke="#00B910" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.368,12.395 10.769,36.778 38.527,36.778 "/> + <polygon fill="#FFFFFF" stroke="#00BA10" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.368,12.419 10.796,36.755 38.5,36.755 "/> + <polygon fill="#FFFFFF" stroke="#00BB11" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.369,12.444 10.826,36.728 38.471,36.728 "/> + <polygon fill="#FFFFFF" stroke="#00BC11" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.37,12.469 10.854,36.704 38.441,36.704 "/> + <polygon fill="#FFFFFF" stroke="#00BD12" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.37,12.496 10.883,36.677 38.414,36.677 "/> + <polygon fill="#FFFFFF" stroke="#00BE12" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.371,12.521 10.912,36.651 38.385,36.651 "/> + <polygon fill="#FFFFFF" stroke="#00BF13" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.371,12.545 10.94,36.628 38.355,36.628 "/> + <polygon fill="#FFFFFF" stroke="#00C013" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.372,12.57 10.969,36.603 38.328,36.603 "/> + <polygon fill="#FFFFFF" stroke="#00C114" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.372,12.595 10.999,36.577 38.299,36.577 "/> + <polygon fill="#FFFFFF" stroke="#00C214" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.373,12.622 11.026,36.552 38.27,36.552 "/> + <polygon fill="#FFFFFF" stroke="#00C315" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.373,12.646 11.056,36.526 38.242,36.526 "/> + <polygon fill="#FFFFFF" stroke="#00C415" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.374,12.672 11.084,36.503 38.213,36.503 "/> + <polygon fill="#FFFFFF" stroke="#00C516" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.375,12.696 11.113,36.476 38.184,36.476 "/> + <polygon fill="#FFFFFF" stroke="#00C616" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.375,12.721 11.142,36.45 38.154,36.45 "/> + <polygon fill="#FFFFFF" stroke="#00C717" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.375,12.748 11.17,36.425 38.127,36.425 "/> + <polygon fill="#FFFFFF" stroke="#00C817" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.375,12.773 11.2,36.401 38.098,36.401 "/> + <polygon fill="#FFFFFF" stroke="#00C918" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.376,12.797 11.229,36.376 38.068,36.376 "/> + <polygon fill="#FFFFFF" stroke="#00CA18" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.376,12.822 11.256,36.349 38.041,36.349 "/> + <polygon fill="#FFFFFF" stroke="#00CB19" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.377,12.849 11.286,36.325 38.012,36.325 "/> + <polygon fill="#FFFFFF" stroke="#00CC19" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.378,12.875 11.314,36.3 37.982,36.3 "/> + <polygon fill="#FFFFFF" stroke="#00CC1A" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.378,12.899 11.342,36.274 37.955,36.274 "/> + <polygon fill="#FFFFFF" stroke="#00CD1A" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.379,12.923 11.372,36.249 37.926,36.249 "/> + <polygon fill="#FFFFFF" stroke="#00CE1B" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.379,12.949 11.4,36.224 37.896,36.224 "/> + <polygon fill="#FFFFFF" stroke="#00CF1B" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.38,12.975 11.43,36.198 37.867,36.198 "/> + <polygon fill="#FFFFFF" stroke="#00D01C" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.381,13 11.458,36.173 37.84,36.173 "/> + <polygon fill="#FFFFFF" stroke="#00D11C" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.381,13.024 11.486,36.147 37.811,36.147 "/> + <polygon fill="#FFFFFF" stroke="#00D21D" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.381,13.05 11.516,36.124 37.781,36.124 "/> + <polygon fill="#FFFFFF" stroke="#00D31D" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.382,13.075 11.543,36.097 37.754,36.097 "/> + <polygon fill="#FFFFFF" stroke="#00D41E" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.383,13.102 11.572,36.071 37.725,36.071 "/> + <polygon fill="#FFFFFF" stroke="#00D51E" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.383,13.126 11.602,36.046 37.695,36.046 "/> + <polygon fill="#FFFFFF" stroke="#00D61F" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.384,13.151 11.63,36.022 37.666,36.022 "/> + <polygon fill="#FFFFFF" stroke="#00D71F" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.385,13.176 11.66,35.997 37.639,35.997 "/> + <polygon fill="#FFFFFF" stroke="#00D820" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.385,13.201 11.688,35.972 37.609,35.972 "/> + <polygon fill="#FFFFFF" stroke="#00D920" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.387,13.228 11.716,35.946 37.58,35.946 "/> + <polygon fill="#FFFFFF" stroke="#00DA21" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.387,13.252 11.746,35.921 37.553,35.921 "/> + <polygon fill="#FFFFFF" stroke="#00DB21" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.388,13.277 11.773,35.896 37.521,35.896 "/> + <polygon fill="#FFFFFF" stroke="#00DC22" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.389,13.302 11.802,35.872 37.494,35.872 "/> + <polygon fill="#FFFFFF" stroke="#00DD22" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.389,13.327 11.832,35.845 37.465,35.845 "/> + <polygon fill="#FFFFFF" stroke="#00DE23" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.39,13.354 11.86,35.819 37.438,35.819 "/> + <polygon fill="#FFFFFF" stroke="#00DF23" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.39,13.378 11.89,35.796 37.408,35.796 "/> + <polygon fill="#FFFFFF" stroke="#00E024" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.391,13.403 11.917,35.769 37.379,35.769 "/> + <polygon fill="#FFFFFF" stroke="#00E124" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.391,13.429 11.946,35.743 37.352,35.743 "/> + <polygon fill="#FFFFFF" stroke="#00E225" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.392,13.455 11.976,35.718 37.32,35.718 "/> + <polygon fill="#FFFFFF" stroke="#00E325" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.393,13.479 12.003,35.694 37.293,35.694 "/> + <polygon fill="#FFFFFF" stroke="#00E426" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.393,13.504 12.033,35.669 37.264,35.669 "/> + <polygon fill="#FFFFFF" stroke="#00E526" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.394,13.529 12.062,35.644 37.234,35.644 "/> + <polygon fill="#FFFFFF" stroke="#00E627" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.394,13.556 12.09,35.618 37.207,35.618 "/> + <polygon fill="#FFFFFF" stroke="#00E727" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.395,13.581 12.12,35.593 37.178,35.593 "/> + <polygon fill="#FFFFFF" stroke="#00E828" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.396,13.605 12.147,35.567 37.148,35.567 "/> + <polygon fill="#FFFFFF" stroke="#00E928" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.396,13.63 12.176,35.544 37.121,35.544 "/> + <polygon fill="#FFFFFF" stroke="#00EA29" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.396,13.655 12.206,35.517 37.092,35.517 "/> + <polygon fill="#FFFFFF" stroke="#00EB29" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.396,13.682 12.233,35.491 37.062,35.491 "/> + <polygon fill="#FFFFFF" stroke="#00EC2A" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.397,13.707 12.263,35.466 37.035,35.466 "/> + <polygon fill="#FFFFFF" stroke="#00ED2A" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.397,13.732 12.292,35.44 37.006,35.44 "/> + <polygon fill="#FFFFFF" stroke="#00EE2B" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.398,13.756 12.319,35.417 36.977,35.417 "/> + <polygon fill="#FFFFFF" stroke="#00EF2B" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.398,13.782 12.349,35.392 36.949,35.392 "/> + <polygon fill="#FFFFFF" stroke="#00F02C" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.399,13.808 12.377,35.366 36.92,35.366 "/> + <polygon fill="#FFFFFF" stroke="#00F12C" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.399,13.833 12.407,35.341 36.891,35.341 "/> + <polygon fill="#FFFFFF" stroke="#00F22D" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.4,13.858 12.436,35.315 36.861,35.315 "/> + <polygon fill="#FFFFFF" stroke="#00F32D" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.401,13.883 12.463,35.29 36.834,35.29 "/> + <polygon fill="#FFFFFF" stroke="#00F42E" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.401,13.908 12.493,35.265 36.805,35.265 "/> + <polygon fill="#FFFFFF" stroke="#00F52E" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.402,13.934 12.521,35.239 36.775,35.239 "/> + <polygon fill="#FFFFFF" stroke="#00F62F" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.402,13.959 12.549,35.214 36.748,35.214 "/> + <polygon fill="#FFFFFF" stroke="#00F72F" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.403,13.983 12.579,35.188 36.719,35.188 "/> + <polygon fill="#FFFFFF" stroke="#00F830" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.404,14.009 12.607,35.165 36.689,35.165 "/> + <polygon fill="#FFFFFF" stroke="#00F930" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.404,14.034 12.637,35.138 36.662,35.138 "/> + <polygon fill="#FFFFFF" stroke="#00FA31" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.405,14.061 12.666,35.112 36.633,35.112 "/> + <polygon fill="#FFFFFF" stroke="#00FB31" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.405,14.085 12.693,35.089 36.604,35.089 "/> + <polygon fill="#FFFFFF" stroke="#00FC32" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.407,14.11 12.723,35.063 36.574,35.063 "/> + <polygon fill="#FFFFFF" stroke="#00FD32" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.408,14.135 12.75,35.038 36.547,35.038 "/> + <polygon fill="#FFFFFF" stroke="#00FE33" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" points=" + 24.408,14.16 12.779,35.013 36.518,35.013 "/> + <path fill="#FFFFFF" stroke="#00FF33" stroke-width="6.6112" stroke-linecap="round" stroke-linejoin="round" d="M24.409,14.187 + l-11.6,20.801h23.68L24.409,14.187z"/> + </g> + + <linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="582.6475" y1="-987.77" x2="582.6475" y2="-1015.4038" gradientTransform="matrix(1 0 0 -1 -558 -977)"> + <stop offset="0" style="stop-color:#FFFFFF"/> + <stop offset="1" style="stop-color:#00FF33"/> + </linearGradient> + <path fill="url(#XMLID_4_)" d="M39.693,34.153L26.857,12.138c-0.51-0.85-1.443-1.445-2.463-1.36c-1.021,0-1.955,0.595-2.465,1.445 + L9.604,34.239c-0.511,0.85-0.511,1.953,0,2.805c0.51,0.852,1.444,1.359,2.465,1.359h25.16c1.021,0,1.955-0.51,2.465-1.445 + C40.203,36.106,40.203,35.003,39.693,34.153L39.693,34.153z"/> + <g> + <path d="M24.648,33.487c-1.1,0-1.8-0.801-1.8-1.801c0-1.102,0.7-1.801,1.8-1.801c1.1,0,1.801,0.699,1.801,1.801 + C26.449,32.687,25.748,33.487,24.648,33.487L24.648,33.487z M23.449,28.786l-0.4-9.1h3.2l-0.4,9.1H23.55H23.449z"/> + </g> +</g> +<g id="crop_x0020_marks"> + <path fill="none" d="M48.648,48.586h-48v-48h48V48.586z"/> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/next.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/next.svg new file mode 100644 index 000000000..481d49f7e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/next.svg @@ -0,0 +1,338 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48" + overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve"> +<g> + <path fill="#FFFFFF" stroke="#FFFFFF" stroke-width="7.5901" stroke-linejoin="round" d="M22.34,41.101c0,0.301,0.3,0.301,0.5,0.2 + l16.6-16.899c0.5-0.5,0.4-0.7,0-1l-16.6-16.7c-0.1-0.1-0.4-0.1-0.4,0.1v10H8.84c-0.3,0-0.5,0.2-0.5,0.4v13.299 + c0,0.4,0.2,0.5,0.6,0.5h13.5L22.34,41.101z"/> + <g> + <path fill="#0033CC" d="M22.34,41.101c0,0.301,0.3,0.301,0.5,0.2l16.6-16.899c0.5-0.5,0.4-0.7,0-1l-16.6-16.7 + c-0.1-0.1-0.4-0.1-0.4,0.1v10H8.84c-0.3,0-0.5,0.2-0.5,0.4v13.299c0,0.4,0.2,0.5,0.6,0.5h13.5L22.34,41.101z"/> + <path fill="#0134CC" d="M22.351,41.074c0,0.3,0.3,0.3,0.5,0.2L39.427,24.4c0.5-0.499,0.4-0.699,0-0.999L22.85,6.729 + c-0.1-0.1-0.399-0.1-0.399,0.099v9.984H8.87c-0.299,0-0.5,0.2-0.5,0.4v13.279c0,0.398,0.2,0.499,0.6,0.499H22.45L22.351,41.074z" + /> + <path fill="#0235CD" d="M22.359,41.047c0,0.3,0.299,0.3,0.499,0.2l16.553-16.848c0.5-0.498,0.399-0.697,0-0.997L22.858,6.755 + c-0.1-0.1-0.399-0.1-0.399,0.1v9.969H8.897c-0.299,0-0.499,0.199-0.499,0.399v13.258c0,0.398,0.2,0.498,0.598,0.498h13.462 + L22.359,41.047z"/> + <path fill="#0336CD" d="M22.369,41.021c0,0.301,0.299,0.301,0.498,0.199l16.53-16.82c0.498-0.498,0.397-0.696,0-0.995 + L22.866,6.783c-0.1-0.1-0.398-0.1-0.398,0.099v9.953H8.926c-0.299,0-0.498,0.199-0.498,0.398v13.239 + c0,0.397,0.199,0.496,0.598,0.496h13.442L22.369,41.021z"/> + <path fill="#0437CE" d="M22.378,40.994c0,0.299,0.298,0.299,0.497,0.198l16.506-16.794c0.496-0.497,0.397-0.695,0-0.994 + L22.876,6.81c-0.1-0.1-0.398-0.1-0.398,0.099v9.937H8.956c-0.298,0-0.498,0.199-0.498,0.398v13.217c0,0.397,0.2,0.496,0.597,0.496 + h13.423L22.378,40.994z"/> + <path fill="#0538CE" d="M22.389,40.968c0,0.299,0.298,0.299,0.496,0.198l16.483-16.769c0.496-0.496,0.397-0.694,0-0.992 + L22.884,6.836c-0.099-0.099-0.397-0.099-0.397,0.099v9.922H8.983c-0.297,0-0.496,0.199-0.496,0.397V30.45 + c0,0.396,0.199,0.496,0.596,0.496h13.404L22.389,40.968z"/> + <path fill="#0639CF" d="M22.398,40.94c0,0.299,0.298,0.299,0.496,0.199l16.46-16.742c0.495-0.496,0.396-0.694,0-0.991 + L22.894,6.863c-0.099-0.099-0.396-0.099-0.396,0.099v9.906H9.012c-0.297,0-0.496,0.198-0.496,0.396V30.44 + c0,0.396,0.199,0.494,0.595,0.494h13.386L22.398,40.94z"/> + <path fill="#073ACF" d="M22.407,40.914c0,0.298,0.298,0.298,0.495,0.198l16.437-16.716c0.494-0.495,0.396-0.692,0-0.989 + L22.902,6.891c-0.099-0.099-0.396-0.099-0.396,0.099v9.891H9.041c-0.296,0-0.495,0.198-0.495,0.396v13.154 + c0,0.396,0.198,0.493,0.594,0.493h13.367L22.407,40.914z"/> + <path fill="#083BD0" d="M22.417,40.888c0,0.297,0.297,0.297,0.495,0.198l16.413-16.689c0.494-0.494,0.396-0.691,0-0.987 + L22.912,6.917c-0.099-0.099-0.396-0.099-0.396,0.099v9.875H9.069c-0.296,0-0.494,0.198-0.494,0.396v13.133 + c0,0.395,0.198,0.493,0.594,0.493h13.347L22.417,40.888z"/> + <path fill="#093CD0" d="M22.426,40.86c0,0.297,0.296,0.297,0.493,0.197l16.39-16.662c0.492-0.494,0.395-0.69,0-0.986L22.919,6.943 + c-0.099-0.099-0.395-0.099-0.395,0.098v9.86H9.099c-0.296,0-0.494,0.197-0.494,0.395V30.41c0,0.396,0.198,0.493,0.593,0.493 + h13.328L22.426,40.86z"/> + <path fill="#0A3DD1" d="M22.437,40.834c0,0.297,0.296,0.297,0.493,0.196l16.367-16.636c0.492-0.493,0.395-0.689,0-0.984 + L22.928,6.97c-0.099-0.099-0.394-0.099-0.394,0.098v9.844H9.127c-0.296,0-0.493,0.197-0.493,0.394v13.093 + c0,0.395,0.197,0.492,0.592,0.492h13.309L22.437,40.834z"/> + <path fill="#0B3ED1" d="M22.445,40.808c0,0.297,0.296,0.297,0.492,0.197l16.343-16.61c0.492-0.492,0.395-0.688,0-0.982 + L22.938,6.999C22.84,6.9,22.544,6.9,22.544,7.097v9.829H9.155c-0.295,0-0.493,0.196-0.493,0.394v13.072 + c0,0.394,0.198,0.49,0.591,0.49h13.29L22.445,40.808z"/> + <path fill="#0C3FD2" d="M22.456,40.78c0,0.296,0.295,0.296,0.492,0.197l16.319-16.584c0.49-0.491,0.395-0.687,0-0.982 + L22.946,7.024c-0.098-0.098-0.393-0.098-0.393,0.098v9.813H9.185c-0.294,0-0.492,0.196-0.492,0.393v13.05 + c0,0.394,0.197,0.491,0.59,0.491h13.271L22.456,40.78z"/> + <path fill="#0D40D2" d="M22.464,40.754c0,0.295,0.294,0.295,0.491,0.196l16.295-16.558c0.489-0.49,0.393-0.686,0-0.98 + L22.956,7.051c-0.099-0.098-0.393-0.098-0.393,0.097v9.797H9.212c-0.294,0-0.49,0.197-0.49,0.393v13.031 + c0,0.393,0.196,0.489,0.588,0.489h13.252L22.464,40.754z"/> + <path fill="#0E41D3" d="M22.475,40.728c0,0.295,0.294,0.295,0.49,0.196l16.272-16.531c0.49-0.489,0.394-0.684,0-0.978L22.964,7.08 + c-0.098-0.098-0.392-0.098-0.392,0.097v9.782H9.241c-0.294,0-0.49,0.196-0.49,0.392v13.01c0,0.392,0.196,0.488,0.588,0.488h13.233 + L22.475,40.728z"/> + <path fill="#0F42D3" d="M22.483,40.701c0,0.294,0.294,0.294,0.49,0.194l16.248-16.504c0.488-0.488,0.393-0.683,0-0.977 + L22.974,7.105c-0.098-0.098-0.391-0.098-0.391,0.097v9.767H9.271c-0.293,0-0.489,0.195-0.489,0.391v12.988 + c0,0.392,0.196,0.487,0.587,0.487h13.214L22.483,40.701z"/> + <path fill="#1043D4" d="M22.494,40.675c0,0.293,0.294,0.293,0.489,0.194l16.226-16.478c0.487-0.488,0.392-0.683,0-0.975 + L22.982,7.132c-0.098-0.098-0.391-0.098-0.391,0.097v9.751H9.298c-0.293,0-0.489,0.195-0.489,0.39v12.967 + c0,0.392,0.196,0.487,0.586,0.487H22.59L22.494,40.675z"/> + <path fill="#1144D4" d="M22.502,40.647c0,0.293,0.293,0.293,0.488,0.194L39.191,24.39c0.487-0.487,0.392-0.682,0-0.974 + L22.991,7.16c-0.098-0.098-0.391-0.098-0.391,0.097v9.735H9.328c-0.293,0-0.488,0.195-0.488,0.39v12.948 + c0,0.39,0.195,0.486,0.585,0.486h13.176L22.502,40.647z"/> + <path fill="#1245D5" d="M22.514,40.621c0,0.292,0.292,0.292,0.487,0.194L39.177,24.39c0.488-0.486,0.392-0.68,0-0.972L23,7.188 + c-0.098-0.098-0.39-0.098-0.39,0.096v9.72H9.356c-0.292,0-0.487,0.195-0.487,0.39v12.926c0,0.39,0.195,0.486,0.585,0.486H22.61 + L22.514,40.621z"/> + <path fill="#1346D5" d="M22.522,40.595c0,0.292,0.292,0.292,0.487,0.194L39.165,24.39c0.485-0.485,0.389-0.679,0-0.97 + L23.009,7.213c-0.098-0.097-0.389-0.097-0.389,0.097v9.704H9.384c-0.292,0-0.486,0.194-0.486,0.389V30.31 + c0,0.389,0.195,0.484,0.584,0.484h13.138L22.522,40.595z"/> + <path fill="#1447D6" d="M22.531,40.567c0,0.291,0.292,0.291,0.486,0.193l16.132-16.372c0.484-0.484,0.389-0.678,0-0.969 + L23.018,7.241c-0.097-0.097-0.389-0.097-0.389,0.097v9.688H9.414c-0.292,0-0.486,0.194-0.486,0.388v12.885 + c0,0.388,0.195,0.483,0.583,0.483h13.118L22.531,40.567z"/> + <path fill="#1548D6" d="M22.542,40.541c0,0.291,0.292,0.291,0.485,0.192l16.107-16.346c0.484-0.484,0.389-0.677,0-0.968 + L23.026,7.268c-0.097-0.097-0.388-0.097-0.388,0.097v9.672H9.441c-0.291,0-0.485,0.194-0.485,0.388v12.865 + c0,0.388,0.194,0.483,0.582,0.483h13.099L22.542,40.541z"/> + <path fill="#1649D7" d="M22.551,40.515c0,0.291,0.291,0.291,0.484,0.193l16.083-16.321c0.485-0.483,0.389-0.676,0-0.966 + L23.036,7.294c-0.097-0.097-0.388-0.097-0.388,0.096v9.657H9.47c-0.291,0-0.484,0.193-0.484,0.387v12.844 + c0,0.387,0.194,0.481,0.582,0.481h13.08L22.551,40.515z"/> + <path fill="#174AD7" d="M22.561,40.487c0,0.291,0.291,0.291,0.484,0.193l16.061-16.294c0.483-0.482,0.388-0.674,0-0.964 + L23.044,7.321c-0.097-0.096-0.387-0.096-0.387,0.097v9.641H9.5c-0.29,0-0.483,0.193-0.483,0.386v12.823 + c0,0.387,0.193,0.481,0.58,0.481h13.062L22.561,40.487z"/> + <path fill="#184BD8" d="M22.57,40.462c0,0.289,0.29,0.289,0.483,0.191l16.038-16.267c0.481-0.481,0.387-0.673,0-0.962 + L23.053,7.349c-0.097-0.096-0.387-0.096-0.387,0.096v9.626H9.527c-0.29,0-0.483,0.193-0.483,0.385v12.802 + c0,0.386,0.193,0.481,0.58,0.481h13.042L22.57,40.462z"/> + <path fill="#194CD8" d="M22.58,40.435c0,0.289,0.29,0.289,0.482,0.192l16.014-16.242c0.481-0.481,0.387-0.672,0-0.961 + L23.062,7.375c-0.097-0.096-0.386-0.096-0.386,0.096v9.611H9.557c-0.289,0-0.482,0.192-0.482,0.385v12.782 + c0,0.384,0.193,0.479,0.579,0.479h13.023L22.58,40.435z"/> + <path fill="#1A4DD9" d="M22.589,40.408c0,0.288,0.289,0.288,0.482,0.192l15.99-16.216c0.48-0.48,0.386-0.672,0-0.959L23.071,7.402 + c-0.097-0.096-0.385-0.096-0.385,0.095v9.595H9.585c-0.289,0-0.482,0.192-0.482,0.384v12.761c0,0.385,0.193,0.479,0.578,0.479 + h13.004L22.589,40.408z"/> + <path fill="#1B4ED9" d="M22.6,40.382c0,0.288,0.289,0.288,0.481,0.192l15.967-16.19c0.48-0.479,0.385-0.67,0-0.958L23.081,7.43 + c-0.096-0.096-0.384-0.096-0.384,0.095v9.58H9.614c-0.288,0-0.481,0.192-0.481,0.384v12.741c0,0.383,0.193,0.478,0.577,0.478 + h12.985L22.6,40.382z"/> + <path fill="#1C4FDA" d="M22.608,40.354c0,0.289,0.289,0.289,0.48,0.192l15.943-16.164c0.479-0.478,0.386-0.669,0-0.957 + L23.088,7.457c-0.096-0.096-0.384-0.096-0.384,0.095v9.564H9.643c-0.288,0-0.48,0.191-0.48,0.383v12.719 + c0,0.383,0.192,0.479,0.577,0.479h12.966L22.608,40.354z"/> + <path fill="#1D50DA" d="M22.619,40.328c0,0.287,0.288,0.287,0.479,0.19l15.92-16.136c0.479-0.478,0.384-0.668,0-0.955 + L23.098,7.482c-0.096-0.096-0.384-0.096-0.384,0.095v9.548H9.67c-0.288,0-0.479,0.191-0.479,0.382v12.699 + c0,0.382,0.191,0.479,0.575,0.479h12.947L22.619,40.328z"/> + <path fill="#1E51DB" d="M22.628,40.302c0,0.287,0.288,0.287,0.479,0.191l15.896-16.111c0.479-0.477,0.385-0.667,0-0.954 + L23.106,7.51c-0.096-0.096-0.383-0.096-0.383,0.094v9.533H9.699c-0.287,0-0.479,0.191-0.479,0.382v12.679 + c0,0.382,0.191,0.477,0.575,0.477h12.928L22.628,40.302z"/> + <path fill="#1F52DB" d="M22.637,40.274c0,0.287,0.288,0.287,0.479,0.19L38.99,24.381c0.478-0.476,0.382-0.666,0-0.952 + L23.115,7.538c-0.095-0.096-0.382-0.096-0.382,0.094v9.517H9.729c-0.287,0-0.478,0.191-0.478,0.381v12.657 + c0,0.381,0.191,0.477,0.574,0.477h12.909L22.637,40.274z"/> + <path fill="#2053DC" d="M22.647,40.249c0,0.285,0.287,0.285,0.478,0.189l15.85-16.058c0.477-0.475,0.382-0.665,0-0.95 + L23.125,7.563c-0.096-0.095-0.382-0.095-0.382,0.095v9.501H9.757c-0.286,0-0.478,0.19-0.478,0.381v12.636 + c0,0.381,0.191,0.475,0.573,0.475h12.89L22.647,40.249z"/> + <path fill="#2154DC" d="M22.656,40.222c0,0.285,0.287,0.285,0.477,0.19L38.96,24.38c0.477-0.475,0.381-0.664,0-0.949L23.133,7.59 + c-0.096-0.095-0.382-0.095-0.382,0.095v9.486H9.786c-0.286,0-0.477,0.19-0.477,0.38v12.617c0,0.379,0.191,0.474,0.572,0.474 + h12.871L22.656,40.222z"/> + <path fill="#2255DD" d="M22.667,40.194c0,0.285,0.286,0.285,0.477,0.189l15.802-16.004c0.476-0.474,0.382-0.663,0-0.947 + L23.143,7.618c-0.096-0.095-0.381-0.095-0.381,0.094v9.471H9.814c-0.285,0-0.476,0.189-0.476,0.379v12.596 + c0,0.379,0.191,0.473,0.572,0.473h12.851L22.667,40.194z"/> + <path fill="#2356DD" d="M22.675,40.169c0,0.284,0.286,0.284,0.476,0.189l15.779-15.979c0.475-0.473,0.381-0.662,0-0.945 + L23.151,7.645c-0.095-0.094-0.38-0.094-0.38,0.094v9.455H9.843c-0.285,0-0.475,0.189-0.475,0.378v12.574 + c0,0.379,0.19,0.474,0.571,0.474h12.832L22.675,40.169z"/> + <path fill="#2457DE" d="M22.686,40.144c0,0.282,0.285,0.282,0.475,0.188l15.756-15.953c0.474-0.472,0.379-0.66,0-0.944 + L23.159,7.671c-0.095-0.094-0.379-0.094-0.379,0.094v9.439H9.873c-0.285,0-0.475,0.189-0.475,0.378v12.554 + c0,0.378,0.19,0.472,0.569,0.472H22.78L22.686,40.144z"/> + <path fill="#2558DE" d="M22.694,40.115c0,0.282,0.285,0.282,0.474,0.188l15.733-15.925c0.473-0.471,0.379-0.66,0-0.942 + L23.168,7.698c-0.095-0.094-0.379-0.094-0.379,0.094v9.424H9.9c-0.284,0-0.474,0.189-0.474,0.377v12.535 + c0,0.376,0.189,0.471,0.568,0.471h12.794L22.694,40.115z"/> + <path fill="#2659DF" d="M22.705,40.089c0,0.283,0.284,0.283,0.473,0.188l15.708-15.899c0.474-0.471,0.38-0.659,0-0.941 + L23.177,7.726c-0.095-0.094-0.379-0.094-0.379,0.094v9.408H9.929c-0.284,0-0.473,0.188-0.473,0.377v12.514 + c0,0.376,0.189,0.469,0.568,0.469h12.775L22.705,40.089z"/> + <path fill="#275ADF" d="M22.714,40.063c0,0.281,0.284,0.281,0.473,0.188l15.685-15.874c0.473-0.47,0.379-0.658,0-0.939 + L23.188,7.752c-0.095-0.094-0.378-0.094-0.378,0.094v9.392H9.958c-0.283,0-0.472,0.188-0.472,0.376v12.492 + c0,0.375,0.189,0.47,0.567,0.47H22.81L22.714,40.063z"/> + <path fill="#285BE0" d="M22.724,40.036c0,0.281,0.283,0.281,0.472,0.188l15.662-15.847c0.472-0.469,0.378-0.656,0-0.938 + L23.195,7.779c-0.095-0.094-0.377-0.094-0.377,0.094v9.376H9.986c-0.283,0-0.472,0.188-0.472,0.375v12.472 + c0,0.375,0.189,0.467,0.566,0.467h12.737L22.724,40.036z"/> + <path fill="#295CE0" d="M22.732,40.009c0,0.281,0.283,0.281,0.471,0.188l15.639-15.82c0.471-0.468,0.377-0.655,0-0.936 + L23.205,7.807c-0.094-0.094-0.377-0.094-0.377,0.093v9.361H10.016c-0.283,0-0.471,0.188-0.471,0.375v12.451 + c0,0.374,0.188,0.468,0.565,0.468h12.718L22.732,40.009z"/> + <path fill="#2A5DE1" d="M22.742,39.981c0,0.28,0.283,0.28,0.47,0.188l15.615-15.793c0.471-0.468,0.377-0.654,0-0.935L23.212,7.833 + c-0.094-0.094-0.376-0.094-0.376,0.093v9.345H10.044c-0.282,0-0.471,0.188-0.471,0.375v12.431c0,0.374,0.188,0.467,0.565,0.467 + h12.699L22.742,39.981z"/> + <path fill="#2B5EE1" d="M22.752,39.956c0,0.279,0.282,0.279,0.469,0.188l15.592-15.768c0.469-0.467,0.376-0.653,0-0.933 + L23.223,7.86c-0.094-0.093-0.375-0.093-0.375,0.093v9.331H10.072c-0.282,0-0.47,0.187-0.47,0.373v12.41 + c0,0.373,0.188,0.466,0.563,0.466h12.68L22.752,39.956z"/> + <path fill="#2C5FE2" d="M22.761,39.929c0,0.28,0.282,0.28,0.469,0.188l15.567-15.742c0.47-0.466,0.377-0.652,0-0.932L23.231,7.887 + c-0.094-0.093-0.375-0.093-0.375,0.092v9.315H10.102c-0.281,0-0.469,0.187-0.469,0.373v12.388c0,0.372,0.188,0.465,0.563,0.465 + h12.661L22.761,39.929z"/> + <path fill="#2D60E2" d="M22.771,39.901c0,0.279,0.281,0.279,0.469,0.187l15.544-15.714c0.469-0.465,0.375-0.65,0-0.93 + L23.239,7.914c-0.094-0.093-0.375-0.093-0.375,0.093v9.299H10.129c-0.28,0-0.468,0.186-0.468,0.373v12.367 + c0,0.372,0.188,0.465,0.562,0.465h12.642L22.771,39.901z"/> + <path fill="#2E61E3" d="M22.781,39.876c0,0.277,0.281,0.277,0.468,0.186l15.521-15.688c0.468-0.464,0.375-0.649,0-0.928 + L23.25,7.94c-0.094-0.093-0.375-0.093-0.375,0.092v9.284H10.158c-0.28,0-0.467,0.186-0.467,0.372v12.347 + c0,0.372,0.188,0.464,0.561,0.464h12.623L22.781,39.876z"/> + <path fill="#2F62E3" d="M22.792,39.851c0,0.277,0.28,0.277,0.467,0.186l15.499-15.663c0.466-0.464,0.373-0.649,0-0.927 + l-15.5-15.479c-0.093-0.092-0.374-0.092-0.374,0.092v9.268H10.188c-0.28,0-0.467,0.186-0.467,0.372v12.325 + c0,0.371,0.187,0.463,0.56,0.463h12.604L22.792,39.851z"/> + <path fill="#3063E4" d="M22.799,39.821c0,0.279,0.281,0.279,0.467,0.187l15.475-15.636c0.465-0.463,0.373-0.648,0-0.925 + L23.267,7.995c-0.093-0.092-0.373-0.092-0.373,0.092v9.252H10.215c-0.279,0-0.466,0.185-0.466,0.371v12.305 + c0,0.369,0.187,0.461,0.56,0.461h12.584L22.799,39.821z"/> + <path fill="#3164E4" d="M22.81,39.796c0,0.277,0.28,0.277,0.466,0.186l15.451-15.61c0.465-0.462,0.372-0.646,0-0.924L23.275,8.021 + c-0.094-0.092-0.373-0.092-0.373,0.092v9.237H10.245c-0.279,0-0.465,0.185-0.465,0.37v12.285c0,0.369,0.187,0.461,0.559,0.461 + h12.565L22.81,39.796z"/> + <path fill="#3265E5" d="M22.819,39.771c0,0.276,0.279,0.276,0.465,0.185l15.428-15.583c0.465-0.461,0.373-0.646,0-0.922 + L23.284,8.048c-0.093-0.092-0.372-0.092-0.372,0.092v9.221H10.273c-0.279,0-0.464,0.185-0.464,0.37v12.265 + c0,0.369,0.186,0.46,0.558,0.46h12.546L22.819,39.771z"/> + <path fill="#3366E5" d="M22.83,39.743c0,0.275,0.278,0.275,0.464,0.185l15.404-15.557c0.464-0.46,0.371-0.645,0-0.921 + L23.293,8.076c-0.093-0.092-0.372-0.092-0.372,0.092v9.206h-12.62c-0.278,0-0.464,0.184-0.464,0.369v12.243 + c0,0.369,0.186,0.461,0.557,0.461h12.527L22.83,39.743z"/> + <path fill="#3366E6" d="M22.838,39.716c0,0.276,0.278,0.276,0.464,0.186l15.38-15.532c0.463-0.459,0.371-0.643,0-0.918 + L23.302,8.103c-0.093-0.092-0.371-0.092-0.371,0.091v9.19H10.331c-0.278,0-0.463,0.185-0.463,0.368v12.222 + c0,0.368,0.186,0.459,0.556,0.459h12.508L22.838,39.716z"/> + <path fill="#3467E6" d="M22.849,39.688c0,0.275,0.278,0.275,0.463,0.185l15.357-15.504c0.461-0.458,0.369-0.642,0-0.917 + L23.312,8.129C23.217,8.038,22.94,8.038,22.94,8.22v9.174H10.358c-0.277,0-0.462,0.184-0.462,0.368v12.203 + c0,0.366,0.185,0.458,0.555,0.458H22.94L22.849,39.688z"/> + <path fill="#3568E7" d="M22.857,39.663c0,0.275,0.277,0.275,0.462,0.184l15.333-15.478c0.461-0.458,0.37-0.641,0-0.916 + L23.319,8.156c-0.093-0.092-0.37-0.092-0.37,0.091v9.159H10.387c-0.277,0-0.461,0.184-0.461,0.367v12.182 + c0,0.366,0.185,0.457,0.554,0.457h12.47L22.857,39.663z"/> + <path fill="#3669E7" d="M22.867,39.637c0,0.274,0.277,0.274,0.461,0.183l15.31-15.452c0.461-0.458,0.368-0.64,0-0.915 + l-15.31-15.27c-0.092-0.091-0.369-0.091-0.369,0.091v9.143H10.417c-0.277,0-0.461,0.184-0.461,0.366v12.16 + c0,0.365,0.184,0.457,0.553,0.457h12.451L22.867,39.637z"/> + <path fill="#376AE8" d="M22.877,39.608c0,0.274,0.276,0.274,0.46,0.184l15.287-15.425c0.461-0.457,0.369-0.639,0-0.913 + L23.337,8.21c-0.092-0.091-0.368-0.091-0.368,0.091v9.127H10.445c-0.276,0-0.46,0.183-0.46,0.366v12.14 + c0,0.365,0.184,0.455,0.552,0.455h12.432L22.877,39.608z"/> + <path fill="#386BE8" d="M22.886,39.583c0,0.273,0.276,0.273,0.46,0.184l15.263-15.4c0.459-0.456,0.368-0.638,0-0.911L23.347,8.237 + c-0.092-0.091-0.368-0.091-0.368,0.091v9.112H10.474c-0.275,0-0.459,0.183-0.459,0.365v12.119c0,0.363,0.184,0.454,0.552,0.454 + h12.413L22.886,39.583z"/> + <path fill="#396CE9" d="M22.896,39.558c0,0.272,0.276,0.272,0.459,0.182l15.239-15.374c0.459-0.455,0.367-0.637,0-0.91 + L23.355,8.265c-0.092-0.091-0.368-0.091-0.368,0.09v9.097H10.502c-0.275,0-0.459,0.183-0.459,0.364v12.099 + c0,0.364,0.184,0.454,0.551,0.454h12.394L22.896,39.558z"/> + <path fill="#3A6DE9" d="M22.905,39.528c0,0.273,0.276,0.273,0.459,0.184l15.217-15.348c0.457-0.454,0.366-0.635,0-0.908 + L23.364,8.292c-0.092-0.091-0.367-0.091-0.367,0.09v9.081H10.531c-0.275,0-0.458,0.182-0.458,0.364v12.079 + c0,0.361,0.184,0.453,0.55,0.453h12.374L22.905,39.528z"/> + <path fill="#3B6EEA" d="M22.916,39.503c0,0.271,0.275,0.271,0.458,0.182l15.193-15.32c0.456-0.453,0.366-0.634,0-0.906 + L23.374,8.318c-0.092-0.091-0.366-0.091-0.366,0.09v9.065H10.56c-0.274,0-0.458,0.182-0.458,0.363v12.057 + c0,0.362,0.183,0.453,0.549,0.453h12.355L22.916,39.503z"/> + <path fill="#3C6FEA" d="M22.924,39.478c0,0.271,0.274,0.271,0.457,0.181l15.17-15.294c0.455-0.453,0.365-0.633,0-0.905 + L23.381,8.344c-0.092-0.09-0.366-0.09-0.366,0.09v9.05H10.588c-0.274,0-0.457,0.181-0.457,0.363v12.036 + c0,0.361,0.183,0.451,0.548,0.451h12.336L22.924,39.478z"/> + <path fill="#3D70EB" d="M22.935,39.45c0,0.271,0.274,0.271,0.456,0.181l15.146-15.269c0.455-0.452,0.365-0.632,0-0.904 + L23.391,8.373c-0.091-0.09-0.365-0.09-0.365,0.09v9.034H10.617c-0.274,0-0.456,0.181-0.456,0.362v12.017 + c0,0.36,0.182,0.45,0.547,0.45h12.317L22.935,39.45z"/> + <path fill="#3E71EB" d="M22.943,39.424c0,0.271,0.274,0.271,0.456,0.181l15.123-15.243c0.455-0.451,0.363-0.631,0-0.902 + L23.399,8.398c-0.091-0.09-0.365-0.09-0.365,0.09v9.019h-12.39c-0.273,0-0.455,0.181-0.455,0.361v11.994 + c0,0.361,0.182,0.451,0.546,0.451h12.298L22.943,39.424z"/> + <path fill="#3F72EC" d="M22.954,39.397c0,0.271,0.273,0.271,0.455,0.181l15.099-15.217c0.455-0.45,0.365-0.63,0-0.9L23.408,8.425 + c-0.091-0.09-0.364-0.09-0.364,0.089v9.003h-12.37c-0.272,0-0.455,0.18-0.455,0.361v11.974c0,0.359,0.182,0.449,0.546,0.449 + h12.279L22.954,39.397z"/> + <path fill="#4073EC" d="M22.962,39.37c0,0.27,0.273,0.27,0.455,0.18l15.076-15.188c0.453-0.45,0.363-0.629,0-0.898L23.417,8.453 + c-0.091-0.09-0.363-0.09-0.363,0.089v8.988H10.704c-0.272,0-0.454,0.18-0.454,0.36v11.954c0,0.358,0.182,0.448,0.545,0.448h12.26 + L22.962,39.37z"/> + <path fill="#4174ED" d="M22.973,39.344c0,0.271,0.272,0.271,0.454,0.181L38.479,24.36c0.452-0.449,0.362-0.628,0-0.897 + L23.426,8.48c-0.091-0.09-0.363-0.09-0.363,0.089v8.972H10.731c-0.272,0-0.453,0.18-0.453,0.359v11.933 + c0,0.357,0.181,0.447,0.544,0.447h12.241L22.973,39.344z"/> + <path fill="#4275ED" d="M22.982,39.315c0,0.271,0.272,0.271,0.453,0.181l15.028-15.137c0.453-0.448,0.363-0.626,0-0.896 + L23.436,8.506c-0.091-0.09-0.362-0.09-0.362,0.089v8.957H10.76c-0.271,0-0.453,0.18-0.453,0.358v11.913 + c0,0.357,0.181,0.445,0.543,0.445h12.222L22.982,39.315z"/> + <path fill="#4376EE" d="M22.991,39.29c0,0.27,0.272,0.27,0.453,0.179l15.005-15.109c0.451-0.447,0.362-0.625,0-0.894L23.444,8.534 + c-0.091-0.089-0.362-0.089-0.362,0.089v8.94H10.79c-0.271,0-0.452,0.18-0.452,0.358v11.893c0,0.355,0.181,0.444,0.542,0.444 + h12.203L22.991,39.29z"/> + <path fill="#4477EE" d="M23.001,39.265c0,0.268,0.271,0.268,0.452,0.178l14.981-15.083c0.449-0.446,0.361-0.625,0-0.893 + L23.454,8.561c-0.091-0.089-0.361-0.089-0.361,0.089v8.925H10.817c-0.271,0-0.451,0.179-0.451,0.357v11.87 + c0,0.356,0.181,0.445,0.542,0.445h12.184L23.001,39.265z"/> + <path fill="#4578EF" d="M23.01,39.237c0,0.268,0.271,0.268,0.451,0.178l14.959-15.058c0.449-0.445,0.359-0.624,0-0.891 + L23.461,8.587c-0.09-0.089-0.361-0.089-0.361,0.089v8.91H10.847c-0.27,0-0.45,0.179-0.45,0.356v11.851 + c0,0.354,0.18,0.444,0.541,0.444h12.165L23.01,39.237z"/> + <path fill="#4679EF" d="M23.021,39.21c0,0.268,0.271,0.268,0.45,0.18l14.935-15.032c0.449-0.445,0.36-0.623,0-0.889L23.47,8.614 + c-0.09-0.089-0.36-0.089-0.36,0.089v8.894H10.875c-0.27,0-0.45,0.179-0.45,0.356v11.83c0,0.354,0.18,0.444,0.54,0.444H23.11 + L23.021,39.21z"/> + <path fill="#477AF0" d="M23.03,39.185c0,0.267,0.27,0.267,0.449,0.178l14.912-15.005c0.447-0.444,0.359-0.622,0-0.888 + L23.479,8.642c-0.09-0.089-0.359-0.089-0.359,0.088v8.878H10.903c-0.27,0-0.449,0.178-0.449,0.356v11.809 + c0,0.354,0.18,0.441,0.539,0.441h12.127L23.03,39.185z"/> + <path fill="#487BF0" d="M23.041,39.157c0,0.266,0.269,0.266,0.448,0.177l14.89-14.979c0.446-0.443,0.357-0.62,0-0.886 + L23.488,8.668c-0.09-0.089-0.359-0.089-0.359,0.088v8.863H10.933c-0.269,0-0.448,0.177-0.448,0.354v11.788 + c0,0.354,0.179,0.441,0.538,0.441h12.107L23.041,39.157z"/> + <path fill="#497CF1" d="M23.049,39.13c0,0.268,0.269,0.268,0.448,0.178l14.865-14.952c0.446-0.442,0.357-0.619,0-0.885 + L23.498,8.695c-0.09-0.088-0.358-0.088-0.358,0.088v8.848H10.961c-0.269,0-0.448,0.177-0.448,0.354v11.767 + c0,0.354,0.179,0.44,0.538,0.44H23.14L23.049,39.13z"/> + <path fill="#4A7DF1" d="M23.06,39.104c0,0.266,0.269,0.266,0.447,0.176l14.841-14.925c0.446-0.442,0.356-0.618,0-0.883 + L23.506,8.723c-0.09-0.088-0.358-0.088-0.358,0.088v8.832H10.989c-0.268,0-0.447,0.177-0.447,0.354v11.747 + c0,0.354,0.179,0.439,0.537,0.439h12.069L23.06,39.104z"/> + <path fill="#4B7EF2" d="M23.068,39.077c0,0.265,0.269,0.265,0.447,0.177l14.817-14.899c0.445-0.441,0.357-0.617,0-0.882 + L23.516,8.75c-0.09-0.088-0.357-0.088-0.357,0.088v8.816h-12.14c-0.268,0-0.446,0.177-0.446,0.354v11.726 + c0,0.353,0.179,0.439,0.536,0.439h12.05L23.068,39.077z"/> + <path fill="#4C7FF2" d="M23.079,39.051c0,0.265,0.268,0.265,0.446,0.177l14.794-14.874c0.444-0.44,0.356-0.616,0-0.88 + L23.523,8.775c-0.089-0.088-0.357-0.088-0.357,0.088v8.8h-12.12c-0.268,0-0.446,0.176-0.446,0.353v11.705 + c0,0.353,0.178,0.439,0.535,0.439h12.031L23.079,39.051z"/> + <path fill="#4D80F3" d="M23.087,39.024c0,0.264,0.268,0.264,0.445,0.176l14.771-14.848c0.443-0.439,0.355-0.615,0-0.878 + L23.532,8.803c-0.089-0.088-0.356-0.088-0.356,0.087v8.785H11.075c-0.267,0-0.445,0.176-0.445,0.352v11.685 + c0,0.352,0.178,0.438,0.534,0.438h12.012L23.087,39.024z"/> + <path fill="#4E81F3" d="M23.098,38.997c0,0.264,0.267,0.264,0.445,0.176l14.748-14.82c0.442-0.438,0.354-0.614,0-0.877 + L23.542,8.831c-0.089-0.088-0.356-0.088-0.356,0.087v8.769H11.104c-0.266,0-0.444,0.176-0.444,0.352v11.665 + c0,0.35,0.178,0.437,0.533,0.437h11.993L23.098,38.997z"/> + <path fill="#4F82F4" d="M23.107,38.972c0,0.262,0.267,0.262,0.444,0.174l14.723-14.794c0.441-0.438,0.355-0.613,0-0.875 + L23.55,8.856c-0.089-0.087-0.355-0.087-0.355,0.087v8.754H11.132c-0.266,0-0.443,0.176-0.443,0.351V29.69 + c0,0.351,0.177,0.438,0.532,0.438h11.974L23.107,38.972z"/> + <path fill="#5083F4" d="M23.116,38.944c0,0.262,0.266,0.262,0.443,0.175l14.699-14.769c0.443-0.437,0.354-0.611,0-0.874 + L23.56,8.883c-0.089-0.087-0.354-0.087-0.354,0.087v8.738H11.162c-0.266,0-0.443,0.175-0.443,0.35v11.622 + c0,0.35,0.177,0.437,0.531,0.437h11.955L23.116,38.944z"/> + <path fill="#5184F5" d="M23.126,38.918c0,0.263,0.266,0.263,0.442,0.174l14.677-14.741c0.441-0.436,0.354-0.61,0-0.872 + L23.568,8.911c-0.089-0.087-0.354-0.087-0.354,0.087v8.723H11.19c-0.265,0-0.442,0.175-0.442,0.35v11.603 + c0,0.348,0.177,0.436,0.531,0.436h11.936L23.126,38.918z"/> + <path fill="#5285F5" d="M23.135,38.892c0,0.262,0.266,0.262,0.442,0.174L38.23,24.35c0.44-0.436,0.354-0.609,0-0.871L23.578,8.938 + c-0.088-0.087-0.354-0.087-0.354,0.087v8.707H11.218c-0.265,0-0.441,0.175-0.441,0.349v11.581c0,0.348,0.177,0.434,0.53,0.434 + h11.917L23.135,38.892z"/> + <path fill="#5386F6" d="M23.146,38.864c0,0.261,0.265,0.261,0.441,0.174l14.629-14.689c0.44-0.435,0.354-0.608,0-0.869 + L23.586,8.964c-0.088-0.087-0.353-0.087-0.353,0.086v8.691H11.248c-0.264,0-0.441,0.174-0.441,0.348v11.562 + c0,0.347,0.177,0.433,0.529,0.433h11.898L23.146,38.864z"/> + <path fill="#5487F6" d="M23.154,38.838c0,0.261,0.264,0.261,0.44,0.174l14.608-14.663c0.438-0.434,0.352-0.607,0-0.867 + L23.595,8.992c-0.088-0.087-0.353-0.087-0.353,0.086v8.676H11.276c-0.264,0-0.44,0.174-0.44,0.348v11.54 + c0,0.346,0.176,0.433,0.528,0.433h11.878L23.154,38.838z"/> + <path fill="#5588F7" d="M23.165,38.812c0,0.26,0.264,0.26,0.44,0.174l14.583-14.637c0.438-0.433,0.353-0.606,0-0.866L23.604,9.019 + c-0.088-0.086-0.352-0.086-0.352,0.086v8.661H11.304c-0.263,0-0.439,0.173-0.439,0.347v11.52c0,0.346,0.176,0.432,0.527,0.432 + h11.859L23.165,38.812z"/> + <path fill="#5689F7" d="M23.173,38.784c0,0.26,0.264,0.26,0.439,0.173l14.561-14.609c0.438-0.433,0.351-0.605,0-0.865 + L23.612,9.045c-0.088-0.086-0.351-0.086-0.351,0.086v8.645H11.333c-0.263,0-0.438,0.173-0.438,0.346v11.499 + c0,0.345,0.175,0.431,0.526,0.431h11.84L23.173,38.784z"/> + <path fill="#578AF8" d="M23.184,38.758c0,0.259,0.263,0.259,0.438,0.173l14.537-14.584c0.437-0.432,0.351-0.604,0-0.863 + L23.622,9.072c-0.088-0.086-0.351-0.086-0.351,0.086v8.629H11.362c-0.263,0-0.438,0.173-0.438,0.346V29.61 + c0,0.346,0.175,0.432,0.525,0.432h11.821L23.184,38.758z"/> + <path fill="#588BF8" d="M23.192,38.731c0,0.258,0.263,0.258,0.438,0.172l14.513-14.558c0.436-0.431,0.35-0.603,0-0.861L23.63,9.1 + c-0.087-0.086-0.35-0.086-0.35,0.086v8.614h-11.89c-0.262,0-0.437,0.173-0.437,0.345v11.456c0,0.344,0.175,0.43,0.524,0.43H23.28 + L23.192,38.731z"/> + <path fill="#598CF9" d="M23.203,38.704c0,0.259,0.262,0.259,0.437,0.173l14.488-14.532c0.437-0.43,0.351-0.602,0-0.86L23.64,9.126 + c-0.088-0.086-0.35-0.086-0.35,0.085v8.598h-11.87c-0.262,0-0.437,0.172-0.437,0.344v11.438c0,0.344,0.175,0.428,0.524,0.428 + h11.784L23.203,38.704z"/> + <path fill="#5A8DF9" d="M23.212,38.678c0,0.259,0.262,0.259,0.436,0.173l14.466-14.506c0.436-0.429,0.35-0.6,0-0.858L23.648,9.153 + c-0.088-0.086-0.349-0.086-0.349,0.085v8.583H11.448c-0.262,0-0.436,0.172-0.436,0.344v11.416c0,0.343,0.174,0.428,0.523,0.428 + h11.764L23.212,38.678z"/> + <path fill="#5B8EFA" d="M23.222,38.651c0,0.257,0.262,0.257,0.436,0.17L38.1,24.343c0.434-0.428,0.349-0.599,0-0.856L23.657,9.181 + c-0.087-0.085-0.349-0.085-0.349,0.085v8.567H11.477c-0.261,0-0.435,0.171-0.435,0.343v11.394c0,0.343,0.174,0.428,0.522,0.428 + h11.745L23.222,38.651z"/> + <path fill="#5C8FFA" d="M23.231,38.625c0,0.256,0.261,0.256,0.435,0.171l14.418-14.453c0.435-0.428,0.349-0.598,0-0.855 + L23.667,9.208c-0.087-0.085-0.348-0.085-0.348,0.085v8.551H11.505c-0.261,0-0.434,0.172-0.434,0.343v11.375 + c0,0.34,0.173,0.426,0.521,0.426h11.726L23.231,38.625z"/> + <path fill="#5D90FB" d="M23.24,38.599c0,0.256,0.261,0.256,0.434,0.17L38.07,24.342c0.433-0.427,0.349-0.598,0-0.854L23.674,9.233 + c-0.087-0.085-0.347-0.085-0.347,0.085v8.536H11.534c-0.26,0-0.434,0.171-0.434,0.342V29.55c0,0.342,0.173,0.426,0.52,0.426 + h11.707L23.24,38.599z"/> + <path fill="#5E91FB" d="M23.25,38.571c0,0.256,0.26,0.256,0.434,0.171l14.371-14.401c0.432-0.426,0.347-0.596,0-0.852 + L23.685,9.261c-0.087-0.085-0.347-0.085-0.347,0.084v8.521H11.562c-0.259,0-0.433,0.171-0.433,0.342V29.54 + c0,0.34,0.173,0.424,0.52,0.424h11.688L23.25,38.571z"/> + <path fill="#5F92FC" d="M23.26,38.545c0,0.255,0.26,0.255,0.433,0.17l14.349-14.374c0.432-0.425,0.347-0.595,0-0.85L23.692,9.289 + c-0.087-0.085-0.346-0.085-0.346,0.084v8.504H11.591c-0.259,0-0.432,0.171-0.432,0.341V29.53c0,0.339,0.173,0.423,0.519,0.423 + h11.669L23.26,38.545z"/> + <path fill="#6093FC" d="M23.27,38.519c0,0.254,0.259,0.254,0.432,0.17l14.326-14.347c0.431-0.425,0.345-0.594,0-0.849 + L23.702,9.314c-0.087-0.085-0.346-0.085-0.346,0.084v8.489H11.621c-0.259,0-0.432,0.17-0.432,0.34v11.291 + c0,0.34,0.173,0.424,0.518,0.424h11.649L23.27,38.519z"/> + <path fill="#6194FD" d="M23.279,38.491c0,0.255,0.259,0.255,0.431,0.17l14.302-14.322c0.429-0.424,0.345-0.593,0-0.847 + L23.71,9.341c-0.086-0.084-0.345-0.084-0.345,0.084v8.473H11.648c-0.259,0-0.431,0.17-0.431,0.34v11.271 + c0,0.338,0.172,0.422,0.517,0.422h11.63L23.279,38.491z"/> + <path fill="#6295FD" d="M23.29,38.465c0,0.254,0.258,0.254,0.43,0.169l14.28-14.294c0.428-0.423,0.344-0.592,0-0.846L23.719,9.369 + c-0.086-0.084-0.344-0.084-0.344,0.084v8.458H11.677c-0.258,0-0.43,0.17-0.43,0.339v11.25c0,0.338,0.172,0.422,0.516,0.422h11.612 + L23.29,38.465z"/> + <path fill="#6396FE" d="M23.298,38.438c0,0.254,0.258,0.254,0.43,0.17l14.255-14.269c0.428-0.422,0.344-0.591,0-0.844 + l-14.255-14.1c-0.086-0.084-0.344-0.084-0.344,0.084v8.442H11.707c-0.258,0-0.429,0.169-0.429,0.338v11.228 + c0,0.338,0.171,0.422,0.515,0.422h11.592L23.298,38.438z"/> + <path fill="#6497FE" d="M23.309,38.412c0,0.253,0.257,0.253,0.429,0.168l14.23-14.242c0.428-0.422,0.344-0.59,0-0.843 + L23.737,9.422c-0.086-0.084-0.344-0.084-0.344,0.083v8.427H11.734c-0.257,0-0.429,0.169-0.429,0.338v11.209 + c0,0.336,0.171,0.418,0.514,0.418h11.573L23.309,38.412z"/> + <path fill="#6598FF" d="M23.317,38.385c0,0.253,0.257,0.253,0.429,0.169l14.208-14.216c0.428-0.42,0.344-0.588,0-0.841 + L23.747,9.45c-0.086-0.084-0.343-0.084-0.343,0.083v8.411h-11.64c-0.257,0-0.428,0.169-0.428,0.337v11.188 + c0,0.336,0.171,0.419,0.514,0.419h11.554L23.317,38.385z"/> + <path fill="#6699FF" d="M23.328,38.358c0,0.252,0.257,0.252,0.428,0.168l14.185-14.19c0.426-0.42,0.342-0.587,0-0.839 + L23.754,9.477c-0.086-0.084-0.342-0.084-0.342,0.083v8.396h-11.62c-0.256,0-0.427,0.168-0.427,0.336v11.167 + c0,0.335,0.171,0.418,0.513,0.418h11.535L23.328,38.358z"/> + </g> + + <linearGradient id="XMLID_10_" gradientUnits="userSpaceOnUse" x1="210.7969" y1="-239.4214" x2="210.7969" y2="-268.5771" gradientTransform="matrix(1 0 0 -1 -186 -230)"> + <stop offset="0" style="stop-color:#FFFFFF"/> + <stop offset="1" style="stop-color:#6699FF"/> + </linearGradient> + <path fill="url(#XMLID_10_)" d="M23.328,38.358c0,0.252,0.257,0.252,0.428,0.168l14.185-14.19c0.426-0.42,0.342-0.587,0-0.839 + L23.754,9.477c-0.086-0.084-0.342-0.084-0.342,0.083v8.396h-11.62c-0.256,0-0.427,0.168-0.427,0.336v11.167 + c0,0.335,0.171,0.418,0.513,0.418h11.535L23.328,38.358z"/> +</g> +<g id="crop_x0020_marks"> + <path fill="none" d="M48.06,47.999h-48v-48h48V47.999z"/> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/note.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/note.svg new file mode 100644 index 000000000..48e55eb42 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/note.svg @@ -0,0 +1,200 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="25.5" height="25.5" viewBox="0 0 25.5 25.5" + overflow="visible" enable-background="new 0 0 25.5 25.5" xml:space="preserve"> +<g id="Layer_x0020_1"> + <g> + <path fill="#1F60A9" d="M25.5,12.7c0,7-5.7,12.7-12.7,12.7C5.7,25.5,0,19.8,0,12.7C0,5.6,5.7,0,12.7,0s12.7,5.7,12.7,12.7H25.5z" + /> + <path fill="#2060AA" d="M25.473,12.7c0,6.983-5.688,12.671-12.672,12.671C5.718,25.471,0.03,19.783,0.03,12.7 + S5.718,0.029,12.701,0.029c6.984,0,12.671,5.687,12.671,12.671H25.473z"/> + <path fill="#2160AB" d="M25.443,12.7c0,6.968-5.674,12.642-12.643,12.642C5.734,25.439,0.061,19.768,0.061,12.7 + c0-7.068,5.674-12.642,12.642-12.642c6.968,0,12.641,5.674,12.641,12.642H25.443z"/> + <path fill="#2160AC" d="M25.415,12.7c0,6.95-5.661,12.612-12.612,12.612C5.752,25.412,0.091,19.751,0.091,12.7 + c0-7.051,5.661-12.612,12.612-12.612S25.316,5.749,25.316,12.7H25.415z"/> + <path fill="#2260AD" d="M25.387,12.7c0,6.936-5.648,12.583-12.583,12.583C5.769,25.383,0.121,19.734,0.121,12.7 + c0-7.035,5.648-12.583,12.583-12.583c6.937,0,12.583,5.648,12.583,12.583H25.387z"/> + <path fill="#2360AE" d="M25.357,12.701c0,6.919-5.635,12.554-12.553,12.554C5.787,25.354,0.152,19.719,0.152,12.701 + c0-7.019,5.635-12.554,12.554-12.554S25.26,5.782,25.26,12.701H25.357z"/> + <path fill="#2460AF" d="M25.33,12.7c0,6.903-5.622,12.524-12.525,12.524C5.803,25.323,0.181,19.702,0.181,12.7 + S5.803,0.175,12.706,0.175c6.903,0,12.524,5.621,12.524,12.525H25.33z"/> + <path fill="#2560B0" d="M25.302,12.701c0,6.887-5.608,12.496-12.496,12.496C5.82,25.294,0.212,19.686,0.212,12.701 + c0-6.986,5.608-12.496,12.496-12.496c6.888,0,12.496,5.608,12.496,12.496H25.302z"/> + <path fill="#2661B1" d="M25.273,12.7c0,6.87-5.597,12.467-12.467,12.467C5.837,25.266,0.242,19.67,0.242,12.7 + c0-6.969,5.595-12.467,12.467-12.467c6.871,0,12.467,5.596,12.467,12.467H25.273z"/> + <path fill="#2661B2" d="M25.245,12.7c0,6.854-5.583,12.438-12.438,12.438C5.854,25.234,0.272,19.652,0.272,12.7 + S5.854,0.262,12.709,0.262c6.855,0,12.438,5.583,12.438,12.438H25.245z"/> + <path fill="#2761B3" d="M25.216,12.7c0,6.839-5.567,12.407-12.408,12.407C5.872,25.205,0.303,19.637,0.303,12.7 + c0-6.937,5.569-12.408,12.408-12.408S25.12,5.861,25.12,12.7H25.216z"/> + <path fill="#2861B4" d="M25.188,12.7c0,6.823-5.557,12.38-12.378,12.38C5.889,25.177,0.333,19.62,0.333,12.7 + c0-6.92,5.556-12.379,12.379-12.379c6.823,0,12.38,5.556,12.38,12.379H25.188z"/> + <path fill="#2961B5" d="M25.16,12.7c0,6.807-5.543,12.35-12.351,12.35C5.906,25.146,0.363,19.604,0.363,12.7 + c0-6.904,5.543-12.35,12.35-12.35s12.35,5.543,12.35,12.35H25.16z"/> + <path fill="#2A61B6" d="M25.131,12.7c0,6.792-5.529,12.321-12.32,12.321C5.923,25.117,0.393,19.588,0.393,12.7 + c0-6.888,5.53-12.32,12.321-12.32s12.32,5.53,12.32,12.32H25.131z"/> + <path fill="#2A61B7" d="M25.104,12.7c0,6.774-5.518,12.292-12.292,12.292C5.94,25.088,0.424,19.57,0.424,12.7 + c0-6.872,5.517-12.292,12.291-12.292c6.773,0,12.292,5.517,12.292,12.292H25.104z"/> + <path fill="#2B61B8" d="M25.075,12.7c0,6.759-5.505,12.263-12.263,12.263C5.958,25.059,0.455,19.555,0.455,12.7 + c0-6.855,5.503-12.262,12.262-12.262c6.76,0,12.262,5.504,12.262,12.262H25.075z"/> + <path fill="#2C61B9" d="M25.046,12.7c0,6.743-5.489,12.233-12.232,12.233C5.975,25.029,0.484,19.539,0.484,12.7 + c0-6.839,5.491-12.233,12.233-12.233c6.743,0,12.233,5.491,12.233,12.233H25.046z"/> + <path fill="#2D61BA" d="M25.018,12.7c0,6.727-5.478,12.204-12.204,12.204C5.992,25,0.514,19.521,0.514,12.7 + c0-6.822,5.478-12.204,12.204-12.204S24.922,5.973,24.922,12.7H25.018z"/> + <path fill="#2E61BB" d="M24.988,12.7c0,6.711-5.463,12.175-12.173,12.175C6.009,24.971,0.544,19.506,0.544,12.7 + c0-6.807,5.464-12.175,12.175-12.175S24.895,5.99,24.895,12.7H24.988z"/> + <path fill="#2F61BC" d="M24.962,12.701c0,6.693-5.45,12.145-12.146,12.145C6.026,24.941,0.575,19.49,0.575,12.701 + c0-6.79,5.451-12.146,12.146-12.146c6.695,0,12.146,5.452,12.146,12.146H24.962z"/> + <path fill="#2F61BD" d="M24.934,12.7c0,6.678-5.438,12.116-12.117,12.116C6.043,24.911,0.605,19.475,0.605,12.7 + S6.043,0.584,12.722,0.584c6.678,0,12.116,5.438,12.116,12.116H24.934z"/> + <path fill="#3061BE" d="M24.904,12.7c0,6.661-5.426,12.087-12.087,12.087C6.06,24.882,0.635,19.457,0.635,12.7 + c0-6.757,5.425-12.087,12.087-12.087c6.661,0,12.086,5.425,12.086,12.087H24.904z"/> + <path fill="#3162BF" d="M24.876,12.7c0,6.646-5.412,12.059-12.058,12.059C6.078,24.854,0.666,19.439,0.666,12.7 + c0-6.741,5.412-12.058,12.058-12.058S24.783,6.054,24.783,12.7H24.876z"/> + <path fill="#3262C0" d="M24.85,12.701c0,6.63-5.399,12.027-12.03,12.027C6.095,24.823,0.696,19.425,0.696,12.701 + c0-6.725,5.399-12.029,12.029-12.029c6.628,0,12.028,5.399,12.028,12.029H24.85z"/> + <path fill="#3362C1" d="M24.818,12.7c0,6.614-5.385,11.999-12,11.999C6.112,24.794,0.727,19.408,0.727,12.7s5.385-12,12-12 + c6.614,0,12,5.386,12,12H24.818z"/> + <path fill="#3362C2" d="M24.791,12.7c0,6.598-5.373,11.97-11.971,11.97C6.129,24.764,0.756,19.393,0.756,12.7 + S6.129,0.73,12.727,0.73c6.597,0,11.968,5.372,11.968,11.97H24.791z"/> + <path fill="#3462C3" d="M24.764,12.7c0,6.582-5.359,11.94-11.942,11.94C6.146,24.734,0.787,19.375,0.787,12.7 + c0-6.676,5.359-11.941,11.941-11.941c6.583,0,11.941,5.36,11.941,11.941H24.764z"/> + <path fill="#3562C4" d="M24.734,12.7c0,6.565-5.348,11.911-11.913,11.911C6.164,24.705,0.817,19.359,0.817,12.7 + S6.164,0.788,12.729,0.788c6.566,0,11.912,5.347,11.912,11.912H24.734z"/> + <path fill="#3662C5" d="M24.706,12.7c0,6.55-5.333,11.883-11.883,11.883C6.181,24.676,0.847,19.343,0.847,12.7 + c0-6.643,5.333-11.883,11.883-11.883c6.549,0,11.881,5.333,11.881,11.883H24.706z"/> + <path fill="#3762C6" d="M24.678,12.7c0,6.534-5.32,11.854-11.854,11.854C6.198,24.646,0.877,19.326,0.877,12.7 + S6.198,0.846,12.731,0.846c6.535,0,11.853,5.32,11.853,11.854H24.678z"/> + <path fill="#3762C7" d="M24.648,12.7c0,6.518-5.308,11.823-11.824,11.823C6.215,24.617,0.908,19.311,0.908,12.7 + c0-6.611,5.307-11.824,11.824-11.824S24.557,6.183,24.557,12.7H24.648z"/> + <path fill="#3862C8" d="M24.621,12.7c0,6.502-5.294,11.795-11.795,11.795C6.232,24.588,0.938,19.294,0.938,12.7 + c0-6.594,5.293-11.795,11.795-11.795c6.501,0,11.794,5.294,11.794,11.795H24.621z"/> + <path fill="#3962C9" d="M24.593,12.7c0,6.485-5.28,11.766-11.766,11.766C6.249,24.559,0.968,19.277,0.968,12.7 + c0-6.578,5.281-11.766,11.766-11.766S24.5,6.215,24.5,12.7H24.593z"/> + <path fill="#3A62CA" d="M24.564,12.7c0,6.469-5.27,11.737-11.737,11.737C6.266,24.527,0.999,19.261,0.999,12.7 + c0-6.561,5.267-11.737,11.736-11.737c6.469,0,11.738,5.268,11.738,11.736L24.564,12.7L24.564,12.7z"/> + <path fill="#3B62CB" d="M24.536,12.7c0,6.452-5.255,11.707-11.708,11.707C6.284,24.5,1.029,19.245,1.029,12.7 + c0-6.545,5.255-11.707,11.707-11.707s11.708,5.255,11.708,11.708L24.536,12.7L24.536,12.7z"/> + <path fill="#3C62CC" d="M24.508,12.701c0,6.438-5.24,11.678-11.678,11.678c-6.529,0.092-11.77-5.15-11.77-11.678 + c0-6.528,5.241-11.679,11.678-11.679S24.416,6.263,24.416,12.7L24.508,12.701L24.508,12.701z"/> + <path fill="#3C62CD" d="M24.479,12.7c0,6.421-5.229,11.649-11.648,11.649C6.318,24.439,1.09,19.212,1.09,12.7 + c0-6.513,5.228-11.649,11.649-11.649c6.42,0,11.65,5.228,11.65,11.649H24.479z"/> + <path fill="#3D63CE" d="M24.45,12.7c0,6.403-5.216,11.618-11.62,11.618C6.335,24.41,1.12,19.195,1.12,12.7 + c0-6.497,5.215-11.62,11.62-11.62c6.404,0,11.619,5.215,11.619,11.62H24.45z"/> + <path fill="#3E63CF" d="M24.423,12.7c0,6.389-5.202,11.591-11.591,11.591C6.353,24.382,1.15,19.18,1.15,12.7 + c0-6.48,5.203-11.591,11.591-11.591c6.388,0,11.59,5.203,11.59,11.591H24.423z"/> + <path fill="#3F63D0" d="M24.395,12.701c0,6.373-5.188,11.561-11.562,11.561C6.37,24.354,1.18,19.164,1.18,12.701 + c0-6.464,5.189-11.562,11.562-11.562c6.371,0,11.562,5.189,11.562,11.562H24.395z"/> + <path fill="#4063D1" d="M24.365,12.7c0,6.356-5.176,11.532-11.532,11.532C6.387,24.322,1.21,19.146,1.21,12.7 + c0-6.447,5.177-11.533,11.533-11.533c6.354,0,11.532,5.176,11.532,11.533H24.365z"/> + <path fill="#4063D2" d="M24.337,12.7c0,6.341-5.163,11.503-11.503,11.503C6.403,24.293,1.24,19.13,1.24,12.7 + c0-6.431,5.163-11.503,11.503-11.503c6.34,0,11.504,5.163,11.504,11.503H24.337z"/> + <path fill="#4163D3" d="M24.311,12.7c0,6.323-5.15,11.474-11.476,11.474C6.42,24.264,1.271,19.114,1.271,12.7 + c0-6.415,5.149-11.474,11.474-11.474c6.323,0,11.474,5.15,11.474,11.474H24.311z"/> + <path fill="#4263D4" d="M24.281,12.701c0,6.308-5.137,11.445-11.445,11.445C6.438,24.234,1.301,19.1,1.301,12.701 + c0-6.399,5.137-11.445,11.445-11.445c6.307,0,11.445,5.136,11.445,11.445H24.281z"/> + <path fill="#4363D4" d="M24.253,12.7c0,6.292-5.124,11.416-11.416,11.416C6.455,24.205,1.332,19.082,1.332,12.7 + c0-6.382,5.123-11.415,11.415-11.415S24.163,6.408,24.163,12.7H24.253z"/> + <path fill="#4463D5" d="M24.225,12.7c0,6.276-5.111,11.387-11.387,11.387C6.472,24.176,1.362,19.064,1.362,12.7 + c0-6.366,5.11-11.386,11.386-11.386c6.275,0,11.387,5.11,11.387,11.386H24.225z"/> + <path fill="#4563D6" d="M24.195,12.7c0,6.26-5.098,11.356-11.357,11.356C6.49,24.146,1.392,19.049,1.392,12.7 + c0-6.35,5.098-11.357,11.357-11.357S24.105,6.441,24.105,12.7H24.195z"/> + <path fill="#4563D7" d="M24.167,12.7c0,6.243-5.084,11.327-11.328,11.327C6.506,24.116,1.422,19.033,1.422,12.7 + S6.506,1.372,12.75,1.372S24.078,6.456,24.078,12.7H24.167z"/> + <path fill="#4663D8" d="M24.139,12.7c0,6.228-5.07,11.299-11.299,11.299C6.523,24.087,1.453,19.018,1.453,12.7 + S6.523,1.401,12.751,1.401c6.228,0,11.298,5.071,11.298,11.299H24.139z"/> + <path fill="#4763D9" d="M24.109,12.7c0,6.212-5.058,11.271-11.27,11.271C6.541,24.059,1.483,19,1.483,12.7 + c0-6.3,5.058-11.27,11.27-11.27S24.023,6.488,24.023,12.7H24.109z"/> + <path fill="#4863DA" d="M24.082,12.7c0,6.194-5.045,11.239-11.24,11.239C6.558,24.027,1.513,18.982,1.513,12.7 + c0-6.284,5.045-11.24,11.24-11.24c6.195,0,11.241,5.045,11.241,11.24H24.082z"/> + <path fill="#4964DB" d="M24.055,12.7c0,6.18-5.033,11.211-11.212,11.211c-6.268,0.088-11.3-4.943-11.3-11.211 + c0-6.268,5.032-11.211,11.211-11.211c6.18,0,11.212,5.032,11.212,11.211H24.055z"/> + <path fill="#4964DC" d="M24.025,12.7c0,6.164-5.02,11.182-11.183,11.182C6.592,23.971,1.574,18.951,1.574,12.7 + S6.593,1.518,12.756,1.518S23.938,6.537,23.938,12.7H24.025z"/> + <path fill="#4A64DD" d="M23.997,12.7c0,6.147-5.006,11.153-11.153,11.153C6.609,23.939,1.604,18.936,1.604,12.7 + S6.609,1.547,12.757,1.547c6.146,0,11.152,5.006,11.152,11.153H23.997z"/> + <path fill="#4B64DE" d="M23.969,12.7c0,6.131-4.992,11.124-11.124,11.124C6.626,23.91,1.634,18.918,1.634,12.7 + c0-6.219,4.992-11.124,11.124-11.124c6.131,0,11.124,4.992,11.124,11.124H23.969z"/> + <path fill="#4C64DF" d="M23.939,12.7c0,6.114-4.979,11.095-11.094,11.095C6.644,23.882,1.665,18.902,1.665,12.7 + c0-6.203,4.979-11.094,11.094-11.094c6.115,0,11.095,4.979,11.095,11.094H23.939z"/> + <path fill="#4D64E0" d="M23.912,12.7c0,6.1-4.967,11.065-11.065,11.065C6.661,23.852,1.695,18.886,1.695,12.7 + c0-6.186,4.966-11.065,11.065-11.065c6.098,0,11.065,4.966,11.065,11.065H23.912z"/> + <path fill="#4E64E1" d="M23.884,12.7c0,6.083-4.952,11.036-11.036,11.036C6.678,23.822,1.725,18.869,1.725,12.7 + c0-6.17,4.954-11.036,11.036-11.036c6.083,0,11.036,4.954,11.036,11.036H23.884z"/> + <path fill="#4E64E2" d="M23.855,12.7c0,6.067-4.94,11.007-11.007,11.007C6.695,23.793,1.755,18.854,1.755,12.7 + c0-6.154,4.94-11.007,11.007-11.007c6.066,0,11.005,4.94,11.005,11.007H23.855z"/> + <path fill="#4F64E3" d="M23.827,12.7c0,6.051-4.929,10.978-10.978,10.978C6.712,23.764,1.786,18.837,1.786,12.7 + c0-6.137,4.927-10.978,10.978-10.978c6.05,0,10.977,4.927,10.977,10.978H23.827z"/> + <path fill="#5064E4" d="M23.799,12.7c0,6.034-4.914,10.948-10.949,10.948C6.729,23.734,1.816,18.82,1.816,12.7 + c0-6.121,4.914-10.948,10.948-10.948c6.034,0,10.949,4.914,10.949,10.948H23.799z"/> + <path fill="#5164E5" d="M23.771,12.7c0,6.019-4.901,10.919-10.919,10.919C6.747,23.705,1.846,18.805,1.846,12.7 + c0-6.105,4.9-10.919,10.919-10.919c6.018,0,10.918,4.9,10.918,10.919H23.771z"/> + <path fill="#5264E6" d="M23.742,12.7c0,6.003-4.889,10.89-10.891,10.89C6.764,23.675,1.876,18.788,1.876,12.7 + c0-6.088,4.888-10.89,10.89-10.89c6.001,0,10.89,4.888,10.89,10.89H23.742z"/> + <path fill="#5264E7" d="M23.714,12.7c0,5.985-4.875,10.86-10.861,10.86C6.781,23.646,1.906,18.771,1.906,12.7 + c0-6.072,4.875-10.861,10.861-10.861c5.985,0,10.86,4.875,10.86,10.861H23.714z"/> + <path fill="#5364E8" d="M23.686,12.7c0,5.971-4.861,10.832-10.832,10.832C6.798,23.616,1.937,18.755,1.937,12.7 + c0-6.056,4.862-10.832,10.832-10.832C18.738,1.869,23.6,6.73,23.6,12.7H23.686z"/> + <path fill="#5464E9" d="M23.657,12.7c0,5.954-4.849,10.803-10.803,10.803C6.815,23.587,1.967,18.739,1.967,12.7 + c0-6.04,4.849-10.802,10.803-10.802c5.955,0,10.802,4.848,10.802,10.802H23.657z"/> + <path fill="#5565EA" d="M23.629,12.7c0,5.938-4.836,10.772-10.774,10.772C6.833,23.559,1.998,18.723,1.998,12.7 + c0-6.023,4.835-10.773,10.773-10.773S23.544,6.762,23.544,12.7H23.629z"/> + <path fill="#5665EB" d="M23.602,12.7c0,5.922-4.824,10.743-10.746,10.743C6.85,23.527,2.027,18.706,2.027,12.7 + c0-6.006,4.822-10.744,10.744-10.744c5.922,0,10.745,4.822,10.745,10.744H23.602z"/> + <path fill="#5665EC" d="M23.572,12.7c0,5.905-4.811,10.715-10.715,10.715C6.867,23.499,2.058,18.689,2.058,12.7 + c0-5.99,4.809-10.715,10.714-10.715S23.486,6.794,23.486,12.7H23.572z"/> + <path fill="#5765ED" d="M23.544,12.7c0,5.89-4.797,10.686-10.687,10.686C6.884,23.471,2.088,18.674,2.088,12.7 + c0-5.974,4.796-10.686,10.686-10.686c5.889,0,10.686,4.796,10.686,10.686H23.544z"/> + <path fill="#5865EE" d="M23.516,12.7c0,5.874-4.783,10.655-10.657,10.655C6.901,23.439,2.118,18.657,2.118,12.7 + c0-5.958,4.783-10.657,10.657-10.657c5.874,0,10.657,4.784,10.657,10.657H23.516z"/> + <path fill="#5965EF" d="M23.486,12.7c0,5.858-4.771,10.627-10.627,10.627C6.918,23.41,2.148,18.641,2.148,12.7 + c0-5.941,4.77-10.627,10.627-10.627S23.402,6.843,23.402,12.7H23.486z"/> + <path fill="#5A65F0" d="M23.459,12.7c0,5.842-4.758,10.598-10.599,10.598C6.936,23.381,2.179,18.625,2.179,12.7 + c0-5.925,4.757-10.598,10.598-10.598c5.841,0,10.598,4.757,10.598,10.598H23.459z"/> + <path fill="#5B65F1" d="M23.432,12.7c0,5.825-4.744,10.569-10.571,10.569C6.953,23.352,2.209,18.607,2.209,12.7 + c0-5.909,4.744-10.569,10.569-10.569c5.826,0,10.57,4.744,10.57,10.569H23.432z"/> + <path fill="#5B65F2" d="M23.4,12.7c0,5.81-4.729,10.54-10.54,10.54C6.97,23.322,2.239,18.592,2.239,12.7 + c0-5.892,4.73-10.54,10.54-10.54c5.809,0,10.54,4.73,10.54,10.54H23.4z"/> + <path fill="#5C65F3" d="M23.373,12.7c0,5.794-4.719,10.511-10.511,10.511C6.987,23.293,2.27,18.576,2.27,12.7 + S6.987,2.189,12.78,2.189c5.793,0,10.511,4.717,10.511,10.511H23.373z"/> + <path fill="#5D65F4" d="M23.346,12.7c0,5.776-4.705,10.481-10.482,10.481C7.004,23.264,2.3,18.561,2.3,12.7 + S7.004,2.219,12.781,2.219c5.775,0,10.48,4.704,10.48,10.481H23.346z"/> + <path fill="#5E65F5" d="M23.316,12.7c0,5.762-4.691,10.452-10.453,10.452C7.021,23.232,2.33,18.543,2.33,12.7 + c0-5.843,4.691-10.452,10.452-10.452c5.761,0,10.452,4.691,10.452,10.452H23.316z"/> + <path fill="#5F65F6" d="M23.288,12.7c0,5.745-4.679,10.423-10.423,10.423C7.039,23.204,2.36,18.525,2.36,12.7 + c0-5.827,4.678-10.423,10.423-10.423c5.744,0,10.423,4.678,10.423,10.423H23.288z"/> + <path fill="#5F65F7" d="M23.26,12.7c0,5.729-4.664,10.394-10.394,10.394C7.056,23.175,2.391,18.511,2.391,12.7 + c0-5.811,4.665-10.393,10.394-10.393c5.729,0,10.393,4.665,10.393,10.394L23.26,12.7L23.26,12.7z"/> + <path fill="#6066F8" d="M23.23,12.7c0,5.713-4.651,10.364-10.364,10.364C7.073,23.146,2.421,18.494,2.421,12.7 + S7.073,2.335,12.786,2.335c5.712,0,10.364,4.652,10.364,10.365H23.23z"/> + <path fill="#6166F9" d="M23.203,12.7c0,5.696-4.639,10.335-10.335,10.335C7.09,23.116,2.451,18.479,2.451,12.7 + S7.09,2.365,12.786,2.365S23.121,7.004,23.121,12.7H23.203z"/> + <path fill="#6266FA" d="M23.175,12.7c0,5.681-4.626,10.306-10.307,10.306C7.107,23.087,2.481,18.462,2.481,12.7 + c0-5.762,4.626-10.306,10.307-10.306c5.68,0,10.306,4.625,10.306,10.306H23.175z"/> + <path fill="#6366FB" d="M23.146,12.7c0,5.665-4.613,10.276-10.277,10.276C7.124,23.059,2.512,18.445,2.512,12.7 + c0-5.746,4.612-10.277,10.277-10.277S23.064,7.036,23.064,12.7H23.146z"/> + <path fill="#6466FC" d="M23.118,12.7c0,5.647-4.601,10.248-10.248,10.248C7.142,23.027,2.542,18.43,2.542,12.7 + c0-5.729,4.6-10.248,10.248-10.248c5.647,0,10.247,4.6,10.247,10.248H23.118z"/> + <path fill="#6466FD" d="M23.09,12.7c0,5.633-4.587,10.219-10.219,10.219C7.159,22.998,2.572,18.412,2.572,12.7 + c0-5.713,4.586-10.219,10.219-10.219c5.632,0,10.219,4.586,10.219,10.219H23.09z"/> + <path fill="#6566FE" d="M23.062,12.7c0,5.616-4.574,10.188-10.19,10.188C7.176,22.969,2.603,18.396,2.603,12.7 + S7.176,2.511,12.792,2.511c5.615,0,10.188,4.573,10.188,10.189H23.062z"/> + <path fill="#6666FF" d="M23.033,12.7c0,5.601-4.561,10.159-10.161,10.159c-5.68,0.08-10.24-4.479-10.24-10.159 + c0-5.68,4.56-10.16,10.16-10.16c5.601,0,10.16,4.56,10.16,10.16H23.033z"/> + </g> + + <linearGradient id="XMLID_12_" gradientUnits="userSpaceOnUse" x1="198.625" y1="-253.916" x2="198.625" y2="-262.334" gradientTransform="matrix(1 0 0 -1 -186 -252.5)"> + <stop offset="0" style="stop-color:#FFFFFF"/> + <stop offset="1" style="stop-color:#6666FF"/> + </linearGradient> + <ellipse fill="url(#XMLID_12_)" cx="12.625" cy="5.625" rx="7.542" ry="4.209"/> + <g> + <path fill="#FFFFFF" d="M14.1,19.2c0,0.2,0,0.3-0.3,0.3H12c-0.2,0-0.3-0.1-0.3-0.3v-7.1h-1.4c-0.2,0-0.3-0.1-0.3-0.3v-1.2 + c0-0.2,0-0.3,0.3-0.3h3.5c0.2,0,0.3,0.1,0.3,0.3v8.5V19.2z M13,9.2c-0.8,0-1.5-0.7-1.5-1.5c0-0.8,0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5 + C14.5,8.5,13.8,9.2,13,9.2z"/> + </g> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/prev.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/prev.svg new file mode 100644 index 000000000..00ba63616 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/prev.svg @@ -0,0 +1,338 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.1" id="Previous" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48" + overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve"> +<g> + <path fill="#FFFFFF" stroke="#FFFFFF" stroke-width="7.5901" stroke-linejoin="round" d="M25.659,6.898c0-0.301-0.3-0.301-0.5-0.2 + l-16.6,16.9c-0.5,0.5-0.4,0.7,0,1l16.6,16.7c0.103,0.101,0.399,0.101,0.399-0.1v-10h13.601c0.301,0,0.5-0.2,0.5-0.4v-13.3 + c0-0.4-0.199-0.5-0.601-0.5h-13.5L25.659,6.898z"/> + <g> + <path fill="#0033CC" d="M25.659,6.898c0-0.301-0.3-0.301-0.5-0.2l-16.6,16.9c-0.5,0.5-0.4,0.7,0,1l16.6,16.7 + c0.103,0.101,0.399,0.101,0.399-0.1v-10h13.601c0.301,0,0.5-0.2,0.5-0.4v-13.3c0-0.4-0.199-0.5-0.601-0.5h-13.5L25.659,6.898z"/> + <path fill="#0134CC" d="M25.648,6.925c0-0.3-0.299-0.3-0.498-0.2L8.575,23.6c-0.499,0.499-0.4,0.698,0,1L25.15,41.271 + c0.101,0.102,0.398,0.102,0.398-0.1v-9.984h13.58c0.303,0,0.5-0.197,0.5-0.397V17.508c0-0.4-0.197-0.499-0.6-0.499H25.55 + L25.648,6.925z"/> + <path fill="#0235CD" d="M25.641,6.953c0-0.3-0.3-0.3-0.498-0.2L8.588,23.601c-0.499,0.498-0.399,0.697,0,0.997l16.553,16.647 + c0.101,0.101,0.398,0.101,0.398-0.101v-9.971h13.562c0.299,0,0.498-0.197,0.498-0.398V17.519c0-0.399-0.199-0.499-0.6-0.499H25.54 + L25.641,6.953z"/> + <path fill="#0336CD" d="M25.63,6.979c0-0.299-0.299-0.299-0.498-0.199L8.603,23.601c-0.498,0.498-0.399,0.696,0,0.997 + l16.529,16.62c0.101,0.101,0.397,0.101,0.397-0.099v-9.954h13.544c0.299,0,0.495-0.199,0.495-0.397v-13.24 + c0-0.399-0.196-0.498-0.598-0.498H25.532L25.63,6.979z"/> + <path fill="#0437CE" d="M25.622,7.005c0-0.299-0.299-0.299-0.498-0.199L8.619,23.602c-0.498,0.497-0.398,0.695,0,0.994 + l16.505,16.598c0.101,0.1,0.396,0.1,0.396-0.102v-9.938h13.521c0.301,0,0.498-0.197,0.498-0.396V17.54 + c0-0.397-0.197-0.497-0.598-0.497h-13.42L25.622,7.005z"/> + <path fill="#0538CE" d="M25.611,7.033c0-0.298-0.299-0.298-0.498-0.199L8.633,23.602c-0.497,0.496-0.398,0.694,0,0.994 + l16.48,16.568c0.101,0.1,0.398,0.1,0.398-0.1v-9.924h13.502c0.299,0,0.498-0.197,0.498-0.396V17.548 + c0-0.397-0.199-0.496-0.598-0.496h-13.4L25.611,7.033z"/> + <path fill="#0639CF" d="M25.602,7.06c0-0.298-0.297-0.298-0.496-0.199L8.646,23.603c-0.496,0.496-0.396,0.693,0,0.99 + l16.458,16.546c0.101,0.101,0.396,0.101,0.396-0.1v-9.907h13.482c0.301,0,0.496-0.196,0.496-0.396V17.56 + c0-0.396-0.195-0.495-0.595-0.495H25.503L25.602,7.06z"/> + <path fill="#073ACF" d="M25.592,7.085c0-0.298-0.298-0.298-0.494-0.199L8.662,23.603c-0.495,0.495-0.396,0.692,0,0.989 + l16.436,16.518c0.1,0.102,0.396,0.102,0.396-0.098V31.12h13.465c0.297,0,0.494-0.197,0.494-0.396V17.569 + c0-0.396-0.197-0.495-0.595-0.495H25.493L25.592,7.085z"/> + <path fill="#083BD0" d="M25.583,7.111c0-0.297-0.297-0.297-0.494-0.198L8.677,23.604c-0.494,0.494-0.396,0.691,0,0.987 + l16.412,16.493c0.101,0.1,0.396,0.1,0.396-0.1v-9.877h13.447c0.297,0,0.493-0.195,0.493-0.396V17.58 + c0-0.396-0.196-0.494-0.594-0.494H25.484L25.583,7.111z"/> + <path fill="#093CD0" d="M25.573,7.139c0-0.296-0.296-0.296-0.494-0.197L8.69,23.604c-0.493,0.494-0.395,0.69,0,0.985l16.389,16.47 + c0.103,0.099,0.396,0.099,0.396-0.101V31.1h13.428c0.298,0,0.494-0.197,0.494-0.396V17.589c0-0.395-0.196-0.493-0.594-0.493 + H25.475L25.573,7.139z"/> + <path fill="#0A3DD1" d="M25.562,7.165c0-0.296-0.295-0.296-0.492-0.197L8.706,23.604c-0.493,0.492-0.395,0.688,0,0.983 + l16.366,16.44c0.1,0.098,0.396,0.098,0.396-0.101v-9.845h13.405c0.297,0,0.494-0.196,0.494-0.396V17.596 + c0-0.395-0.197-0.492-0.592-0.492H25.464L25.562,7.165z"/> + <path fill="#0B3ED1" d="M25.555,7.191c0-0.295-0.296-0.295-0.492-0.197L8.72,23.605c-0.492,0.491-0.394,0.688,0,0.982 + l16.342,16.414c0.1,0.099,0.395,0.099,0.395-0.099v-9.828h13.391c0.295,0,0.49-0.197,0.49-0.395V17.609 + c0-0.393-0.195-0.491-0.59-0.491H25.456L25.555,7.191z"/> + <path fill="#0C3FD2" d="M25.544,7.219c0-0.295-0.295-0.295-0.491-0.196L8.734,23.606c-0.491,0.49-0.394,0.687,0,0.98 + l16.318,16.389c0.099,0.101,0.394,0.101,0.394-0.098v-9.812h13.369c0.297,0,0.492-0.194,0.492-0.394V17.62 + c0-0.393-0.195-0.49-0.591-0.49H25.445L25.544,7.219z"/> + <path fill="#0D40D2" d="M25.534,7.245c0-0.294-0.293-0.294-0.49-0.196L8.749,23.606c-0.491,0.489-0.394,0.685,0,0.979 + l16.295,16.362c0.099,0.098,0.394,0.098,0.394-0.098v-9.798h13.35c0.295,0,0.49-0.196,0.49-0.395V17.628 + c0-0.392-0.195-0.489-0.588-0.489H25.438L25.534,7.245z"/> + <path fill="#0E41D3" d="M25.525,7.271c0-0.294-0.295-0.294-0.489-0.196L8.764,23.607c-0.49,0.489-0.393,0.685,0,0.979 + l16.271,16.335c0.102,0.101,0.395,0.101,0.395-0.097v-9.782h13.33c0.295,0,0.488-0.194,0.488-0.394V17.64 + c0-0.392-0.193-0.489-0.588-0.489H25.428L25.525,7.271z"/> + <path fill="#0F42D3" d="M25.516,7.298c0-0.293-0.293-0.293-0.488-0.195L8.778,23.607c-0.489,0.489-0.392,0.684,0,0.978 + l16.248,16.312c0.101,0.099,0.394,0.099,0.394-0.099v-9.767H38.73c0.293,0,0.49-0.195,0.49-0.393V17.65 + c0-0.391-0.197-0.488-0.589-0.488H25.417L25.516,7.298z"/> + <path fill="#1043D4" d="M25.505,7.325c0-0.293-0.293-0.293-0.487-0.195L8.792,23.608c-0.488,0.488-0.391,0.683,0,0.976 + l16.224,16.283c0.101,0.098,0.394,0.098,0.394-0.098v-9.752H38.7c0.295,0,0.489-0.192,0.489-0.39V17.661 + c0-0.391-0.194-0.487-0.586-0.487H25.409L25.505,7.325z"/> + <path fill="#1144D4" d="M25.497,7.352c0-0.292-0.293-0.292-0.487-0.194L8.808,23.608c-0.488,0.487-0.391,0.682,0,0.974 + L25.009,40.84c0.099,0.1,0.392,0.1,0.392-0.097v-9.734h13.272c0.293,0,0.488-0.194,0.488-0.39V17.67 + c0-0.39-0.195-0.487-0.586-0.487H25.398L25.497,7.352z"/> + <path fill="#1245D5" d="M25.486,7.378c0-0.292-0.293-0.292-0.487-0.195L8.822,23.609c-0.487,0.486-0.39,0.68,0,0.973l16.177,16.23 + c0.099,0.099,0.392,0.099,0.392-0.099v-9.72h13.254c0.293,0,0.485-0.194,0.485-0.391V17.681c0-0.389-0.192-0.486-0.584-0.486 + H25.391L25.486,7.378z"/> + <path fill="#1346D5" d="M25.479,7.406c0-0.292-0.293-0.292-0.486-0.195L8.837,23.61c-0.487,0.485-0.39,0.679,0,0.971 + l16.154,16.206c0.098,0.097,0.389,0.097,0.389-0.098v-9.705h13.236c0.291,0,0.485-0.192,0.485-0.389V17.69 + c0-0.388-0.194-0.485-0.584-0.485H25.38L25.479,7.406z"/> + <path fill="#1447D6" d="M25.468,7.432c0-0.292-0.292-0.292-0.485-0.194L8.852,23.611c-0.485,0.484-0.389,0.678,0,0.969 + l16.13,16.18c0.1,0.098,0.389,0.098,0.389-0.096v-9.688h13.217c0.291,0,0.486-0.192,0.486-0.39V17.702 + c0-0.388-0.195-0.484-0.584-0.484H25.37L25.468,7.432z"/> + <path fill="#1548D6" d="M25.458,7.458c0-0.291-0.291-0.291-0.485-0.194L8.866,23.611c-0.484,0.483-0.388,0.677,0,0.968 + L24.973,40.73c0.1,0.099,0.389,0.099,0.389-0.097v-9.673h13.197c0.291,0,0.483-0.193,0.483-0.388V17.71 + c0-0.387-0.192-0.483-0.582-0.483H25.359L25.458,7.458z"/> + <path fill="#1649D7" d="M25.448,7.484c0-0.291-0.289-0.291-0.484-0.194L8.88,23.613c-0.484,0.482-0.388,0.675,0,0.965 + l16.083,16.128c0.098,0.099,0.389,0.099,0.389-0.097v-9.657h13.178c0.291,0,0.484-0.192,0.484-0.388V17.722 + c0-0.387-0.193-0.482-0.582-0.482h-13.08L25.448,7.484z"/> + <path fill="#174AD7" d="M25.439,7.512c0-0.29-0.291-0.29-0.483-0.193L8.895,23.614c-0.483,0.482-0.387,0.675,0,0.963l16.06,16.104 + c0.1,0.096,0.391,0.096,0.391-0.098v-9.645H38.5c0.291,0,0.484-0.191,0.484-0.385V17.731c0-0.386-0.193-0.481-0.58-0.481H25.343 + L25.439,7.512z"/> + <path fill="#184BD8" d="M25.43,7.539c0-0.29-0.289-0.29-0.482-0.193L8.91,23.614c-0.482,0.482-0.387,0.674,0,0.962L24.947,40.65 + c0.098,0.098,0.387,0.098,0.387-0.096V30.93h13.141c0.291,0,0.48-0.193,0.48-0.388v-12.8c0-0.385-0.189-0.481-0.578-0.481H25.333 + L25.43,7.539z"/> + <path fill="#194CD8" d="M25.419,7.564c0-0.289-0.289-0.289-0.481-0.192L8.923,23.614c-0.481,0.481-0.386,0.673,0,0.961 + l16.015,16.05c0.097,0.098,0.386,0.098,0.386-0.098v-9.608h13.118c0.291,0,0.482-0.19,0.482-0.386V17.751 + c0-0.385-0.191-0.48-0.578-0.48H25.323L25.419,7.564z"/> + <path fill="#1A4DD9" d="M25.411,7.59c0-0.288-0.289-0.288-0.479-0.192L8.938,23.615c-0.481,0.48-0.385,0.671,0,0.96L24.93,40.598 + c0.096,0.096,0.385,0.096,0.385-0.096v-9.595h13.102c0.289,0,0.48-0.192,0.48-0.386V17.762c0-0.384-0.191-0.479-0.578-0.479 + H25.314L25.411,7.59z"/> + <path fill="#1B4ED9" d="M25.4,7.618c0-0.288-0.289-0.288-0.479-0.191L8.954,23.616c-0.481,0.479-0.385,0.67,0,0.958L24.919,40.57 + c0.099,0.097,0.386,0.097,0.386-0.096v-9.58h13.082c0.288,0,0.479-0.189,0.479-0.383V17.771c0-0.383-0.191-0.479-0.576-0.479 + H25.305L25.4,7.618z"/> + <path fill="#1C4FDA" d="M25.393,7.645c0-0.287-0.289-0.287-0.48-0.191L8.968,23.617c-0.48,0.479-0.384,0.669,0,0.958 + l15.941,15.971c0.099,0.097,0.385,0.097,0.385-0.095v-9.562h13.062c0.289,0,0.48-0.193,0.48-0.384V17.782 + c0-0.383-0.191-0.478-0.577-0.478H25.294L25.393,7.645z"/> + <path fill="#1D50DA" d="M25.38,7.67c0-0.287-0.286-0.287-0.479-0.19L8.981,23.617c-0.479,0.478-0.384,0.667,0,0.955L24.9,40.518 + c0.097,0.096,0.384,0.096,0.384-0.098v-9.548h13.043c0.289,0,0.479-0.188,0.479-0.383V17.792c0-0.382-0.19-0.477-0.576-0.477 + H25.286L25.38,7.67z"/> + <path fill="#1E51DB" d="M25.372,7.698c0-0.287-0.287-0.287-0.479-0.191L8.997,23.618c-0.479,0.477-0.383,0.667,0,0.954 + L24.893,40.49c0.098,0.095,0.385,0.095,0.385-0.096v-9.533H38.3c0.287,0,0.479-0.189,0.479-0.381V17.803 + c0-0.382-0.191-0.476-0.574-0.476h-12.93L25.372,7.698z"/> + <path fill="#1F52DB" d="M25.361,7.725c0-0.286-0.284-0.286-0.479-0.19L9.012,23.619c-0.478,0.475-0.383,0.666,0,0.951 + l15.872,15.895c0.097,0.096,0.384,0.096,0.384-0.095v-9.519h13.004c0.287,0,0.479-0.189,0.479-0.381V17.812 + c0-0.381-0.19-0.476-0.574-0.476H25.268L25.361,7.725z"/> + <path fill="#2053DC" d="M25.354,7.75c0-0.286-0.287-0.286-0.479-0.19L9.025,23.619c-0.477,0.475-0.382,0.665,0,0.951 + l15.849,15.867c0.099,0.095,0.385,0.095,0.385-0.098v-9.501h12.982c0.286,0,0.479-0.188,0.479-0.381V17.823 + c0-0.38-0.188-0.475-0.574-0.475h-12.89L25.354,7.75z"/> + <path fill="#2154DC" d="M25.343,7.777c0-0.286-0.286-0.286-0.477-0.19L9.04,23.619c-0.476,0.475-0.381,0.664,0,0.949L24.867,40.41 + c0.096,0.095,0.383,0.095,0.383-0.094V30.83h12.965c0.287,0,0.479-0.189,0.479-0.38V17.832c0-0.379-0.188-0.474-0.569-0.474 + H25.249L25.343,7.777z"/> + <path fill="#2255DD" d="M25.333,7.805c0-0.285-0.285-0.285-0.478-0.19L9.056,23.62c-0.476,0.474-0.381,0.663,0,0.948 + l15.801,15.812c0.098,0.096,0.383,0.096,0.383-0.095v-9.472h12.945c0.285,0,0.477-0.188,0.477-0.381V17.842 + c0-0.378-0.188-0.473-0.569-0.473H25.238L25.333,7.805z"/> + <path fill="#2356DD" d="M25.325,7.832c0-0.284-0.285-0.284-0.478-0.189L9.069,23.621c-0.475,0.473-0.381,0.662,0,0.945 + l15.779,15.791c0.096,0.094,0.381,0.094,0.381-0.098v-9.451h12.929c0.284,0,0.477-0.189,0.477-0.379V17.853 + c0-0.378-0.188-0.472-0.569-0.472H25.229L25.325,7.832z"/> + <path fill="#2457DE" d="M25.314,7.857c0-0.284-0.285-0.284-0.477-0.189L9.084,23.622c-0.474,0.472-0.38,0.66,0,0.944L24.838,40.33 + c0.098,0.094,0.381,0.094,0.381-0.094v-9.439h12.908c0.285,0,0.475-0.189,0.475-0.378V17.863c0-0.378-0.188-0.471-0.567-0.471 + H25.221L25.314,7.857z"/> + <path fill="#2558DE" d="M25.305,7.883c0-0.283-0.283-0.283-0.474-0.188L9.099,23.622c-0.473,0.471-0.379,0.659,0,0.942 + L24.831,40.3c0.095,0.097,0.379,0.097,0.379-0.094v-9.424H38.1c0.284,0,0.475-0.188,0.475-0.38V17.873 + c0-0.377-0.188-0.47-0.568-0.47H25.21L25.305,7.883z"/> + <path fill="#2659DF" d="M25.294,7.911c0-0.283-0.282-0.283-0.474-0.188l-15.708,15.9c-0.473,0.47-0.378,0.658,0,0.941 + L24.82,40.275c0.097,0.094,0.38,0.094,0.38-0.094v-9.408h12.868c0.285,0,0.476-0.188,0.476-0.377V17.882 + c0-0.376-0.188-0.469-0.567-0.469H25.2L25.294,7.911z"/> + <path fill="#275ADF" d="M25.286,7.938c0-0.282-0.283-0.282-0.474-0.188L9.127,23.624c-0.472,0.469-0.378,0.657,0,0.938 + L24.812,40.25c0.097,0.094,0.379,0.094,0.379-0.093v-9.394h12.851c0.283,0,0.476-0.188,0.476-0.379V17.894 + c0-0.375-0.188-0.469-0.566-0.469h-12.76L25.286,7.938z"/> + <path fill="#285BE0" d="M25.275,7.963c0-0.282-0.282-0.282-0.473-0.188L9.143,23.624c-0.471,0.469-0.377,0.656,0,0.938 + l15.662,15.658c0.096,0.094,0.379,0.094,0.379-0.094V30.75h12.83c0.282,0,0.473-0.188,0.473-0.376V17.902 + c0-0.375-0.188-0.468-0.564-0.468h-12.74L25.275,7.963z"/> + <path fill="#295CE0" d="M25.268,7.991c0-0.281-0.283-0.281-0.474-0.188L9.158,23.624c-0.471,0.468-0.377,0.655,0,0.937 + l15.638,15.633c0.095,0.096,0.377,0.096,0.377-0.092V30.74h12.812c0.283,0,0.473-0.188,0.473-0.375V17.914 + c0-0.375-0.188-0.467-0.564-0.467H25.171L25.268,7.991z"/> + <path fill="#2A5DE1" d="M25.257,8.018c0-0.281-0.282-0.281-0.471-0.188L9.171,23.625c-0.47,0.467-0.377,0.654,0,0.936 + l15.615,15.605c0.094,0.093,0.377,0.093,0.377-0.093v-9.347h12.793c0.28,0,0.471-0.188,0.471-0.375V17.923 + c0-0.374-0.188-0.467-0.563-0.467h-12.7L25.257,8.018z"/> + <path fill="#2B5EE1" d="M25.247,8.043c0-0.28-0.28-0.28-0.472-0.187L9.187,23.625c-0.469,0.467-0.376,0.653,0,0.934l15.59,15.582 + c0.096,0.092,0.377,0.092,0.377-0.094v-9.33h12.773c0.28,0,0.471-0.188,0.471-0.373v-12.41c0-0.373-0.188-0.466-0.562-0.466 + H25.152L25.247,8.043z"/> + <path fill="#2C5FE2" d="M25.238,8.07c0-0.28-0.282-0.28-0.471-0.186L9.201,23.625c-0.468,0.466-0.375,0.652,0,0.932L24.77,40.114 + c0.096,0.093,0.375,0.093,0.375-0.095v-9.312h12.754c0.281,0,0.471-0.188,0.471-0.373V17.943c0-0.373-0.188-0.465-0.562-0.465 + H25.145L25.238,8.07z"/> + <path fill="#2D60E2" d="M25.229,8.097c0-0.28-0.279-0.28-0.469-0.187L9.214,23.626c-0.468,0.465-0.375,0.651,0,0.931L24.76,40.086 + c0.094,0.094,0.374,0.094,0.374-0.093v-9.3H37.87c0.278,0,0.469-0.188,0.469-0.371V17.954c0-0.372-0.188-0.464-0.562-0.464H25.134 + L25.229,8.097z"/> + <path fill="#2E61E3" d="M25.219,8.124c0-0.279-0.281-0.279-0.468-0.186L9.229,23.627c-0.467,0.464-0.375,0.649,0,0.928 + l15.522,15.506c0.095,0.094,0.373,0.094,0.373-0.094v-9.281h12.718c0.28,0,0.467-0.188,0.467-0.373v-12.35 + c0-0.371-0.187-0.463-0.562-0.463H25.124L25.219,8.124z"/> + <path fill="#2F62E3" d="M25.208,8.15c0-0.279-0.278-0.279-0.467-0.186L9.245,23.628c-0.466,0.463-0.374,0.648,0,0.927 + l15.499,15.479c0.094,0.093,0.373,0.093,0.373-0.095v-9.268h12.695c0.28,0,0.469-0.186,0.469-0.371V17.975 + c0-0.371-0.188-0.463-0.562-0.463H25.116L25.208,8.15z"/> + <path fill="#3063E4" d="M25.2,8.177c0-0.278-0.279-0.278-0.468-0.185L9.259,23.628c-0.465,0.462-0.373,0.647,0,0.925l15.476,15.45 + c0.094,0.093,0.373,0.093,0.373-0.092V30.66h12.678c0.279,0,0.467-0.188,0.467-0.371V17.984c0-0.37-0.188-0.462-0.561-0.462 + H25.105L25.2,8.177z"/> + <path fill="#3164E4" d="M25.189,8.204c0-0.277-0.278-0.277-0.465-0.185L9.273,23.629c-0.465,0.462-0.373,0.646,0,0.924 + l15.452,15.426c0.092,0.092,0.371,0.092,0.371-0.092v-9.238h12.658c0.279,0,0.467-0.187,0.467-0.371V17.995 + c0-0.37-0.188-0.461-0.561-0.461H25.098L25.189,8.204z"/> + <path fill="#3265E5" d="M25.182,8.229c0-0.277-0.279-0.277-0.466-0.185L9.289,23.629c-0.464,0.461-0.372,0.645,0,0.921 + l15.428,15.4c0.094,0.093,0.372,0.093,0.372-0.093v-9.217h12.64c0.276,0,0.465-0.188,0.465-0.369V18.004 + c0-0.369-0.188-0.46-0.559-0.46H25.087L25.182,8.229z"/> + <path fill="#3366E5" d="M25.171,8.256c0-0.276-0.278-0.276-0.465-0.184L9.304,23.63c-0.463,0.46-0.372,0.644,0,0.92l15.404,15.373 + c0.093,0.093,0.371,0.093,0.371-0.092v-9.205h12.619c0.276,0,0.465-0.185,0.465-0.369V18.015c0-0.368-0.188-0.459-0.56-0.459 + H25.079L25.171,8.256z"/> + <path fill="#3366E6" d="M25.161,8.284c0-0.276-0.276-0.276-0.463-0.184L9.317,23.631c-0.462,0.459-0.371,0.643,0,0.919 + l15.381,15.347c0.094,0.095,0.37,0.095,0.37-0.09v-9.188h12.601c0.279,0,0.466-0.187,0.466-0.368V18.024 + c0-0.367-0.187-0.458-0.558-0.458H25.068L25.161,8.284z"/> + <path fill="#3467E6" d="M25.15,8.311c0-0.276-0.276-0.276-0.463-0.184L9.332,23.631c-0.462,0.459-0.371,0.642,0,0.917 + L24.688,39.87c0.096,0.091,0.371,0.091,0.371-0.093v-9.174h12.582c0.276,0,0.463-0.187,0.463-0.369V18.035 + c0-0.367-0.187-0.458-0.558-0.458H25.059L25.15,8.311z"/> + <path fill="#3568E7" d="M25.143,8.336c0-0.275-0.277-0.275-0.463-0.183L9.347,23.632c-0.461,0.458-0.37,0.641,0,0.917 + L24.68,39.846c0.094,0.092,0.37,0.092,0.37-0.093v-9.157h12.562c0.277,0,0.463-0.186,0.463-0.367V18.044 + c0-0.366-0.186-0.457-0.555-0.457H25.05L25.143,8.336z"/> + <path fill="#3669E7" d="M25.133,8.364c0-0.275-0.277-0.275-0.462-0.183L9.361,23.632c-0.461,0.458-0.369,0.64,0,0.916 + l15.31,15.271c0.095,0.093,0.369,0.093,0.369-0.09v-9.146h12.543c0.276,0,0.463-0.185,0.463-0.367V18.055 + c0-0.365-0.187-0.456-0.555-0.456H25.04L25.133,8.364z"/> + <path fill="#376AE8" d="M25.122,8.39c0-0.274-0.274-0.274-0.461-0.183L9.375,23.633c-0.459,0.457-0.368,0.639,0,0.914 + L24.663,39.79c0.092,0.091,0.366,0.091,0.366-0.091V30.57h12.525c0.275,0,0.461-0.184,0.461-0.364V18.064 + c0-0.365-0.186-0.455-0.555-0.455H25.029L25.122,8.39z"/> + <path fill="#386BE8" d="M25.113,8.417c0-0.274-0.276-0.274-0.461-0.183L9.39,23.634c-0.459,0.456-0.368,0.638,0,0.912 + l15.262,15.218c0.095,0.09,0.369,0.09,0.369-0.091v-9.112h12.504c0.275,0,0.461-0.184,0.461-0.365v-12.12 + c0-0.364-0.186-0.455-0.553-0.455H25.021L25.113,8.417z"/> + <path fill="#396CE9" d="M25.104,8.442c0-0.273-0.273-0.273-0.459-0.182L9.405,23.636c-0.458,0.455-0.368,0.636,0,0.909 + l15.24,15.189c0.092,0.093,0.367,0.093,0.367-0.09v-9.097h12.485c0.274,0,0.459-0.183,0.459-0.364v-12.1 + c0-0.363-0.185-0.454-0.552-0.454H25.012L25.104,8.442z"/> + <path fill="#3A6DE9" d="M25.094,8.47c0-0.273-0.273-0.273-0.457-0.182L9.419,23.636c-0.458,0.455-0.367,0.636,0,0.908 + l15.216,15.165c0.092,0.091,0.367,0.091,0.367-0.09v-9.081h12.466c0.274,0,0.459-0.185,0.459-0.364V18.096 + c0-0.363-0.185-0.453-0.552-0.453H25.003L25.094,8.47z"/> + <path fill="#3B6EEA" d="M25.085,8.497c0-0.272-0.274-0.272-0.459-0.181L9.435,23.637c-0.457,0.453-0.366,0.634,0,0.906 + l15.193,15.141c0.093,0.09,0.365,0.09,0.365-0.092v-9.064h12.446c0.271,0,0.457-0.182,0.457-0.361v-12.06 + c0-0.362-0.186-0.452-0.549-0.452H24.993L25.085,8.497z"/> + <path fill="#3C6FEA" d="M25.075,8.522c0-0.272-0.272-0.272-0.457-0.181L9.449,23.637c-0.457,0.453-0.366,0.633,0,0.905 + l15.169,15.112c0.092,0.091,0.362,0.091,0.362-0.09v-9.051h12.431c0.272,0,0.457-0.183,0.457-0.363V18.116 + c0-0.362-0.185-0.452-0.55-0.452H24.982L25.075,8.522z"/> + <path fill="#3D70EB" d="M25.064,8.549c0-0.271-0.272-0.271-0.455-0.181L9.462,23.638c-0.455,0.452-0.365,0.632,0,0.903 + l15.147,15.087c0.093,0.093,0.363,0.093,0.363-0.089v-9.035h12.409c0.272,0,0.456-0.181,0.456-0.359v-12.02 + c0-0.361-0.184-0.451-0.549-0.451H24.975L25.064,8.549z"/> + <path fill="#3E71EB" d="M25.057,8.577c0-0.271-0.273-0.271-0.455-0.181L9.478,23.639c-0.455,0.451-0.364,0.631,0,0.901 + l15.124,15.062c0.09,0.09,0.362,0.09,0.362-0.09v-9.021h12.392c0.272,0,0.455-0.183,0.455-0.361V18.136 + c0-0.36-0.183-0.45-0.547-0.45h-12.3L25.057,8.577z"/> + <path fill="#3F72EC" d="M25.046,8.603c0-0.27-0.272-0.27-0.455-0.18L9.493,23.639c-0.454,0.45-0.364,0.63,0,0.9l15.099,15.035 + c0.092,0.09,0.364,0.09,0.364-0.09V30.48h12.369c0.272,0,0.454-0.183,0.454-0.359V18.146c0-0.36-0.182-0.449-0.547-0.449H24.956 + L25.046,8.603z"/> + <path fill="#4073EC" d="M25.038,8.629c0-0.27-0.272-0.27-0.455-0.18L9.506,23.64c-0.453,0.45-0.363,0.629,0,0.898l15.075,15.01 + c0.092,0.091,0.362,0.091,0.362-0.09v-8.985h12.353c0.272,0,0.455-0.183,0.455-0.361V18.157c0-0.359-0.183-0.448-0.545-0.448 + H24.945L25.038,8.629z"/> + <path fill="#4174ED" d="M25.027,8.656c0-0.269-0.272-0.269-0.454-0.179L9.521,23.641c-0.453,0.449-0.363,0.627,0,0.896 + L24.573,39.52c0.092,0.09,0.362,0.09,0.362-0.09v-8.972h12.332c0.271,0,0.453-0.181,0.453-0.36V18.166 + c0-0.358-0.182-0.447-0.544-0.447H24.938L25.027,8.656z"/> + <path fill="#4275ED" d="M25.018,8.683c0-0.269-0.271-0.269-0.453-0.179L9.537,23.641c-0.452,0.448-0.362,0.626,0,0.896 + l15.027,14.957c0.092,0.09,0.362,0.09,0.362-0.09v-8.955h12.312c0.271,0,0.453-0.18,0.453-0.359V18.177 + c0-0.358-0.182-0.447-0.543-0.447H24.927L25.018,8.683z"/> + <path fill="#4376EE" d="M25.008,8.709c0-0.269-0.271-0.269-0.451-0.179L9.551,23.642c-0.451,0.447-0.361,0.625,0,0.895 + l15.006,14.932c0.09,0.09,0.36,0.09,0.36-0.089v-8.94H37.21c0.271,0,0.453-0.18,0.453-0.356V18.187 + c0-0.357-0.183-0.446-0.543-0.446H24.917L25.008,8.709z"/> + <path fill="#4477EE" d="M24.997,8.735c0-0.268-0.271-0.268-0.45-0.179L9.564,23.642c-0.45,0.446-0.361,0.625,0,0.893 + l14.982,14.904c0.091,0.09,0.36,0.09,0.36-0.088v-8.928H37.18c0.271,0,0.451-0.179,0.451-0.355V18.197 + c0-0.356-0.181-0.445-0.542-0.445h-12.18L24.997,8.735z"/> + <path fill="#4578EF" d="M24.988,8.763c0-0.268-0.271-0.268-0.449-0.178L9.58,23.643c-0.449,0.445-0.36,0.623,0,0.891l14.958,14.88 + c0.09,0.089,0.358,0.089,0.358-0.089v-8.909h12.256c0.271,0,0.451-0.18,0.451-0.357V18.207c0-0.356-0.182-0.444-0.541-0.444 + H24.898L24.988,8.763z"/> + <path fill="#4679EF" d="M24.979,8.79c0-0.267-0.271-0.267-0.449-0.178L9.595,23.644c-0.449,0.445-0.36,0.622,0,0.891 + l14.934,14.851c0.091,0.091,0.359,0.091,0.359-0.088v-8.896h12.234c0.271,0,0.451-0.18,0.451-0.355V18.216 + c0-0.355-0.184-0.443-0.541-0.443H24.891L24.979,8.79z"/> + <path fill="#477AF0" d="M24.971,8.815c0-0.267-0.271-0.267-0.451-0.178L9.608,23.644c-0.448,0.444-0.359,0.621,0,0.889 + L24.52,39.357c0.09,0.09,0.36,0.09,0.36-0.088v-8.879h12.218c0.27,0,0.448-0.18,0.448-0.354V18.228 + c0-0.355-0.183-0.443-0.541-0.443H24.88L24.971,8.815z"/> + <path fill="#487BF0" d="M24.96,8.842c0-0.266-0.271-0.266-0.448-0.177L9.624,23.645c-0.448,0.443-0.359,0.62,0,0.888 + l14.888,14.801c0.09,0.088,0.358,0.088,0.358-0.088v-8.863h12.196c0.271,0,0.449-0.178,0.449-0.355v-11.79 + c0-0.354-0.182-0.442-0.539-0.442H24.87L24.96,8.842z"/> + <path fill="#497CF1" d="M24.95,8.87c0-0.266-0.269-0.266-0.447-0.177L9.638,23.645c-0.447,0.442-0.358,0.619,0,0.886 + l14.865,14.773c0.09,0.09,0.356,0.09,0.356-0.09v-8.846H37.04c0.271,0,0.446-0.18,0.446-0.354V18.248 + c0-0.353-0.18-0.441-0.536-0.441H24.859L24.95,8.87z"/> + <path fill="#4A7DF1" d="M24.939,8.896c0-0.265-0.268-0.265-0.446-0.177L9.652,23.646c-0.446,0.442-0.357,0.618,0,0.883 + l14.841,14.75c0.089,0.088,0.358,0.088,0.358-0.088v-8.832H37.01c0.27,0,0.448-0.178,0.448-0.354V18.257 + c0-0.353-0.183-0.44-0.537-0.44H24.852L24.939,8.896z"/> + <path fill="#4B7EF2" d="M24.932,8.922c0-0.265-0.269-0.265-0.447-0.177L9.667,23.646c-0.445,0.441-0.357,0.617,0,0.881 + l14.818,14.724c0.089,0.088,0.357,0.088,0.357-0.088V30.35h12.141c0.268,0,0.447-0.18,0.447-0.354V18.268 + c0-0.353-0.181-0.44-0.537-0.44H24.842L24.932,8.922z"/> + <path fill="#4C7FF2" d="M24.921,8.949c0-0.264-0.269-0.264-0.445-0.176L9.682,23.646c-0.444,0.44-0.356,0.616,0,0.879 + l14.794,14.697c0.088,0.088,0.355,0.088,0.355-0.089v-8.801h12.121c0.269,0,0.444-0.177,0.444-0.354V18.277 + c0-0.352-0.18-0.438-0.535-0.438h-12.03L24.921,8.949z"/> + <path fill="#4D80F3" d="M24.913,8.976c0-0.264-0.269-0.264-0.444-0.176L9.697,23.647c-0.444,0.439-0.356,0.615,0,0.878 + l14.771,14.672c0.091,0.088,0.355,0.088,0.355-0.088v-8.784h12.102c0.269,0,0.445-0.179,0.445-0.354V18.288 + c0-0.351-0.181-0.438-0.535-0.438H24.823L24.913,8.976z"/> + <path fill="#4E81F3" d="M24.902,9.002c0-0.264-0.268-0.264-0.444-0.176L9.71,23.647c-0.443,0.439-0.355,0.614,0,0.876 + L24.458,39.17c0.089,0.088,0.354,0.088,0.354-0.087v-8.771h12.082c0.268,0,0.444-0.176,0.444-0.354V18.297 + c0-0.35-0.178-0.437-0.532-0.437H24.812L24.902,9.002z"/> + <path fill="#4F82F4" d="M24.895,9.028c0-0.263-0.269-0.263-0.444-0.175L9.726,23.648c-0.442,0.438-0.354,0.612,0,0.875 + L24.45,39.145c0.089,0.088,0.354,0.088,0.354-0.086v-8.754h12.062c0.267,0,0.442-0.178,0.442-0.354V18.308 + c0-0.349-0.18-0.436-0.533-0.436H24.805L24.895,9.028z"/> + <path fill="#5083F4" d="M24.884,9.056c0-0.262-0.268-0.262-0.443-0.175L9.74,23.649c-0.441,0.437-0.354,0.611,0,0.875l14.7,14.595 + c0.089,0.087,0.354,0.087,0.354-0.087v-8.737h12.045c0.267,0,0.44-0.176,0.44-0.353V18.317c0-0.349-0.178-0.436-0.53-0.436H24.794 + L24.884,9.056z"/> + <path fill="#5184F5" d="M24.874,9.082c0-0.262-0.269-0.262-0.442-0.175L9.754,23.649c-0.441,0.437-0.354,0.61,0,0.873 + l14.677,14.566c0.088,0.088,0.354,0.088,0.354-0.086v-8.723h12.025c0.266,0,0.44-0.176,0.44-0.35V18.329 + c0-0.348-0.176-0.435-0.53-0.435H24.786L24.874,9.082z"/> + <path fill="#5285F5" d="M24.863,9.108c0-0.262-0.264-0.262-0.44-0.174L9.769,23.65c-0.44,0.436-0.353,0.609,0,0.872l14.654,14.541 + c0.089,0.086,0.353,0.086,0.353-0.086V30.27h12.008c0.264,0,0.439-0.176,0.439-0.351V18.338c0-0.348-0.177-0.434-0.529-0.434 + H24.775L24.863,9.108z"/> + <path fill="#5386F6" d="M24.854,9.136c0-0.261-0.266-0.261-0.44-0.174l-14.63,14.69c-0.439,0.435-0.353,0.608,0,0.87l14.63,14.517 + c0.089,0.087,0.353,0.087,0.353-0.086V30.26H36.75c0.266,0,0.439-0.175,0.439-0.349V18.349c0-0.347-0.176-0.433-0.527-0.433 + H24.768L24.854,9.136z"/> + <path fill="#5487F6" d="M24.846,9.163c0-0.261-0.265-0.261-0.441-0.174L9.798,23.651c-0.439,0.434-0.352,0.607,0,0.867 + l14.606,14.49c0.088,0.086,0.352,0.086,0.352-0.086v-8.676h11.967c0.264,0,0.439-0.176,0.439-0.35V18.358 + c0-0.346-0.178-0.432-0.527-0.432H24.757L24.846,9.163z"/> + <path fill="#5588F7" d="M24.835,9.188c0-0.26-0.265-0.26-0.439-0.173L9.812,23.652c-0.438,0.433-0.352,0.606,0,0.866L24.395,38.98 + c0.088,0.088,0.352,0.088,0.352-0.086v-8.66h11.946c0.265,0,0.439-0.174,0.439-0.348V18.369c0-0.346-0.178-0.432-0.527-0.432 + H24.747L24.835,9.188z"/> + <path fill="#5689F7" d="M24.827,9.215c0-0.26-0.265-0.26-0.438-0.173L9.828,23.653c-0.437,0.432-0.351,0.604,0,0.865l14.56,14.438 + c0.088,0.086,0.352,0.086,0.352-0.086v-8.646h11.928c0.266,0,0.438-0.176,0.438-0.349v-11.5c0-0.345-0.176-0.431-0.525-0.431 + H24.74L24.827,9.215z"/> + <path fill="#578AF8" d="M24.816,9.242c0-0.259-0.264-0.259-0.438-0.172L9.842,23.653c-0.437,0.432-0.35,0.604,0,0.863 + l14.537,14.41c0.088,0.086,0.35,0.086,0.35-0.086v-8.629h11.91c0.262,0,0.438-0.173,0.438-0.346V18.389 + c0-0.344-0.176-0.43-0.524-0.43H24.729L24.816,9.242z"/> + <path fill="#588BF8" d="M24.807,9.269c0-0.259-0.262-0.259-0.437-0.172L9.856,23.655c-0.436,0.431-0.35,0.603,0,0.863 + L24.37,38.898c0.088,0.086,0.349,0.086,0.349-0.084v-8.612h11.891c0.264,0,0.438-0.175,0.438-0.347V18.398 + c0-0.344-0.176-0.429-0.524-0.429H24.719L24.807,9.269z"/> + <path fill="#598CF9" d="M24.796,9.294c0-0.258-0.261-0.258-0.438-0.172L9.872,23.655c-0.435,0.43-0.349,0.602,0,0.861 + L24.36,38.872c0.088,0.086,0.35,0.086,0.35-0.085v-8.602h11.871c0.263,0,0.438-0.172,0.438-0.344V18.41 + c0-0.343-0.177-0.429-0.522-0.429H24.71L24.796,9.294z"/> + <path fill="#5A8DF9" d="M24.788,9.322c0-0.258-0.263-0.258-0.437-0.172L9.886,23.656c-0.435,0.429-0.349,0.6,0,0.857 + l14.466,14.334c0.088,0.086,0.349,0.086,0.349-0.088v-8.58h11.854c0.262,0,0.438-0.174,0.438-0.346V18.418 + c0-0.342-0.177-0.427-0.522-0.427H24.7L24.788,9.322z"/> + <path fill="#5B8EFA" d="M24.777,9.349c0-0.257-0.262-0.257-0.436-0.171L9.9,23.657c-0.434,0.428-0.348,0.6,0,0.856L24.342,38.82 + c0.087,0.086,0.348,0.086,0.348-0.084v-8.567h11.834c0.261,0,0.437-0.172,0.437-0.344V18.43c0-0.342-0.176-0.427-0.522-0.427 + H24.689L24.777,9.349z"/> + <path fill="#5C8FFA" d="M24.77,9.375c0-0.257-0.262-0.257-0.436-0.171L9.915,23.657c-0.433,0.428-0.348,0.599,0,0.854 + l14.419,14.281c0.087,0.086,0.348,0.086,0.348-0.085v-8.551h11.812c0.262,0,0.438-0.174,0.438-0.346V18.439 + c0-0.341-0.176-0.426-0.521-0.426H24.682L24.77,9.375z"/> + <path fill="#5D90FB" d="M24.759,9.401c0-0.256-0.26-0.256-0.434-0.17L9.93,23.658c-0.432,0.427-0.347,0.597,0,0.855l14.396,14.254 + c0.087,0.086,0.347,0.086,0.347-0.084v-8.537h11.794c0.26,0,0.436-0.172,0.436-0.342V18.45c0-0.341-0.176-0.425-0.521-0.425 + h-11.71L24.759,9.401z"/> + <path fill="#5E91FB" d="M24.749,9.429c0-0.256-0.26-0.256-0.435-0.17l-14.371,14.4c-0.432,0.426-0.346,0.596,0,0.852L24.315,38.74 + c0.087,0.085,0.346,0.085,0.346-0.086v-8.521h11.774c0.26,0,0.435-0.172,0.435-0.342V18.459c0-0.34-0.175-0.424-0.521-0.424 + H24.663L24.749,9.429z"/> + <path fill="#5F92FC" d="M24.741,9.455c0-0.255-0.261-0.255-0.434-0.17L9.958,23.659c-0.431,0.425-0.346,0.595,0,0.851 + l14.349,14.202c0.087,0.085,0.345,0.085,0.345-0.084v-8.505h11.757c0.258,0,0.434-0.171,0.434-0.341V18.47 + c0-0.339-0.176-0.423-0.521-0.423h-11.67L24.741,9.455z"/> + <path fill="#6093FC" d="M24.73,9.481c0-0.255-0.259-0.255-0.433-0.17L9.974,23.66c-0.43,0.425-0.345,0.594,0,0.849l14.325,14.179 + c0.087,0.084,0.346,0.084,0.346-0.084v-8.489H36.38c0.259,0,0.433-0.171,0.433-0.341V18.479c0-0.339-0.174-0.423-0.521-0.423 + H24.645L24.73,9.481z"/> + <path fill="#6194FD" d="M24.721,9.507c0-0.254-0.259-0.254-0.431-0.169L9.988,23.661c-0.43,0.424-0.345,0.593,0,0.847 + l14.302,14.15c0.086,0.085,0.344,0.085,0.344-0.084V30.1h11.718c0.258,0,0.432-0.17,0.432-0.342v-11.27 + c0-0.338-0.174-0.422-0.518-0.422H24.634L24.721,9.507z"/> + <path fill="#6295FD" d="M24.71,9.535c0-0.254-0.257-0.254-0.429-0.169L10.002,23.661c-0.429,0.423-0.344,0.592,0,0.846 + L24.28,38.631c0.086,0.085,0.343,0.085,0.343-0.083V30.09H36.32c0.258,0,0.432-0.17,0.432-0.34V18.5 + c0-0.337-0.174-0.421-0.52-0.421H24.623L24.71,9.535z"/> + <path fill="#6396FE" d="M24.702,9.561c0-0.253-0.259-0.253-0.43-0.169l-14.256,14.27c-0.428,0.422-0.343,0.591,0,0.844 + l14.255,14.1c0.086,0.084,0.342,0.084,0.342-0.084V30.08h11.681c0.258,0,0.431-0.17,0.431-0.338v-11.23 + c0-0.337-0.173-0.42-0.517-0.42H24.616L24.702,9.561z"/> + <path fill="#6497FE" d="M24.691,9.587c0-0.253-0.257-0.253-0.429-0.168l-14.23,14.243c-0.427,0.422-0.343,0.59,0,0.843 + l14.231,14.072c0.086,0.084,0.342,0.084,0.342-0.083v-8.428h11.66c0.258,0,0.43-0.17,0.43-0.338V18.521 + c0-0.336-0.172-0.42-0.516-0.42H24.605L24.691,9.587z"/> + <path fill="#6598FF" d="M24.684,9.615c0-0.252-0.258-0.252-0.43-0.168L10.045,23.663c-0.426,0.42-0.342,0.588,0,0.841 + l14.208,14.047c0.086,0.084,0.343,0.084,0.343-0.084v-8.41h11.641c0.257,0,0.429-0.168,0.429-0.336V18.531 + c0-0.335-0.172-0.418-0.515-0.418H24.598L24.684,9.615z"/> + <path fill="#6699FF" d="M24.673,9.642c0-0.252-0.257-0.252-0.428-0.168L10.06,23.664c-0.426,0.42-0.342,0.587,0,0.839 + l14.185,14.021c0.086,0.084,0.342,0.084,0.342-0.084v-8.396h11.621c0.256,0,0.429-0.169,0.429-0.337V18.541 + c0-0.335-0.173-0.418-0.515-0.418H24.587L24.673,9.642z"/> + </g> + + <linearGradient id="XMLID_16_" gradientUnits="userSpaceOnUse" x1="-1112.2041" y1="1225.4229" x2="-1112.2041" y2="1254.5781" gradientTransform="matrix(-1 0 0 1 -1089 -1216)"> + <stop offset="0" style="stop-color:#FFFFFF"/> + <stop offset="1" style="stop-color:#6699FF"/> + </linearGradient> + <path fill="url(#XMLID_16_)" d="M24.673,9.642c0-0.252-0.257-0.252-0.428-0.168L10.06,23.664c-0.426,0.42-0.342,0.587,0,0.839 + l14.185,14.021c0.086,0.084,0.342,0.084,0.342-0.084v-8.396h11.621c0.256,0,0.429-0.169,0.429-0.337V18.541 + c0-0.335-0.173-0.418-0.515-0.418H24.587L24.673,9.642z"/> +</g> +<g id="crop_x0020_marks"> + <path fill="none" d="M-0.06,0.001h48v48h-48V0.001z"/> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/tip.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/tip.svg new file mode 100644 index 000000000..f6e9d7364 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/tip.svg @@ -0,0 +1,367 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.1" id="Tip" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48" + overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve"> +<g> + <path stroke="#FFFFFF" stroke-width="5.6139" d="M9.525,18.6c0,8,6.5,14.4,14.4,14.4c8.001,0,14.399-6.5,14.399-14.4 + c0-8-6.5-14.4-14.399-14.4C15.925,4.2,9.525,10.7,9.525,18.6z M12.825,18.6c0-6.2,5-11.2,11.2-11.2c6.2,0,11.2,5,11.2,11.2 + c0,6.2-5,11.2-11.2,11.2C17.825,29.8,12.825,24.8,12.825,18.6z"/> + <path stroke="#FFFFFF" stroke-width="5.6139" d="M28.125,37.9l-7.6,0.8c-0.9,0.1-1.5,0.899-1.4,1.8s0.9,1.5,1.8,1.4l7.601-0.801 + c0.9-0.102,1.5-0.899,1.4-1.802C29.824,38.4,29.025,37.8,28.125,37.9z"/> + <path stroke="#FFFFFF" stroke-width="5.6139" d="M28.125,34.8l-7.6,0.8c-0.9,0.101-1.5,0.9-1.4,1.801c0.1,0.897,0.9,1.5,1.8,1.397 + l7.601-0.8c0.9-0.102,1.5-0.898,1.4-1.8C29.824,35.3,29.025,34.7,28.125,34.8z"/> + <path stroke="#FFFFFF" stroke-width="5.6139" d="M28.125,31.6l-7.6,0.801c-0.9,0.1-1.5,0.897-1.4,1.8c0.1,0.899,0.9,1.5,1.8,1.399 + l7.601-0.802c0.9-0.1,1.5-0.897,1.4-1.8C29.824,32.1,29.025,31.5,28.125,31.6z"/> + <path stroke="#FFFFFF" stroke-width="5.6139" d="M23.125,41.3v0.9c0,0.899,0.7,1.6,1.6,1.6c0.9,0,1.6-0.7,1.6-1.6v-0.9h-3.299 + H23.125z"/> + <path fill="#FFFFFF" d="M35.926,18.7c0,6.6-5.4,12-12.001,12c-6.6,0-12-5.4-12-12c0-6.6,5.4-12,12-12 + C30.525,6.7,35.926,12.1,35.926,18.7z"/> + <g> + <path fill="#FFFF00" d="M9.625,18.6c0,8,6.5,14.4,14.4,14.4c8,0,14.401-6.5,14.401-14.4c0-8-6.5-14.4-14.401-14.4 + C16.025,4.2,9.625,10.7,9.625,18.6z"/> + <path fill="#FFFF01" d="M9.647,18.6c0-7.889,6.391-14.379,14.379-14.379c7.89,0,14.378,6.391,14.378,14.379 + c0,7.889-6.391,14.378-14.378,14.378C16.137,32.979,9.647,26.588,9.647,18.6z"/> + <path fill="#FFFF02" d="M9.668,18.6c0-7.878,6.382-14.358,14.358-14.358c7.878,0,14.359,6.382,14.359,14.358 + c0,7.876-6.383,14.358-14.359,14.358C16.149,32.958,9.668,26.576,9.668,18.6z"/> + <path fill="#FFFF03" d="M9.69,18.6c0-7.867,6.373-14.337,14.337-14.337c7.868,0,14.338,6.373,14.338,14.337 + c0,7.867-6.373,14.337-14.338,14.337C16.16,32.938,9.69,26.564,9.69,18.6z"/> + <path fill="#FFFF04" d="M9.712,18.6c0-7.855,6.363-14.316,14.316-14.316c7.855,0,14.316,6.363,14.316,14.316 + c0,7.856-6.363,14.316-14.316,14.316C16.172,32.916,9.712,26.553,9.712,18.6z"/> + <path fill="#FFFF05" d="M9.733,18.6c0-7.844,6.354-14.295,14.295-14.295c7.847,0,14.296,6.354,14.296,14.295 + c0,7.843-6.354,14.294-14.296,14.294C16.184,32.896,9.733,26.541,9.733,18.6z"/> + <path fill="#FFFF06" d="M9.754,18.6c0-7.833,6.345-14.274,14.274-14.274c7.833,0,14.275,6.345,14.275,14.274 + c0,7.833-6.346,14.274-14.275,14.274C16.196,32.874,9.754,26.529,9.754,18.6z"/> + <path fill="#FFFF07" d="M9.776,18.6c0-7.822,6.336-14.253,14.254-14.253c7.822,0,14.253,6.335,14.253,14.253 + c0,7.823-6.336,14.253-14.253,14.253C16.208,32.854,9.776,26.518,9.776,18.6z"/> + <path fill="#FFFF08" d="M9.798,18.6c0-7.811,6.326-14.232,14.232-14.232c7.812,0,14.234,6.326,14.234,14.232 + c0,7.811-6.328,14.233-14.234,14.233C16.219,32.833,9.798,26.506,9.798,18.6z"/> + <path fill="#FFFF09" d="M9.819,18.6c0-7.8,6.317-14.211,14.211-14.211c7.8,0,14.212,6.317,14.212,14.211 + c0,7.8-6.318,14.21-14.212,14.21C16.231,32.812,9.819,26.494,9.819,18.6z"/> + <path fill="#FFFF0A" d="M9.84,18.6c0-7.789,6.309-14.191,14.191-14.191c7.79,0,14.192,6.309,14.192,14.191 + c0,7.789-6.309,14.191-14.192,14.191C16.243,32.791,9.84,26.482,9.84,18.6z"/> + <path fill="#FFFF0B" d="M9.862,18.6c0-7.778,6.299-14.17,14.17-14.17c7.779,0,14.169,6.299,14.169,14.17 + c0,7.778-6.299,14.169-14.169,14.169C16.254,32.77,9.862,26.471,9.862,18.6z"/> + <path fill="#FFFF0C" d="M9.884,18.6c0-7.767,6.29-14.149,14.149-14.149c7.768,0,14.149,6.29,14.149,14.149 + c0,7.767-6.291,14.149-14.149,14.149C16.266,32.749,9.884,26.459,9.884,18.6z"/> + <path fill="#FFFF0D" d="M9.905,18.6c0-7.756,6.281-14.128,14.128-14.128c7.756,0,14.129,6.281,14.129,14.128 + c0,7.755-6.281,14.128-14.129,14.128C16.278,32.729,9.905,26.447,9.905,18.6z"/> + <path fill="#FFFF0E" d="M9.927,18.6c0-7.745,6.272-14.107,14.107-14.107c7.746,0,14.107,6.272,14.107,14.107 + c0,7.746-6.27,14.107-14.107,14.107C16.29,32.707,9.927,26.436,9.927,18.6z"/> + <path fill="#FFFF0F" d="M9.949,18.6c0-7.733,6.263-14.086,14.086-14.086c7.733,0,14.088,6.262,14.088,14.086 + c0,7.733-6.266,14.085-14.088,14.085C16.302,32.688,9.949,26.423,9.949,18.6z"/> + <path fill="#FFFF10" d="M9.97,18.6c0-7.722,6.253-14.065,14.065-14.065c7.723,0,14.067,6.253,14.067,14.065 + c0,7.722-6.254,14.066-14.067,14.066C16.313,32.666,9.97,26.411,9.97,18.6z"/> + <path fill="#FFFF11" d="M9.992,18.6c0-7.711,6.244-14.044,14.044-14.044c7.712,0,14.044,6.245,14.044,14.044 + c0,7.71-6.244,14.044-14.044,14.044C16.325,32.645,9.992,26.398,9.992,18.6z"/> + <path fill="#FFFF12" d="M10.013,18.6c0-7.7,6.235-14.023,14.023-14.023c7.7,0,14.024,6.235,14.024,14.023 + c0,7.7-6.236,14.023-14.024,14.023C16.337,32.623,10.013,26.389,10.013,18.6z"/> + <path fill="#FFFF13" d="M10.035,18.6c0-7.688,6.226-14.002,14.002-14.002c7.689,0,14.004,6.226,14.004,14.002 + c0,7.689-6.229,14.001-14.004,14.001C16.348,32.604,10.035,26.376,10.035,18.6z"/> + <path fill="#FFFF14" d="M10.057,18.6c0-7.678,6.217-13.981,13.981-13.981c7.679,0,13.981,6.217,13.981,13.981 + c0,7.677-6.217,13.981-13.981,13.981C16.36,32.581,10.057,26.364,10.057,18.6z"/> + <path fill="#FFFF15" d="M10.078,18.6c0-7.667,6.208-13.961,13.961-13.961C31.707,4.639,38,10.847,38,18.6 + c0,7.667-6.209,13.96-13.961,13.96C16.372,32.561,10.078,26.354,10.078,18.6z"/> + <path fill="#FFFF16" d="M10.1,18.6c0-7.655,6.198-13.94,13.939-13.94c7.656,0,13.941,6.199,13.941,13.94 + c0,7.656-6.201,13.94-13.941,13.94C16.384,32.54,10.1,26.341,10.1,18.6z"/> + <path fill="#FFFF17" d="M10.121,18.6c0-7.644,6.189-13.919,13.919-13.919c7.646,0,13.919,6.189,13.919,13.919 + c0,7.644-6.189,13.917-13.919,13.917C16.396,32.52,10.121,26.329,10.121,18.6z"/> + <path fill="#FFFF18" d="M10.143,18.6c0-7.633,6.181-13.898,13.898-13.898c7.633,0,13.898,6.18,13.898,13.898 + c0,7.632-6.182,13.898-13.898,13.898C16.408,32.498,10.143,26.316,10.143,18.6z"/> + <path fill="#FFFF19" d="M10.164,18.6c0-7.622,6.171-13.877,13.877-13.877c7.623,0,13.877,6.171,13.877,13.877 + c0,7.623-6.172,13.876-13.877,13.876C16.419,32.479,10.164,26.307,10.164,18.6z"/> + <path fill="#FFFF1A" d="M10.186,18.6c0-7.611,6.162-13.856,13.856-13.856c7.61,0,13.856,6.162,13.856,13.856 + c0,7.611-6.162,13.856-13.856,13.856C16.431,32.456,10.186,26.294,10.186,18.6z"/> + <path fill="#FFFF1B" d="M10.208,18.6c0-7.6,6.153-13.835,13.835-13.835c7.602,0,13.836,6.153,13.836,13.835 + c0,7.6-6.152,13.835-13.836,13.835C16.443,32.436,10.208,26.282,10.208,18.6z"/> + <path fill="#FFFF1C" d="M10.229,18.6c0-7.589,6.144-13.814,13.814-13.814c7.59,0,13.814,6.144,13.814,13.814 + c0,7.587-6.145,13.814-13.814,13.814C16.454,32.414,10.229,26.271,10.229,18.6z"/> + <path fill="#FFFF1D" d="M10.251,18.6c0-7.578,6.135-13.793,13.793-13.793c7.579,0,13.794,6.135,13.794,13.793 + c0,7.578-6.137,13.792-13.794,13.792C16.466,32.395,10.251,26.259,10.251,18.6z"/> + <path fill="#FFFF1E" d="M10.272,18.6c0-7.566,6.125-13.772,13.772-13.772c7.567,0,13.772,6.125,13.772,13.772 + c0,7.567-6.125,13.773-13.772,13.773C16.478,32.373,10.272,26.247,10.272,18.6z"/> + <path fill="#FFFF1F" d="M10.294,18.6c0-7.556,6.116-13.752,13.751-13.752c7.557,0,13.752,6.117,13.752,13.752 + c0,7.554-6.117,13.751-13.752,13.751C16.49,32.352,10.294,26.234,10.294,18.6z"/> + <path fill="#FFFF20" d="M10.315,18.6c0-7.544,6.107-13.731,13.731-13.731c7.544,0,13.731,6.107,13.731,13.731 + c0,7.544-6.107,13.731-13.731,13.731C16.502,32.331,10.315,26.225,10.315,18.6z"/> + <path fill="#FFFF21" d="M10.337,18.6c0-7.533,6.098-13.71,13.709-13.71c7.534,0,13.71,6.098,13.71,13.71 + c0,7.534-6.1,13.708-13.71,13.708C16.513,32.311,10.337,26.212,10.337,18.6z"/> + <path fill="#FFFF22" d="M10.358,18.6c0-7.522,6.088-13.688,13.689-13.688c7.521,0,13.689,6.088,13.689,13.688 + c0,7.522-6.09,13.689-13.689,13.689C16.525,32.289,10.358,26.199,10.358,18.6z"/> + <path fill="#FFFF23" d="M10.38,18.6c0-7.511,6.08-13.668,13.668-13.668c7.511,0,13.669,6.08,13.669,13.668 + c0,7.511-6.08,13.667-13.669,13.667C16.537,32.268,10.38,26.188,10.38,18.6z"/> + <path fill="#FFFF24" d="M10.401,18.6c0-7.5,6.071-13.647,13.647-13.647c7.501,0,13.647,6.07,13.647,13.647 + c0,7.5-6.07,13.647-13.647,13.647C16.549,32.247,10.401,26.176,10.401,18.6z"/> + <path fill="#FFFF25" d="M10.423,18.6c0-7.489,6.062-13.626,13.626-13.626c7.49,0,13.627,6.061,13.627,13.626 + c0,7.489-6.062,13.625-13.627,13.625C16.56,32.227,10.423,26.164,10.423,18.6z"/> + <path fill="#FFFF26" d="M10.445,18.6c0-7.478,6.052-13.605,13.605-13.605c7.478,0,13.606,6.052,13.606,13.605 + c0,7.478-6.053,13.605-13.606,13.605C16.572,32.205,10.445,26.152,10.445,18.6z"/> + <path fill="#FFFF27" d="M10.466,18.6c0-7.467,6.043-13.584,13.584-13.584c7.468,0,13.585,6.043,13.585,13.584 + c0,7.466-6.043,13.583-13.585,13.583C16.584,32.186,10.466,26.141,10.466,18.6z"/> + <path fill="#FFFF28" d="M10.488,18.6c0-7.456,6.034-13.563,13.563-13.563c7.457,0,13.562,6.034,13.562,13.563 + c0,7.457-6.033,13.563-13.562,13.563C16.596,32.163,10.488,26.129,10.488,18.6z"/> + <path fill="#FFFF29" d="M10.509,18.6c0-7.445,6.025-13.542,13.542-13.542c7.445,0,13.543,6.024,13.543,13.542 + c0,7.444-6.025,13.542-13.543,13.542C16.608,32.143,10.509,26.117,10.509,18.6z"/> + <path fill="#FFFF2A" d="M10.531,18.6c0-7.434,6.016-13.522,13.521-13.522c7.435,0,13.521,6.016,13.521,13.522 + c0,7.433-6.016,13.521-13.521,13.521C16.619,32.121,10.531,26.105,10.531,18.6z"/> + <path fill="#FFFF2B" d="M10.552,18.6c0-7.422,6.006-13.501,13.501-13.501c7.422,0,13.502,6.007,13.502,13.501 + c0,7.421-6.008,13.5-13.502,13.5C16.631,32.102,10.552,26.094,10.552,18.6z"/> + <path fill="#FFFF2C" d="M10.574,18.6c0-7.411,5.997-13.479,13.479-13.479c7.412,0,13.48,5.997,13.48,13.479 + c0,7.411-5.998,13.48-13.48,13.48C16.643,32.08,10.574,26.082,10.574,18.6z"/> + <path fill="#FFFF2D" d="M10.596,18.6c0-7.4,5.988-13.458,13.458-13.458c7.401,0,13.46,5.988,13.46,13.458 + c0,7.4-5.988,13.458-13.46,13.458C16.654,32.059,10.596,26.07,10.596,18.6z"/> + <path fill="#FFFF2E" d="M10.617,18.6c0-7.389,5.979-13.438,13.438-13.438c7.389,0,13.438,5.979,13.438,13.438 + c0,7.389-5.979,13.438-13.438,13.438C16.666,32.038,10.617,26.059,10.617,18.6z"/> + <path fill="#FFFF2F" d="M10.639,18.6c0-7.377,5.97-13.417,13.417-13.417c7.377,0,13.417,5.97,13.417,13.417 + c0,7.376-5.971,13.417-13.417,13.417C16.678,32.018,10.639,26.047,10.639,18.6z"/> + <path fill="#FFFF30" d="M10.66,18.6c0-7.366,5.96-13.396,13.396-13.396c7.368,0,13.395,5.961,13.395,13.396 + c0,7.367-5.961,13.396-13.395,13.396C16.69,31.996,10.66,26.035,10.66,18.6z"/> + <path fill="#FFFF31" d="M10.682,18.6c0-7.355,5.951-13.375,13.375-13.375c7.355,0,13.375,5.952,13.375,13.375 + c0,7.355-5.951,13.375-13.375,13.375C16.701,31.977,10.682,26.023,10.682,18.6z"/> + <path fill="#FFFF32" d="M10.703,18.6c0-7.344,5.943-13.354,13.354-13.354c7.343,0,13.355,5.943,13.355,13.354 + c0,7.343-5.943,13.354-13.355,13.354C16.713,31.954,10.703,26.012,10.703,18.6z"/> + <path fill="#FFFF33" d="M10.725,18.6c0-7.333,5.933-13.333,13.333-13.333c7.334,0,13.334,5.934,13.334,13.333 + c0,7.333-5.934,13.333-13.334,13.333C16.725,31.934,10.725,26,10.725,18.6z"/> + <path fill="#FFFF34" d="M10.747,18.6c0-7.322,5.924-13.312,13.312-13.312c7.322,0,13.312,5.924,13.312,13.312 + c0,7.322-5.926,13.312-13.312,13.312C16.737,31.912,10.747,25.988,10.747,18.6z"/> + <path fill="#FFFF35" d="M10.768,18.6c0-7.311,5.915-13.292,13.292-13.292c7.311,0,13.292,5.915,13.292,13.292 + c0,7.311-5.914,13.292-13.292,13.292C16.749,31.893,10.768,25.977,10.768,18.6z"/> + <path fill="#FFFF36" d="M10.79,18.6c0-7.3,5.906-13.271,13.271-13.271c7.3,0,13.271,5.906,13.271,13.271 + c0,7.298-5.904,13.27-13.271,13.27C16.76,31.87,10.79,25.964,10.79,18.6z"/> + <path fill="#FFFF37" d="M10.811,18.6c0-7.289,5.897-13.25,13.25-13.25c7.289,0,13.25,5.896,13.25,13.25 + c0,7.289-5.896,13.25-13.25,13.25C16.772,31.85,10.811,25.952,10.811,18.6z"/> + <path fill="#FFFF38" d="M10.833,18.6c0-7.278,5.888-13.229,13.229-13.229c7.278,0,13.229,5.887,13.229,13.229 + c0,7.278-5.889,13.228-13.229,13.228C16.784,31.828,10.833,25.939,10.833,18.6z"/> + <path fill="#FFFF39" d="M10.854,18.6c0-7.267,5.878-13.208,13.208-13.208c7.268,0,13.208,5.878,13.208,13.208 + c0,7.266-5.877,13.208-13.208,13.208C16.796,31.809,10.854,25.93,10.854,18.6z"/> + <path fill="#FFFF3A" d="M10.876,18.6c0-7.255,5.869-13.187,13.187-13.187c7.255,0,13.187,5.869,13.187,13.187 + c0,7.255-5.869,13.187-13.187,13.187C16.807,31.787,10.876,25.917,10.876,18.6z"/> + <path fill="#FFFF3B" d="M10.898,18.6c0-7.245,5.86-13.166,13.166-13.166c7.245,0,13.167,5.86,13.167,13.166 + c0,7.244-5.859,13.166-13.167,13.166C16.819,31.766,10.898,25.904,10.898,18.6z"/> + <path fill="#FFFF3C" d="M10.92,18.6c0-7.233,5.851-13.145,13.145-13.145c7.234,0,13.146,5.851,13.146,13.145 + c0,7.233-5.854,13.145-13.146,13.145C16.831,31.745,10.92,25.895,10.92,18.6z"/> + <path fill="#FFFF3D" d="M10.941,18.6c0-7.222,5.842-13.125,13.124-13.125c7.222,0,13.125,5.842,13.125,13.125 + c0,7.222-5.842,13.125-13.125,13.125C16.843,31.725,10.941,25.882,10.941,18.6z"/> + <path fill="#FFFF3E" d="M10.963,18.6c0-7.211,5.833-13.104,13.103-13.104c7.211,0,13.104,5.833,13.104,13.104 + c0,7.21-5.832,13.103-13.104,13.103C16.855,31.703,10.963,25.87,10.963,18.6z"/> + <path fill="#FFFF3F" d="M10.984,18.6c0-7.2,5.823-13.082,13.083-13.082c7.201,0,13.083,5.823,13.083,13.082 + c0,7.2-5.824,13.083-13.083,13.083C16.866,31.684,10.984,25.857,10.984,18.6z"/> + <path fill="#FFFF40" d="M11.005,18.6c0-7.189,5.815-13.062,13.062-13.062c7.189,0,13.062,5.814,13.062,13.062 + c0,7.189-5.812,13.061-13.062,13.061C16.878,31.661,11.005,25.848,11.005,18.6z"/> + <path fill="#FFFF41" d="M11.027,18.6c0-7.178,5.805-13.041,13.041-13.041c7.178,0,13.042,5.805,13.042,13.041 + c0,7.177-5.805,13.041-13.042,13.041C16.889,31.641,11.027,25.835,11.027,18.6z"/> + <path fill="#FFFF42" d="M11.048,18.6c0-7.167,5.796-13.02,13.02-13.02c7.167,0,13.02,5.796,13.02,13.02 + c0,7.167-5.797,13.02-13.02,13.02C16.901,31.62,11.048,25.823,11.048,18.6z"/> + <path fill="#FFFF43" d="M11.07,18.6c0-7.156,5.787-12.999,12.998-12.999c7.157,0,13,5.787,13,12.999c0,7.155-5.787,13-13,13 + C16.913,31.6,11.07,25.812,11.07,18.6z"/> + <path fill="#FFFF44" d="M11.091,18.6c0-7.145,5.778-12.978,12.978-12.978c7.146,0,12.978,5.778,12.978,12.978 + c0,7.144-5.777,12.978-12.978,12.978C16.925,31.578,11.091,25.8,11.091,18.6z"/> + <path fill="#FFFF45" d="M11.113,18.6c0-7.133,5.769-12.957,12.957-12.957c7.133,0,12.958,5.769,12.958,12.957 + c0,7.132-5.77,12.957-12.958,12.957C16.937,31.557,11.113,25.788,11.113,18.6z"/> + <path fill="#FFFF46" d="M11.135,18.6c0-7.123,5.759-12.936,12.936-12.936c7.123,0,12.937,5.759,12.937,12.936 + c0,7.123-5.76,12.936-12.937,12.936C16.949,31.536,11.135,25.775,11.135,18.6z"/> + <path fill="#FFFF47" d="M11.157,18.6c0-7.111,5.75-12.915,12.915-12.915c7.112,0,12.915,5.75,12.915,12.915 + c0,7.111-5.75,12.916-12.915,12.916C16.96,31.516,11.157,25.766,11.157,18.6z"/> + <path fill="#FFFF48" d="M11.178,18.6c0-7.1,5.741-12.894,12.895-12.894c7.101,0,12.894,5.741,12.894,12.894 + c0,7.099-5.74,12.894-12.894,12.894C16.972,31.494,11.178,25.752,11.178,18.6z"/> + <path fill="#FFFF49" d="M11.199,18.6c0-7.089,5.732-12.873,12.874-12.873c7.089,0,12.873,5.731,12.873,12.873 + c0,7.087-5.73,12.873-12.873,12.873C16.984,31.473,11.199,25.74,11.199,18.6z"/> + <path fill="#FFFF4A" d="M11.221,18.6c0-7.078,5.723-12.852,12.852-12.852c7.078,0,12.853,5.722,12.853,12.852 + c0,7.078-5.725,12.852-12.854,12.852C16.995,31.452,11.221,25.729,11.221,18.6z"/> + <path fill="#FFFF4B" d="M11.242,18.6c0-7.067,5.714-12.832,12.832-12.832c7.067,0,12.833,5.713,12.833,12.832 + c0,7.066-5.715,12.832-12.833,12.832C17.007,31.432,11.242,25.717,11.242,18.6z"/> + <path fill="#FFFF4C" d="M11.264,18.6c0-7.056,5.705-12.811,12.811-12.811c7.056,0,12.812,5.704,12.812,12.811 + c0,7.054-5.705,12.81-12.812,12.81C17.019,31.41,11.264,25.705,11.264,18.6z"/> + <path fill="#FFFF4D" d="M11.286,18.6c0-7.044,5.695-12.79,12.79-12.79c7.045,0,12.79,5.695,12.79,12.79 + c0,7.044-5.693,12.791-12.79,12.791C17.031,31.391,11.286,25.693,11.286,18.6z"/> + <path fill="#FFFF4E" d="M11.307,18.6c0-7.033,5.686-12.769,12.769-12.769c7.034,0,12.77,5.686,12.77,12.769 + c0,7.034-5.688,12.768-12.77,12.768C17.043,31.368,11.307,25.684,11.307,18.6z"/> + <path fill="#FFFF4F" d="M11.329,18.6c0-7.022,5.677-12.748,12.748-12.748c7.023,0,12.748,5.677,12.748,12.748 + c0,7.022-5.678,12.748-12.748,12.748C17.054,31.348,11.329,25.67,11.329,18.6z"/> + <path fill="#FFFF50" d="M11.351,18.6c0-7.011,5.667-12.727,12.727-12.727c7.012,0,12.727,5.668,12.727,12.727 + c0,7.011-5.668,12.727-12.727,12.727C17.066,31.327,11.351,25.658,11.351,18.6z"/> + <path fill="#FFFF51" d="M11.372,18.6c0-7,5.659-12.706,12.706-12.706c7,0,12.705,5.659,12.705,12.706 + c0,7-5.658,12.707-12.705,12.707C17.078,31.307,11.372,25.646,11.372,18.6z"/> + <path fill="#FFFF52" d="M11.394,18.6c0-6.989,5.65-12.685,12.685-12.685c6.987,0,12.685,5.65,12.685,12.685 + c0,6.989-5.648,12.685-12.685,12.685C17.09,31.285,11.394,25.635,11.394,18.6z"/> + <path fill="#FFFF53" d="M11.415,18.6c0-6.978,5.641-12.664,12.664-12.664c6.978,0,12.665,5.641,12.665,12.664 + c0,6.978-5.641,12.664-12.665,12.664C17.102,31.264,11.415,25.623,11.415,18.6z"/> + <path fill="#FFFF54" d="M11.437,18.6c0-6.967,5.631-12.643,12.643-12.643c6.967,0,12.645,5.631,12.645,12.643 + c0,6.966-5.633,12.643-12.645,12.643C17.113,31.243,11.437,25.611,11.437,18.6z"/> + <path fill="#FFFF55" d="M11.459,18.6c0-6.956,5.622-12.623,12.622-12.623c6.956,0,12.622,5.623,12.622,12.623 + c0,6.957-5.621,12.623-12.622,12.623C17.125,31.223,11.459,25.6,11.459,18.6z"/> + <path fill="#FFFF56" d="M11.48,18.6c0-6.944,5.613-12.602,12.602-12.602c6.945,0,12.602,5.613,12.602,12.602 + c0,6.944-5.613,12.601-12.602,12.601C17.137,31.201,11.48,25.588,11.48,18.6z"/> + <path fill="#FFFF57" d="M11.502,18.6c0-6.934,5.604-12.581,12.581-12.581c6.933,0,12.581,5.604,12.581,12.581 + c0,6.933-5.604,12.582-12.581,12.582C17.149,31.182,11.502,25.576,11.502,18.6z"/> + <path fill="#FFFF58" d="M11.523,18.6c0-6.922,5.595-12.56,12.56-12.56c6.923,0,12.56,5.595,12.56,12.56 + c0,6.921-5.594,12.559-12.56,12.559C17.16,31.159,11.523,25.564,11.523,18.6z"/> + <path fill="#FFFF59" d="M11.545,18.6c0-6.911,5.585-12.539,12.539-12.539c6.912,0,12.539,5.585,12.539,12.539 + c0,6.911-5.586,12.539-12.539,12.539C17.172,31.139,11.545,25.553,11.545,18.6z"/> + <path fill="#FFFF5A" d="M11.566,18.6c0-6.9,5.577-12.518,12.518-12.518c6.9,0,12.518,5.576,12.518,12.518 + c0,6.9-5.576,12.517-12.518,12.517C17.184,31.117,11.566,25.541,11.566,18.6z"/> + <path fill="#FFFF5B" d="M11.588,18.6c0-6.889,5.567-12.497,12.497-12.497c6.89,0,12.497,5.567,12.497,12.497 + c0,6.889-5.566,12.498-12.497,12.498C17.195,31.098,11.588,25.529,11.588,18.6z"/> + <path fill="#FFFF5C" d="M11.609,18.6c0-6.878,5.558-12.476,12.476-12.476c6.878,0,12.476,5.559,12.476,12.476 + c0,6.876-5.559,12.476-12.476,12.476C17.208,31.076,11.609,25.518,11.609,18.6z"/> + <path fill="#FFFF5D" d="M11.631,18.6c0-6.867,5.549-12.455,12.455-12.455c6.867,0,12.455,5.549,12.455,12.455 + c0,6.867-5.549,12.455-12.455,12.455C17.219,31.055,11.631,25.506,11.631,18.6z"/> + <path fill="#FFFF5E" d="M11.652,18.6c0-6.855,5.54-12.434,12.434-12.434c6.855,0,12.434,5.54,12.434,12.434 + c0,6.855-5.539,12.434-12.434,12.434C17.231,31.034,11.652,25.494,11.652,18.6z"/> + <path fill="#FFFF5F" d="M11.674,18.6c0-6.844,5.531-12.413,12.413-12.413c6.845,0,12.415,5.531,12.415,12.413 + c0,6.843-5.531,12.414-12.415,12.414C17.243,31.014,11.674,25.482,11.674,18.6z"/> + <path fill="#FFFF60" d="M11.695,18.6c0-6.833,5.521-12.392,12.393-12.392c6.834,0,12.393,5.521,12.393,12.392 + c0,6.833-5.521,12.392-12.393,12.392C17.254,30.992,11.695,25.471,11.695,18.6z"/> + <path fill="#FFFF61" d="M11.717,18.6c0-6.822,5.513-12.371,12.372-12.371c6.823,0,12.372,5.512,12.372,12.371 + c0,6.822-5.514,12.371-12.372,12.371C17.266,30.971,11.717,25.459,11.717,18.6z"/> + <path fill="#FFFF62" d="M11.739,18.6c0-6.811,5.503-12.351,12.35-12.351c6.812,0,12.351,5.503,12.351,12.351 + c0,6.811-5.504,12.35-12.351,12.35C17.278,30.95,11.739,25.447,11.739,18.6z"/> + <path fill="#FFFF63" d="M11.76,18.6c0-6.8,5.494-12.33,12.33-12.33c6.799,0,12.33,5.494,12.33,12.33 + c0,6.798-5.494,12.33-12.33,12.33C17.29,30.93,11.76,25.436,11.76,18.6z"/> + <path fill="#FFFF64" d="M11.782,18.6c0-6.789,5.485-12.309,12.309-12.309c6.79,0,12.31,5.485,12.31,12.309 + c0,6.789-5.484,12.308-12.31,12.308C17.301,30.908,11.782,25.423,11.782,18.6z"/> + <path fill="#FFFF65" d="M11.803,18.6c0-6.778,5.476-12.288,12.288-12.288c6.778,0,12.288,5.476,12.288,12.288 + c0,6.778-5.477,12.289-12.288,12.289C17.313,30.889,11.803,25.411,11.803,18.6z"/> + <path fill="#FFFF66" d="M11.825,18.6c0-6.767,5.467-12.267,12.267-12.267c6.768,0,12.268,5.466,12.268,12.267 + c0,6.766-5.467,12.266-12.268,12.266C17.325,30.866,11.825,25.398,11.825,18.6z"/> + <path fill="#FFFF67" d="M11.847,18.6c0-6.756,5.457-12.246,12.246-12.246c6.757,0,12.247,5.458,12.247,12.246 + c0,6.755-5.459,12.246-12.247,12.246C17.337,30.846,11.847,25.389,11.847,18.6z"/> + <path fill="#FFFF68" d="M11.868,18.6c0-6.745,5.449-12.225,12.225-12.225c6.745,0,12.226,5.448,12.226,12.225 + c0,6.746-5.449,12.224-12.226,12.224C17.348,30.824,11.868,25.376,11.868,18.6z"/> + <path fill="#FFFF69" d="M11.89,18.6c0-6.733,5.439-12.204,12.204-12.204c6.732,0,12.205,5.439,12.205,12.204 + c0,6.733-5.439,12.205-12.205,12.205C17.36,30.805,11.89,25.364,11.89,18.6z"/> + <path fill="#FFFF6A" d="M11.911,18.6c0-6.723,5.43-12.183,12.183-12.183c6.723,0,12.184,5.43,12.184,12.183 + c0,6.722-5.43,12.183-12.184,12.183C17.372,30.783,11.911,25.354,11.911,18.6z"/> + <path fill="#FFFF6B" d="M11.933,18.6c0-6.711,5.421-12.162,12.162-12.162c6.712,0,12.163,5.421,12.163,12.162 + c0,6.71-5.422,12.162-12.163,12.162C17.384,30.762,11.933,25.341,11.933,18.6z"/> + <path fill="#FFFF6C" d="M11.954,18.6c0-6.7,5.412-12.141,12.142-12.141c6.701,0,12.141,5.412,12.141,12.141 + c0,6.7-5.412,12.141-12.141,12.141C17.396,30.741,11.954,25.329,11.954,18.6z"/> + <path fill="#FFFF6D" d="M11.976,18.6c0-6.689,5.402-12.121,12.12-12.121c6.688,0,12.121,5.403,12.121,12.121 + c0,6.689-5.402,12.121-12.121,12.121C17.407,30.721,11.976,25.316,11.976,18.6z"/> + <path fill="#FFFF6E" d="M11.998,18.6c0-6.678,5.393-12.099,12.099-12.099c6.679,0,12.099,5.393,12.099,12.099 + c0,6.677-5.393,12.099-12.099,12.099C17.419,30.699,11.998,25.307,11.998,18.6z"/> + <path fill="#FFFF6F" d="M12.019,18.6c0-6.667,5.384-12.079,12.079-12.079c6.667,0,12.078,5.384,12.078,12.079 + c0,6.667-5.383,12.078-12.078,12.078C17.431,30.678,12.019,25.294,12.019,18.6z"/> + <path fill="#FFFF70" d="M12.041,18.6c0-6.656,5.375-12.058,12.058-12.058c6.655,0,12.057,5.375,12.057,12.058 + c0,6.655-5.375,12.057-12.057,12.057C17.442,30.657,12.041,25.282,12.041,18.6z"/> + <path fill="#FFFF71" d="M12.062,18.6c0-6.645,5.366-12.037,12.037-12.037c6.645,0,12.036,5.366,12.036,12.037 + c0,6.644-5.365,12.037-12.036,12.037C17.454,30.637,12.062,25.271,12.062,18.6z"/> + <path fill="#FFFF72" d="M12.084,18.6c0-6.633,5.357-12.016,12.016-12.016c6.632,0,12.015,5.357,12.015,12.016 + c0,6.632-5.355,12.015-12.015,12.015C17.466,30.615,12.084,25.259,12.084,18.6z"/> + <path fill="#FFFF73" d="M12.105,18.6c0-6.622,5.348-11.995,11.995-11.995c6.623,0,11.996,5.348,11.996,11.995 + c0,6.623-5.35,11.996-11.996,11.996C17.478,30.596,12.105,25.247,12.105,18.6z"/> + <path fill="#FFFF74" d="M12.127,18.6c0-6.611,5.338-11.974,11.974-11.974c6.612,0,11.973,5.339,11.973,11.974 + c0,6.611-5.338,11.973-11.973,11.973C17.49,30.573,12.127,25.234,12.127,18.6z"/> + <path fill="#FFFF75" d="M12.149,18.6c0-6.6,5.329-11.953,11.953-11.953c6.599,0,11.953,5.33,11.953,11.953 + c0,6.6-5.328,11.953-11.953,11.953C17.502,30.553,12.149,25.225,12.149,18.6z"/> + <path fill="#FFFF76" d="M12.17,18.6c0-6.589,5.32-11.932,11.932-11.932c6.589,0,11.931,5.32,11.931,11.932 + c0,6.587-5.318,11.932-11.931,11.932C17.513,30.532,12.17,25.212,12.17,18.6z"/> + <path fill="#FFFF77" d="M12.192,18.6c0-6.578,5.311-11.911,11.911-11.911c6.579,0,11.913,5.311,11.913,11.911 + c0,6.578-5.312,11.911-11.913,11.911C17.525,30.511,12.192,25.2,12.192,18.6z"/> + <path fill="#FFFF78" d="M12.213,18.6c0-6.567,5.302-11.89,11.891-11.89c6.568,0,11.89,5.302,11.89,11.89 + c0,6.567-5.303,11.89-11.89,11.89C17.537,30.49,12.213,25.188,12.213,18.6z"/> + <path fill="#FFFF79" d="M12.235,18.6c0-6.556,5.292-11.87,11.869-11.87c6.556,0,11.869,5.293,11.869,11.87 + c0,6.554-5.293,11.869-11.869,11.869C17.548,30.469,12.235,25.176,12.235,18.6z"/> + <path fill="#FFFF7A" d="M12.256,18.6c0-6.544,5.284-11.849,11.848-11.849c6.544,0,11.847,5.284,11.847,11.849 + c0,6.544-5.281,11.848-11.847,11.848C17.56,30.448,12.256,25.164,12.256,18.6z"/> + <path fill="#FFFF7B" d="M12.278,18.6c0-6.533,5.274-11.828,11.828-11.828c6.533,0,11.828,5.274,11.828,11.828 + c0,6.533-5.275,11.828-11.828,11.828C17.572,30.428,12.278,25.152,12.278,18.6z"/> + <path fill="#FFFF7C" d="M12.299,18.6c0-6.522,5.266-11.807,11.807-11.807c6.523,0,11.808,5.265,11.808,11.807 + c0,6.522-5.268,11.806-11.808,11.806C17.584,30.406,12.299,25.141,12.299,18.6z"/> + <path fill="#FFFF7D" d="M12.321,18.6c0-6.511,5.256-11.786,11.786-11.786c6.51,0,11.786,5.256,11.786,11.786 + c0,6.511-5.256,11.786-11.786,11.786C17.595,30.386,12.321,25.129,12.321,18.6z"/> + <path fill="#FFFF7E" d="M12.342,18.6c0-6.5,5.247-11.765,11.765-11.765c6.5,0,11.764,5.247,11.764,11.765 + c0,6.5-5.246,11.764-11.764,11.764C17.608,30.364,12.342,25.117,12.342,18.6z"/> + <path fill="#FFFF7F" d="M12.364,18.6c0-6.489,5.238-11.744,11.744-11.744c6.49,0,11.744,5.238,11.744,11.744 + c0,6.489-5.238,11.744-11.744,11.744C17.619,30.344,12.364,25.105,12.364,18.6z"/> + <path fill="#FFFF80" d="M12.386,18.6c0-6.478,5.229-11.723,11.723-11.723c6.479,0,11.723,5.229,11.723,11.723 + c0,6.477-5.229,11.722-11.723,11.722C17.631,30.322,12.386,25.094,12.386,18.6z"/> + <path fill="#FFFF81" d="M12.407,18.6c0-6.467,5.22-11.702,11.702-11.702c6.465,0,11.702,5.22,11.702,11.702 + c0,6.466-5.219,11.702-11.702,11.702C17.643,30.302,12.407,25.082,12.407,18.6z"/> + <path fill="#FFFF82" d="M12.429,18.6c0-6.456,5.21-11.681,11.681-11.681c6.455,0,11.681,5.21,11.681,11.681 + c0,6.457-5.209,11.681-11.681,11.681C17.654,30.281,12.429,25.07,12.429,18.6z"/> + <path fill="#FFFF83" d="M12.45,18.6c0-6.444,5.202-11.66,11.661-11.66c6.444,0,11.661,5.201,11.661,11.66 + c0,6.444-5.203,11.66-11.661,11.66C17.666,30.26,12.45,25.059,12.45,18.6z"/> + <path fill="#FFFF84" d="M12.472,18.6c0-6.434,5.192-11.639,11.639-11.639c6.434,0,11.639,5.192,11.639,11.639 + c0,6.433-5.191,11.639-11.639,11.639C17.678,30.239,12.472,25.047,12.472,18.6z"/> + <path fill="#FFFF85" d="M12.493,18.6c0-6.422,5.183-11.619,11.619-11.619c6.421,0,11.619,5.183,11.619,11.619 + c0,6.421-5.184,11.618-11.619,11.618C17.69,30.218,12.493,25.035,12.493,18.6z"/> + <path fill="#FFFF86" d="M12.515,18.6c0-6.411,5.174-11.598,11.598-11.598c6.411,0,11.598,5.174,11.598,11.598 + c0,6.411-5.174,11.597-11.598,11.597C17.701,30.197,12.515,25.023,12.515,18.6z"/> + <path fill="#FFFF87" d="M12.537,18.6c0-6.4,5.165-11.577,11.577-11.577c6.4,0,11.578,5.165,11.578,11.577 + c0,6.4-5.166,11.577-11.578,11.577C17.713,30.177,12.537,25.012,12.537,18.6z"/> + <path fill="#FFFF88" d="M12.558,18.6c0-6.389,5.156-11.556,11.556-11.556c6.39,0,11.556,5.155,11.556,11.556 + c0,6.388-5.156,11.554-11.556,11.554C17.725,30.154,12.558,25,12.558,18.6z"/> + <path fill="#FFFF89" d="M12.58,18.6c0-6.378,5.146-11.535,11.535-11.535c6.377,0,11.534,5.146,11.534,11.535 + c0,6.376-5.145,11.535-11.534,11.535C17.737,30.135,12.58,24.988,12.58,18.6z"/> + <path fill="#FFFF8A" d="M12.601,18.6c0-6.367,5.138-11.514,11.514-11.514c6.368,0,11.514,5.137,11.514,11.514 + c0,6.367-5.139,11.513-11.514,11.513C17.749,30.113,12.601,24.977,12.601,18.6z"/> + <path fill="#FFFF8B" d="M12.623,18.6c0-6.356,5.128-11.493,11.493-11.493c6.355,0,11.494,5.128,11.494,11.493 + c0,6.355-5.129,11.493-11.494,11.493C17.76,30.093,12.623,24.965,12.623,18.6z"/> + <path fill="#FFFF8C" d="M12.645,18.6c0-6.345,5.119-11.472,11.472-11.472c6.344,0,11.473,5.119,11.473,11.472 + c0,6.343-5.119,11.47-11.473,11.47C17.772,30.07,12.645,24.953,12.645,18.6z"/> + <path fill="#FFFF8D" d="M12.666,18.6c0-6.333,5.11-11.451,11.451-11.451c6.333,0,11.452,5.11,11.452,11.451 + c0,6.333-5.109,11.451-11.452,11.451C17.784,30.051,12.666,24.941,12.666,18.6z"/> + <path fill="#FFFF8E" d="M12.688,18.6c0-6.322,5.101-11.43,11.43-11.43c6.322,0,11.431,5.101,11.431,11.43 + c0,6.322-5.102,11.429-11.431,11.429C17.796,30.029,12.688,24.93,12.688,18.6z"/> + <path fill="#FFFF8F" d="M12.709,18.6c0-6.312,5.092-11.409,11.41-11.409c6.311,0,11.409,5.091,11.409,11.409 + c0,6.311-5.092,11.409-11.409,11.409C17.807,30.009,12.709,24.917,12.709,18.6z"/> + <path fill="#FFFF90" d="M12.731,18.6c0-6.3,5.083-11.388,11.389-11.388c6.3,0,11.388,5.082,11.388,11.388 + c0,6.298-5.082,11.388-11.388,11.388C17.819,29.988,12.731,24.904,12.731,18.6z"/> + <path fill="#FFFF91" d="M12.753,18.6c0-6.289,5.073-11.368,11.367-11.368c6.288,0,11.366,5.073,11.366,11.368 + c0,6.289-5.072,11.367-11.366,11.367C17.831,29.967,12.753,24.895,12.753,18.6z"/> + <path fill="#FFFF92" d="M12.774,18.6c0-6.278,5.064-11.347,11.347-11.347c6.277,0,11.346,5.064,11.346,11.347 + c0,6.278-5.062,11.345-11.346,11.345C17.842,29.945,12.774,24.882,12.774,18.6z"/> + <path fill="#FFFF93" d="M12.796,18.6c0-6.267,5.055-11.326,11.326-11.326c6.267,0,11.325,5.055,11.325,11.326 + c0,6.266-5.055,11.326-11.325,11.326C17.854,29.926,12.796,24.87,12.796,18.6z"/> + <path fill="#FFFF94" d="M12.817,18.6c0-6.256,5.046-11.305,11.305-11.305c6.257,0,11.306,5.046,11.306,11.305 + c0,6.255-5.047,11.304-11.306,11.304C17.866,29.904,12.817,24.857,12.817,18.6z"/> + <path fill="#FFFF95" d="M12.838,18.6c0-6.245,5.037-11.284,11.284-11.284c6.243,0,11.282,5.037,11.282,11.284 + c0,6.246-5.035,11.284-11.282,11.284C17.878,29.884,12.838,24.848,12.838,18.6z"/> + <path fill="#FFFF96" d="M12.86,18.6c0-6.233,5.028-11.263,11.263-11.263c6.232,0,11.262,5.028,11.262,11.263 + c0,6.233-5.027,11.261-11.262,11.261C17.89,29.861,12.86,24.835,12.86,18.6z"/> + <path fill="#FFFF97" d="M12.882,18.6c0-6.223,5.018-11.242,11.242-11.242c6.222,0,11.241,5.019,11.241,11.242 + c0,6.222-5.018,11.242-11.241,11.242C17.901,29.842,12.882,24.823,12.882,18.6z"/> + <path fill="#FFFF98" d="M12.903,18.6c0-6.211,5.009-11.221,11.221-11.221S35.346,12.388,35.346,18.6 + c0,6.21-5.01,11.22-11.222,11.22C17.913,29.82,12.903,24.812,12.903,18.6z"/> + <path fill="#FFFF99" d="M12.925,18.6c0-6.2,5-11.2,11.2-11.2c6.199,0,11.199,5,11.199,11.2c0,6.2-5,11.2-11.199,11.2 + C17.925,29.8,12.925,24.8,12.925,18.6z"/> + </g> + + <linearGradient id="XMLID_67_" gradientUnits="userSpaceOnUse" x1="396.2324" y1="753.8262" x2="396.2324" y2="763.584" gradientTransform="matrix(1 0 0 1 -372 -747)"> + <stop offset="0" style="stop-color:#FFFFFF"/> + <stop offset="1" style="stop-color:#FFFF99"/> + </linearGradient> + <path fill="url(#XMLID_67_)" d="M15.358,11.705c0-2.701,3.961-4.879,8.875-4.879c4.912,0,8.875,2.178,8.875,4.879 + s-3.963,4.879-8.875,4.879C19.32,16.583,15.358,14.405,15.358,11.705z"/> + <path fill="#666666" d="M23.125,41.3v0.9c0,0.899,0.7,1.6,1.6,1.6c0.9,0,1.6-0.7,1.6-1.6v-0.9h-3.299H23.125z"/> + + <linearGradient id="XMLID_68_" gradientUnits="userSpaceOnUse" x1="396.625" y1="784.8896" x2="396.625" y2="788.9111" gradientTransform="matrix(1 0 0 1 -372 -747)"> + <stop offset="0" style="stop-color:#FFFFFF"/> + <stop offset="1" style="stop-color:#000000"/> + </linearGradient> + <path fill="url(#XMLID_68_)" d="M28.225,37.9l-7.6,0.8c-0.9,0.1-1.5,0.899-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.801 + c0.9-0.102,1.5-0.899,1.4-1.802C29.926,38.4,29.125,37.8,28.225,37.9z"/> + + <linearGradient id="XMLID_69_" gradientUnits="userSpaceOnUse" x1="396.625" y1="781.6895" x2="396.625" y2="785.7109" gradientTransform="matrix(1 0 0 1 -372 -747)"> + <stop offset="0" style="stop-color:#FFFFFF"/> + <stop offset="1" style="stop-color:#000000"/> + </linearGradient> + <path fill="url(#XMLID_69_)" d="M28.225,34.7l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8 + c0.9-0.101,1.5-0.9,1.4-1.801C29.926,35.2,29.125,34.6,28.225,34.7z"/> + + <linearGradient id="XMLID_70_" gradientUnits="userSpaceOnUse" x1="396.625" y1="778.5889" x2="396.625" y2="782.6104" gradientTransform="matrix(1 0 0 1 -372 -747)"> + <stop offset="0" style="stop-color:#FFFFFF"/> + <stop offset="1" style="stop-color:#000000"/> + </linearGradient> + <path fill="url(#XMLID_70_)" d="M28.225,31.6l-7.6,0.801c-0.9,0.1-1.5,0.897-1.4,1.8c0.1,0.899,0.9,1.5,1.8,1.399l7.6-0.802 + c0.9-0.1,1.5-0.897,1.4-1.8S29.125,31.5,28.225,31.6z"/> + <path fill="none" stroke="#000000" stroke-width="1.0944" d="M22.325,28.3l-3.5-10.7c0,0,6.601,3.9,10.5,0"/> +</g> +<g id="crop_x0020_marks"> + <path fill="none" d="M47.975,48h-48V0h48V48z"/> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/up.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/up.svg new file mode 100644 index 000000000..80a88cf05 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/up.svg @@ -0,0 +1,338 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.1" id="Up" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48" + overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve"> +<g> + <path fill="#FFFFFF" stroke="#FFFFFF" stroke-width="7.5901" stroke-linejoin="round" d="M41.104,25.661 + c0.301,0,0.301-0.3,0.198-0.5l-16.899-16.6c-0.5-0.5-0.7-0.4-1,0l-16.7,16.6c-0.1,0.103-0.1,0.399,0.1,0.399h10v13.601 + c0,0.301,0.2,0.5,0.4,0.5h13.299c0.398,0,0.5-0.199,0.5-0.601v-13.5L41.104,25.661z"/> + <g> + <path fill="#0033CC" d="M41.104,25.661c0.301,0,0.301-0.3,0.198-0.5l-16.899-16.6c-0.5-0.5-0.7-0.4-1,0l-16.7,16.6 + c-0.1,0.103-0.1,0.399,0.1,0.399h10v13.601c0,0.301,0.2,0.5,0.4,0.5h13.299c0.398,0,0.5-0.199,0.5-0.601v-13.5L41.104,25.661z"/> + <path fill="#0134CC" d="M41.075,25.65c0.3,0,0.3-0.299,0.198-0.498L24.402,8.577c-0.499-0.499-0.699-0.4-0.998,0L6.73,25.152 + c-0.1,0.101-0.1,0.397,0.099,0.397h9.984v13.581c0,0.303,0.2,0.499,0.4,0.499h13.279c0.398,0,0.499-0.196,0.499-0.601V25.55 + L41.075,25.65z"/> + <path fill="#0235CD" d="M41.049,25.643c0.301,0,0.301-0.3,0.199-0.498L24.401,8.591c-0.498-0.498-0.697-0.399-0.996,0 + L6.757,25.145c-0.1,0.101-0.1,0.397,0.099,0.397h9.969v13.562c0,0.301,0.199,0.5,0.399,0.5H30.48c0.397,0,0.498-0.199,0.498-0.601 + V25.542L41.049,25.643z"/> + <path fill="#0336CD" d="M41.021,25.632c0.299,0,0.299-0.299,0.199-0.498L24.4,8.604c-0.498-0.498-0.696-0.399-0.995,0 + L6.783,25.134c-0.099,0.101-0.099,0.398,0.099,0.398h9.953v13.543c0,0.299,0.199,0.495,0.398,0.495h13.24 + c0.396,0,0.495-0.196,0.495-0.596v-13.44L41.021,25.632z"/> + <path fill="#0437CE" d="M40.995,25.622c0.299,0,0.299-0.299,0.198-0.496L24.4,8.62c-0.497-0.497-0.696-0.398-0.994,0L6.811,25.126 + c-0.099,0.101-0.099,0.396,0.099,0.396h9.938v13.523c0,0.299,0.199,0.496,0.397,0.496h13.217c0.396,0,0.496-0.197,0.496-0.598 + v-13.42L40.995,25.622z"/> + <path fill="#0538CE" d="M40.969,25.614c0.299,0,0.299-0.3,0.198-0.498L24.399,8.634c-0.496-0.496-0.694-0.397-0.992,0 + L6.837,25.116c-0.099,0.102-0.099,0.397,0.099,0.397h9.922v13.504c0,0.299,0.199,0.496,0.398,0.496h13.195 + c0.396,0,0.494-0.197,0.494-0.597V25.514L40.969,25.614z"/> + <path fill="#0639CF" d="M40.941,25.604c0.297,0,0.297-0.297,0.197-0.496L24.399,8.649c-0.496-0.496-0.693-0.397-0.99,0 + L6.864,25.107c-0.099,0.101-0.099,0.396,0.099,0.396h9.906v13.483c0,0.3,0.199,0.496,0.397,0.496h13.173 + c0.396,0,0.496-0.196,0.496-0.596V25.505L40.941,25.604z"/> + <path fill="#073ACF" d="M40.915,25.594c0.298,0,0.298-0.298,0.196-0.494L24.398,8.664c-0.495-0.495-0.692-0.397-0.989,0 + L6.891,25.1c-0.099,0.101-0.099,0.396,0.098,0.396h9.892V38.96c0,0.298,0.198,0.494,0.396,0.494h13.155 + c0.396,0,0.494-0.196,0.494-0.593V25.495L40.915,25.594z"/> + <path fill="#083BD0" d="M40.891,25.585c0.297,0,0.297-0.297,0.196-0.496l-16.69-16.41c-0.494-0.494-0.691-0.396-0.987,0 + L6.918,25.089c-0.099,0.101-0.099,0.396,0.098,0.396h9.875V38.93c0,0.299,0.198,0.495,0.396,0.495h13.134 + c0.396,0,0.494-0.196,0.494-0.595V25.486L40.891,25.585z"/> + <path fill="#093CD0" d="M40.859,25.575c0.3,0,0.3-0.296,0.199-0.494L24.397,8.692c-0.493-0.494-0.69-0.396-0.985,0L6.945,25.081 + c-0.098,0.101-0.098,0.396,0.098,0.396h9.86v13.428c0,0.298,0.197,0.494,0.395,0.494h13.113c0.396,0,0.491-0.196,0.491-0.594 + V25.477L40.859,25.575z"/> + <path fill="#0A3DD1" d="M40.835,25.564c0.296,0,0.296-0.295,0.197-0.491L24.396,8.707c-0.492-0.493-0.689-0.395-0.984,0 + L6.972,25.073c-0.098,0.098-0.098,0.395,0.098,0.395h9.844v13.408c0,0.295,0.197,0.492,0.394,0.492h13.09 + c0.396,0,0.492-0.197,0.492-0.593V25.465L40.835,25.564z"/> + <path fill="#0B3ED1" d="M40.811,25.557c0.295,0,0.295-0.296,0.195-0.492L24.396,8.723c-0.492-0.493-0.688-0.394-0.983,0 + L6.999,25.062c-0.098,0.101-0.098,0.396,0.098,0.396h9.829v13.388c0,0.297,0.197,0.491,0.394,0.491h13.073 + c0.395,0,0.489-0.194,0.489-0.59V25.458L40.811,25.557z"/> + <path fill="#0C3FD2" d="M40.782,25.546c0.295,0,0.295-0.295,0.194-0.491L24.395,8.736c-0.491-0.492-0.687-0.394-0.981,0 + L7.026,25.055c-0.098,0.1-0.098,0.396,0.098,0.396h9.813v13.368c0,0.296,0.197,0.49,0.393,0.49h13.051 + c0.395,0,0.49-0.194,0.49-0.588V25.448L40.782,25.546z"/> + <path fill="#0D40D2" d="M40.755,25.536c0.295,0,0.295-0.293,0.196-0.49L24.394,8.75c-0.489-0.491-0.685-0.393-0.979,0 + L7.053,25.046c-0.098,0.099-0.098,0.394,0.098,0.394h9.797V38.79c0,0.297,0.196,0.492,0.392,0.492h13.03 + c0.394,0,0.489-0.195,0.489-0.591V25.438L40.755,25.536z"/> + <path fill="#0E41D3" d="M40.729,25.527c0.293,0,0.293-0.295,0.195-0.489L24.394,8.766c-0.489-0.489-0.685-0.392-0.978,0 + L7.08,25.038c-0.097,0.099-0.097,0.394,0.098,0.394h9.782V38.76c0,0.295,0.196,0.489,0.392,0.489h13.007 + c0.394,0,0.488-0.194,0.488-0.588V25.43L40.729,25.527z"/> + <path fill="#0F42D3" d="M40.702,25.518c0.294,0,0.294-0.293,0.194-0.488L24.393,8.781c-0.488-0.489-0.683-0.392-0.976,0 + L7.107,25.027c-0.097,0.101-0.097,0.394,0.098,0.394h9.766v13.312c0,0.295,0.195,0.49,0.391,0.49h12.99 + c0.393,0,0.487-0.195,0.487-0.588V25.419L40.702,25.518z"/> + <path fill="#1043D4" d="M40.676,25.508c0.293,0,0.293-0.294,0.195-0.488L24.392,8.794c-0.487-0.488-0.682-0.392-0.975,0 + L7.134,25.02c-0.097,0.101-0.097,0.394,0.097,0.394h9.75v13.293c0,0.293,0.196,0.485,0.391,0.485H30.34 + c0.393,0,0.487-0.192,0.487-0.586V25.411L40.676,25.508z"/> + <path fill="#1144D4" d="M40.646,25.497c0.293,0,0.293-0.293,0.194-0.487l-16.45-16.2c-0.487-0.488-0.681-0.391-0.973,0L7.16,25.01 + C7.063,25.107,7.063,25.4,7.257,25.4h9.735v13.271c0,0.294,0.195,0.487,0.39,0.487H30.33c0.389,0,0.484-0.193,0.484-0.586V25.4 + L40.646,25.497z"/> + <path fill="#1245D5" d="M40.622,25.489c0.293,0,0.293-0.294,0.194-0.488L24.391,8.824c-0.486-0.487-0.68-0.39-0.972,0 + L7.188,25.001c-0.097,0.099-0.097,0.392,0.096,0.392h9.72v13.254c0,0.293,0.195,0.486,0.389,0.486h12.925 + c0.391,0,0.486-0.193,0.486-0.585V25.393L40.622,25.489z"/> + <path fill="#1346D5" d="M40.598,25.479c0.291,0,0.291-0.291,0.192-0.484L24.391,8.838c-0.485-0.486-0.679-0.39-0.97,0 + L7.215,24.993c-0.097,0.099-0.097,0.39,0.096,0.39h9.704v13.235c0,0.291,0.195,0.485,0.389,0.485h12.907 + c0.391,0,0.484-0.194,0.484-0.584V25.382L40.598,25.479z"/> + <path fill="#1447D6" d="M40.568,25.471c0.291,0,0.291-0.293,0.193-0.486L24.39,8.853c-0.484-0.485-0.678-0.389-0.968,0 + L7.242,24.982c-0.097,0.1-0.097,0.391,0.096,0.391h9.688v13.215c0,0.293,0.194,0.486,0.388,0.486H30.3 + c0.39,0,0.484-0.193,0.484-0.582v-13.12L40.568,25.471z"/> + <path fill="#1548D6" d="M40.542,25.46c0.291,0,0.291-0.291,0.192-0.485L24.389,8.868c-0.483-0.485-0.677-0.388-0.966,0 + L7.269,24.975c-0.097,0.101-0.097,0.392,0.096,0.392h9.673v13.194c0,0.291,0.193,0.483,0.387,0.483h12.864 + c0.387,0,0.482-0.192,0.482-0.582V25.361L40.542,25.46z"/> + <path fill="#1649D7" d="M40.518,25.45c0.291,0,0.291-0.291,0.191-0.483L24.389,8.881c-0.483-0.484-0.676-0.388-0.966,0 + L7.295,24.966c-0.096,0.099-0.096,0.388,0.096,0.388h9.657v13.181c0,0.291,0.193,0.481,0.387,0.481h12.842 + c0.388,0,0.48-0.19,0.48-0.582v-13.08L40.518,25.45z"/> + <path fill="#174AD7" d="M40.488,25.441c0.289,0,0.289-0.291,0.193-0.483L24.388,8.896c-0.482-0.483-0.675-0.388-0.964,0 + L7.323,24.956c-0.096,0.099-0.096,0.39,0.096,0.39h9.642v13.155c0,0.291,0.193,0.483,0.386,0.483h12.825 + c0.386,0,0.479-0.192,0.479-0.58V25.346L40.488,25.441z"/> + <path fill="#184BD8" d="M40.463,25.432c0.289,0,0.289-0.289,0.191-0.481L24.387,8.912c-0.481-0.482-0.673-0.387-0.962,0 + L7.349,24.948c-0.096,0.098-0.096,0.387,0.096,0.387h9.626v13.14c0,0.291,0.193,0.483,0.386,0.483h12.802 + c0.388,0,0.479-0.192,0.479-0.58V25.335L40.463,25.432z"/> + <path fill="#194CD8" d="M40.438,25.421c0.289,0,0.289-0.289,0.19-0.481L24.386,8.926c-0.48-0.481-0.672-0.386-0.96,0L7.376,24.938 + c-0.096,0.1-0.096,0.389,0.096,0.389h9.61v13.117c0,0.291,0.192,0.482,0.385,0.482h12.782c0.385,0,0.479-0.191,0.479-0.578V25.325 + L40.438,25.421z"/> + <path fill="#1A4DD9" d="M40.409,25.413c0.289,0,0.289-0.289,0.19-0.481L24.386,8.939c-0.48-0.481-0.671-0.385-0.959,0 + L7.403,24.932c-0.096,0.096-0.096,0.385,0.096,0.385h9.595v13.103c0,0.289,0.192,0.479,0.384,0.479h12.76 + c0.385,0,0.479-0.19,0.479-0.578V25.316L40.409,25.413z"/> + <path fill="#1B4ED9" d="M40.383,25.402c0.288,0,0.288-0.288,0.191-0.479L24.386,8.956c-0.479-0.481-0.67-0.385-0.958,0 + L7.43,24.921c-0.095,0.099-0.095,0.386,0.096,0.386h9.579v13.082c0,0.288,0.192,0.479,0.384,0.479H30.23 + c0.383,0,0.479-0.191,0.479-0.576V25.307L40.383,25.402z"/> + <path fill="#1C4FDA" d="M40.355,25.395c0.287,0,0.287-0.289,0.188-0.479L24.385,8.97c-0.479-0.48-0.669-0.384-0.956,0 + L7.457,24.913c-0.096,0.097-0.096,0.385,0.095,0.385h9.563v13.062c0,0.289,0.192,0.479,0.383,0.479h12.72 + c0.384,0,0.479-0.19,0.479-0.575V25.296L40.355,25.395z"/> + <path fill="#1D50DA" d="M40.329,25.383c0.287,0,0.287-0.287,0.19-0.479L24.384,8.983c-0.478-0.479-0.668-0.384-0.955,0 + L7.484,24.902c-0.095,0.099-0.095,0.386,0.095,0.386h9.548v13.043c0,0.287,0.191,0.479,0.382,0.479h12.699 + c0.383,0,0.478-0.191,0.478-0.576V25.288L40.329,25.383z"/> + <path fill="#1E51DB" d="M40.303,25.374c0.286,0,0.286-0.287,0.19-0.479L24.384,8.999c-0.477-0.479-0.667-0.383-0.953,0 + L7.511,24.895c-0.095,0.099-0.095,0.385,0.094,0.385h9.533v13.022c0,0.287,0.191,0.479,0.382,0.479h12.678 + c0.382,0,0.477-0.189,0.477-0.574v-12.93L40.303,25.374z"/> + <path fill="#1F52DB" d="M40.275,25.364c0.285,0,0.285-0.287,0.188-0.479L24.383,9.014c-0.476-0.478-0.666-0.383-0.951,0 + L7.539,24.886c-0.095,0.097-0.095,0.384,0.094,0.384h9.517v13.004c0,0.287,0.191,0.479,0.381,0.479h12.658 + c0.381,0,0.476-0.19,0.476-0.573V25.27L40.275,25.364z"/> + <path fill="#2053DC" d="M40.25,25.354c0.285,0,0.285-0.285,0.188-0.479L24.382,9.027c-0.475-0.477-0.665-0.382-0.95,0 + L7.565,24.876c-0.095,0.097-0.095,0.383,0.094,0.383h9.501v12.984c0,0.286,0.19,0.479,0.381,0.479h12.637 + c0.381,0,0.477-0.189,0.477-0.572V25.259L40.25,25.354z"/> + <path fill="#2154DC" d="M40.225,25.346c0.283,0,0.283-0.287,0.188-0.478L24.381,9.042c-0.474-0.476-0.664-0.381-0.948,0 + L7.591,24.868c-0.094,0.096-0.094,0.383,0.095,0.383h9.486v12.965c0,0.287,0.19,0.478,0.38,0.478h12.616 + c0.38,0,0.475-0.188,0.475-0.569V25.249L40.225,25.346z"/> + <path fill="#2255DD" d="M40.195,25.335c0.285,0,0.285-0.285,0.188-0.478L24.38,9.057c-0.474-0.475-0.663-0.381-0.947,0 + L7.619,24.859c-0.094,0.097-0.094,0.382,0.094,0.382h9.471v12.946c0,0.285,0.189,0.476,0.379,0.476h12.596 + c0.378,0,0.473-0.188,0.473-0.57V25.241L40.195,25.335z"/> + <path fill="#2356DD" d="M40.17,25.327c0.284,0,0.284-0.285,0.188-0.478L24.381,9.072c-0.473-0.475-0.662-0.38-0.945,0 + l-15.79,15.78c-0.094,0.097-0.094,0.381,0.094,0.381h9.455V38.16c0,0.285,0.189,0.476,0.379,0.476h12.574 + c0.377,0,0.473-0.188,0.473-0.569V25.23L40.17,25.327z"/> + <path fill="#2457DE" d="M40.145,25.316c0.282,0,0.282-0.284,0.188-0.478L24.38,9.085c-0.472-0.474-0.661-0.38-0.944,0 + L7.673,24.841c-0.095,0.097-0.095,0.382,0.094,0.382h9.439V38.13c0,0.285,0.189,0.476,0.378,0.476h12.555 + c0.379,0,0.473-0.188,0.473-0.569V25.223L40.145,25.316z"/> + <path fill="#2558DE" d="M40.116,25.307c0.282,0,0.282-0.285,0.188-0.476L24.379,9.101c-0.472-0.474-0.66-0.379-0.942,0 + L7.699,24.831c-0.094,0.097-0.094,0.381,0.094,0.381h9.424v12.89c0,0.284,0.189,0.476,0.377,0.476h12.533 + c0.378,0,0.473-0.188,0.473-0.568V25.212L40.116,25.307z"/> + <path fill="#2659DF" d="M40.09,25.298c0.283,0,0.283-0.284,0.188-0.475L24.379,9.116c-0.471-0.473-0.659-0.379-0.94,0 + L7.727,24.823c-0.094,0.096-0.094,0.381,0.094,0.381h9.408v12.869c0,0.282,0.189,0.473,0.377,0.473h12.512 + c0.376,0,0.47-0.188,0.47-0.567V25.204L40.09,25.298z"/> + <path fill="#275ADF" d="M40.062,25.288c0.28,0,0.28-0.283,0.188-0.474L24.378,9.13c-0.47-0.472-0.657-0.378-0.938,0L7.754,24.814 + c-0.094,0.097-0.094,0.379,0.093,0.379h9.393v12.851c0,0.285,0.188,0.474,0.376,0.474h12.489c0.377,0,0.472-0.188,0.472-0.565 + V25.193L40.062,25.288z"/> + <path fill="#285BE0" d="M40.037,25.277c0.279,0,0.279-0.282,0.188-0.471L24.377,9.145c-0.469-0.471-0.656-0.378-0.937,0 + L7.781,24.807c-0.094,0.096-0.094,0.377,0.093,0.377h9.377v12.832c0,0.283,0.188,0.474,0.376,0.474H30.1 + c0.375,0,0.467-0.188,0.467-0.566V25.184L40.037,25.277z"/> + <path fill="#295CE0" d="M40.01,25.27c0.281,0,0.281-0.283,0.188-0.474L24.376,9.159c-0.468-0.47-0.655-0.377-0.936,0L7.807,24.796 + c-0.093,0.097-0.093,0.378,0.093,0.378h9.361v12.812c0,0.281,0.188,0.471,0.375,0.471h12.45c0.374,0,0.467-0.188,0.467-0.562 + V25.174L40.01,25.27z"/> + <path fill="#2A5DE1" d="M39.982,25.259c0.281,0,0.281-0.282,0.188-0.471L24.376,9.174c-0.467-0.469-0.654-0.376-0.934,0 + L7.834,24.788c-0.093,0.096-0.093,0.377,0.093,0.377h9.346v12.793c0,0.283,0.188,0.472,0.375,0.472h12.43 + c0.373,0,0.467-0.188,0.467-0.563v-12.7L39.982,25.259z"/> + <path fill="#2B5EE1" d="M39.957,25.249c0.279,0,0.279-0.281,0.188-0.472L24.376,9.188c-0.466-0.469-0.652-0.376-0.933,0 + L7.861,24.779c-0.093,0.095-0.093,0.375,0.093,0.375h9.33V37.93c0,0.282,0.188,0.471,0.374,0.471h12.408 + c0.373,0,0.467-0.188,0.467-0.563v-12.68L39.957,25.249z"/> + <path fill="#2C5FE2" d="M39.932,25.239c0.278,0,0.278-0.281,0.188-0.47L24.375,9.203c-0.465-0.468-0.652-0.375-0.931,0 + L7.888,24.771c-0.093,0.096-0.093,0.375,0.092,0.375h9.314V37.9c0,0.281,0.187,0.47,0.374,0.47h12.389 + c0.373,0,0.465-0.188,0.465-0.562V25.146L39.932,25.239z"/> + <path fill="#2D60E2" d="M39.902,25.229c0.279,0,0.279-0.277,0.187-0.468L24.374,9.217c-0.465-0.467-0.651-0.375-0.929,0 + L7.915,24.762c-0.093,0.094-0.093,0.374,0.092,0.374h9.299V37.87c0,0.28,0.187,0.469,0.373,0.469h12.368 + c0.371,0,0.465-0.188,0.465-0.562V25.136L39.902,25.229z"/> + <path fill="#2E61E3" d="M39.877,25.221c0.277,0,0.277-0.279,0.188-0.468L24.374,9.231c-0.464-0.466-0.649-0.374-0.928,0 + L7.942,24.753c-0.092,0.095-0.092,0.373,0.092,0.373h9.284v12.717c0,0.281,0.186,0.47,0.372,0.47h12.347 + c0.372,0,0.464-0.188,0.464-0.562V25.126L39.877,25.221z"/> + <path fill="#2F62E3" d="M39.852,25.212c0.277,0,0.277-0.28,0.188-0.469L24.373,9.248c-0.463-0.466-0.648-0.374-0.926,0 + L7.969,24.745c-0.092,0.094-0.092,0.373,0.092,0.373h9.268v12.696c0,0.278,0.186,0.468,0.371,0.468h12.325 + c0.371,0,0.463-0.188,0.463-0.562V25.118L39.852,25.212z"/> + <path fill="#3063E4" d="M39.823,25.202c0.276,0,0.276-0.279,0.186-0.468L24.372,9.262c-0.462-0.465-0.647-0.373-0.925,0 + L7.996,24.734c-0.092,0.095-0.092,0.373,0.092,0.373h9.252v12.679c0,0.278,0.186,0.467,0.371,0.467h12.307 + c0.369,0,0.461-0.188,0.461-0.562V25.107L39.823,25.202z"/> + <path fill="#3164E4" d="M39.797,25.191c0.277,0,0.277-0.278,0.186-0.467L24.373,9.274c-0.462-0.465-0.646-0.373-0.923,0 + L8.023,24.727C7.931,24.82,7.931,25.1,8.115,25.1h9.236v12.657c0,0.279,0.186,0.466,0.371,0.466h12.284 + c0.369,0,0.461-0.187,0.461-0.56V25.1L39.797,25.191z"/> + <path fill="#3265E5" d="M39.771,25.184c0.275,0,0.275-0.279,0.186-0.467L24.371,9.29c-0.461-0.464-0.645-0.372-0.922,0 + L8.05,24.717c-0.092,0.094-0.092,0.372,0.091,0.372h9.221v12.64c0,0.279,0.185,0.465,0.37,0.465h12.264 + c0.367,0,0.46-0.186,0.46-0.558V25.089L39.771,25.184z"/> + <path fill="#3366E5" d="M39.744,25.173c0.275,0,0.275-0.278,0.186-0.465L24.371,9.306c-0.46-0.463-0.644-0.372-0.92,0 + L8.077,24.708c-0.092,0.094-0.092,0.371,0.091,0.371h9.206V37.7c0,0.276,0.185,0.463,0.369,0.463h12.241 + c0.369,0,0.461-0.187,0.461-0.558V25.081L39.744,25.173z"/> + <path fill="#3366E6" d="M39.717,25.163c0.276,0,0.276-0.277,0.186-0.463L24.37,9.319c-0.459-0.462-0.643-0.371-0.918,0L8.104,24.7 + c-0.092,0.094-0.092,0.37,0.091,0.37h9.189v12.601c0,0.279,0.185,0.465,0.369,0.465h12.224c0.366,0,0.459-0.186,0.459-0.557V25.07 + L39.717,25.163z"/> + <path fill="#3467E6" d="M39.689,25.152c0.273,0,0.273-0.276,0.185-0.463L24.369,9.333c-0.458-0.462-0.642-0.371-0.917,0 + L8.131,24.689c-0.092,0.095-0.092,0.371,0.091,0.371h9.174v12.582c0,0.274,0.184,0.463,0.368,0.463h12.202 + c0.366,0,0.458-0.188,0.458-0.558V25.061L39.689,25.152z"/> + <path fill="#3568E7" d="M39.664,25.145c0.273,0,0.273-0.276,0.186-0.463L24.369,9.349c-0.458-0.461-0.641-0.37-0.916,0 + L8.158,24.682c-0.091,0.094-0.091,0.37,0.091,0.37h9.159v12.562c0,0.276,0.184,0.461,0.367,0.461h12.181 + c0.367,0,0.458-0.185,0.458-0.556V25.05L39.664,25.145z"/> + <path fill="#3669E7" d="M39.639,25.135c0.273,0,0.273-0.277,0.185-0.462L24.368,9.364c-0.458-0.46-0.64-0.37-0.914,0l-15.27,15.31 + c-0.091,0.094-0.091,0.368,0.091,0.368h9.144v12.543c0,0.276,0.183,0.463,0.366,0.463h12.158c0.365,0,0.457-0.187,0.457-0.555 + V25.042L39.639,25.135z"/> + <path fill="#376AE8" d="M39.609,25.124c0.272,0,0.272-0.274,0.184-0.461L24.367,9.377c-0.457-0.459-0.639-0.369-0.912,0 + L8.211,24.663c-0.091,0.094-0.091,0.369,0.091,0.369h9.127v12.522c0,0.274,0.184,0.461,0.366,0.461h12.141 + c0.363,0,0.455-0.187,0.455-0.554v-12.43L39.609,25.124z"/> + <path fill="#386BE8" d="M39.584,25.116c0.271,0,0.271-0.277,0.184-0.462L24.368,9.393c-0.456-0.459-0.638-0.368-0.911,0 + L8.239,24.654c-0.091,0.093-0.091,0.369,0.09,0.369h9.112v12.504c0,0.274,0.183,0.462,0.365,0.462h12.12 + c0.363,0,0.454-0.188,0.454-0.554V25.023L39.584,25.116z"/> + <path fill="#396CE9" d="M39.559,25.105c0.272,0,0.272-0.274,0.183-0.459L24.366,9.407c-0.455-0.458-0.636-0.367-0.909,0 + L8.266,24.646c-0.091,0.093-0.091,0.367,0.09,0.367h9.096v12.483c0,0.272,0.183,0.459,0.365,0.459h12.098 + c0.362,0,0.454-0.187,0.454-0.552V25.014L39.559,25.105z"/> + <path fill="#3A6DE9" d="M39.529,25.096c0.271,0,0.271-0.275,0.184-0.457L24.365,9.421c-0.454-0.458-0.635-0.367-0.907,0 + L8.293,24.639c-0.091,0.092-0.091,0.364,0.09,0.364h9.081v12.468c0,0.274,0.182,0.459,0.364,0.459h12.076 + c0.363,0,0.453-0.185,0.453-0.552V25.003L39.529,25.096z"/> + <path fill="#3B6EEA" d="M39.504,25.087c0.271,0,0.271-0.274,0.184-0.459L24.365,9.436c-0.454-0.457-0.634-0.366-0.906,0 + L8.319,24.628c-0.09,0.093-0.09,0.367,0.09,0.367h9.065v12.446c0,0.272,0.182,0.457,0.363,0.457h12.06 + c0.359,0,0.451-0.185,0.451-0.549V24.995L39.504,25.087z"/> + <path fill="#3C6FEA" d="M39.479,25.077c0.271,0,0.271-0.272,0.183-0.457L24.364,9.451c-0.453-0.456-0.633-0.366-0.905,0 + L8.346,24.62c-0.09,0.092-0.09,0.364,0.09,0.364h9.05v12.429c0,0.274,0.182,0.457,0.363,0.457h12.036 + c0.361,0,0.451-0.183,0.451-0.55V24.984L39.479,25.077z"/> + <path fill="#3D70EB" d="M39.451,25.066c0.271,0,0.271-0.272,0.181-0.457L24.363,9.464c-0.452-0.455-0.632-0.365-0.903,0 + L8.374,24.609c-0.09,0.093-0.09,0.367,0.089,0.367h9.034v12.406c0,0.271,0.181,0.456,0.362,0.456h12.016 + c0.359,0,0.45-0.185,0.45-0.549V24.977L39.451,25.066z"/> + <path fill="#3E71EB" d="M39.424,25.059c0.271,0,0.271-0.272,0.182-0.457L24.363,9.479c-0.451-0.455-0.631-0.365-0.901,0 + L8.4,24.602c-0.09,0.092-0.09,0.365,0.09,0.365h9.019v12.389c0,0.272,0.181,0.457,0.362,0.457h11.992 + c0.361,0,0.451-0.185,0.451-0.547V24.967L39.424,25.059z"/> + <path fill="#3F72EC" d="M39.396,25.048c0.271,0,0.271-0.272,0.182-0.455L24.362,9.495c-0.45-0.454-0.63-0.364-0.9,0L8.427,24.593 + c-0.09,0.093-0.09,0.363,0.089,0.363h9.003v12.371c0,0.272,0.181,0.455,0.361,0.455h11.976c0.357,0,0.447-0.183,0.447-0.548 + V24.956L39.396,25.048z"/> + <path fill="#4073EC" d="M39.371,25.038c0.271,0,0.271-0.272,0.18-0.455L24.362,9.509c-0.45-0.453-0.629-0.363-0.898,0 + L8.454,24.583c-0.09,0.093-0.09,0.362,0.089,0.362h8.987v12.354c0,0.271,0.181,0.454,0.36,0.454h11.954 + c0.358,0,0.448-0.183,0.448-0.545v-12.26L39.371,25.038z"/> + <path fill="#4174ED" d="M39.346,25.029c0.271,0,0.271-0.271,0.18-0.454L24.361,9.523c-0.449-0.453-0.627-0.363-0.897,0 + L8.481,24.575c-0.089,0.092-0.089,0.362,0.089,0.362h8.972V37.27c0,0.272,0.18,0.455,0.359,0.455h11.933 + c0.357,0,0.445-0.183,0.445-0.545V24.938L39.346,25.029z"/> + <path fill="#4275ED" d="M39.316,25.02c0.271,0,0.271-0.271,0.181-0.453L24.36,9.539c-0.448-0.452-0.626-0.362-0.895,0 + L8.508,24.566c-0.09,0.091-0.09,0.36,0.088,0.36h8.957V37.24c0,0.271,0.18,0.451,0.359,0.451h11.912 + c0.355,0,0.445-0.183,0.445-0.543V24.93L39.316,25.02z"/> + <path fill="#4376EE" d="M39.291,25.01c0.27,0,0.27-0.271,0.18-0.453L24.36,9.553c-0.447-0.451-0.625-0.361-0.894,0L8.535,24.559 + c-0.089,0.09-0.089,0.362,0.089,0.362h8.941v12.293c0,0.271,0.179,0.451,0.358,0.451h11.892c0.356,0,0.445-0.181,0.445-0.543 + V24.919L39.291,25.01z"/> + <path fill="#4477EE" d="M39.266,24.999c0.27,0,0.27-0.271,0.18-0.451L24.359,9.566c-0.446-0.45-0.625-0.361-0.893,0L8.562,24.549 + c-0.089,0.09-0.089,0.362,0.088,0.362h8.925v12.272c0,0.271,0.179,0.45,0.358,0.45h11.87c0.356,0,0.445-0.182,0.445-0.542V24.911 + L39.266,24.999z"/> + <path fill="#4578EF" d="M39.236,24.991c0.27,0,0.27-0.271,0.18-0.451L24.359,9.582c-0.446-0.45-0.624-0.36-0.891,0L8.589,24.54 + C8.5,24.63,8.5,24.9,8.677,24.9h8.91v12.254c0,0.271,0.179,0.451,0.357,0.451h11.85c0.354,0,0.442-0.182,0.442-0.541V24.9 + L39.236,24.991z"/> + <path fill="#4679EF" d="M39.211,24.98c0.27,0,0.27-0.271,0.18-0.449L24.358,9.597c-0.445-0.449-0.622-0.36-0.889,0L8.616,24.531 + c-0.089,0.089-0.089,0.359,0.088,0.359h8.894v12.233c0,0.271,0.179,0.451,0.356,0.451h11.83c0.354,0,0.442-0.183,0.442-0.541 + V24.891L39.211,24.98z"/> + <path fill="#477AF0" d="M39.186,24.973c0.269,0,0.269-0.271,0.178-0.451L24.357,9.61c-0.444-0.448-0.621-0.359-0.888,0 + L8.643,24.521c-0.088,0.09-0.088,0.358,0.088,0.358h8.878v12.218c0,0.271,0.179,0.448,0.356,0.448h11.809 + c0.354,0,0.441-0.182,0.441-0.54V24.882L39.186,24.973z"/> + <path fill="#487BF0" d="M39.158,24.962c0.267,0,0.267-0.271,0.178-0.448L24.356,9.625c-0.443-0.447-0.62-0.359-0.886,0 + L8.669,24.514c-0.088,0.09-0.088,0.358,0.088,0.358h8.863v12.196c0,0.271,0.178,0.449,0.355,0.449h11.789 + c0.354,0,0.44-0.181,0.44-0.539V24.872L39.158,24.962z"/> + <path fill="#497CF1" d="M39.132,24.952c0.267,0,0.267-0.269,0.179-0.447L24.356,9.64c-0.442-0.446-0.619-0.358-0.884,0 + L8.697,24.504c-0.088,0.09-0.088,0.357,0.087,0.357h8.847V37.04c0,0.271,0.178,0.449,0.355,0.449h11.768 + c0.354,0,0.439-0.181,0.439-0.539V24.861L39.132,24.952z"/> + <path fill="#4A7DF1" d="M39.104,24.943c0.269,0,0.269-0.271,0.18-0.448L24.355,9.655c-0.442-0.446-0.618-0.358-0.883,0 + L8.724,24.496c-0.088,0.089-0.088,0.357,0.087,0.357h8.832v12.16c0,0.268,0.177,0.445,0.354,0.445h11.747 + c0.354,0,0.439-0.182,0.439-0.537V24.854L39.104,24.943z"/> + <path fill="#4B7EF2" d="M39.078,24.934c0.265,0,0.265-0.269,0.177-0.447L24.355,9.67c-0.441-0.445-0.617-0.357-0.881,0 + L8.751,24.486c-0.088,0.091-0.088,0.357,0.087,0.357h8.816v12.14c0,0.27,0.177,0.447,0.354,0.447h11.727 + c0.354,0,0.438-0.18,0.438-0.535V24.844L39.078,24.934z"/> + <path fill="#4C7FF2" d="M39.052,24.924c0.265,0,0.265-0.27,0.177-0.446L24.354,9.684c-0.44-0.444-0.616-0.356-0.879,0 + L8.777,24.478c-0.088,0.09-0.088,0.355,0.087,0.355h8.8v12.121c0,0.269,0.177,0.444,0.353,0.444h11.706 + c0.354,0,0.438-0.178,0.438-0.534V24.833L39.052,24.924z"/> + <path fill="#4D80F3" d="M39.023,24.913c0.266,0,0.266-0.269,0.178-0.444L24.354,9.699c-0.439-0.444-0.615-0.356-0.878,0 + L8.804,24.469c-0.087,0.09-0.087,0.356,0.087,0.356h8.785v12.101c0,0.268,0.177,0.444,0.353,0.444h11.684 + c0.352,0,0.438-0.179,0.438-0.533V24.825L39.023,24.913z"/> + <path fill="#4E81F3" d="M38.998,24.904c0.266,0,0.266-0.269,0.176-0.445L24.353,9.712c-0.439-0.443-0.614-0.355-0.877,0 + L8.832,24.459c-0.088,0.089-0.088,0.355,0.086,0.355h8.77v12.082c0,0.269,0.176,0.443,0.352,0.443h11.664 + c0.351,0,0.438-0.179,0.438-0.531V24.814L38.998,24.904z"/> + <path fill="#4F82F4" d="M38.973,24.896c0.264,0,0.264-0.27,0.176-0.445L24.353,9.728c-0.438-0.442-0.613-0.355-0.875,0 + L8.858,24.451c-0.087,0.089-0.087,0.355,0.087,0.355h8.754V36.87c0,0.266,0.176,0.442,0.351,0.442h11.644 + c0.352,0,0.438-0.18,0.438-0.533V24.807L38.973,24.896z"/> + <path fill="#5083F4" d="M38.943,24.886c0.264,0,0.264-0.268,0.177-0.444l-14.769-14.7c-0.437-0.441-0.611-0.354-0.874,0 + l-14.593,14.7c-0.087,0.09-0.087,0.354,0.086,0.354h8.738v12.043c0,0.267,0.176,0.443,0.351,0.443h11.623 + c0.351,0,0.438-0.179,0.438-0.531V24.796L38.943,24.886z"/> + <path fill="#5184F5" d="M38.919,24.876c0.263,0,0.263-0.267,0.174-0.443L24.351,9.756c-0.437-0.441-0.61-0.354-0.872,0 + L8.912,24.434c-0.087,0.089-0.087,0.354,0.086,0.354h8.723v12.022c0,0.267,0.175,0.44,0.35,0.44h11.602 + c0.349,0,0.437-0.178,0.437-0.528V24.788L38.919,24.876z"/> + <path fill="#5285F5" d="M38.893,24.866c0.262,0,0.262-0.267,0.176-0.441L24.351,9.771c-0.436-0.44-0.609-0.353-0.871,0 + L8.939,24.425c-0.087,0.089-0.087,0.353,0.086,0.353h8.707v12.009c0,0.265,0.175,0.438,0.349,0.438h11.581 + c0.348,0,0.436-0.177,0.436-0.529V24.777L38.893,24.866z"/> + <path fill="#5386F6" d="M38.863,24.855c0.263,0,0.263-0.266,0.176-0.44L24.35,9.786c-0.435-0.439-0.608-0.353-0.869,0 + L8.966,24.415C8.88,24.504,8.88,24.77,9.052,24.77h8.691v11.983c0,0.267,0.175,0.44,0.349,0.44h11.561 + c0.349,0,0.435-0.176,0.435-0.528V24.77L38.863,24.855z"/> + <path fill="#5487F6" d="M38.839,24.848c0.261,0,0.261-0.267,0.175-0.439L24.349,9.801c-0.434-0.439-0.607-0.352-0.867,0 + L8.993,24.407c-0.087,0.089-0.087,0.353,0.086,0.353h8.676v11.967c0,0.267,0.174,0.44,0.348,0.44h11.54 + c0.349,0,0.435-0.178,0.435-0.528v-11.88L38.839,24.848z"/> + <path fill="#5588F7" d="M38.812,24.837c0.262,0,0.262-0.264,0.174-0.439L24.349,9.814c-0.433-0.438-0.606-0.352-0.866,0 + L9.02,24.397c-0.086,0.088-0.086,0.352,0.086,0.352h8.66v11.949c0,0.262,0.174,0.438,0.347,0.438h11.519 + c0.347,0,0.433-0.177,0.433-0.528V24.749L38.812,24.837z"/> + <path fill="#5689F7" d="M38.785,24.829c0.26,0,0.26-0.265,0.173-0.439L24.348,9.83c-0.432-0.438-0.604-0.351-0.864,0L9.047,24.389 + c-0.086,0.088-0.086,0.353,0.085,0.353h8.645V36.67c0,0.264,0.174,0.438,0.347,0.438h11.498c0.345,0,0.431-0.176,0.431-0.524 + v-11.84L38.785,24.829z"/> + <path fill="#578AF8" d="M38.759,24.818c0.261,0,0.261-0.264,0.175-0.438L24.347,9.844c-0.432-0.437-0.604-0.35-0.863,0 + L9.074,24.379c-0.086,0.088-0.086,0.352,0.085,0.352h8.629v11.91c0,0.262,0.173,0.438,0.346,0.438h11.476 + c0.348,0,0.434-0.177,0.434-0.524V24.73L38.759,24.818z"/> + <path fill="#588BF8" d="M38.73,24.809c0.258,0,0.258-0.263,0.172-0.438L24.347,9.858c-0.431-0.436-0.603-0.35-0.861,0 + L9.101,24.372c-0.086,0.088-0.086,0.351,0.085,0.351H17.8v11.892c0,0.262,0.173,0.438,0.345,0.438h11.458 + c0.344,0,0.428-0.177,0.428-0.524V24.721L38.73,24.809z"/> + <path fill="#598CF9" d="M38.705,24.799c0.259,0,0.259-0.262,0.173-0.438L24.346,9.873c-0.43-0.435-0.602-0.349-0.86,0 + L9.128,24.361c-0.086,0.088-0.086,0.351,0.085,0.351h8.598v11.869c0,0.263,0.173,0.438,0.345,0.438h11.436 + c0.344,0,0.43-0.178,0.43-0.524V24.712L38.705,24.799z"/> + <path fill="#5A8DF9" d="M38.68,24.79c0.258,0,0.258-0.265,0.172-0.438L24.345,9.888c-0.429-0.435-0.6-0.349-0.858,0L9.155,24.353 + c-0.086,0.088-0.086,0.35,0.085,0.35h8.583v11.852c0,0.262,0.172,0.438,0.344,0.438h11.414c0.343,0,0.428-0.177,0.428-0.524 + V24.702L38.68,24.79z"/> + <path fill="#5B8EFA" d="M38.65,24.779c0.259,0,0.259-0.262,0.173-0.437L24.345,9.902c-0.428-0.434-0.599-0.348-0.856,0 + L9.182,24.345c-0.085,0.087-0.085,0.348,0.085,0.348h8.567v11.832c0,0.262,0.172,0.438,0.343,0.438h11.396 + c0.342,0,0.427-0.176,0.427-0.523V24.691L38.65,24.779z"/> + <path fill="#5C8FFA" d="M38.626,24.771c0.256,0,0.256-0.263,0.171-0.437L24.344,9.917c-0.428-0.433-0.599-0.348-0.855,0 + L9.209,24.335c-0.085,0.087-0.085,0.349,0.084,0.349h8.552v11.812c0,0.262,0.172,0.438,0.343,0.438h11.375 + c0.342,0,0.426-0.176,0.426-0.521V24.684L38.626,24.771z"/> + <path fill="#5D90FB" d="M38.6,24.761c0.258,0,0.258-0.261,0.172-0.434L24.344,9.932c-0.427-0.432-0.598-0.347-0.854,0 + L9.235,24.327c-0.085,0.087-0.085,0.347,0.084,0.347h8.536v11.794c0,0.261,0.172,0.435,0.343,0.435h11.353 + c0.342,0,0.428-0.174,0.428-0.521V24.674L38.6,24.761z"/> + <path fill="#5E91FB" d="M38.57,24.751c0.258,0,0.258-0.26,0.173-0.434l-14.4-14.372c-0.426-0.432-0.596-0.346-0.852,0 + L9.263,24.317c-0.085,0.087-0.085,0.346,0.084,0.346h8.52v11.776c0,0.259,0.171,0.433,0.342,0.433h11.332 + c0.34,0,0.424-0.174,0.424-0.521V24.663L38.57,24.751z"/> + <path fill="#5F92FC" d="M38.546,24.743c0.255,0,0.255-0.262,0.17-0.435L24.342,9.96c-0.425-0.431-0.595-0.346-0.85,0L9.29,24.309 + c-0.085,0.087-0.085,0.347,0.084,0.347h8.504v11.756c0,0.258,0.171,0.434,0.341,0.434h11.311c0.342,0,0.426-0.176,0.426-0.521 + V24.654L38.546,24.743z"/> + <path fill="#6093FC" d="M38.521,24.732c0.254,0,0.254-0.26,0.17-0.435L24.342,9.976c-0.425-0.43-0.594-0.345-0.849,0L9.316,24.3 + c-0.085,0.087-0.085,0.347,0.084,0.347h8.489v11.735c0,0.259,0.171,0.433,0.341,0.433h11.292c0.34,0,0.424-0.174,0.424-0.521 + V24.646L38.521,24.732z"/> + <path fill="#6194FD" d="M38.492,24.723c0.255,0,0.255-0.259,0.17-0.432L24.341,9.99c-0.424-0.43-0.593-0.345-0.847,0L9.343,24.291 + c-0.084,0.086-0.084,0.345,0.084,0.345H17.9v11.718c0,0.258,0.17,0.433,0.34,0.433h11.27c0.34,0,0.424-0.175,0.424-0.519V24.636 + L38.492,24.723z"/> + <path fill="#6295FD" d="M38.466,24.712c0.255,0,0.255-0.258,0.169-0.43L24.34,10.004c-0.423-0.429-0.592-0.344-0.846,0 + L9.37,24.283c-0.084,0.086-0.084,0.345,0.084,0.345h8.458v11.697c0,0.258,0.17,0.43,0.339,0.43H29.5 + c0.338,0,0.422-0.172,0.422-0.516V24.626L38.466,24.712z"/> + <path fill="#6396FE" d="M38.438,24.704c0.254,0,0.254-0.259,0.17-0.431L24.34,10.019c-0.422-0.428-0.591-0.343-0.844,0 + L9.397,24.273c-0.084,0.086-0.084,0.345,0.083,0.345h8.442v11.678c0,0.259,0.17,0.431,0.339,0.431H29.49 + c0.338,0,0.422-0.172,0.422-0.517V24.618L38.438,24.704z"/> + <path fill="#6497FE" d="M38.413,24.693c0.252,0,0.252-0.257,0.168-0.429l-14.242-14.23c-0.422-0.427-0.59-0.343-0.843,0 + L9.424,24.265c-0.084,0.086-0.084,0.342,0.083,0.342h8.427v11.66c0,0.258,0.169,0.43,0.338,0.43H29.48 + c0.336,0,0.42-0.172,0.42-0.516V24.607L38.413,24.693z"/> + <path fill="#6598FF" d="M38.387,24.686c0.254,0,0.254-0.259,0.17-0.43L24.338,10.047c-0.42-0.426-0.588-0.342-0.841,0 + L9.451,24.255c-0.084,0.086-0.084,0.343,0.083,0.343h8.411V36.24c0,0.256,0.169,0.428,0.337,0.428h11.187 + c0.338,0,0.42-0.172,0.42-0.516V24.6L38.387,24.686z"/> + <path fill="#6699FF" d="M38.357,24.675c0.252,0,0.252-0.257,0.168-0.428L24.338,10.062c-0.42-0.426-0.587-0.342-0.839,0 + L9.478,24.247c-0.084,0.086-0.084,0.342,0.083,0.342h8.396V36.21c0,0.256,0.169,0.429,0.337,0.429h11.167 + c0.335,0,0.418-0.173,0.418-0.515V24.589L38.357,24.675z"/> + </g> + + <linearGradient id="XMLID_20_" gradientUnits="userSpaceOnUse" x1="-1371.771" y1="-727.9985" x2="-1398.6362" y2="-727.9985" gradientTransform="matrix(4.371139e-08 -1 -1 -4.371139e-08 -703.999 -1361.9985)"> + <stop offset="0" style="stop-color:#FFFFFF"/> + <stop offset="1" style="stop-color:#6699FF"/> + </linearGradient> + <path fill="url(#XMLID_20_)" d="M38.357,24.675c0.252,0,0.252-0.257,0.168-0.428L24.338,10.062c-0.42-0.426-0.587-0.342-0.839,0 + L9.478,24.247c-0.084,0.086-0.084,0.342,0.083,0.342h8.396V36.21c0,0.256,0.169,0.429,0.337,0.429h11.167 + c0.335,0,0.418-0.173,0.418-0.515V24.589L38.357,24.675z"/> +</g> +<g id="crop_x0020_marks"> + <path fill="none" d="M48-0.058v48H0v-48H48z"/> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/warning.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/warning.svg new file mode 100644 index 000000000..38636afc7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/colorsvg/warning.svg @@ -0,0 +1,232 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 12.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 51448) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ + <!ENTITY ns_svg "http://www.w3.org/2000/svg"> + <!ENTITY ns_xlink "http://www.w3.org/1999/xlink"> +]> +<svg version="1.1" id="Layer_1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="48" height="48" viewBox="0 0 48 48" + overflow="visible" enable-background="new 0 0 48 48" xml:space="preserve"> +<g> + <path stroke="#FFFFFF" stroke-width="7.9139" stroke-linejoin="round" d="M16.4,42.3L5.7,31.6V16.4L16.4,5.7h15.2l10.7,10.7v15.2 + L31.6,42.3H16.4z"/> + <g> + <path fill="#990000" d="M16.4,42.3L5.7,31.6V16.4L16.4,5.7h15.2l10.7,10.7v15.2L31.6,42.3H16.4z"/> + <polygon fill="#9A0000" points="16.415,42.266 5.736,31.586 5.736,16.416 16.415,5.737 31.585,5.737 42.266,16.416 42.266,31.586 + 31.585,42.266 "/> + <polygon fill="#9B0000" points="16.429,42.23 5.771,31.572 5.771,16.432 16.429,5.774 31.57,5.774 42.229,16.432 42.229,31.572 + 31.57,42.23 "/> + <polygon fill="#9C0000" points="16.444,42.195 5.806,31.559 5.806,16.447 16.444,5.81 31.557,5.81 42.191,16.447 42.191,31.559 + 31.557,42.195 "/> + <polygon fill="#9D0000" points="16.459,42.162 5.842,31.545 5.842,16.464 16.459,5.847 31.54,5.847 42.157,16.464 42.157,31.545 + 31.54,42.162 "/> + <polygon fill="#9E0000" points="16.473,42.128 5.877,31.531 5.877,16.479 16.473,5.884 31.525,5.884 42.122,16.479 42.122,31.531 + 31.525,42.128 "/> + <polygon fill="#9F0000" points="16.488,42.094 5.914,31.52 5.914,16.496 16.488,5.921 31.512,5.921 42.087,16.496 42.087,31.52 + 31.512,42.094 "/> + <polygon fill="#A00000" points="16.503,42.061 5.949,31.505 5.949,16.511 16.503,5.958 31.496,5.958 42.051,16.511 42.051,31.505 + 31.496,42.061 "/> + <polygon fill="#A10000" points="16.518,42.025 5.984,31.491 5.984,16.528 16.518,5.994 31.48,5.994 42.016,16.528 42.016,31.491 + 31.48,42.025 "/> + <polygon fill="#A20000" points="16.533,41.991 6.02,31.479 6.02,16.544 16.533,6.031 31.467,6.031 41.98,16.544 41.98,31.479 + 31.467,41.991 "/> + <polygon fill="#A30000" points="16.547,41.956 6.055,31.464 6.055,16.56 16.547,6.067 31.452,6.067 41.943,16.56 41.943,31.464 + 31.452,41.956 "/> + <polygon fill="#A40000" points="16.562,41.923 6.091,31.451 6.091,16.576 16.562,6.104 31.438,6.104 41.909,16.576 41.909,31.451 + 31.438,41.923 "/> + <polygon fill="#A50000" points="16.577,41.889 6.126,31.438 6.126,16.592 16.577,6.141 31.423,6.141 41.873,16.592 41.873,31.438 + 31.423,41.889 "/> + <polygon fill="#A60000" points="16.592,41.854 6.162,31.424 6.162,16.607 16.592,6.177 31.407,6.177 41.838,16.607 41.838,31.424 + 31.407,41.854 "/> + <polygon fill="#A70000" points="16.606,41.818 6.197,31.41 6.197,16.624 16.606,6.214 31.395,6.214 41.803,16.624 41.803,31.41 + 31.395,41.818 "/> + <polygon fill="#A80000" points="16.622,41.785 6.233,31.396 6.233,16.64 16.622,6.251 31.379,6.251 41.768,16.64 41.768,31.396 + 31.379,41.785 "/> + <polygon fill="#A90000" points="16.636,41.751 6.269,31.383 6.269,16.655 16.636,6.288 31.363,6.288 41.73,16.655 41.73,31.383 + 31.363,41.751 "/> + <polygon fill="#AA0000" points="16.65,41.716 6.304,31.369 6.304,16.671 16.65,6.325 31.35,6.325 41.695,16.671 41.695,31.369 + 31.35,41.716 "/> + <polygon fill="#AB0000" points="16.666,41.682 6.339,31.355 6.339,16.688 16.666,6.361 31.334,6.361 41.66,16.688 41.66,31.355 + 31.334,41.682 "/> + <polygon fill="#AC0000" points="16.681,41.648 6.375,31.343 6.375,16.704 16.681,6.398 31.318,6.398 41.625,16.704 41.625,31.343 + 31.318,41.648 "/> + <polygon fill="#AD0000" points="16.695,41.613 6.411,31.329 6.411,16.719 16.695,6.435 31.305,6.435 41.589,16.719 41.589,31.329 + 31.305,41.613 "/> + <polygon fill="#AE0000" points="16.709,41.579 6.446,31.314 6.446,16.735 16.709,6.472 31.29,6.472 41.555,16.735 41.555,31.314 + 31.29,41.579 "/> + <polygon fill="#AF0000" points="16.725,41.545 6.482,31.302 6.482,16.751 16.725,6.509 31.273,6.509 41.52,16.751 41.52,31.302 + 31.273,41.545 "/> + <polygon fill="#B00000" points="16.739,41.511 6.518,31.288 6.518,16.767 16.739,6.545 31.262,6.545 41.482,16.767 41.482,31.288 + 31.262,41.511 "/> + <polygon fill="#B10000" points="16.754,41.477 6.553,31.273 6.553,16.783 16.754,6.582 31.245,6.582 41.447,16.783 41.447,31.273 + 31.245,41.477 "/> + <polygon fill="#B20000" points="16.769,41.441 6.588,31.261 6.588,16.799 16.769,6.619 31.23,6.619 41.411,16.799 41.411,31.261 + 31.23,41.441 "/> + <polygon fill="#B30000" points="16.783,41.407 6.624,31.248 6.624,16.815 16.783,6.656 31.216,6.656 41.376,16.815 41.376,31.248 + 31.216,41.407 "/> + <polygon fill="#B40000" points="16.799,41.373 6.66,31.234 6.66,16.832 16.799,6.693 31.202,6.693 41.341,16.832 41.341,31.234 + 31.202,41.373 "/> + <polygon fill="#B50000" points="16.813,41.339 6.695,31.221 6.695,16.847 16.813,6.729 31.188,6.729 41.305,16.847 41.305,31.221 + 31.188,41.339 "/> + <polygon fill="#B60000" points="16.828,41.305 6.73,31.207 6.73,16.863 16.828,6.765 31.172,6.765 41.27,16.863 41.27,31.207 + 31.172,41.305 "/> + <polygon fill="#B70000" points="16.843,41.27 6.766,31.193 6.766,16.879 16.843,6.802 31.157,6.802 41.232,16.879 41.232,31.193 + 31.157,41.27 "/> + <polygon fill="#B80000" points="16.858,41.236 6.802,31.182 6.802,16.896 16.858,6.839 31.143,6.839 41.198,16.896 41.198,31.182 + 31.143,41.236 "/> + <polygon fill="#B90000" points="16.872,41.202 6.837,31.166 6.837,16.911 16.872,6.876 31.128,6.876 41.163,16.911 41.163,31.166 + 31.128,41.202 "/> + <polygon fill="#BA0000" points="16.887,41.167 6.873,31.152 6.873,16.927 16.887,6.913 31.111,6.913 41.127,16.927 41.127,31.152 + 31.111,41.167 "/> + <polygon fill="#BB0000" points="16.902,41.133 6.908,31.139 6.908,16.943 16.902,6.949 31.098,6.949 41.092,16.943 41.092,31.139 + 31.098,41.133 "/> + <polygon fill="#BC0000" points="16.917,41.1 6.944,31.126 6.944,16.959 16.917,6.986 31.083,6.986 41.057,16.959 41.057,31.126 + 31.083,41.1 "/> + <polygon fill="#BD0000" points="16.931,41.064 6.979,31.111 6.979,16.975 16.931,7.023 31.068,7.023 41.021,16.975 41.021,31.111 + 31.068,41.064 "/> + <polygon fill="#BE0000" points="16.946,41.029 7.015,31.1 7.015,16.991 16.946,7.06 31.055,7.06 40.984,16.991 40.984,31.1 + 31.055,41.029 "/> + <polygon fill="#BF0000" points="16.96,40.995 7.051,31.085 7.051,17.007 16.96,7.097 31.039,7.097 40.949,17.007 40.949,31.085 + 31.039,40.995 "/> + <polygon fill="#C00000" points="16.976,40.962 7.086,31.072 7.086,17.023 16.976,7.133 31.023,7.133 40.914,17.023 40.914,31.072 + 31.023,40.962 "/> + <polygon fill="#C10000" points="16.99,40.927 7.121,31.059 7.121,17.039 16.99,7.17 31.01,7.17 40.878,17.039 40.878,31.059 + 31.01,40.927 "/> + <polygon fill="#C20000" points="17.004,40.893 7.157,31.044 7.157,17.054 17.004,7.207 30.994,7.207 40.843,17.054 40.843,31.044 + 30.994,40.893 "/> + <polygon fill="#C30000" points="17.02,40.857 7.192,31.031 7.192,17.07 17.02,7.244 30.979,7.244 40.809,17.07 40.809,31.031 + 30.979,40.857 "/> + <polygon fill="#C40000" points="17.035,40.824 7.229,31.018 7.229,17.086 17.035,7.281 30.966,7.281 40.771,17.086 40.771,31.018 + 30.966,40.824 "/> + <polygon fill="#C50000" points="17.049,40.789 7.263,31.004 7.263,17.103 17.049,7.317 30.95,7.317 40.736,17.103 40.736,31.004 + 30.95,40.789 "/> + <polygon fill="#C60000" points="17.064,40.755 7.299,30.99 7.299,17.119 17.064,7.354 30.936,7.354 40.701,17.119 40.701,30.99 + 30.936,40.755 "/> + <polygon fill="#C70000" points="17.079,40.721 7.334,30.977 7.334,17.135 17.079,7.391 30.921,7.391 40.665,17.135 40.665,30.977 + 30.921,40.721 "/> + <polygon fill="#C80000" points="17.094,40.688 7.371,30.964 7.371,17.151 17.094,7.428 30.906,7.428 40.63,17.151 40.63,30.964 + 30.906,40.688 "/> + <polygon fill="#C90000" points="17.108,40.652 7.406,30.949 7.406,17.167 17.108,7.464 30.893,7.464 40.594,17.167 40.594,30.949 + 30.893,40.652 "/> + <polygon fill="#CA0000" points="17.123,40.618 7.441,30.936 7.441,17.182 17.123,7.5 30.877,7.5 40.559,17.182 40.559,30.936 + 30.877,40.618 "/> + <polygon fill="#CB0000" points="17.138,40.584 7.477,30.923 7.477,17.199 17.138,7.537 30.861,7.537 40.523,17.199 40.523,30.923 + 30.861,40.584 "/> + <polygon fill="#CC0000" points="17.153,40.55 7.513,30.909 7.513,17.215 17.153,7.574 30.848,7.574 40.486,17.215 40.486,30.909 + 30.848,40.55 "/> + <polygon fill="#CC0000" points="17.167,40.516 7.548,30.896 7.548,17.23 17.167,7.611 30.832,7.611 40.452,17.23 40.452,30.896 + 30.832,40.516 "/> + <polygon fill="#CD0000" points="17.182,40.48 7.583,30.882 7.583,17.246 17.182,7.647 30.816,7.647 40.416,17.246 40.416,30.882 + 30.816,40.48 "/> + <polygon fill="#CE0000" points="17.197,40.445 7.619,30.868 7.619,17.262 17.197,7.685 30.803,7.685 40.381,17.262 40.381,30.868 + 30.803,40.445 "/> + <polygon fill="#CF0000" points="17.211,40.412 7.654,30.855 7.654,17.278 17.211,7.721 30.788,7.721 40.346,17.278 40.346,30.855 + 30.788,40.412 "/> + <polygon fill="#D00000" points="17.226,40.378 7.69,30.842 7.69,17.294 17.226,7.758 30.773,7.758 40.311,17.294 40.311,30.842 + 30.773,40.378 "/> + <polygon fill="#D10000" points="17.241,40.344 7.726,30.828 7.726,17.311 17.241,7.794 30.759,7.794 40.273,17.311 40.273,30.828 + 30.759,40.344 "/> + <polygon fill="#D20000" points="17.256,40.311 7.761,30.814 7.761,17.326 17.256,7.831 30.744,7.831 40.238,17.326 40.238,30.814 + 30.744,40.311 "/> + <polygon fill="#D30000" points="17.271,40.273 7.796,30.801 7.796,17.342 17.271,7.868 30.729,7.868 40.203,17.342 40.203,30.801 + 30.729,40.273 "/> + <polygon fill="#D40000" points="17.285,40.24 7.832,30.787 7.832,17.358 17.285,7.905 30.715,7.905 40.168,17.358 40.168,30.787 + 30.715,40.24 "/> + <polygon fill="#D50000" points="17.3,40.206 7.868,30.773 7.868,17.374 17.3,7.941 30.7,7.941 40.132,17.374 40.132,30.773 + 30.7,40.206 "/> + <polygon fill="#D60000" points="17.315,40.172 7.903,30.761 7.903,17.39 17.315,7.979 30.686,7.979 40.098,17.39 40.098,30.761 + 30.686,40.172 "/> + <polygon fill="#D70000" points="17.33,40.139 7.938,30.747 7.938,17.406 17.33,8.015 30.67,8.015 40.062,17.406 40.062,30.747 + 30.67,40.139 "/> + <polygon fill="#D80000" points="17.344,40.104 7.974,30.732 7.974,17.422 17.344,8.052 30.654,8.052 40.025,17.422 40.025,30.732 + 30.654,40.104 "/> + <polygon fill="#D90000" points="17.359,40.068 8.01,30.721 8.01,17.438 17.359,8.089 30.641,8.089 39.99,17.438 39.99,30.721 + 30.641,40.068 "/> + <polygon fill="#DA0000" points="17.374,40.034 8.045,30.706 8.045,17.454 17.374,8.125 30.626,8.125 39.954,17.454 39.954,30.706 + 30.626,40.034 "/> + <polygon fill="#DB0000" points="17.389,40 8.081,30.691 8.081,17.47 17.389,8.162 30.611,8.162 39.919,17.47 39.919,30.691 + 30.611,40 "/> + <polygon fill="#DC0000" points="17.403,39.966 8.116,30.68 8.116,17.486 17.403,8.199 30.598,8.199 39.884,17.486 39.884,30.68 + 30.598,39.966 "/> + <polygon fill="#DD0000" points="17.418,39.932 8.152,30.665 8.152,17.502 17.418,8.235 30.582,8.235 39.848,17.502 39.848,30.665 + 30.582,39.932 "/> + <polygon fill="#DE0000" points="17.433,39.896 8.188,30.652 8.188,17.518 17.433,8.272 30.566,8.272 39.812,17.518 39.812,30.652 + 30.566,39.896 "/> + <polygon fill="#DF0000" points="17.448,39.863 8.223,30.639 8.223,17.534 17.448,8.309 30.553,8.309 39.775,17.534 39.775,30.639 + 30.553,39.863 "/> + <polygon fill="#E00000" points="17.462,39.828 8.258,30.625 8.258,17.55 17.462,8.346 30.537,8.346 39.741,17.55 39.741,30.625 + 30.537,39.828 "/> + <polygon fill="#E10000" points="17.477,39.794 8.294,30.611 8.294,17.565 17.477,8.383 30.521,8.383 39.706,17.565 39.706,30.611 + 30.521,39.794 "/> + <polygon fill="#E20000" points="17.492,39.76 8.33,30.598 8.33,17.582 17.492,8.419 30.508,8.419 39.67,17.582 39.67,30.598 + 30.508,39.76 "/> + <polygon fill="#E30000" points="17.507,39.727 8.365,30.584 8.365,17.598 17.507,8.456 30.493,8.456 39.635,17.598 39.635,30.584 + 30.493,39.727 "/> + <polygon fill="#E40000" points="17.521,39.691 8.4,30.57 8.4,17.614 17.521,8.493 30.479,8.493 39.6,17.614 39.6,30.57 + 30.479,39.691 "/> + <polygon fill="#E50000" points="17.536,39.657 8.436,30.559 8.436,17.63 17.536,8.529 30.464,8.529 39.562,17.63 39.562,30.559 + 30.464,39.657 "/> + <polygon fill="#E60000" points="17.551,39.623 8.472,30.544 8.472,17.646 17.551,8.566 30.449,8.566 39.527,17.646 39.527,30.544 + 30.449,39.623 "/> + <polygon fill="#E70000" points="17.566,39.589 8.507,30.529 8.507,17.662 17.566,8.603 30.436,8.603 39.492,17.662 39.492,30.529 + 30.436,39.589 "/> + <polygon fill="#E80000" points="17.581,39.555 8.542,30.518 8.542,17.678 17.581,8.64 30.419,8.64 39.457,17.678 39.457,30.518 + 30.419,39.555 "/> + <polygon fill="#E90000" points="17.595,39.52 8.578,30.503 8.578,17.693 17.595,8.676 30.404,8.676 39.422,17.693 39.422,30.503 + 30.404,39.52 "/> + <polygon fill="#EA0000" points="17.61,39.484 8.614,30.489 8.614,17.709 17.61,8.713 30.391,8.713 39.387,17.709 39.387,30.489 + 30.391,39.484 "/> + <polygon fill="#EB0000" points="17.625,39.451 8.649,30.477 8.649,17.726 17.625,8.75 30.375,8.75 39.352,17.726 39.352,30.477 + 30.375,39.451 "/> + <polygon fill="#EC0000" points="17.64,39.417 8.685,30.462 8.685,17.742 17.64,8.787 30.359,8.787 39.314,17.742 39.314,30.462 + 30.359,39.417 "/> + <polygon fill="#ED0000" points="17.654,39.383 8.72,30.449 8.72,17.757 17.654,8.823 30.346,8.823 39.279,17.757 39.279,30.449 + 30.346,39.383 "/> + <polygon fill="#EE0000" points="17.669,39.35 8.756,30.436 8.756,17.773 17.669,8.86 30.331,8.86 39.244,17.773 39.244,30.436 + 30.331,39.35 "/> + <polygon fill="#EF0000" points="17.684,39.312 8.792,30.422 8.792,17.79 17.684,8.897 30.316,8.897 39.208,17.79 39.208,30.422 + 30.316,39.312 "/> + <polygon fill="#F00000" points="17.699,39.279 8.827,30.408 8.827,17.805 17.699,8.934 30.302,8.934 39.173,17.805 39.173,30.408 + 30.302,39.279 "/> + <polygon fill="#F10000" points="17.713,39.245 8.862,30.395 8.862,17.821 17.713,8.971 30.286,8.971 39.137,17.821 39.137,30.395 + 30.286,39.245 "/> + <polygon fill="#F20000" points="17.728,39.211 8.898,30.381 8.898,17.837 17.728,9.007 30.271,9.007 39.102,17.837 39.102,30.381 + 30.271,39.211 "/> + <polygon fill="#F30000" points="17.743,39.177 8.934,30.367 8.934,17.853 17.743,9.044 30.257,9.044 39.066,17.853 39.066,30.367 + 30.257,39.177 "/> + <polygon fill="#F40000" points="17.758,39.143 8.969,30.354 8.969,17.869 17.758,9.081 30.242,9.081 39.029,17.869 39.029,30.354 + 30.242,39.143 "/> + <polygon fill="#F50000" points="17.772,39.107 9.004,30.341 9.004,17.885 17.772,9.117 30.229,9.117 38.995,17.885 38.995,30.341 + 30.229,39.107 "/> + <polygon fill="#F60000" points="17.787,39.073 9.04,30.327 9.04,17.901 17.787,9.154 30.213,9.154 38.959,17.901 38.959,30.327 + 30.213,39.073 "/> + <polygon fill="#F70000" points="17.802,39.039 9.076,30.312 9.076,17.917 17.802,9.191 30.198,9.191 38.924,17.917 38.924,30.312 + 30.198,39.039 "/> + <polygon fill="#F80000" points="17.816,39.005 9.111,30.3 9.111,17.933 17.816,9.228 30.184,9.228 38.889,17.933 38.889,30.3 + 30.184,39.005 "/> + <polygon fill="#F90000" points="17.832,38.971 9.146,30.286 9.146,17.949 17.832,9.265 30.169,9.265 38.854,17.949 38.854,30.286 + 30.169,38.971 "/> + <polygon fill="#FA0000" points="17.846,38.938 9.182,30.271 9.182,17.965 17.846,9.301 30.154,9.301 38.816,17.965 38.816,30.271 + 30.154,38.938 "/> + <polygon fill="#FB0000" points="17.861,38.902 9.218,30.259 9.218,17.981 17.861,9.338 30.139,9.338 38.782,17.981 38.782,30.259 + 30.139,38.902 "/> + <polygon fill="#FC0000" points="17.875,38.867 9.253,30.246 9.253,17.997 17.875,9.375 30.124,9.375 38.746,17.997 38.746,30.246 + 30.124,38.867 "/> + <polygon fill="#FD0000" points="17.891,38.833 9.289,30.232 9.289,18.013 17.891,9.411 30.109,9.411 38.711,18.013 38.711,30.232 + 30.109,38.833 "/> + <polygon fill="#FE0000" points="17.905,38.799 9.324,30.219 9.324,18.029 17.905,9.448 30.096,9.448 38.675,18.029 38.675,30.219 + 30.096,38.799 "/> + <path fill="#FF0000" d="M17.92,38.766l-8.56-8.561v-12.16l8.56-8.56h12.16l8.561,8.56v12.16l-8.561,8.561H17.92z"/> + </g> + + <linearGradient id="XMLID_46_" gradientUnits="userSpaceOnUse" x1="582" y1="-986.6099" x2="582" y2="-1015.8911" gradientTransform="matrix(1 0 0 -1 -558 -977)"> + <stop offset="0" style="stop-color:#FFFFFF"/> + <stop offset="1" style="stop-color:#FF0000"/> + </linearGradient> + <path fill="url(#XMLID_46_)" d="M17.92,38.891L9.36,30.33V18.17l8.56-8.56h12.16l8.561,8.56v12.16l-8.561,8.561H17.92z"/> + <path d="M11.7,17.7l18.7,18.7l5.896-5.9L17.6,11.7l-5.9,5.9V17.7z"/> + <path d="M11.7,30.5l5.9,5.9l18.7-18.7L30.4,11.8L11.7,30.5z"/> +</g> +<g id="crop_x0020_marks"> + <path fill="none" d="M48,48H0V0h48V48z"/> +</g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/home.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/home.svg new file mode 100644 index 000000000..e803a3178 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/home.svg @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In --> +<!DOCTYPE svg [ + <!ENTITY st0 "fill-rule:nonzero;clip-rule:nonzero;fill:#FFFFFF;stroke:#000000;stroke-miterlimit:4;"> + <!ENTITY st1 "fill:none;stroke:none;"> + <!ENTITY st2 "fill:#000000;"> + <!ENTITY st3 "fill:none;stroke:#FFFFFF;stroke-width:6.3469;stroke-linejoin:round;"> + <!ENTITY st4 "fill-rule:evenodd;clip-rule:evenodd;stroke:none;"> + <!ENTITY st5 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;"> +]> +<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> + <g id="Layer_x0020_3" style="&st0;"> + <g style="&st4;"> + <path style="&st3;" d="M22.9,7.1L5.1,21.8l0,0c-0.3,0.3-0.5,0.8-0.5,1.2c0,0.2,0,0.4,0.1,0.6c0.3,0.6,0.9,1,1.6,1c0,0,1.1,0,2.2,0c0,2.4,0,14.2,0,14.2c0,1.1,0.8,1.9,1.8,1.9h27.4c1.1,0,1.9-0.9,1.9-2c0,0,0-11.8,0-14.2c1,0,2,0,2,0c0.8,0,1.4-0.5,1.7-1.2 + c0.1-0.2,0.1-0.4,0.1-0.6c0-0.5-0.2-1-0.7-1.4c0,0-3.6-3-4.5-3.7c0-1.2,0-6.9,0-6.9c0-1.2-0.8-2-2-2h-4.8c-1,0-1.7,0.6-1.9,1.5c-1.9-1.6-4.1-3.5-4.1-3.5l0.1,0.1c-0.7-0.7-1.8-0.8-2.7-0.1z"/> + <path style="&st2;" d="M22.9,7.1L5.1,21.8l0,0c-0.3,0.3-0.5,0.8-0.5,1.2c0,0.2,0,0.4,0.1,0.6c0.3,0.6,0.9,1,1.6,1c0,0,1.1,0,2.2,0c0,2.4,0,14.2,0,14.2c0,1.1,0.8,1.9,1.8,1.9h27.4c1.1,0,1.9-0.9,1.9-2c0,0,0-11.8,0-14.2c1,0,2,0,2,0c0.8,0,1.4-0.5,1.7-1.2 + c0.1-0.2,0.1-0.4,0.1-0.6c0-0.5-0.2-1-0.7-1.4c0,0-3.6-3-4.5-3.7c0-1.2,0-6.9,0-6.9c0-1.2-0.8-2-2-2h-4.8c-1,0-1.7,0.6-1.9,1.5c-1.9-1.6-4.1-3.5-4.1-3.5l0.1,0.1c-0.7-0.7-1.8-0.8-2.7-0.1z"/> + <path style="&st2;" d="M41.8,22.8l-5.1-4.2v-0.1L31,13.7v0l-6.5-5.5C24.2,8,24,8,23.8,8.2L6.2,22.9c-0.1,0.1-0.1,0.3,0.1,0.3h1.6H10h28.1h1.2h2.3c0.2,0,0.4-0.2,0.2-0.4z"/> + <path d="M35.8,16.8l0-5.1c0-0.2-0.1-0.4-0.3-0.4h-3.2c-0.2,0-0.3,0.1-0.3,0.3v2.2l3.9,2.9z"/> + <path d="M11.9,24.7V37c0,0.3,0.1,0.4,0.3,0.4h23.6c0.3,0,0.4-0.2,0.4-0.4V24.7H11.9z"/> + </g> + </g> + <g id="crop_x0020_marks" style="&st5;"> + <path style="&st1;" d="M48,48H0V0h48v48z"/> + </g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/important.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/important.svg new file mode 100644 index 000000000..dd84f3fe3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/important.svg @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In --> +<!DOCTYPE svg [ + <!ENTITY st0 "fill:#FFFFFF;stroke:none;"> + <!ENTITY st1 "fill:#FFFFFF;stroke-width:6.6112;stroke-linecap:round;stroke-linejoin:round;"> + <!ENTITY st2 "stroke:#FFFFFF;stroke-width:6.6112;"> + <!ENTITY st3 "fill:none;stroke:none;"> + <!ENTITY st4 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;"> + <!ENTITY st5 "stroke:none;"> +]> +<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> + <g id="Layer_x0020_3" style="&st4;"> + <g> + <path style="&st2;" d="M41.7,35.3L26.6,9.4c-0.6-1-1.7-1.7-2.9-1.6c-1.2,0-2.3,0.7-2.9,1.7L6.3,35.4c-0.6,1-0.6,2.3,0,3.3c0.6,1,1.7,1.6,2.9,1.6h29.6c1.2,0,2.3-0.6,2.9-1.7c0.6-1,0.6-2.3,0-3.3z"/> + <path style="&st1;" d="M23.7,11L9.2,37h29.6L23.7,11z"/> + <path style="&st0;" d="M23.7,11.9L10.3,36.1h27.5l-14-24.1z"/> + <g> + <path style="&st5;" d="M24.1,34c-1.1,0-1.8-0.8-1.8-1.8c0-1.1,0.7-1.8,1.8-1.8c1.1,0,1.8,0.7,1.8,1.8c0,1-0.7,1.8-1.8,1.8h0z M22.9,29.3l-0.4-9.1h3.2l-0.4,9.1h-2.3z"/> + </g> + </g> + </g> + <g id="crop_x0020_marks" style="&st4;"> + <path style="&st3;" d="M48,48H0V0h48v48z"/> + </g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/next.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/next.svg new file mode 100644 index 000000000..75fa83ed8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/next.svg @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In --> +<!DOCTYPE svg [ + <!ENTITY st0 "fill:none;stroke:none;"> + <!ENTITY st1 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:7.5901;stroke-linejoin:round;"> + <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;"> + <!ENTITY st3 "stroke:none;"> +]> +<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> + <g id="Layer_x0020_3" style="&st2;"> + <g> + <path style="&st1;" d="M22.4,41.1c0,0.3,0.3,0.3,0.5,0.2l16.6-16.9c0.5-0.5,0.4-0.7,0-1L22.9,6.7c-0.1-0.1-0.4-0.1-0.4,0.1v10H8.9c-0.3,0-0.5,0.2-0.5,0.4l0,13.3C8.4,30.9,8.6,31,9,31h13.5l-0.1,10.1z"/> + <path style="&st3;" d="M22.4,41.1c0,0.3,0.3,0.3,0.5,0.2l16.6-16.9c0.5-0.5,0.4-0.7,0-1L22.9,6.7c-0.1-0.1-0.4-0.1-0.4,0.1v10H8.9c-0.3,0-0.5,0.2-0.5,0.4l0,13.3C8.4,30.9,8.6,31,9,31h13.5l-0.1,10.1z"/> + </g> + </g> + <g id="crop_x0020_marks" style="&st2;"> + <path style="&st0;" d="M48,48H0V0h48v48z"/> + </g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/note.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/note.svg new file mode 100644 index 000000000..648299d26 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/note.svg @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In --> +<!DOCTYPE svg [ + <!ENTITY st0 "fill:none;stroke:#FFFFFF;stroke-width:12.1438;stroke-linejoin:round;"> + <!ENTITY st1 "fill:none;stroke-width:1.2429;"> + <!ENTITY st2 "fill:#FFFFFF;stroke:none;"> + <!ENTITY st3 "fill:none;stroke:#FFFFFF;stroke-width:12.7649;stroke-linejoin:round;"> + <!ENTITY st4 "fill:#FFFFFF;stroke-width:6.3824;stroke-linejoin:round;"> + <!ENTITY st5 "fill:none;stroke:none;"> + <!ENTITY st6 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;"> + <!ENTITY st7 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:12.7649;stroke-linejoin:round;"> + <!ENTITY st8 "stroke:none;"> + <!ENTITY st9 "fill:none;stroke-width:4.9715;stroke-linejoin:round;"> +]> +<svg xmlns="http://www.w3.org/2000/svg" width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve"> + <g id="Layer_x0020_1" style="&st6;"> + <path style="&st0;" d="M35.7,19.8v18.9H11V8.8h13.9l10.8,11z"/> + <path style="&st3;" d="M38.7,30.4L25,16.7l-7.7-3l2.7,8.7l13.3,13.4l5.4-5.4z"/> + <path style="&st7;" d="M35.7,8.8H11v29.9h24.7V8.8z"/> + <path style="&st4;" d="M35.7,8.8H11v29.9h24.7V8.8z"/> + <path style="&st2;" d="M35.7,8.8H11v29.9h24.7V8.8z"/> + </g> + <g id="Layer_x0020_4" style="&st6;"> + <path style="&st9;" d="M38.7,30.4L25,16.7l-7.7-3l2.7,8.7l13.3,13.4l5.4-5.4z"/> + <path style="&st8;" d="M38.7,30.4L25,16.7l-7.7-3l2.7,8.7l13.3,13.4l5.4-5.4z"/> + <path style="&st8;" d="M20.6,14.7l-2.5,2.5L17,13.4l3.6,1.3z"/> + <path style="&st1;" d="M19.6,22.2l3-0.3l2.4-2.4l0.4-2.8"/> + <path style="&st2;" d="M20.4,14.9L18.3,17l1.6,5.2l2.7-0.3l2.4-2.4l0.3-2.4l-5-2.2z"/> + </g> + <g id="crop" style="&st6;"> + <path style="&st5;" d="M48,48H0V0h48v48z"/> + </g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/prev.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/prev.svg new file mode 100644 index 000000000..6d88ffdd0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/prev.svg @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In --> +<!DOCTYPE svg [ + <!ENTITY st0 "fill:none;stroke:none;"> + <!ENTITY st1 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:7.5901;stroke-linejoin:round;"> + <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;"> + <!ENTITY st3 "stroke:none;"> +]> +<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> + <g id="Layer_x0020_3" style="&st2;"> + <g> + <path style="&st1;" d="M25.6,6.9c0-0.3-0.3-0.3-0.5-0.2L8.4,23.6c-0.5,0.5-0.4,0.7,0,1l16.6,16.6c0.1,0.1,0.4,0.1,0.4-0.1v-10h13.6c0.3,0,0.5-0.2,0.5-0.4l0-13.3c0-0.3-0.2-0.5-0.5-0.5H25.5l0.1-10.1z"/> + <path style="&st3;" d="M25.6,6.9c0-0.3-0.3-0.3-0.5-0.2L8.4,23.6c-0.5,0.5-0.4,0.7,0,1l16.6,16.6c0.1,0.1,0.4,0.1,0.4-0.1v-10h13.6c0.3,0,0.5-0.2,0.5-0.4l0-13.3c0-0.3-0.2-0.5-0.5-0.5H25.5l0.1-10.1z"/> + </g> + </g> + <g id="crop_x0020_marks" style="&st2;"> + <path style="&st0;" d="M48,48H0V0h48v48z"/> + </g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/tip.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/tip.svg new file mode 100644 index 000000000..4a64a1500 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/tip.svg @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In --> +<!DOCTYPE svg [ + <!ENTITY st0 "fill:none;stroke:#000000;stroke-width:1.0944;"> + <!ENTITY st1 "fill:#FFFFFF;stroke:none;"> + <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#FFFFFF;stroke-width:5.6139;stroke-miterlimit:4;"> + <!ENTITY st3 "fill:none;stroke:none;"> + <!ENTITY st4 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;"> + <!ENTITY st5 "stroke:none;"> +]> +<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> + <g id="Layer_x0020_3" style="&st2;"> + <g> + <path d="M9.5,18.6c0,8,6.5,14.4,14.4,14.4c8,0,14.4-6.5,14.4-14.4c0-8-6.5-14.4-14.4-14.4c-8,0-14.4,6.5-14.4,14.4z M12.8,18.6c0-6.2,5-11.2,11.2-11.2c6.2,0,11.2,5,11.2,11.2c0,6.2-5,11.2-11.2,11.2c-6.2,0-11.2-5-11.2-11.2z"/> + <path d="M28.1,37.9l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/> + <path d="M28.1,34.8l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/> + <path d="M28.1,31.6l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8s0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8s-0.9-1.5-1.8-1.4z"/> + <path d="M23.1,41.3v0.9c0,0.9,0.7,1.6,1.6,1.6c0.9,0,1.6-0.7,1.6-1.6v-0.9h-3.3z"/> + <path style="&st1;" d="M35.9,18.7c0,6.6-5.4,12-12,12c-6.6,0-12-5.4-12-12s5.4-12,12-12c6.6,0,12,5.4,12,12z"/> + <path style="&st5;" d="M9.6,18.6c0,8,6.5,14.4,14.4,14.4c8,0,14.4-6.5,14.4-14.4c0-8-6.5-14.4-14.4-14.4c-8,0-14.4,6.5-14.4,14.4z M12.9,18.6c0-6.2,5-11.2,11.2-11.2c6.2,0,11.2,5,11.2,11.2c0,6.2-5,11.2-11.2,11.2c-6.2,0-11.2-5-11.2-11.2z"/> + <path style="&st5;" d="M28.2,37.9l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/> + <path style="&st5;" d="M28.2,34.7l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/> + <path style="&st5;" d="M28.2,31.6l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/> + <path style="&st5;" d="M23.1,41.3v0.9c0,0.9,0.7,1.6,1.6,1.6s1.6-0.7,1.6-1.6v-0.9h-3.3z"/> + <path style="&st0;" d="M22.3,28.3l-3.5-10.7c0,0,6.6,3.9,10.5,0"/> + </g> + </g> + <g id="crop_x0020_marks" style="&st4;"> + <path style="&st3;" d="M48,48H0V0h48v48z"/> + </g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/up.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/up.svg new file mode 100644 index 000000000..d31aa9c80 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/up.svg @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In --> +<!DOCTYPE svg [ + <!ENTITY st0 "fill:none;stroke:none;"> + <!ENTITY st1 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:7.5901;stroke-linejoin:round;"> + <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;"> + <!ENTITY st3 "stroke:none;"> +]> +<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> + <g id="Layer_x0020_3" style="&st2;"> + <g> + <path style="&st1;" d="M41.1,25.6c0.3,0,0.3-0.3,0.2-0.5L24.4,8.4c-0.5-0.5-0.7-0.4-1,0L6.7,25.1c-0.1,0.1-0.1,0.4,0.1,0.4h10v13.6c0,0.3,0.2,0.5,0.4,0.5l13.3,0c0.3,0,0.5-0.2,0.5-0.5V25.5l10.1,0.1z"/> + <path style="&st3;" d="M41.1,25.6c0.3,0,0.3-0.3,0.2-0.5L24.4,8.4c-0.5-0.5-0.7-0.4-1,0L6.7,25.1c-0.1,0.1-0.1,0.4,0.1,0.4h10v13.6c0,0.3,0.2,0.5,0.4,0.5l13.3,0c0.3,0,0.5-0.2,0.5-0.5V25.5l10.1,0.1z"/> + </g> + </g> + <g id="crop_x0020_marks" style="&st2;"> + <path style="&st0;" d="M48,48H0V0h48v48z"/> + </g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/warning.svg b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/warning.svg new file mode 100644 index 000000000..fc8d7484c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/images/warning.svg @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In --> +<!DOCTYPE svg [ + <!ENTITY st0 "fill:#000000;stroke:#FFFFFF;stroke-width:7.9139;stroke-linejoin:round;"> + <!ENTITY st1 "fill-rule:nonzero;clip-rule:nonzero;fill:#FFFFFF;stroke:#000000;stroke-miterlimit:4;"> + <!ENTITY st2 "fill:none;stroke:none;"> + <!ENTITY st3 "fill:#000000;"> + <!ENTITY st4 "fill-rule:evenodd;clip-rule:evenodd;stroke:none;"> + <!ENTITY st5 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;"> +]> +<svg width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg"> + <g id="Layer_x0020_4" style="&st1;"> + <g style="&st4;"> + <path style="&st0;" d="M16.4,42.3L5.7,31.6V16.4L16.4,5.7h15.2l10.7,10.7v15.2L31.6,42.3H16.4z"/> + <path style="&st3;" d="M16.4,42.3L5.7,31.6V16.4L16.4,5.7h15.2l10.7,10.7v15.2L31.6,42.3H16.4z"/> + <path d="M11.7,17.7l18.7,18.7l5.9-5.9L17.6,11.7l-5.9,5.9z"/> + <path d="M11.7,30.5l5.9,5.9l18.7-18.7l-5.9-5.9L11.7,30.5z"/> + </g> + </g> + <g id="crop_x0020_marks" style="&st5;"> + <path style="&st2;" d="M48,48H0V0h48v48z"/> + </g> +</svg> diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/install.sh b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/install.sh new file mode 100644 index 000000000..40716191a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/install.sh @@ -0,0 +1,977 @@ +#!/bin/bash +# $Id: install.sh 7942 2008-03-26 06:08:08Z xmldoc $ +# $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 <smith@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 diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/javahelp.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/javahelp.xsl new file mode 100644 index 000000000..593e9b091 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/javahelp.xsl @@ -0,0 +1,625 @@ +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:doc="http://nwalsh.com/xsl/documentation/1.0" + xmlns:ng="http://docbook.org/docbook-ng" + xmlns:db="http://docbook.org/ns/docbook" + xmlns:exsl="http://exslt.org/common" + version="1.0" + exclude-result-prefixes="doc ng db exsl"> + +<xsl:import href="../html/chunk.xsl"/> + +<xsl:output method="html"/> + +<!-- ******************************************************************** + $Id: javahelp.xsl 8400 2009-04-08 07:44:54Z bobstayton $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<!-- ==================================================================== --> + +<xsl:template match="/"> + <!-- * Get a title for current doc so that we let the user --> + <!-- * know what document we are processing at this point. --> + <xsl:variable name="doc.title"> + <xsl:call-template name="get.doc.title"/> + </xsl:variable> + <xsl:choose> + <!-- Hack! If someone hands us a DocBook V5.x or DocBook NG document, + toss the namespace and continue. Use the docbook5 namespaced + stylesheets for DocBook5 if you don't want to use this feature.--> + <xsl:when test="$exsl.node.set.available != 0 + and (*/self::ng:* or */self::db:*)"> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$doc.title"/> + <xsl:with-param name="context-desc"> + <xsl:text>namesp. cut</xsl:text> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>stripped namespace before processing</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:variable name="nons"> + <xsl:apply-templates mode="stripNS"/> + </xsl:variable> + <xsl:call-template name="log.message"> + <xsl:with-param name="level">Note</xsl:with-param> + <xsl:with-param name="source" select="$doc.title"/> + <xsl:with-param name="context-desc"> + <xsl:text>namesp. cut</xsl:text> + </xsl:with-param> + <xsl:with-param name="message"> + <xsl:text>processing stripped document</xsl:text> + </xsl:with-param> + </xsl:call-template> + <xsl:apply-templates select="exsl:node-set($nons)"/> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$rootid != ''"> + <xsl:choose> + <xsl:when test="count(key('id',$rootid)) = 0"> + <xsl:message terminate="yes"> + <xsl:text>ID '</xsl:text> + <xsl:value-of select="$rootid"/> + <xsl:text>' not found in document.</xsl:text> + </xsl:message> + </xsl:when> + <xsl:otherwise> + <xsl:message>Formatting from <xsl:value-of select="$rootid"/></xsl:message> + <xsl:apply-templates select="key('id',$rootid)" mode="process.root"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/" mode="process.root"/> + </xsl:otherwise> + </xsl:choose> + <xsl:for-each select="/"> <!-- This is just a hook for building profiling stylesheets --> + <xsl:call-template name="helpset"/> + <xsl:call-template name="helptoc"/> + <xsl:call-template name="helpmap"/> + <xsl:call-template name="helpidx"/> + </xsl:for-each> +</xsl:otherwise> +</xsl:choose> +</xsl:template> + +<xsl:template name="header.navigation"> +</xsl:template> + +<xsl:template name="footer.navigation"> +</xsl:template> + +<!-- ==================================================================== --> + +<xsl:template name="helpset"> + <xsl:call-template name="write.chunk.with.doctype"> + <xsl:with-param name="filename" select="concat($base.dir,'jhelpset.hs')"/> + <xsl:with-param name="method" select="'xml'"/> + <xsl:with-param name="indent" select="'yes'"/> + <xsl:with-param name="doctype-public" select="'-//Sun Microsystems Inc.//DTD JavaHelp HelpSet Version 1.0//EN'"/> + <xsl:with-param name="doctype-system" select="'http://java.sun.com/products/javahelp/helpset_1_0.dtd'"/> + <xsl:with-param name="content"> + <xsl:call-template name="helpset.content"/> + </xsl:with-param> + <xsl:with-param name="quiet" select="$chunk.quietly"/> + </xsl:call-template> +</xsl:template> + +<xsl:template name="helpset.content"> + <xsl:variable name="title"> + <xsl:apply-templates select="." mode="title.markup"/> + </xsl:variable> + + <helpset version="1.0"> + <title> + <xsl:value-of select="normalize-space($title)"/> + + + + + top + + + + + + TOC + + javax.help.TOCView + jhelptoc.xml + + + + Index + + javax.help.IndexView + jhelpidx.xml + + + + Search + + javax.help.SearchView + JavaHelpSearch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + , + + + + + + + + + + + + + + + + + + + + + bullet + + + + © + + + + TM + + + + + ® + (SM) +   + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/profile-javahelp.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/profile-javahelp.xsl new file mode 100644 index 000000000..eabac3eab --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/javahelp/profile-javahelp.xsl @@ -0,0 +1,549 @@ + + + + + + + + + + + + + +Note: namesp. cut : stripped namespace before processingNote: namesp. cut : processing stripped document + + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + Formatting from + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="normalize-space($title)"/> + + + + + top + + + + + + TOC + + javax.help.TOCView + jhelptoc.xml + + + + Index + + javax.help.IndexView + jhelpidx.xml + + + + Search + + javax.help.SearchView + JavaHelpSearch + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + , + + + + + + + + + + + + + + + + + + + + + bullet + + + + © + + + + TM + + + + + ® + (SM) +   + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/lib/lib.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/lib/lib.xsl new file mode 100644 index 000000000..5eee4862e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/lib/lib.xsl @@ -0,0 +1,480 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unrecognized unit of measure: + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unrecognized unit of measure: + + . + + + + + + + filename + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + + + + + + + / + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/ChangeLog.20020917 b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/ChangeLog.20020917 new file mode 100644 index 000000000..c170cc056 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/ChangeLog.20020917 @@ -0,0 +1,195 @@ +Note: This changelog is a record of descriptions of all changes +made to the DocBook XSL manpages stylesheets during the time when +they were maintained in their original home in the +[cvs]/docbook/contrib/xsl/db2man area of the DocBook Project +source-code repository at Sourceforge; that is, from October 2001 +(when they were contributed to the project by Martijn van Beers) +until September 2002 (when they were moved to the +[cvs]/docbook/xsl/manpages area and became a standard part of all +subsequent DocBook XSL Stylesheets releases). + +2002-09-17 Norman Walsh + + * README, db2man.xsl, lists.xsl, sect23.xsl, synop.xsl, xref.xsl: + Moved to docbook/xsl/manpages + + * db2man.xsl, synop.xsl: Patch from Joe Orton + +2002-06-16 + + * db2man.xsl: commit patch sent by Joe Orton: + + This patch adds support for using the productname, date and title out of + a if one is present, rather than having to add each of + these individually for every refentry. + + * db2man.xsl: Tim Waugh sent: + + This patch normalizes space in each refname before displaying it in + the name section. + +2002-05-21 + + * xref.xsl: from Joe Orton: + this patch allows cross-referencing to a specific refname. I + need this since I'm documenting several different (but related) + functions per refentry, and want to cross-reference them individually, + rather than just by the title used for the refentry as a whole. + +2002-05-17 + + * lists.xsl: apply glosslist support patch from twaugh + +2002-05-15 + + * db2man.xsl: slightly sanitize the filenames we generate. again from twaugh + + * db2man.xsl: Apply twaugh's fix for making the entity transform stuff work + +2002-05-14 + + * db2man.xsl: generalize the tip template for all admonitions + (caution,important,note,tip,warning) + + * db2man.xsl: Apply Joe Orton's patch, modified to be indented. Also show "Tip" + in the title. + + so if foo, you get + Tip: foo + + * synop.xsl: rewrote funcprototype. It used to convert all its children to a single + string and the split it up again through recursion. Now has a nice + foreach loop for the paramdefs, which seems much cleaner than throwing + everything in a big string before processing it. + +2002-05-10 + + * db2man.xsl: add support for simpara + + * db2man.xsl, lists.xsl: fix refsect2 titles + + * synop.xsl: also from twaugh: + + I found some input that goes wrong with the synop.xsl we have in CVS: + + + -o FILE + --output=FILE + + + It gets rendered as (with *bold* and _italic_): + + [*-o FILE* | *--output=FILE*] + + The desired markup should look like: + The following macro does the trick: + + [\fB-o \fIFILE\fR\fR | \fB--output=\fIFILE\fR\fR] + + The trouble is that the named template 'bold' uses value-of, and so + strips of its significance. + + Another thing I found is that the arg/replaceable template is + superfluous altogether: db2man.xsl has a 'replaceable' template which + does the same thing. + + Here is a patch to make those two modifications. + + NOTE TO SELF: must try to fix bold template so we can use it everywhere + +2002-05-09 + + * db2man.xsl: oops, removed too much + + * db2man.xsl: remove stuff that's apparently left-over from sect23.xsl + + * db2man.xsl, lists.xsl, synop.xsl: batch of patches from twaugh: + * This patch (based on one from Jirka Kosek) adds support for + block-level elements inside s---s for example, or lists. + * This patch replaces entities (like '舒') with sensible + characters or groups of characters. + * This patch adds support for sbr. + * This patch normalizes spaces in varlistentry terms. + * This patch normalizes spaces in terminal varlistentry terms. + * This patch allows variable lists to be nested (once). + * This patch prevents variable list item paragraphs from merging into + one another. + * This patch improves the rendering of itemized lists, and adds support + for ordered lists and procedures. + * This patch makes some small adjustments to group/arg: don't put extra + spaces in where they aren't needed, and normalize the space of $arg. + * This patch makes adjustments to cmdsynopsis elements. In particular, + they can now be wrapped if no is provided. + * This patch adds funcsynopsis//* support. Again, wrapping is done + automatically. + + * synop.xsl: make synopsises work for --arg=foo s too + + * synop.xsl: remove unneccesary adding of whitespace for arg/replaceable + +2002-05-01 + + * db2man.xsl: This patch adds support for multiple refnames. + + (another twaugh patch) + + * db2man.xsl: modified ulink patch from twaugh. Be nice to content-less ulinks. But we + don't accomodate silly people who don't understand ulink and put the + url as the content too. + + * db2man.xsl, synop.xsl: db2man.xsl: + * temporarily add some params that chunker.xsl needs + * fix bold/italic templates + * update calls to bold/italic templates for new syntax + synop.xsl: + * add support for synopfragment + * update calls to bold/italic templates for new syntax + +2002-04-30 + + * db2man.xsl: Add twaug's patch for xref support + + * db2man.xsl: This patch adds support for: + + - Multiple authors. + - A (single) man page editor. + + (another patch from twaugh) + + * db2man.xsl: more twaugh patches: + - Use refentrytitle, not refname[1], for title. + - Upper-case it. + - Use date, productname, and title. + - Pick up author from main document if not contained in refentry. + - Use refname[1] for man page filename, not refentrytitle. + + * db2man.xsl: add varname support + + * db2man.xsl: This patch makes userinput (an inline element) have inline formatting. + + * db2man.xsl: This patch adds support for the top-level document being something + other than an article. + + It also emits a helpful warning if no refentry elements are found. + + * db2man.xsl: next twaugh patch: + Instead of writing to stdout, create a file for each + refentry. Plus, for bonus points, a file for each additional refname + within that entry (pointing to the main page). + + * db2man.xsl: Add named templates for bold-ifying and italicizing stuff. Inspired + by yet another twaugh patch + + * db2man.xsl, lists.xsl, sect23.xsl: consistently use instead of a newline + + * db2man.xsl, synop.xsl: * add support for informalexample, screen, errorcode, constant, type, + quote, programlisting and citerefentry + * use the 'bold' and 'italic' named templates + + * xref.xsl: New file. + +2001-12-01 Norman Walsh + + * README, db2man.xsl, lists.xsl, sect23.xsl, synop.xsl: + New file. + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/block.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/block.xsl new file mode 100644 index 000000000..9278561bc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/block.xsl @@ -0,0 +1,411 @@ + + + + + + + + + + n + + .sp + + .RS 4 + + .BM yellow + + + .ps +1 + + .ps -1 + .br + + .sp .5v + + .EM yellow + + .RE + + + + + + + .PP + + + + + + + . + + + + + + + + + + + + + + + + + + + + + .sp + + .RS 4n + + + + + .PP + + + + + + + + .RE + + + + + + + + + + + .sp + + .RS 4n + + + + + .sp + + + + + + + + + + + + + + + + + + + + Yes + + + + + + + + + + + + Yes + + + + + + + + + + + + + + + + .sp + + + + + + + .RS + + + + + + + + + + + + + + + + + + + + + + + + + + + .ft + + + + .nf + + + .fi + + .ft + + + + + .nf + + + + + + + + + + + + + t + + .sp -1 + + .BB lightgray + + adjust-for-leading-newline + + + + .sp -1 + + + .BB lightgray + + + + + + + .EB lightgray + + adjust-for-leading-newline + + t + + + + + + .sp 1 + + + + .EB lightgray + + + + + + + + + + + .fi + + + + + + + .RE + + + + + + .sp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + .PP + + + + + + + + + + .sp + + .RS + + + + + + + + .RE + + + + [IMAGE] + + + + + + [ + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/charmap.groff.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/charmap.groff.xsl new file mode 100644 index 000000000..a9492fafb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/charmap.groff.xsl @@ -0,0 +1,6013 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/docbook.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/docbook.xsl new file mode 100644 index 000000000..a0a4251ba --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/docbook.xsl @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note + + + namesp. cut + + + stripped namespace before processing + + + + + + + Note + + + namesp. cut + + + processing stripped document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MAN.MANIFEST + + + + + + + + + + + Erro + + + no refentry + + + No refentry elements found + + in " + + + + ... + + + + + + " + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '\" t + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .\" ----------------------------------------------------------------- + .\" * MAIN CONTENT STARTS HERE * + .\" ----------------------------------------------------------------- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/endnotes.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/endnotes.xsl new file mode 100644 index 000000000..8e52e01c5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/endnotes.xsl @@ -0,0 +1,586 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warn + + + endnote + + + + Bad: + + + + + [ + + ] + in source + + + + Note + + + endnote + + + + Has: + + / + + + + + Note + + + endnote + + + + Fix: + + / + para/ + + + + + + + + + + + + + + + + \% + + + + + + + + + + + \m[blue] + + + + + + + + + + + + + + + + + + + + + + + + + + + Warn + + + link font + + + invalid $man.font.links value: + ' + + ' + + + + + + + \m[] + + + + + + + \&\s-2\u[ + + ]\d\s+2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .IP + " + + + . + + + + + + + + " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .RS + + + + + + + + + + \% + + + + + + .RE + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/html-synop.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/html-synop.xsl new file mode 100644 index 000000000..06c3eb2ff --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/html-synop.xsl @@ -0,0 +1,1567 @@ + + + + + + + + + + + + +
    + +

    + + + + + + + + + + + + +

    +
    +
    + + + +. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +. + + + + + + + + + + + + + ( + + ) + +   + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + .sp +.nf +
    +    
    +    
    +  
    .fi + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + + + +. + + + +

    +
    + + + + + + ( + + + + + + + + + + + + + + + + ) + ; + + + + ... + ) + ; + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + + +. + + + + + ; + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + +
    + +
     
    + +
    + +
    +
    +
     
    +
    + + + + + + ( + + + + + + + + + + + + + + + + + ) + ; + +   + + + + + ... + ) + ; + +   + + + + + + + + , + + + ) + ; + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + ; + + + + + + +

    + +

    +
    + + + + + + ( + + + + + + + + + + + + + + + + void) + ; + + + + ... + ) + ; + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + +
    + +
     
    +
     
    +
    + + + + + + ( + + + + + + + + + + + + + + + + + void) + ; + +   + + + + + ... + ) + ; + +   + + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + +java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unrecognized language on + + : + + + + + + + + + + + + +. + + + + + + + + + .sp +.nf +
    +    
    +    
    +    
    +       extends
    +      
    +      
    +        
    +.
    +
    +	    
    +      
    +    
    +    
    +      implements
    +      
    +      
    +        
    +.
    +
    +	    
    +      
    +    
    +    
    +      throws
    +      
    +    
    +     {
    +    
    +.
    +
    +    
    +    }
    +  
    .fi + +
    + + + + + + + + + , + + + + + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + =  + + + + + + + + void  + + + + + + + + + + + + 0 + + , + +. + + + +   + + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + ( + + + + ) + + +. + +     throws  + + + + + + + ; + + + + + + + + .sp +.nf +
    +    
    +    
    +    
    +      : 
    +      
    +      
    +        
    +.
    +
    +	    
    +      
    +    
    +    
    +       implements
    +      
    +      
    +        
    +.
    +
    +	    
    +      
    +    
    +    
    +       throws
    +      
    +    
    +     {
    +    
    +.
    +
    +    
    +    }
    +  
    .fi + +
    + + + + + + + + , + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + =  + + + + + + + + void  + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + ( + + ) + + +. + +     throws  + + + + + + + ; + + + + + + + + .sp +.nf +
    +    
    +    interface 
    +    
    +    
    +      : 
    +      
    +      
    +        
    +.
    +
    +	    
    +      
    +    
    +    
    +       implements
    +      
    +      
    +        
    +.
    +
    +	    
    +      
    +    
    +    
    +       throws
    +      
    +    
    +     {
    +    
    +.
    +
    +    
    +    }
    +  
    .fi + +
    + + + + + + + + , + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + =  + + + + + + + + void  + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + ( + + ) + + +. + +     raises( + + ) + + + + + + ; + + + + + + + + .sp +.nf +
    +    
    +    package 
    +    
    +    ;
    +    
    +.
    +
    +
    +    
    +      @ISA = (
    +      
    +      );
    +      
    +.
    +
    +    
    +
    +    
    +  
    .fi + +
    + + + + + + + + , + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + =  + + + + + + + + void  + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + sub + + + { ... }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/info.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/info.xsl new file mode 100644 index 000000000..6698fb991 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/info.xsl @@ -0,0 +1,800 @@ + + + + + + + + + + + + + + + + \n(zqu + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + " + + + + " + + + + + + + + + + " + + + + " + + + + + + + + + + + + + + " + + " + + + + " + + " + + + + + + + + + + + + + + + + + + + + Documentation + + + DOCUMENTATION + + + + + + + + + + [see the + + section] + + + + + + [FIXME: author] [see http://docbook.sf.net/el/author] + + + Warn + + meta author + + no refentry/info/author + + + + Note + + meta author + + see http://docbook.sf.net/el/author + + + + Warn + + meta author + + no author data, so inserted a fixme + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + < + + + + + + + + + + + + + + + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Author + + + Authors + + + + + + + + + + + + + + + + + .PP + + + + + + + + + + + .br + + + + + + + + + + + + + + .PP + + + + + + + + + + + + + .PP + + + + + + + + + + + + + .PP + + + + + + + + + + + + + + + .RS + + + + + + + + + . + .RE + + + + + + + + + + + + + + + + + + <\& + + + + + + + + + + + + + + + \&> + + + + + + + , + + + + + + + + + + + + + + + .br + + + + + + + + + + , + + + + + + + + + + + .br + + + + + + + + + + + + .br + + + + + + + + + + + + + + + + + + + + + + + + + Warn + + AUTHOR sect. + + no personblurb|contrib for + + + + + Note + + AUTHOR sect. + + see see http://docbook.sf.net/el/contrib + + + + Note + + AUTHOR sect. + + see see http://docbook.sf.net/el/personblurb + + + + + + + + + + .RS + + + + + + + + + . + .RE + + + + .RS + + + + + + + + + . + .RE + + + + + + + + .RS + + + + + + + + + . + .RE + + + + + + + + + + + + + + + + + + + + + + + + + + + .RE + + + + + + + + + + . + + + + + + + + + + + + + + + + .RE + + + + + + + + + + + .RS + + + + + + + + + + + + + .PP + + + + + .br + + + + + + + + + + + + + + + + + + + + + Copyright + + + + .br + + + + + + + + + + + .br + + + + + .sp + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/inline.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/inline.xsl new file mode 100644 index 000000000..56ca4c506 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/inline.xsl @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + © + + + ® + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .\" + + + + + + + + + + : + + + + + + + + .\" + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/lists.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/lists.xsl new file mode 100644 index 000000000..dd90174c5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/lists.xsl @@ -0,0 +1,604 @@ + + + + + + + + + + + + + + + + \n(zqu + + + + + + + + + + + + + + .sp + + + + + + + + + + + .PP + + + + + + + + + + + .PP + + + + + + + + + + + + + + + + + + + + .br + + + + + + .RS + + + + + + + .RE + + + + + + + + + .sp + + + + + + + + + + + + + + + .sp + + .RS + + + + + + + + + + + \h'- + + + 0 + + + + \n(INu + + + ' + + \h'+ + + + 0 + + + + \n(INu-1 + + + '\c + + + + + + + .sp -1 + .IP \(bu 2.3 + + + + + + .RE + + + + + .sp + + .RS + + + + + + + + + + + \h'- + + + 0 + + + + \n(INu+3n + + + ' + + + + + \h'+ + + + 0 + + + + 1n + + + '\c + + + + + + + .sp -1 + .IP " + + + + + " 4.2 + + + + + + .RE + + + + + + .PP + + + + + + + + + + + + + + + + .sp + + + + + + + .PP + + + + + + + + + .sp + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + .RS + + + + + + + + .RE + + + + + + + + + + .PP + + + + + + + .\" line length increase to cope w/ tbl weirdness + .ll +(\n(LLu * 62u / 100u) + + .TS + + + + + + l + + + . + + + + + + + + + + + + + + .TE + .\" line length decrease back to previous value + .ll -(\n(LLu * 62u / 100u) + + .sp + + + + + + + + + + + + + + + + + + + + + + + + + + + + T{ + + + + + T} + + + + + + + + + + + + + + + + + + + + + + + + + + + .TS + tab(:); + + + + r lw(\n(.lu*75u/100u). + + .TE + + + + + + + + + + + + + + \h'-2n': + + + T{ + + T} + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + + + + + \ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + + + + \fB( + + )\fR + + + + + + + \fB + + .\fR + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/other.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/other.xsl new file mode 100644 index 000000000..543192500 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/other.xsl @@ -0,0 +1,888 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ + + + + + \e + + + + + + + + . + \&. + + + + + + + + - + \- + + + + + + + + ' + \*(Aq + + + + + + + +   + + + + + + + + + + + + + + + + + + + + \ \& + + + + + + + + + + + + + + + + .\" Title: + + + + + .\" Author: + + + + + + + + + + .\" Generator: DocBook + + v + + + + <http://docbook.sf.net/> + + .\" Date: + + + + + .\" Manual: + + + + + .\" Source: + + + + + .\" Language: + + + .\" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .TH " + + + + + + + + + + + + + " " + + " " + + + + + + + " " + + + + + + + + + + + + " " + + + + + + + + + + + + " + + + + + + + + + + + + .\" ----------------------------------------------------------------- + .\" * set default formatting + .\" ----------------------------------------------------------------- + + .\" disable hyphenation + .nh + + + + + .\" disable justification + (adjust text to left margin only) + .ad l + + + .\" store initial "default indentation value" + .nr zq \n(IN + .\" adjust default indentation + .nr IN + + + .\" adjust indentation of SS headings + .nr SN \n(IN + + + + + + .\" enable line breaks after slashes + .cflags 4 / + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note: + (soelim stub) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note: + (manifest file) + + + + + + + + + + + + + + .\" ----------------------------------------------------------------- + .\" * Define some portability stuff + .\" ----------------------------------------------------------------- + .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + .\" http://bugs.debian.org/507673 + .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html + .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + .ie \n(.g .ds Aq \(aq + + .el .ds Aq ' + + + + + + + .\" ----------------------------------------------------------------- + .\" * (re)Define some macros + .\" ----------------------------------------------------------------- + .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + .\" toupper - uppercase a string (locale-aware) + .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + .de toupper + .tr + + + \\$* + .tr + + + .. + .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + .\" SH-xref - format a cross-reference to an SH section + .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + .de SH-xref +.ie n \{\ +.\} +.toupper \\$* +.el \{\ +\\$* +.\} +.. + .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + .\" SH - level-one heading that works better for non-TTY output + .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + .de1 SH + .\" put an extra blank line of space above the head in non-TTY output + + t + + .sp 1 + + .sp \\n[PD]u +.nr an-level 1 +.set-an-margin +.nr an-prevailing-indent \\n[IN] +.fi +.in \\n[an-margin]u +.ti 0 +.HTML-TAG ".NH \\n[an-level]" +.it 1 an-trap +.nr an-no-space-flag 1 +.nr an-break-flag 1 +\." make the size of the head bigger +.ps +3 +.ft B +.ne (2v + 1u) +.ie n \{\ +.\" if n (TTY output), use uppercase +.toupper \\$* +.\} +.el \{\ +.nr an-break-flag 0 +.\" if not n (not TTY), use normal case (not uppercase) +\\$1 +.in \\n[an-margin]u +.ti 0 +.\" if not n (not TTY), put a border/line under subheading +.sp -.6 +\l'\n(.lu' +.\} +.. + .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + .\" SS - level-two heading that works better for non-TTY output + .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + .de1 SS +.sp \\n[PD]u +.nr an-level 1 +.set-an-margin +.nr an-prevailing-indent \\n[IN] +.fi +.in \\n[IN]u +.ti \\n[SN]u +.it 1 an-trap +.nr an-no-space-flag 1 +.nr an-break-flag 1 +.ps \\n[PS-SS]u +\." make the size of the head bigger +.ps +2 +.ft B +.ne (2v + 1u) +.if \\n[.$] \&\\$* +.. + .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + .\" BB/EB - put background/screen (filled box) around block of text + .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + .de BB +.if t \{\ +.sp -.5 +.br +.in +2n +.ll -2n +.gcolor red +.di BX +.\} +.. +.de EB +.if t \{\ +.if "\\$2"adjust-for-leading-newline" \{\ +.sp -1 +.\} +.br +.di +.in +.ll +.gcolor +.nr BW \\n(.lu-\\n(.i +.nr BH \\n(dn+.5v +.ne \\n(BHu+.5v +.ie "\\$2"adjust-for-leading-newline" \{\ +\M[\\$1]\h'1n'\v'+.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[] +.\} +.el \{\ +\M[\\$1]\h'1n'\v'-.5v'\D'P \\n(BWu 0 0 \\n(BHu -\\n(BWu 0 0 -\\n(BHu'\M[] +.\} +.in 0 +.sp -.5v +.nf +.BX +.in +.sp .5v +.fi +.\} +.. + .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + .\" BM/EM - put colored marker in margin next to block of text + .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + .de BM +.if t \{\ +.br +.ll -2n +.gcolor red +.di BX +.\} +.. +.de EM +.if t \{\ +.br +.di +.ll +.gcolor +.nr BH \\n(dn +.ne \\n(BHu +\M[\\$1]\D'P -.75n 0 0 \\n(BHu -(\\n[.i]u - \\n(INu - .75n) 0 0 -\\n(BHu'\M[] +.in 0 +.nf +.BX +.in +.fi +.\} +.. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xml new file mode 100644 index 000000000..706c99d1f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xml @@ -0,0 +1,3220 @@ + + + + Manpages Parameter Reference + + $Id: param.xweb 8235 2009-02-09 16:22:14Z xmldoc $ + + + The DocBook Project + + + 2005-2007 + The DocBook Project + + + This is reference documentation for all user-configurable + parameters in the DocBook XSL "manpages" stylesheet (for + generating groff/nroff output). Note that the manpages + stylesheet is a customization layer of the DocBook XSL HTML + stylesheet. Therefore, you can also use a number of HTML stylesheet parameters + to control manpages output (in addition to the + manpages-specific parameters listed in this section). + + + + Hyphenation, justification, and breaking + + +man.hyphenate +boolean + + +man.hyphenate +Enable hyphenation? + + + + +<xsl:param name="man.hyphenate">0</xsl:param> + + +Description + +If non-zero, hyphenation is enabled. + + +The default value for this parameter is zero because groff is +not particularly smart about how it does hyphenation; it can end up +hyphenating a lot of things that you don't want hyphenated. To +mitigate that, the default behavior of the stylesheets is to suppress +hyphenation of computer inlines, filenames, and URLs. (You can +override the default behavior by setting non-zero values for the +man.hyphenate.urls, +man.hyphenate.filenames, and +man.hyphenate.computer.inlines parameters.) But +the best way is still to just globally disable hyphenation, as the +stylesheets do by default. + +The only good reason to enabled hyphenation is if you have also +enabled justification (which is disabled by default). The reason is +that justified text can look very bad unless you also hyphenate it; to +quote the Hypenation node from the groff info page: + +
    + Since the odds are not great for finding a set of + words, for every output line, which fit nicely on a line without + inserting excessive amounts of space between words, 'gtroff' + hyphenates words so that it can justify lines without inserting too + much space between words. +
    + +So, if you set a non-zero value for the +man.justify parameter (to enable +justification), then you should probably also set a non-zero value for +man.hyphenate (to enable hyphenation).
    +
    + + +
    +
    + + + +man.hyphenate.urls +boolean + + +man.hyphenate.urls +Hyphenate URLs? + + + + +<xsl:param name="man.hyphenate.urls">0</xsl:param> + + +Description + +If zero (the default), hyphenation is suppressed for output of +the ulink url attribute. + + + If hyphenation is already turned off globally (that is, if + man.hyphenate is zero, setting + man.hyphenate.urls is not necessary. + + +If man.hyphenate.urls is non-zero, URLs +will not be treated specially and are subject to hyphenation just like +other words. + + + If you are thinking about setting a non-zero value for + man.hyphenate.urls in order to make long + URLs break across lines, you'd probably be better off + experimenting with setting the + man.break.after.slash parameter first. That + will cause long URLs to be broken after slashes. + + + + + + + +man.hyphenate.filenames +boolean + + +man.hyphenate.filenames +Hyphenate filenames? + + + + +<xsl:param name="man.hyphenate.filenames">0</xsl:param> + + +Description + +If zero (the default), hyphenation is suppressed for +filename output. + + + If hyphenation is already turned off globally (that is, if + man.hyphenate is zero, setting + man.hyphenate.filenames is not + necessary. + + +If man.hyphenate.filenames is non-zero, +filenames will not be treated specially and are subject to hyphenation +just like other words. + + + If you are thinking about setting a non-zero value for + man.hyphenate.filenames in order to make long + filenames/pathnames break across lines, you'd probably be better off + experimenting with setting the + man.break.after.slash parameter first. That + will cause long pathnames to be broken after slashes. + + + + + + + +man.hyphenate.computer.inlines +boolean + + +man.hyphenate.computer.inlines +Hyphenate computer inlines? + + + + +<xsl:param name="man.hyphenate.computer.inlines">0</xsl:param> + + +Description + +If zero (the default), hyphenation is suppressed for +computer inlines such as environment variables, +constants, etc. This parameter current affects output of the following +elements: + + + classname + constant + envar + errorcode + option + replaceable + userinput + type + varname + + + + + If hyphenation is already turned off globally (that is, if + man.hyphenate is zero, setting the + man.hyphenate.computer.inlines is not + necessary. + + +If man.hyphenate.computer.inlines is +non-zero, computer inlines will not be treated specially and will be +hyphenated like other words when needed. + + + + + + +man.justify +boolean + + +man.justify +Justify text to both right and left margins? + + + + +<xsl:param name="man.justify">0</xsl:param> + + +Description + +If non-zero, text is justified to both the right and left +margins (or, in roff terminology, "adjusted and filled" to both the +right and left margins). If zero (the default), text is adjusted to +the left margin only -- producing what is traditionally called +"ragged-right" text. + + +The default value for this parameter is zero because justified +text looks good only when it is also hyphenated. Without hyphenation, +excessive amounts of space often end up getting between words, in +order to "pad" lines out to align on the right margin. + +The problem is that groff is not particularly smart about how it +does hyphenation; it can end up hyphenating a lot of things that you +don't want hyphenated. So, disabling both justification and +hyphenation ensures that hyphens won't get inserted where you don't +want to them, and you don't end up with lines containing excessive +amounts of space between words. + +However, if do you decide to set a non-zero value for the +man.justify parameter (to enable +justification), then you should probably also set a non-zero value for +man.hyphenate (to enable hyphenation). + +Yes, these default settings run counter to how most existing man +pages are formatted. But there are some notable exceptions, such as +the perl man pages. + + + + + + +man.break.after.slash +boolean + + +man.break.after.slash +Enable line-breaking after slashes? + + + + +<xsl:param name="man.break.after.slash">0</xsl:param> + + +Description + +If non-zero, line-breaking after slashes is enabled. This is +mainly useful for causing long URLs or pathnames/filenames to be +broken up or "wrapped" across lines (though it also has the side +effect of sometimes causing relatively short URLs and pathnames to be +broken up across lines too). + +If zero (the default), line-breaking after slashes is +disabled. In that case, strings containing slashes (for example, URLs +or filenames) are not broken across lines, even if they exceed the +maximum column widith. + + + If you set a non-zero value for this parameter, check your + man-page output carefuly afterwards, in order to make sure that the + setting has not introduced an excessive amount of breaking-up of URLs + or pathnames. If your content contains mostly short URLs or + pathnames, setting a non-zero value for + man.break.after.slash will probably result in + in a significant number of relatively short URLs and pathnames being + broken across lines, which is probably not what you want. + + + + + +
    + + Indentation + + +man.indent.width +length + + +man.indent.width +Specifies width used for adjusted indents + + + + +<xsl:param name="man.indent.width">4</xsl:param> + + + +Description +The man.indent.width parameter specifies +the width used for adjusted indents. The value of +man.indent.width is used for indenting of +lists, verbatims, headings, and elsewhere, depending on whether the +values of certain man.indent.* boolean parameters +are non-zero. + +The value of man.indent.width should +include a valid roff measurement unit (for example, +n or u). The default value of +4n specifies a 4-en width; when viewed on a +console, that amounts to the width of four characters. For details +about roff measurment units, see the Measurements +node in the groff info page. + + + + + + +man.indent.refsect +boolean + + +man.indent.refsect +Adjust indentation of refsect* and refsection? + + + + +<xsl:param name="man.indent.refsect" select="0"></xsl:param> + + +Description + +If the value of man.indent.refsect is +non-zero, the width of the left margin for +refsect1, refsect2 and +refsect3 contents and titles (and first-level, +second-level, and third-level nested +refsectioninstances) is adjusted by the value of +the man.indent.width parameter. With +man.indent.width set to its default value of +3n, the main results are that: + + + + contents of refsect1 are output with a + left margin of three characters instead the roff default of seven + or eight characters + + + contents of refsect2 are displayed in + console output with a left margin of six characters instead the of + the roff default of seven characters + + + the contents of refsect3 and nested + refsection instances are adjusted + accordingly. + + + +If instead the value of man.indent.refsect is +zero, no margin adjustment is done for refsect* +output. + + + If your content is primarly comprised of + refsect1 and refsect2 content + (or the refsection equivalent) – with few or + no refsect3 or lower nested sections , you may be + able to “conserve” space in your output by setting + man.indent.refsect to a non-zero value. Doing + so will “squeeze” the left margin in such as way as to provide an + additional four characters of “room” per line in + refsect1 output. That extra room may be useful + if, for example, you have many verbatim sections with long lines in + them. + + + + + + + +man.indent.blurbs +boolean + + +man.indent.blurbs +Adjust indentation of blurbs? + + + + +<xsl:param name="man.indent.blurbs" select="1"></xsl:param> + + +Description + +If the value of man.indent.blurbs is +non-zero, the width of the left margin for +authorblurb, personblurb, and +contrib output is set to the value of the +man.indent.width parameter +(3n by default). If instead the value of +man.indent.blurbs is zero, the built-in roff +default width (7.2n) is used. + + + + + + +man.indent.lists +boolean + + +man.indent.lists +Adjust indentation of lists? + + + + +<xsl:param name="man.indent.lists" select="1"></xsl:param> + + +Description + +If the value of man.indent.lists is +non-zero, the width of the left margin for list items in +itemizedlist, +orderedlist, +variablelist output (and output of some other +lists) is set to the value of the +man.indent.width parameter +(4n by default). If instead the value of +man.indent.lists is zero, the built-in roff +default width (7.2n) is used. + + + + + + +man.indent.verbatims +boolean + + +man.indent.verbatims +Adjust indentation of verbatims? + + + + +<xsl:param name="man.indent.verbatims" select="1"></xsl:param> + + +Description + +If the value of man.indent.verbatims is +non-zero, the width of the left margin for output of verbatim +environments (programlisting, +screen, and so on) is set to the value of the +man.indent.width parameter +(3n by default). If instead the value of +man.indent.verbatims is zero, the built-in roff +default width (7.2n) is used. + + + + + + + Fonts + + +man.font.funcprototype +string + + +man.font.funcprototype +Specifies font for funcprototype output + + + + + <xsl:param name="man.font.funcprototype">BI</xsl:param> + + + +Description + +The man.font.funcprototype parameter +specifies the font for funcprototype output. It +should be a valid roff font name, such as BI or +B. + + + + + + +man.font.funcsynopsisinfo +string + + +man.font.funcsynopsisinfo +Specifies font for funcsynopsisinfo output + + + + + <xsl:param name="man.font.funcsynopsisinfo">B</xsl:param> + + + +Description + +The man.font.funcsynopsisinfo parameter +specifies the font for funcsynopsisinfo output. It +should be a valid roff font name, such as B or +I. + + + + + + +man.font.links +string + + +man.font.links +Specifies font for links + + + + +<xsl:param name="man.font.links">B</xsl:param> + + + +Description + +The man.font.links parameter +specifies the font for output of links (ulink instances +and any instances of any element with an xlink:href attribute). + +The value of man.font.links must be + either B or I, or empty. If +the value is empty, no font formatting is applied to links. + +If you set man.endnotes.are.numbered and/or +man.endnotes.list.enabled to zero (disabled), then +you should probably also set an empty value for +man.font.links. But if +man.endnotes.are.numbered is non-zero (enabled), +you should probably keep +man.font.links set to +B or IThe + main purpose of applying a font format to links in most output +formats it to indicate that the formatted text is +“clickable”; given that links rendered in man pages are +not “real” hyperlinks that users can click on, it might +seem like there is never a good reason to have font formatting for +link contents in man output. +In fact, if you suppress the +display of inline link references (by setting +man.endnotes.are.numbered to zero), there is no +good reason to apply font formatting to links. However, if +man.endnotes.are.numbered is non-zero, having +font formatting for links (arguably) serves a purpose: It provides +“context” information about exactly what part of the text +is being “annotated” by the link. Depending on how you +mark up your content, that context information may or may not +have value.. + + +Related Parameters + man.endnotes.list.enabled, + man.endnotes.are.numbered + + + + + + +man.font.table.headings +string + + +man.font.table.headings +Specifies font for table headings + + + + + <xsl:param name="man.font.table.headings">B</xsl:param> + + + +Description + +The man.font.table.headings parameter +specifies the font for table headings. It should be +a valid roff font, such as B or +I. + + + + + + +man.font.table.title +string + + +man.font.table.title +Specifies font for table headings + + + + + <xsl:param name="man.font.table.title">B</xsl:param> + + + +Description + +The man.font.table.title parameter +specifies the font for table titles. It should be +a valid roff font, such as B or +I. + + + + + + + SYNOPSIS section + + +man.funcsynopsis.style +list +ansi +kr + + +man.funcsynopsis.style +What style of funcsynopsis should be generated? + + +<xsl:param name="man.funcsynopsis.style">ansi</xsl:param> + +Description +If man.funcsynopsis.style is +ansi, ANSI-style function synopses are +generated for a funcsynopsis, otherwise K&R-style +function synopses are generated. + + + + + + AUTHORS and COPYRIGHT sections + + +man.authors.section.enabled +boolean + + +man.authors.section.enabled +Display auto-generated AUTHORS section? + + + +<xsl:param name="man.authors.section.enabled">1</xsl:param> + + +Description + +If the value of +man.authors.section.enabled is non-zero +(the default), then an AUTHORS section is +generated near the end of each man page. The output of the +AUTHORS section is assembled from any +author, editor, and othercredit +metadata found in the contents of the child info or +refentryinfo (if any) of the refentry +itself, or from any author, editor, and +othercredit metadata that may appear in info +contents of any ancestors of the refentry. + +If the value of +man.authors.section.enabled is zero, the +the auto-generated AUTHORS section is +suppressed. + +Set the value of + man.authors.section.enabled to zero if + you want to have a manually created AUTHORS + section in your source, and you want it to appear in output + instead of the auto-generated AUTHORS + section. + + + + + +man.copyright.section.enabled +boolean + + +man.copyright.section.enabled +Display auto-generated COPYRIGHT section? + + + +<xsl:param name="man.copyright.section.enabled">1</xsl:param> + + +Description + +If the value of +man.copyright.section.enabled is non-zero +(the default), then a COPYRIGHT section is +generated near the end of each man page. The output of the +COPYRIGHT section is assembled from any +copyright and legalnotice metadata found in +the contents of the child info or +refentryinfo (if any) of the refentry +itself, or from any copyright and +legalnotice metadata that may appear in info +contents of any ancestors of the refentry. + +If the value of +man.copyright.section.enabled is zero, the +the auto-generated COPYRIGHT section is +suppressed. + +Set the value of + man.copyright.section.enabled to zero if + you want to have a manually created COPYRIGHT + section in your source, and you want it to appear in output + instead of the auto-generated COPYRIGHT + section. + + + + + + Endnotes and link handling + + +man.endnotes.list.enabled +boolean + + +man.endnotes.list.enabled +Display endnotes list at end of man page? + + + + +<xsl:param name="man.endnotes.list.enabled">1</xsl:param> + + + +Description + +If the value of man.endnotes.list.enabled is +non-zero (the default), then an endnotes list is added to the end of +the output man page. + +If the value of man.endnotes.list.enabled is +zero, the list is suppressed — unless link numbering is enabled (that +is, if man.endnotes.are.numbered is non-zero), in +which case, that setting overrides the +man.endnotes.list.enabled setting, and the +endnotes list is still displayed. The reason is that inline +numbering of notesources associated with endnotes only makes sense +if a (numbered) list of endnotes is also generated. + + + Leaving + man.endnotes.list.enabled at its default + (non-zero) value ensures that no “out of line” information (such + as the URLs for hyperlinks and images) gets lost in your + man-page output. It just gets “rearranged”. + So if you’re thinking about disabling endnotes listing by + setting the value of + man.endnotes.list.enabled to zero: + Before you do so, first take some time to carefully consider + the information needs and experiences of your users. The “out + of line” information has value even if the presentation of it + in text output is not as interactive as it may be in other + output formats. + As far as the specific case of URLs: Even though the URLs + displayed in text output may not be “real” (clickable) + hyperlinks, many X terminals have convenience features for + recognizing URLs and can, for example, present users with + an options to open a URL in a browser with the user clicks on + the URL is a terminal window. And short of those, users with X + terminals can always manually cut and paste the URLs into a web + browser. + Also, note that various “man to html” tools, such as the + widely used man2html (VH-Man2html) + application, automatically mark up URLs with a@href markup + during conversion — resulting in “real” hyperlinks in HTML + output from those tools. + + +To “turn off” numbering of endnotes in the +endnotes list, set man.endnotes.are.numbered +to zero. The endnotes list will +still be displayed; it will just be displayed without the +numbersIt can still make sense to have +the list of endnotes displayed even if you have endnotes numbering turned +off. In that case, your endnotes list basically becomes a “list +of references” without any association with specific text in +your document. This is probably the best option if you find the inline +endnotes numbering obtrusive. Your users will still have access to all the “out of line” +such as URLs for hyperlinks. + + +The default heading for the endnotes list is +NOTES. To change that, set a non-empty +value for the man.endnotes.list.heading +parameter. + +In the case of notesources that are links: Along with the +URL for each link, the endnotes list includes the contents of the +link. The list thus includes only non-empty + +A “non-empty” link is one that looks like +this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/">manpages</ulink> +an “empty link” is on that looks like this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/> + links. + +Empty links are never included, and never numbered. They are simply +displayed inline, without any numbering. + +In addition, if there are multiple instances of links in a +refentry that have the same URL, the URL is listed only +once. The contents listed for that link in the endnotes list are +the contents of the first link which has that URL. + +If you disable endnotes listing, you should probably also set +man.links.are.underlined to zero (to disable +link underlining). + + + + + +man.endnotes.list.heading +string + + +man.endnotes.list.heading +Specifies an alternate name for endnotes list + + + + +<xsl:param name="man.endnotes.list.heading"></xsl:param> + + + +Description + +If the value of the +man.endnotes.are.numbered parameter +and/or the man.endnotes.list.enabled +parameter is non-zero (the defaults for both are non-zero), a +numbered list of endnotes is generated near the end of each man +page. The default heading for the list of endnotes is the +equivalent of the English word NOTES in +the current locale. To cause an alternate heading to be displayed, +set a non-empty value for the +man.endnotes.list.heading parameter — +for example, REFERENCES. + + + + + +man.endnotes.are.numbered +boolean + + +man.endnotes.are.numbered +Number endnotes? + + + + +<xsl:param name="man.endnotes.are.numbered">1</xsl:param> + + + +Description + +If the value of man.endnotes.are.numbered is +non-zero (the default), then for each non-empty +A “non-empty” notesource is one that looks like +this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/">manpages</ulink> +an “empty” notesource is on that looks like this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/> + “notesource”: + + + + a number (in square brackets) is displayed inline after the + rendered inline contents (if any) of the notesource + + + the contents of the notesource are included in a + numbered list of endnotes that is generated at the end of + each man page; the number for each endnote corresponds to + the inline number for the notesource with which it is + associated + + +The default heading for the list of endnotes is +NOTES. To output a different heading, set a value +for the man.endnotes.section.heading +parameter. + + + The endnotes list is also displayed (but without + numbers) if the value of + man.endnotes.list.enabled is + non-zero. + + + +If the value of man.endnotes.are.numbered is +zero, numbering of endnotess is suppressed; only inline +contents (if any) of the notesource are displayed inline. + + If you are thinking about disabling endnote numbering by setting + the value of man.endnotes.are.numbered to zero, + before you do so, first take some time to carefully + consider the information needs and experiences of your users. The + square-bracketed numbers displayed inline after notesources may seem + obstrusive and aesthetically unpleasingAs far as notesources that are links, ytou might + think it would be better to just display URLs for non-empty + links inline, after their content, rather than displaying + square-bracketed numbers all over the place. But it's not better. In + fact, it's not even practical, because many (most) URLs for links + are too long to be displayed inline. They end up overflowing the + right margin. You can set a non-zero value for + man.break.after.slash parameter to deal with + that, but it could be argued that what you end up with is at least + as ugly, and definitely more obstrusive, then having short + square-bracketed numbers displayed inline., + + but in a text-only output format, the + numbered-notesources/endnotes-listing mechanism is the only + practical way to handle this kind of content. + + Also, users of “text based” browsers such as + lynx will already be accustomed to seeing inline + numbers for links. And various "man to html" applications, such as + the widely used man2html (VH-Man2html) + application, can automatically turn URLs into "real" HTML hyperlinks + in output. So leaving man.endnotes.are.numbered + at its default (non-zero) value ensures that no information is + lost in your man-page output. It just gets + “rearranged”. + + +The handling of empty links is not affected by this +parameter. Empty links are handled simply by displaying their URLs +inline. Empty links are never auto-numbered. + +If you disable endnotes numbering, you should probably also set +man.font.links to an empty value (to +disable font formatting for links. + + +Related Parameters + man.endnotes.list.enabled, + man.font.links + + + + + + man.base.url.for.relative.links + string + + + man.base.url.for.relative.links + Specifies a base URL for relative links + + + + <xsl:param name="man.base.url.for.relative.links">[set $man.base.url.for.relative.links]/</xsl:param> + + + Description + + For any “notesource” listed in the auto-generated + “NOTES” section of output man pages (which is generated when + the value of the + man.endnotes.list.enabled parameter + is non-zero), if the notesource is a link source with a + relative URI, the URI is displayed in output with the value + of the + man.base.url.for.relative.links + parameter prepended to the value of the link URI. + + + A link source is an notesource that references an + external resource: + + + a ulink element with a url attribute + + + any element with an xlink:href attribute + + + an imagedata, audiodata, or + videodata element + + + + + + If you use relative URIs in link sources in your DocBook + refentry source, and you leave + man.base.url.for.relative.links + unset, the relative links will appear “as is” in the “Notes” + section of any man-page output generated from your source. + That’s probably not what you want, because such relative + links are only usable in the context of HTML output. So, to + make the links meaningful and usable in the context of + man-page output, set a value for + man.base.url.for.relative.links that + points to the online version of HTML output generated from + your DocBook refentry source. For + example: + <xsl:param name="man.base.url.for.relative.links" + >http://www.kernel.org/pub/software/scm/git/docs/</xsl:param> + + + + + Related Parameters + man.endnotes.list.enabled + + + + + + + Lists + + +man.segtitle.suppress +boolean + + +man.segtitle.suppress +Suppress display of segtitle contents? + + + + +<xsl:param name="man.segtitle.suppress" select="0"></xsl:param> + + +Description + +If the value of man.segtitle.suppress is +non-zero, then display of segtitle contents is +suppressed in output. + + + + + + + Character/string substitution + + +man.charmap.enabled +boolean + + +man.charmap.enabled +Apply character map before final output? + + + + +<xsl:param name="man.charmap.enabled" select="1"></xsl:param> + + + +Description + +If the value of the man.charmap.enabled +parameter is non-zero, a "character map" is used to substitute certain +Unicode symbols and special characters with appropriate roff/groff +equivalents, just before writing each man-page file to the +filesystem. If instead the value of +man.charmap.enabled is zero, Unicode characters +are passed through "as is". + +Details + +For converting certain Unicode symbols and special characters in +UTF-8 or UTF-16 encoded XML source to appropriate groff/roff +equivalents in man-page output, the DocBook XSL Stylesheets +distribution includes a roff character map that is compliant with the XSLT character +map format as detailed in the XSLT 2.0 specification. The map +contains more than 800 character mappings and can be considered the +standard roff character map for the distribution. + +You can use the man.charmap.uri +parameter to specify a URI for the location for an alternate roff +character map to use in place of the standard roff character map +provided in the distribution. + +You can also use a subset of a character map. For details, +see the man.charmap.use.subset, +man.charmap.subset.profile, and +man.charmap.subset.profile.english +parameters. + + + + + + + +man.charmap.uri +uri + + +man.charmap.uri +URI for custom roff character map + + + + +<xsl:param name="man.charmap.uri"></xsl:param> + + + +Description + +For converting certain Unicode symbols and special characters in +UTF-8 or UTF-16 encoded XML source to appropriate groff/roff +equivalents in man-page output, the DocBook XSL Stylesheets +distribution includes an XSLT character +map. That character map can be considered the standard roff +character map for the distribution. + +If the value of the man.charmap.uri +parameter is non-empty, that value is used as the URI for the location +for an alternate roff character map to use in place of the standard +roff character map provided in the distribution. + + +Do not set a value for man.charmap.uri +unless you have a custom roff character map that differs from the +standard one provided in the distribution. + + + + + + +man.charmap.use.subset +boolean + + +man.charmap.use.subset +Use subset of character map instead of full map? + + + + +<xsl:param name="man.charmap.use.subset" select="1"></xsl:param> + + + +Description + +If the value of the +man.charmap.use.subset parameter is non-zero, +a subset of the roff character map is used instead of the full roff +character map. The profile of the subset used is determined either +by the value of the +man.charmap.subset.profile +parameter (if the source is not in English) or the +man.charmap.subset.profile.english +parameter (if the source is in English). + + + You may want to experiment with setting a non-zero value of + man.charmap.use.subset, so that the full + character map is used. Depending on which XSLT engine you run, + setting a non-zero value for + man.charmap.use.subset may significantly + increase the time needed to process your documents. Or it may + not. For example, if you set it and run it with xsltproc, it seems + to dramatically increase processing time; on the other hand, if you + set it and run it with Saxon, it does not seem to increase + processing time nearly as much. + + If processing time is not a important concern and/or you can + tolerate the increase in processing time imposed by using the full + character map, set man.charmap.use.subset to + zero. + + +Details + +For converting certain Unicode symbols and special characters in +UTF-8 or UTF-16 encoded XML source to appropriate groff/roff +equivalents in man-page output, the DocBook XSL Stylesheets +distribution includes a roff character map that is compliant with the XSLT character +map format as detailed in the XSLT 2.0 specification. The map +contains more than 800 character mappings and can be considered the +standard roff character map for the distribution. + + +You can use the man.charmap.uri +parameter to specify a URI for the location for an alternate roff +character map to use in place of the standard roff character map +provided in the distribution. + + +Because it is not terrifically efficient to use the standard +800-character character map in full -- and for most (or all) users, +never necessary to use it in full -- the DocBook XSL Stylesheets +support a mechanism for using, within any given character map, a +subset of character mappings instead of the full set. You can use the +man.charmap.subset.profile or +man.charmap.subset.profile.english +parameter to tune the profile of that subset to use. + + + + + + + +man.charmap.subset.profile +string + + +man.charmap.subset.profile +Profile of character map subset + + + + +<xsl:param name="man.charmap.subset.profile"> +@*[local-name() = 'block'] = 'Miscellaneous Technical' or +(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and + (@*[local-name() = 'class'] = 'symbols' or + @*[local-name() = 'class'] = 'letters') +) or +@*[local-name() = 'block'] = 'Latin Extended-A' +or +(@*[local-name() = 'block'] = 'General Punctuation' and + (@*[local-name() = 'class'] = 'spaces' or + @*[local-name() = 'class'] = 'dashes' or + @*[local-name() = 'class'] = 'quotes' or + @*[local-name() = 'class'] = 'bullets' + ) +) or +@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or +@*[local-name() = 'name'] = 'WORD JOINER' or +@*[local-name() = 'name'] = 'SERVICE MARK' or +@*[local-name() = 'name'] = 'TRADE MARK SIGN' or +@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE' +</xsl:param> + + + +Description + +If the value of the +man.charmap.use.subset parameter is non-zero, +and your DocBook source is not written in English (that + is, if the lang or xml:lang attribute on the root element + in your DocBook source or on the first refentry + element in your source has a value other than + en), then the character-map subset specified + by the man.charmap.subset.profile + parameter is used instead of the full roff character map. + +Otherwise, if the lang or xml:lang attribute on the root + element in your DocBook + source or on the first refentry element in your source + has the value en or if it has no lang or xml:lang attribute, then the character-map + subset specified by the + man.charmap.subset.profile.english + parameter is used instead of + man.charmap.subset.profile. + +The difference between the two subsets is that + man.charmap.subset.profile provides + mappings for characters in Western European languages that are + not part of the Roman (English) alphabet (ASCII character set). + +The value of man.charmap.subset.profile +is a string representing an XPath expression that matches attribute +names and values for output-character +elements in the character map. + +The attributes supported in the standard roff character map included in the distribution are: + + + character + + a raw Unicode character or numeric Unicode + character-entity value (either in decimal or hex); all + characters have this attribute + + + + name + + a standard full/long ISO/Unicode character name (e.g., + "OHM SIGN"); all characters have this attribute + + + + block + + a standard Unicode "block" name (e.g., "General + Punctuation"); all characters have this attribute. For the full + list of Unicode block names supported in the standard roff + character map, see . + + + + class + + a class of characters (e.g., "spaces"). Not all + characters have this attribute; currently, it is used only with + certain characters within the "C1 Controls And Latin-1 + Supplement" and "General Punctuation" blocks. For details, see + . + + + + entity + + an ISO entity name (e.g., "ohm"); not all characters + have this attribute, because not all characters have ISO entity + names; for example, of the 800 or so characters in the standard + roff character map included in the distribution, only around 300 + have ISO entity names. + + + + + string + + a string representing an roff/groff escape-code (with + "@esc@" used in place of the backslash), or a simple ASCII + string; all characters in the roff character map have this + attribute + + + + +The value of man.charmap.subset.profile +is evaluated as an XPath expression at run-time to select a portion of +the roff character map to use. You can tune the subset used by adding +or removing parts. For example, if you need to use a wide range of +mathematical operators in a document, and you want to have them +converted into roff markup properly, you might add the following: + + @*[local-name() = 'block'] ='MathematicalOperators' + +That will cause a additional set of around 67 additional "math" +characters to be converted into roff markup. + + +Depending on which XSLT engine you use, either the EXSLT +dyn:evaluate extension function (for xsltproc or +Xalan) or saxon:evaluate extension function (for +Saxon) are used to dynamically evaluate the value of +man.charmap.subset.profile at run-time. If you +don't use xsltproc, Saxon, Xalan -- or some other XSLT engine that +supports dyn:evaluate -- you must either set the +value of the man.charmap.use.subset parameter +to zero and process your documents using the full character map +instead, or set the value of the +man.charmap.enabled parameter to zero instead +(so that character-map processing is disabled completely. + + +An alternative to using +man.charmap.subset.profile is to create your +own custom character map, and set the value of +man.charmap.uri to the URI/filename for +that. If you use a custom character map, you will probably want to +include in it just the characters you want to use, and so you will +most likely also want to set the value of +man.charmap.use.subset to zero. +You can create a +custom character map by making a copy of the standard roff character map provided in the distribution, and +then adding to, changing, and/or deleting from that. + + +If you author your DocBook XML source in UTF-8 or UTF-16 +encoding and aren't sure what OSes or environments your man-page +output might end up being viewed on, and not sure what version of +nroff/groff those environments might have, you should be careful about +what Unicode symbols and special characters you use in your source and +what parts you add to the value of +man.charmap.subset.profile. +Many of the escape codes used are specific to groff and using +them may not provide the expected output on an OS or environment that +uses nroff instead of groff. +On the other hand, if you intend for your man-page output to be +viewed only on modern systems (for example, GNU/Linux systems, FreeBSD +systems, or Cygwin environments) that have a good, up-to-date groff, +then you can safely include a wide range of Unicode symbols and +special characters in your UTF-8 or UTF-16 encoded DocBook XML source +and add any of the supported Unicode block names to the value of +man.charmap.subset.profile. + + + +For other details, see the documentation for the +man.charmap.use.subset parameter. + +Supported Unicode block names and "class" values + + + Below is the full list of Unicode block names and "class" + values supported in the standard roff stylesheet provided in the + distribution, along with a description of which codepoints from the + Unicode range corresponding to that block name or block/class + combination are supported. + + + + C1 Controls And Latin-1 Supplement (Latin-1 Supplement) (x00a0 to x00ff) + class values + + + symbols + + + letters + + + + + Latin Extended-A (x0100 to x017f, partial) + + + Spacing Modifier Letters (x02b0 to x02ee, partial) + + + Greek and Coptic (x0370 to x03ff, partial) + + + General Punctuation (x2000 to x206f, partial) + class values + + + spaces + + + dashes + + + quotes + + + daggers + + + bullets + + + leaders + + + primes + + + + + + Superscripts and Subscripts (x2070 to x209f) + + + Currency Symbols (x20a0 to x20b1) + + + Letterlike Symbols (x2100 to x214b) + + + Number Forms (x2150 to x218f) + + + Arrows (x2190 to x21ff, partial) + + + Mathematical Operators (x2200 to x22ff, partial) + + + Control Pictures (x2400 to x243f) + + + Enclosed Alphanumerics (x2460 to x24ff) + + + Geometric Shapes (x25a0 to x25f7, partial) + + + Miscellaneous Symbols (x2600 to x26ff, partial) + + + Dingbats (x2700 to x27be, partial) + + + Alphabetic Presentation Forms (xfb00 to xfb04 only) + + + + + + + + +man.charmap.subset.profile.english +string + + +man.charmap.subset.profile.english +Profile of character map subset + + + + +<xsl:param name="man.charmap.subset.profile.english"> +@*[local-name() = 'block'] = 'Miscellaneous Technical' or +(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and + @*[local-name() = 'class'] = 'symbols') +or +(@*[local-name() = 'block'] = 'General Punctuation' and + (@*[local-name() = 'class'] = 'spaces' or + @*[local-name() = 'class'] = 'dashes' or + @*[local-name() = 'class'] = 'quotes' or + @*[local-name() = 'class'] = 'bullets' + ) +) or +@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or +@*[local-name() = 'name'] = 'WORD JOINER' or +@*[local-name() = 'name'] = 'SERVICE MARK' or +@*[local-name() = 'name'] = 'TRADE MARK SIGN' or +@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE' +</xsl:param> + + + +Description + +If the value of the + man.charmap.use.subset parameter is + non-zero, and your DocBook source is written in English (that + is, if its lang or xml:lang attribute on the root element + in your DocBook source or on the first refentry + element in your source has the value en or if + it has no lang or xml:lang attribute), then the + character-map subset specified by the + man.charmap.subset.profile.english + parameter is used instead of the full roff character map. + +Otherwise, if the lang or xml:lang attribute + on the root element in your DocBook source or on the first + refentry element in your source has a value other + than en, then the character-map subset + specified by the + man.charmap.subset.profile parameter is + used instead of + man.charmap.subset.profile.english. + +The difference between the two subsets is that + man.charmap.subset.profile provides + mappings for characters in Western European languages that are + not part of the Roman (English) alphabet (ASCII character set). + +The value of man.charmap.subset.profile.english +is a string representing an XPath expression that matches attribute +names and values for output-character elements in the character map. + +For other details, see the documentation for the +man.charmap.subset.profile.english and +man.charmap.use.subset parameters. + + + + + + +man.string.subst.map.local.pre +string + + +man.string.subst.map.local.pre +Specifies “local” string substitutions + + + + + <xsl:param name="man.string.subst.map.local.pre"></xsl:param> + + + +Description + +Use the man.string.subst.map.local.pre +parameter to specify any “local” string substitutions to perform over +the entire roff source for each man page before +performing the string substitutions specified by the man.string.subst.map parameter. + +For details about the format of this parameter, see the +documentation for the man.string.subst.map +parameter. + + + + + + +man.string.subst.map +rtf + + +man.string.subst.map +Specifies a set of string substitutions + + + + +<xsl:param name="man.string.subst.map"> + + <!-- * remove no-break marker at beginning of line (stylesheet artifact) --> + <ss:substitution oldstring="▒▀" newstring="▒"></ss:substitution> + <!-- * replace U+2580 no-break marker (stylesheet-added) w/ no-break space --> + <ss:substitution oldstring="▀" newstring="\ "></ss:substitution> + + <!-- ==================================================================== --> + + <!-- * squeeze multiple newlines before a roff request --> + <ss:substitution oldstring=" + +." newstring=" +."></ss:substitution> + <!-- * remove any .sp instances that directly precede a .PP --> + <ss:substitution oldstring=".sp +.PP" newstring=".PP"></ss:substitution> + <!-- * remove any .sp instances that directly follow a .PP --> + <ss:substitution oldstring=".sp +.sp" newstring=".sp"></ss:substitution> + <!-- * squeeze multiple .sp instances into a single .sp--> + <ss:substitution oldstring=".PP +.sp" newstring=".PP"></ss:substitution> + <!-- * squeeze multiple newlines after start of no-fill (verbatim) env. --> + <ss:substitution oldstring=".nf + +" newstring=".nf +"></ss:substitution> + <!-- * squeeze multiple newlines after REstoring margin --> + <ss:substitution oldstring=".RE + +" newstring=".RE +"></ss:substitution> + <!-- * U+2591 is a marker we add before and after every Parameter in --> + <!-- * Funcprototype output --> + <ss:substitution oldstring="░" newstring=" "></ss:substitution> + <!-- * U+2592 is a marker we add for the newline before output of <sbr>; --> + <ss:substitution oldstring="▒" newstring=" +"></ss:substitution> + <!-- * --> + <!-- * Now deal with some other characters that are added by the --> + <!-- * stylesheets during processing. --> + <!-- * --> + <!-- * bullet --> + <ss:substitution oldstring="•" newstring="\(bu"></ss:substitution> + <!-- * left double quote --> + <ss:substitution oldstring="“" newstring="\(lq"></ss:substitution> + <!-- * right double quote --> + <ss:substitution oldstring="”" newstring="\(rq"></ss:substitution> + <!-- * left single quote --> + <ss:substitution oldstring="‘" newstring="\(oq"></ss:substitution> + <!-- * right single quote --> + <ss:substitution oldstring="’" newstring="\(cq"></ss:substitution> + <!-- * copyright sign --> + <ss:substitution oldstring="©" newstring="\(co"></ss:substitution> + <!-- * registered sign --> + <ss:substitution oldstring="®" newstring="\(rg"></ss:substitution> + <!-- * ...servicemark... --> + <!-- * There is no groff equivalent for it. --> + <ss:substitution oldstring="℠" newstring="(SM)"></ss:substitution> + <!-- * ...trademark... --> + <!-- * We don't do "\(tm" because for console output, --> + <!-- * groff just renders that as "tm"; that is: --> + <!-- * --> + <!-- * Product&#x2122; -> Producttm --> + <!-- * --> + <!-- * So we just make it to "(TM)" instead; thus: --> + <!-- * --> + <!-- * Product&#x2122; -> Product(TM) --> + <ss:substitution oldstring="™" newstring="(TM)"></ss:substitution> + +</xsl:param> + + + +Description + +The man.string.subst.map parameter +contains a map that specifies a set of +string substitutions to perform over the entire roff source for each +man page, either just before generating final man-page output (that +is, before writing man-page files to disk) or, if the value of the +man.charmap.enabled parameter is non-zero, +before applying the roff character map. + +You can use man.string.subst.map as a +“lightweight” character map to perform “essential” substitutions -- +that is, substitutions that are always performed, +even if the value of the man.charmap.enabled +parameter is zero. For example, you can use it to replace quotation +marks or other special characters that are generated by the DocBook +XSL stylesheets for a particular locale setting (as opposed to those +characters that are actually in source XML documents), or to replace +any special characters that may be automatically generated by a +particular customization of the DocBook XSL stylesheets. + + + Do you not change value of the + man.string.subst.map parameter unless you are + sure what you are doing. First consider adding your + string-substitution mappings to either or both of the following + parameters: + + + man.string.subst.map.local.pre + applied before + man.string.subst.map + + + man.string.subst.map.local.post + applied after + man.string.subst.map + + + By default, both of those parameters contain no + string substitutions. They are intended as a means for you to + specify your own local string-substitution mappings. + + If you remove any of default mappings from the value of the + man.string.subst.map parameter, you are + likely to end up with broken output. And be very careful about adding + anything to it; it’s used for doing string substitution over the + entire roff source of each man page – it causes target strings to be + replaced in roff requests and escapes, not just in the visible + contents of the page. + + + + + + Contents of the substitution map + + The string-substitution map contains one or more + ss:substitution elements, each of which has two + attributes: + + + oldstring + + string to replace + + + + newstring + + string with which to replace oldstring + + + + It may also include XML comments (that is, delimited with + "<!--" and "-->"). + + + + + + + + +man.string.subst.map.local.post +string + + +man.string.subst.map.local.post +Specifies “local” string substitutions + + + + +<xsl:param name="man.string.subst.map.local.post"></xsl:param> + + + +Description + +Use the man.string.subst.map.local.post +parameter to specify any “local” string substitutions to perform over +the entire roff source for each man page after +performing the string substitutions specified by the man.string.subst.map parameter. + +For details about the format of this parameter, see the +documentation for the man.string.subst.map +parameter. + + + + + + + Refentry metadata gathering + + +refentry.meta.get.quietly +boolean + + +refentry.meta.get.quietly +Suppress notes and warnings when gathering refentry metadata? + + + + +<xsl:param name="refentry.meta.get.quietly" select="0"></xsl:param> + + + +Description + +If zero (the default), notes and warnings about “missing” markup +are generated during gathering of refentry metadata. If non-zero, the +metadata is gathered “quietly” -- that is, the notes and warnings are +suppressed. + + + If you are processing a large amount of refentry + content, you may be able to speed up processing significantly by + setting a non-zero value for + refentry.meta.get.quietly. + + + + + + + +refentry.date.profile +string + + +refentry.date.profile +Specifies profile for refentry "date" data + + + + +<xsl:param name="refentry.date.profile"> + (($info[//date])[last()]/date)[1]| + (($info[//pubdate])[last()]/pubdate)[1] +</xsl:param> + + + +Description + +The value of refentry.date.profile is a +string representing an XPath expression. It is evaluated at run-time +and used only if refentry.date.profile.enabled +is non-zero. Otherwise, the refentry metadata-gathering +logic "hard coded" into the stylesheets is used. + + The man(7) man page describes this content +as "the date of the last revision". In man pages, it is the content +that is usually displayed in the center footer. + + + + + + +refentry.date.profile.enabled +boolean + + +refentry.date.profile.enabled +Enable refentry "date" profiling? + + + + +<xsl:param name="refentry.date.profile.enabled">0</xsl:param> + + +Description + +If the value of +refentry.date.profile.enabled is non-zero, then +during refentry metadata gathering, the info profile +specified by the customizable +refentry.date.profile parameter is used. + +If instead the value of +refentry.date.profile.enabled is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering refentry "date" data. + +If you find that the default refentry +metadata-gathering behavior is causing incorrect "date" data to show +up in your output, then consider setting a non-zero value for +refentry.date.profile.enabled and adjusting the +value of refentry.date.profile to cause correct +data to be gathered. + +Note that the terms "source" and "date" have special meanings in +this context. For details, see the documentation for the +refentry.date.profile parameter. + + + + + + +refentry.manual.profile +string + + +refentry.manual.profile +Specifies profile for refentry "manual" data + + + + +<xsl:param name="refentry.manual.profile"> + (($info[//title])[last()]/title)[1]| + ../title/node() +</xsl:param> + + + +Description + +The value of refentry.manual.profile is +a string representing an XPath expression. It is evaluated at +run-time and used only if +refentry.manual.profile.enabled is +non-zero. Otherwise, the refentry metadata-gathering logic +"hard coded" into the stylesheets is used. + +In man pages, this content is usually displayed in the middle of +the header of the page. The man(7) man page +describes this as "the title of the manual (e.g., Linux +Programmer's Manual)". Here are some examples from +existing man pages: + + + dpkg utilities + (dpkg-name) + + + User Contributed Perl Documentation + (GET) + + + GNU Development Tools + (ld) + + + Emperor Norton Utilities + (ddate) + + + Debian GNU/Linux manual + (faked) + + + GIMP Manual Pages + (gimp) + + + KDOC Documentation System + (qt2kdoc) + + + + + + + + + +refentry.manual.profile.enabled +boolean + + +refentry.manual.profile.enabled +Enable refentry "manual" profiling? + + + + +<xsl:param name="refentry.manual.profile.enabled">0</xsl:param> + + +Description + +If the value of +refentry.manual.profile.enabled is +non-zero, then during refentry metadata gathering, the info +profile specified by the customizable +refentry.manual.profile parameter is +used. + +If instead the value of +refentry.manual.profile.enabled is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering refentry "manual" data. + +If you find that the default refentry +metadata-gathering behavior is causing incorrect "manual" data to show +up in your output, then consider setting a non-zero value for +refentry.manual.profile.enabled and adjusting +the value of refentry.manual.profile to cause +correct data to be gathered. + +Note that the term "manual" has a special meanings in this +context. For details, see the documentation for the +refentry.manual.profile parameter. + + + + + + +refentry.source.name.suppress +boolean + + +refentry.source.name.suppress +Suppress "name" part of refentry "source" contents? + + + + +<xsl:param name="refentry.source.name.suppress">0</xsl:param> + + +Description + +If the value of +refentry.source.name.suppress is non-zero, then +during refentry metadata gathering, no "source name" data +is added to the refentry "source" contents. Instead (unless +refentry.version.suppress is also non-zero), +only "version" data is added to the "source" contents. + +If you find that the refentry metadata gathering +mechanism is causing unwanted "source name" data to show up in your +output -- for example, in the footer (or possibly header) of a man +page -- then you might consider setting a non-zero value for +refentry.source.name.suppress. + +Note that the terms "source", "source name", and "version" have +special meanings in this context. For details, see the documentation +for the refentry.source.name.profile +parameter. + + + + + + +refentry.source.name.profile +string + + +refentry.source.name.profile +Specifies profile for refentry "source name" data + + + + +<xsl:param name="refentry.source.name.profile"> + (($info[//productname])[last()]/productname)[1]| + (($info[//corpname])[last()]/corpname)[1]| + (($info[//corpcredit])[last()]/corpcredit)[1]| + (($info[//corpauthor])[last()]/corpauthor)[1]| + (($info[//orgname])[last()]/orgname)[1]| + (($info[//publishername])[last()]/publishername)[1] +</xsl:param> + + + +Description + +The value of refentry.source.name.profile +is a string representing an XPath expression. It is evaluated at +run-time and used only if +refentry.source.name.profile.enabled is +non-zero. Otherwise, the refentry metadata-gathering logic +"hard coded" into the stylesheets is used. + +A "source name" is one part of a (potentially) two-part +Name Version +"source" field. In man pages, it is usually displayed in the left +footer of the page. It typically indicates the software system or +product that the item documented in the man page belongs to. The +man(7) man page describes it as "the source of +the command", and provides the following examples: + + + For binaries, use something like: GNU, NET-2, SLS + Distribution, MCC Distribution. + + + For system calls, use the version of the kernel that you + are currently looking at: Linux 0.99.11. + + + For library calls, use the source of the function: GNU, BSD + 4.3, Linux DLL 4.4.1. + + + + +In practice, there are many pages that simply have a Version +number in the "source" field. So, it looks like what we have is a +two-part field, +Name Version, +where: + + + Name + + product name (e.g., BSD) or org. name (e.g., GNU) + + + + Version + + version number + + + +Each part is optional. If the Name is a +product name, then the Version is probably +the version of the product. Or there may be no +Name, in which case, if there is a +Version, it is probably the version +of the item itself, not the product it is part of. Or, if the +Name is an organization name, then there +probably will be no Version. + + + + + +refentry.source.name.profile.enabled +boolean + + +refentry.source.name.profile.enabled +Enable refentry "source name" profiling? + + + + +<xsl:param name="refentry.source.name.profile.enabled">0</xsl:param> + + +Description + +If the value of +refentry.source.name.profile.enabled is +non-zero, then during refentry metadata gathering, the info +profile specified by the customizable +refentry.source.name.profile parameter is +used. + +If instead the value of +refentry.source.name.profile.enabled is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering refentry "source name" data. + +If you find that the default refentry +metadata-gathering behavior is causing incorrect "source name" data to +show up in your output, then consider setting a non-zero value for +refentry.source.name.profile.enabled and +adjusting the value of +refentry.source.name.profile to cause correct +data to be gathered. + +Note that the terms "source" and "source name" have special +meanings in this context. For details, see the documentation for the +refentry.source.name.profile parameter. + + + + + + +refentry.version.suppress +boolean + + +refentry.version.suppress +Suppress "version" part of refentry "source" contents? + + + + +<xsl:param name="refentry.version.suppress">0</xsl:param> + + +Description + +If the value of refentry.version.suppress +is non-zero, then during refentry metadata gathering, no +"version" data is added to the refentry "source" +contents. Instead (unless +refentry.source.name.suppress is also +non-zero), only "source name" data is added to the "source" +contents. + +If you find that the refentry metadata gathering +mechanism is causing unwanted "version" data to show up in your output +-- for example, in the footer (or possibly header) of a man page -- +then you might consider setting a non-zero value for +refentry.version.suppress. + +Note that the terms "source", "source name", and "version" have +special meanings in this context. For details, see the documentation +for the refentry.source.name.profile +parameter. + + + + + + +refentry.version.profile +string + + +refentry.version.profile +Specifies profile for refentry "version" data + + + + +<xsl:param name="refentry.version.profile"> + (($info[//productnumber])[last()]/productnumber)[1]| + (($info[//edition])[last()]/edition)[1]| + (($info[//releaseinfo])[last()]/releaseinfo)[1] +</xsl:param> + + + +Description + +The value of refentry.version.profile is +a string representing an XPath expression. It is evaluated at +run-time and used only if +refentry.version.profile.enabled is +non-zero. Otherwise, the refentry metadata-gathering logic +"hard coded" into the stylesheets is used. + +A "source.name" is one part of a (potentially) two-part +Name Version +"source" field. For more details, see the documentation for the +refentry.source.name.profile parameter. + + + + + + +refentry.version.profile.enabled +boolean + + +refentry.version.profile.enabled +Enable refentry "version" profiling? + + + + +<xsl:param name="refentry.version.profile.enabled">0</xsl:param> + + +Description + +If the value of +refentry.version.profile.enabled is +non-zero, then during refentry metadata gathering, the info +profile specified by the customizable +refentry.version.profile parameter is +used. + +If instead the value of +refentry.version.profile.enabled is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering refentry "version" data. + +If you find that the default refentry +metadata-gathering behavior is causing incorrect "version" data to show +up in your output, then consider setting a non-zero value for +refentry.version.profile.enabled and adjusting +the value of refentry.version.profile to cause +correct data to be gathered. + +Note that the terms "source" and "version" have special +meanings in this context. For details, see the documentation for the +refentry.version.profile parameter. + + + + + + +refentry.manual.fallback.profile +string + + +refentry.manual.fallback.profile +Specifies profile of "fallback" for refentry "manual" data + + + + +<xsl:param name="refentry.manual.fallback.profile"> +refmeta/refmiscinfo[not(@class = 'date')][1]/node()</xsl:param> + + + +Description + +The value of +refentry.manual.fallback.profile is a string +representing an XPath expression. It is evaluated at run-time and +used only if no "manual" data can be found by other means (that is, +either using the refentry metadata-gathering logic "hard +coded" in the stylesheets, or the value of +refentry.manual.profile, if it is +enabled). + + +Depending on which XSLT engine you run, either the EXSLT +dyn:evaluate extension function (for xsltproc or +Xalan) or saxon:evaluate extension function (for +Saxon) are used to dynamically evaluate the value of +refentry.manual.fallback.profile at +run-time. If you don't use xsltproc, Saxon, Xalan -- or some other +XSLT engine that supports dyn:evaluate -- you +must manually disable fallback processing by setting an empty value +for the refentry.manual.fallback.profile +parameter. + + + + + + + +refentry.source.fallback.profile +string + + +refentry.source.fallback.profile +Specifies profile of "fallback" for refentry "source" data + + + + +<xsl:param name="refentry.source.fallback.profile"> +refmeta/refmiscinfo[not(@class = 'date')][1]/node()</xsl:param> + + + +Description + +The value of +refentry.source.fallback.profile is a string +representing an XPath expression. It is evaluated at run-time and used +only if no "source" data can be found by other means (that is, either +using the refentry metadata-gathering logic "hard coded" in +the stylesheets, or the value of the +refentry.source.name.profile and +refentry.version.profile parameters, if those +are enabled). + + +Depending on which XSLT engine you run, either the EXSLT +dyn:evaluate extension function (for xsltproc or +Xalan) or saxon:evaluate extension function (for +Saxon) are used to dynamically evaluate the value of +refentry.source.fallback.profile at +run-time. If you don't use xsltproc, Saxon, Xalan -- or some other +XSLT engine that supports dyn:evaluate -- you +must manually disable fallback processing by setting an empty value +for the refentry.source.fallback.profile +parameter. + + + + + + + + Page header/footer + + +man.th.extra1.suppress +boolean + + +man.th.extra1.suppress +Suppress extra1 part of header/footer? + + + + +<xsl:param name="man.th.extra1.suppress">0</xsl:param> + + +Description + +If the value of man.th.extra1.suppress is +non-zero, then the extra1 part of the +.TH title line header/footer is suppressed. + +The content of the extra1 field is almost +always displayed in the center footer of the page and is, universally, +a date. + + + + + + +man.th.extra2.suppress +boolean + + +man.th.extra2.suppress +Suppress extra2 part of header/footer? + + + + +<xsl:param name="man.th.extra2.suppress">0</xsl:param> + + +Description + +If the value of man.th.extra2.suppress is +non-zero, then the extra2 part of the +.TH title line header/footer is suppressed. + +The content of the extra2 field is usually +displayed in the left footer of the page and is typically "source" +data, often in the form +Name Version; +for example, "GTK+ 1.2" (from the gtk-options(7) +man page). + + + You can use the + refentry.source.name.suppress and + refentry.version.suppress parameters to + independently suppress the Name and + Version parts of the + extra2 field. + + + + + + + +man.th.extra3.suppress +boolean + + +man.th.extra3.suppress +Suppress extra3 part of header/footer? + + + + +<xsl:param name="man.th.extra3.suppress">0</xsl:param> + + +Description + +If the value of man.th.extra3.suppress is +non-zero, then the extra3 part of the +.TH title line header/footer is +suppressed. + +The content of the extra3 field is usually +displayed in the middle header of the page and is typically a "manual +name"; for example, "GTK+ User's Manual" (from the +gtk-options(7) man page). + + + + + + +man.th.title.max.length +integer + + +man.th.title.max.length +Maximum length of title in header/footer + + + + +<xsl:param name="man.th.title.max.length">20</xsl:param> + + + +Description + +Specifies the maximum permitted length of the title part of the +man-page .TH title line header/footer. If the title +exceeds the maxiumum specified, it is truncated down to the maximum +permitted length. + +Details + + +Every man page generated using the DocBook stylesheets has a +title line, specified using the TH roff +macro. Within that title line, there is always, at a minimum, a title, +followed by a section value (representing a man "section" -- usually +just a number). + +The title and section are displayed, together, in the visible +header of each page. Where in the header they are displayed depends on +OS the man page is viewed on, and on what version of nroff/groff/man +is used for viewing the page. But, at a minimum and across all +systems, the title and section are displayed on the right-hand column +of the header. On many systems -- those with a modern groff, including +Linux systems -- they are displayed twice: both in the left and right +columns of the header. + +So if the length of the title exceeds a certain percentage of +the column width in which the page is viewed, the left and right +titles can end up overlapping, making them unreadable, or breaking to +another line, which doesn't look particularly good. + +So the stylesheets provide the +man.th.title.max.length parameter as a means +for truncating titles that exceed the maximum length that can be +viewing properly in a page header. + +The default value is reasonable but somewhat arbitrary. If you +have pages with long titles, you may want to experiment with changing +the value in order to achieve the correct aesthetic results. + + + + + + + +man.th.extra2.max.length +integer + + +man.th.extra2.max.length +Maximum length of extra2 in header/footer + + + + +<xsl:param name="man.th.extra2.max.length">30</xsl:param> + + + +Description + +Specifies the maximum permitted length of the +extra2 part of the man-page part of the +.TH title line header/footer. If the +extra2 content exceeds the maxiumum specified, it +is truncated down to the maximum permitted length. + +The content of the extra2 field is usually +displayed in the left footer of the page and is typically "source" +data indicating the software system or product that the item +documented in the man page belongs to, often in the form +Name Version; +for example, "GTK+ 1.2" (from the gtk-options(7) +man page). + +The default value for this parameter is reasonable but somewhat +arbitrary. If you are processing pages with long "source" information, +you may want to experiment with changing the value in order to achieve +the correct aesthetic results. + + + + + +man.th.extra3.max.length +integer + + +man.th.extra3.max.length +Maximum length of extra3 in header/footer + + + + +<xsl:param name="man.th.extra3.max.length">30</xsl:param> + + + +Description + +Specifies the maximum permitted length of the +extra3 part of the man-page .TH +title line header/footer. If the extra3 content +exceeds the maxiumum specified, it is truncated down to the maximum +permitted length. + +The content of the extra3 field is usually +displayed in the middle header of the page and is typically a "manual +name"; for example, "GTK+ User's Manual" (from the +gtk-options(7) man page). + +The default value for this parameter is reasonable but somewhat +arbitrary. If you are processing pages with long "manual names" -- or +especially if you are processing pages that have both long "title" +parts (command/function, etc. names) and long +manual names -- you may want to experiment with changing the value in +order to achieve the correct aesthetic results. + + + + + + Output + + + man.output.manifest.enabled + boolean + + + man.output.manifest.enabled + Generate a manifest file? + + + + <xsl:param name="man.output.manifest.enabled" select="0"></xsl:param> + + + Description + + If non-zero, a list of filenames for man pages generated by + the stylesheet transformation is written to the file named by the + man.output.manifest.filename parameter. + + + + + + + man.output.manifest.filename + string + + + man.output.manifest.filename + Name of manifest file + + + + <xsl:param name="man.output.manifest.filename">MAN.MANIFEST</xsl:param> + + + Description + + The man.output.manifest.filename parameter + specifies the name of the file to which the manpages manifest file + is written (if the value of the + man.output.manifest.enabled parameter is + non-zero). + + + + + + +man.output.in.separate.dir +boolean + + +man.output.in.separate.dir +Output man-page files in separate output directory? + + + + +<xsl:param name="man.output.in.separate.dir" select="0"></xsl:param> + + + +Description + +If the value of man.output.in.separate.dir +parameter is non-zero, man-page files are output in a separate +directory, specified by the man.output.base.dir +parameter; otherwise, if the value of +man.output.in.separate.dir is zero, man-page files +are not output in a separate directory. + + + + + + +man.output.lang.in.name.enabled +boolean + + +man.output.lang.in.name.enabled +Include $LANG value in man-page filename/pathname? + + + + +<xsl:param name="man.output.lang.in.name.enabled" select="0"></xsl:param> + + + +Description + + The man.output.lang.in.name.enabled + parameter specifies whether a $lang value is + included in man-page filenames and pathnames. + + If the value of + man.output.lang.in.name.enabled is non-zero, + man-page files are output with the $lang value + included in their filenames or pathnames as follows; + + + + if man.output.subdirs.enabled is + non-zero, each file is output to, e.g., a + man/$lang/man8/foo.8 + pathname + + + if man.output.subdirs.enabled is + zero, each file is output with a + foo.$lang.8 + filename + + + + + + + + + +man.output.base.dir +uri + + +man.output.base.dir +Specifies separate output directory + + + +<xsl:param name="man.output.base.dir">man/</xsl:param> + + +Description + +The man.output.base.dir parameter +specifies the base directory into which man-page files are output. The +man.output.subdirs.enabled parameter controls +whether the files are output in subdirectories within the base +directory. + + + The values of the man.output.base.dir + and man.output.subdirs.enabled parameters are + used only if the value of + man.output.in.separate.dir parameter is + non-zero. If the value of the + man.output.in.separate.dir is zero, man-page + files are not output in a separate directory. + + + + + + + +man.output.subdirs.enabled +boolean + + +man.output.subdirs.enabled +Output man-page files in subdirectories within base output directory? + + + + +<xsl:param name="man.output.subdirs.enabled" select="1"></xsl:param> + + + +Description + +The man.output.subdirs.enabled parameter +controls whether man-pages files are output in subdirectories within +the base directory specified by the directory specified by the +man.output.base.dir parameter. + + + The values of the man.output.base.dir + and man.output.subdirs.enabled parameters are + used only if the value of + man.output.in.separate.dir parameter is + non-zero. If the value of the + man.output.in.separate.dir is zero, man-page + files are not output in a separate directory. + + + + + + + +man.output.quietly +boolean + + +man.output.quietly +Suppress filename messages emitted when generating output? + + + + +<xsl:param name="man.output.quietly" select="0"></xsl:param> + + + +Description + +If zero (the default), for each man-page file created, a message +with the name of the file is emitted. If non-zero, the files are +output "quietly" -- that is, the filename messages are +suppressed. + + + If you are processing a large amount of refentry + content, you may be able to speed up processing significantly by + setting a non-zero value for + man.output.quietly. + + + + + + + +man.output.encoding +string + + +man.output.encoding +Encoding used for man-page output + + + + +<xsl:param name="man.output.encoding">UTF-8</xsl:param> + + + +Description + +This parameter specifies the encoding to use for files generated +by the manpages stylesheet. Not all processors support specification +of this parameter. + + + If the value of the man.charmap.enabled + parameter is non-zero (the default), keeping the + man.output.encoding parameter at its default + value (UTF-8) or setting it to + UTF-16 does not cause your + man pages to be output in raw UTF-8 or UTF-16 -- because + any Unicode characters for which matches are found in the enabled + character map will be replaced with roff escape sequences before the + final man-page files are generated. + + So if you want to generate "real" UTF-8 man pages, without any + character substitution being performed on your content, you need to + set man.charmap.enabled to zero (which will + completely disable character-map processing). + + You may also need to set + man.charmap.enabled to zero if you want to + output man pages in an encoding other than UTF-8 + or UTF-16. Character-map processing is based on + Unicode character values and may not work with other output + encodings. + + + + + + + +man.output.better.ps.enabled +boolean + + +man.output.better.ps.enabled +Enable enhanced print/PostScript output? + + + +<xsl:param name="man.output.better.ps.enabled">0</xsl:param> + + +Description + +If the value of the +man.output.better.ps.enabled parameter is +non-zero, certain markup is embedded in each generated man page +such that PostScript output from the man -Tps +command for that page will include a number of enhancements +designed to improve the quality of that output. + +If man.output.better.ps.enabled is +zero (the default), no such markup is embedded in generated man +pages, and no enhancements are included in the PostScript +output generated from those man pages by the man + -Tps command. + + + The enhancements provided by this parameter rely on + features that are specific to groff (GNU troff) and that are + not part of “classic” AT&T troff or any of its + derivatives. Therefore, any man pages you generate with this + parameter enabled will be readable only on systems on which + the groff (GNU troff) program is installed, such as GNU/Linux + systems. The pages will not not be + readable on systems on with the classic troff (AT&T + troff) command is installed. + + +The value of this parameter only affects PostScript output + generated from the man command. It has no + effect on output generated using the FO backend. + + + You can generate PostScript output for any man page by + running the following command: + man FOO -Tps > FOO.ps + You can then generate PDF output by running the following + command: + ps2pdf FOO.ps + + + + + + + + Other + + +man.table.footnotes.divider +string + + +man.table.footnotes.divider +Specifies divider string that appears before table footnotes + + + + +<xsl:param name="man.table.footnotes.divider">----</xsl:param> + + + +Description + +In each table that contains footenotes, the string specified by +the man.table.footnotes.divider parameter is +output before the list of footnotes for the table. + + + + + + +man.subheading.divider.enabled +boolean + + +man.subheading.divider.enabled +Add divider comment to roff source before/after subheadings? + + + + +<xsl:param name="man.subheading.divider.enabled">0</xsl:param> + + + +Description + +If the value of the +man.subheading.divider.enabled parameter is +non-zero, the contents of the +man.subheading.divider parameter are used to +add a "divider" before and after subheadings in the roff +output. The divider is not visisble in the +rendered man page; it is added as a comment, in the source, +simply for the purpose of increasing reability of the source. + +If man.subheading.divider.enabled is zero +(the default), the subheading divider is suppressed. + + + + + + +man.subheading.divider +string + + +man.subheading.divider +Specifies string to use as divider comment before/after subheadings + + + + +<xsl:param name="man.subheading.divider">========================================================================</xsl:param> + + + +Description + +If the value of the +man.subheading.divider.enabled parameter is +non-zero, the contents of the +man.subheading.divider parameter are used to +add a "divider" before and after subheadings in the roff +output. The divider is not visisble in the +rendered man page; it is added as a comment, in the source, +simply for the purpose of increasing reability of the source. + +If man.subheading.divider.enabled is zero +(the default), the subheading divider is suppressed. + + + + + + + The Stylesheet + + The param.xsl stylesheet is just a + wrapper around all of these parameters. + + +<xsl:stylesheet exclude-result-prefixes="src" version="1.0"> + +<!-- This file is generated from param.xweb --> + +<!-- ******************************************************************** + $Id: param.xweb 8235 2009-02-09 16:22:14Z xmldoc $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<src:fragref linkend="man.authors.section.enabled.frag"></src:fragref> +<src:fragref linkend="man.break.after.slash.frag"></src:fragref> +<src:fragref linkend="man.base.url.for.relative.links.frag"></src:fragref> +<src:fragref linkend="man.charmap.enabled.frag"></src:fragref> +<src:fragref linkend="man.charmap.subset.profile.frag"></src:fragref> +<src:fragref linkend="man.charmap.subset.profile.english.frag"></src:fragref> +<src:fragref linkend="man.charmap.uri.frag"></src:fragref> +<src:fragref linkend="man.charmap.use.subset.frag"></src:fragref> +<src:fragref linkend="man.copyright.section.enabled.frag"></src:fragref> +<src:fragref linkend="man.endnotes.are.numbered.frag"></src:fragref> +<src:fragref linkend="man.endnotes.list.enabled.frag"></src:fragref> +<src:fragref linkend="man.endnotes.list.heading.frag"></src:fragref> +<src:fragref linkend="man.font.funcprototype.frag"></src:fragref> +<src:fragref linkend="man.font.funcsynopsisinfo.frag"></src:fragref> +<src:fragref linkend="man.font.links.frag"></src:fragref> +<src:fragref linkend="man.font.table.headings.frag"></src:fragref> +<src:fragref linkend="man.font.table.title.frag"></src:fragref> +<src:fragref linkend="man.funcsynopsis.style.frag"></src:fragref> +<src:fragref linkend="man.hyphenate.computer.inlines.frag"></src:fragref> +<src:fragref linkend="man.hyphenate.filenames.frag"></src:fragref> +<src:fragref linkend="man.hyphenate.frag"></src:fragref> +<src:fragref linkend="man.hyphenate.urls.frag"></src:fragref> +<src:fragref linkend="man.indent.blurbs.frag"></src:fragref> +<src:fragref linkend="man.indent.lists.frag"></src:fragref> +<src:fragref linkend="man.indent.refsect.frag"></src:fragref> +<src:fragref linkend="man.indent.verbatims.frag"></src:fragref> +<src:fragref linkend="man.indent.width.frag"></src:fragref> +<src:fragref linkend="man.justify.frag"></src:fragref> +<src:fragref linkend="man.output.base.dir.frag"></src:fragref> +<src:fragref linkend="man.output.encoding.frag"></src:fragref> +<src:fragref linkend="man.output.in.separate.dir.frag"></src:fragref> +<src:fragref linkend="man.output.lang.in.name.enabled.frag"></src:fragref> +<src:fragref linkend="man.output.manifest.enabled.frag"></src:fragref> +<src:fragref linkend="man.output.manifest.filename.frag"></src:fragref> +<src:fragref linkend="man.output.better.ps.enabled.frag"></src:fragref> +<src:fragref linkend="man.output.quietly.frag"></src:fragref> +<src:fragref linkend="man.output.subdirs.enabled.frag"></src:fragref> +<src:fragref linkend="man.segtitle.suppress.frag"></src:fragref> +<src:fragref linkend="man.string.subst.map.frag"></src:fragref> +<src:fragref linkend="man.string.subst.map.local.post.frag"></src:fragref> +<src:fragref linkend="man.string.subst.map.local.pre.frag"></src:fragref> +<src:fragref linkend="man.subheading.divider.enabled.frag"></src:fragref> +<src:fragref linkend="man.subheading.divider.frag"></src:fragref> +<src:fragref linkend="man.table.footnotes.divider.frag"></src:fragref> +<src:fragref linkend="man.th.extra1.suppress.frag"></src:fragref> +<src:fragref linkend="man.th.extra2.max.length.frag"></src:fragref> +<src:fragref linkend="man.th.extra2.suppress.frag"></src:fragref> +<src:fragref linkend="man.th.extra3.max.length.frag"></src:fragref> +<src:fragref linkend="man.th.extra3.suppress.frag"></src:fragref> +<src:fragref linkend="man.th.title.max.length.frag"></src:fragref> +<src:fragref linkend="refentry.date.profile.enabled.frag"></src:fragref> +<src:fragref linkend="refentry.date.profile.frag"></src:fragref> +<src:fragref linkend="refentry.manual.fallback.profile.frag"></src:fragref> +<src:fragref linkend="refentry.manual.profile.enabled.frag"></src:fragref> +<src:fragref linkend="refentry.manual.profile.frag"></src:fragref> +<src:fragref linkend="refentry.meta.get.quietly.frag"></src:fragref> +<src:fragref linkend="refentry.source.fallback.profile.frag"></src:fragref> +<src:fragref linkend="refentry.source.name.profile.enabled.frag"></src:fragref> +<src:fragref linkend="refentry.source.name.profile.frag"></src:fragref> +<src:fragref linkend="refentry.source.name.suppress.frag"></src:fragref> +<src:fragref linkend="refentry.version.profile.enabled.frag"></src:fragref> +<src:fragref linkend="refentry.version.profile.frag"></src:fragref> +<src:fragref linkend="refentry.version.suppress.frag"></src:fragref> +</xsl:stylesheet> + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xsl new file mode 100644 index 000000000..39d20590a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/param.xsl @@ -0,0 +1,193 @@ + + + + + + + +1 +0 +[set $man.base.url.for.relative.links]/ + + +@*[local-name() = 'block'] = 'Miscellaneous Technical' or +(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and + (@*[local-name() = 'class'] = 'symbols' or + @*[local-name() = 'class'] = 'letters') +) or +@*[local-name() = 'block'] = 'Latin Extended-A' +or +(@*[local-name() = 'block'] = 'General Punctuation' and + (@*[local-name() = 'class'] = 'spaces' or + @*[local-name() = 'class'] = 'dashes' or + @*[local-name() = 'class'] = 'quotes' or + @*[local-name() = 'class'] = 'bullets' + ) +) or +@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or +@*[local-name() = 'name'] = 'WORD JOINER' or +@*[local-name() = 'name'] = 'SERVICE MARK' or +@*[local-name() = 'name'] = 'TRADE MARK SIGN' or +@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE' + + +@*[local-name() = 'block'] = 'Miscellaneous Technical' or +(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and + @*[local-name() = 'class'] = 'symbols') +or +(@*[local-name() = 'block'] = 'General Punctuation' and + (@*[local-name() = 'class'] = 'spaces' or + @*[local-name() = 'class'] = 'dashes' or + @*[local-name() = 'class'] = 'quotes' or + @*[local-name() = 'class'] = 'bullets' + ) +) or +@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or +@*[local-name() = 'name'] = 'WORD JOINER' or +@*[local-name() = 'name'] = 'SERVICE MARK' or +@*[local-name() = 'name'] = 'TRADE MARK SIGN' or +@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE' + + + +1 +1 +1 + + BI + B +B + B + B +ansi +0 +0 +0 +0 + + + + +4 +0 +man/ +UTF-8 + + + +MAN.MANIFEST +0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +0 +======================================================================== +---- +0 +30 +0 +30 +0 +20 +0 + + (($info[//date])[last()]/date)[1]| + (($info[//pubdate])[last()]/pubdate)[1] + + +refmeta/refmiscinfo[not(@class = 'date')][1]/node() +0 + + (($info[//title])[last()]/title)[1]| + ../title/node() + + + +refmeta/refmiscinfo[not(@class = 'date')][1]/node() +0 + + (($info[//productname])[last()]/productname)[1]| + (($info[//corpname])[last()]/corpname)[1]| + (($info[//corpcredit])[last()]/corpcredit)[1]| + (($info[//corpauthor])[last()]/corpauthor)[1]| + (($info[//orgname])[last()]/orgname)[1]| + (($info[//publishername])[last()]/publishername)[1] + +0 +0 + + (($info[//productnumber])[last()]/productnumber)[1]| + (($info[//edition])[last()]/edition)[1]| + (($info[//releaseinfo])[last()]/releaseinfo)[1] + +0 + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xml new file mode 100644 index 000000000..8db98d310 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xml @@ -0,0 +1,70 @@ + + +manpages Processing Instruction Reference + + $Id: pi.xsl 7644 2008-01-16 11:04:07Z xmldoc $ + + + + Introduction + +This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for manpages output. + + +You add these PIs at particular points in a document to + cause specific “exceptions†to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + +dbman_funcsynopsis-style +Specifies presentation style for a funcsynopsis. + + + + dbman funcsynopsis-style="kr"|"ansi" + + +Description + +Use the dbman + funcsynopsis-style PI as a child of a + funcsynopsis or anywhere within a funcsynopsis + to control the presentation style for output of all + funcprototype instances within that funcsynopsis. + + Parameters + + + funcsynopsis-style="kr" + + +Displays the funcprototype in K&R style + + + + funcsynopsis-style="ansi" + + +Displays the funcprototype in ANSI style + + + + + + Related Global Parameters + +man.funcsynopsis.style + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xsl new file mode 100644 index 000000000..7b0975b83 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/pi.xsl @@ -0,0 +1,79 @@ + + + + + +manpages Processing Instruction Reference + + $Id: pi.xsl 7644 2008-01-16 11:04:07Z xmldoc $ + + + + Introduction + This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for manpages output. + + You add these PIs at particular points in a document to + cause specific “exceptions†to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + + Specifies presentation style for a funcsynopsis. + + Use the dbman + funcsynopsis-style PI as a child of a + funcsynopsis or anywhere within a funcsynopsis + to control the presentation style for output of all + funcprototype instances within that funcsynopsis. + + + dbman funcsynopsis-style="kr"|"ansi" + + + + funcsynopsis-style="kr" + + Displays the funcprototype in K&R style + + + funcsynopsis-style="ansi" + + Displays the funcprototype in ANSI style + + + + + + man.funcsynopsis.style + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/profile-docbook.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/profile-docbook.xsl new file mode 100644 index 000000000..41b14c79f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/profile-docbook.xsl @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note: namesp. cut : stripped namespace before processingNote: namesp. cut : processing stripped document + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MAN.MANIFEST + + + + + + + + + + + Erro + + + no refentry + + + No refentry elements found + + in " + + + + ... + + + + + + " + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '\" t + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .\" ----------------------------------------------------------------- + + .\" * MAIN CONTENT STARTS HERE * + + .\" ----------------------------------------------------------------- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/refentry.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/refentry.xsl new file mode 100644 index 000000000..4f6b5af99 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/refentry.xsl @@ -0,0 +1,319 @@ + + + + + + + + + + + + + .br + + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + \- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .SS " + + " + + + + + + .RS + + .RE + + + + + + + + + + + + + + + + + + + + + + + + .RS + + + + + + + .RE + + + + + + + + + + .ti (\n(SNu * 5u / 3u) + + + + + + + + + + + + + + + + + + + (\n(SNu) + + + + .RS (\n(SNu) + + .RE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \c + + .SH-xref + " + + \c" + + \& + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/synop.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/synop.xsl new file mode 100644 index 000000000..2e0b14e03 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/synop.xsl @@ -0,0 +1,432 @@ + + + + + + | + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + .HP + \w' + ( + + ) + \ 'u + + ( + + ) + \ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .br▒ + + + + + + .ad l + + + + .hy 0 + + + .HP + \w' + + + + + + + + + \ 'u + + + + + + + .ad + + + + .hy + + + + + + + + + + + + + + + + + + .ad l + + + + .hy 0 + + + + + .ad + + + + .hy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .HP + \w' + + + + + + + + + ('u + + . + + + + + + + + " + + ( + + + + + + + + + " + + + + + + + + + + + .sp + .RS + + + + + + + .RE + + + + + + + + + + + + + + ); + + + + ...); + + + + void); + + + + ...); + + + + + + + + + + + + + + + + , + + + ); + + + + + + + + + + + + , + + + ); + + + + + + + + .br + . + + + + + + + + " + + + + + ; + " + + + + + + + + + + + + + + "░" + + "░" + + + + ( + + ) + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/table.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/table.xsl new file mode 100644 index 000000000..3d9505133 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/table.xsl @@ -0,0 +1,633 @@ + + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + allbox + + + + + + + + center + + + + + + + + expand + + + + + + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + .sp + + . + + + + *[nested▀table] + + + + + + + + .TS + + + H + + + + + + + + + + + tab( + + ) + + + + ; + + + + + + + + + + + + + + + + .TH + + + + + + + + + + + .T& + + + + + + + + + + + + + + + + + + + + + + .TE + + .sp 1 + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + T{ + + T} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warn + + tbl convert + + Extracted a nested table + + + [\fInested▀table\fR]* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + + + + + + + + + + + + + + + + + + + + + + ^ + + + c + + + r + + + n + + + + l + + + + + + + + t + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ^ + + + + s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .br + + + + + + + + + ftn. + + + + + + # + + + + + + [ + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/utility.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/utility.xsl new file mode 100644 index 000000000..26a751398 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/manpages/utility.xsl @@ -0,0 +1,555 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \fB + + \fR + + + + + + + + + + + + + \fI + + \fR + + + + + + + + + + + + \FC + + + + + + \F[] + + + + + + + + .fam C + .ps -1 + + + + + + .fam + .ps +1 + + + + + + .fam C + + + + + + .fam + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \% + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .sp + + .ps +1 + + + + + + .it 1 an-trap + .nr an-no-space-flag 1 + .nr an-break-flag 1 + .br + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .sp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .RS + + + + + + + + + + + + + + + + + + + + + .RE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + .SH + + " + + + + + + + + + + + " + + + + + + + + + .\" + + + + + + + + + n + .ie + + \{\ + + + + n + .if + + \{\ + + + + .\} + .el \{\ + + + + .\} + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.notitle.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.notitle.enabled.xml new file mode 100644 index 000000000..1771f7229 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.notitle.enabled.xml @@ -0,0 +1,22 @@ + + +abstract.notitle.enabled +boolean + + +abstract.notitle.enabled +Suppress display of abstract titles? + + + + +Description +If non-zero, in output of the abstract element on titlepages, +display of the abstract title is suppressed. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.properties.xml new file mode 100644 index 000000000..e8023126a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.properties.xml @@ -0,0 +1,32 @@ + + +abstract.properties +attribute set + + +abstract.properties +Properties associated with the block surrounding an abstract + + + + + + 0.0in + 0.0in + + + + +Description + +Block styling properties for abstract. + +See also abstract.title.properties. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.title.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.title.properties.xml new file mode 100644 index 000000000..d01f70cab --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/abstract.title.properties.xml @@ -0,0 +1,39 @@ + + +abstract.title.properties +attribute set + + +abstract.title.properties +Properties for abstract titles + + + + + + + bold + always + always + + + + false + center + + + + +Description + +The properties for abstract titles. + +See also abstract.properties. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/active.toc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/active.toc.xml new file mode 100644 index 000000000..f56aee145 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/active.toc.xml @@ -0,0 +1,29 @@ + + +active.toc +boolean + + +active.toc +Active ToCs? + + + + + + + + +Description + +If non-zero, JavaScript is used to keep the ToC and the current slide +in sync. That is, each time the slide changes, the corresponding +ToC entry will be underlined. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ade.extensions.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ade.extensions.xml new file mode 100644 index 000000000..479591b93 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ade.extensions.xml @@ -0,0 +1,32 @@ + + + + ade.extensions + boolean + + + ade.extensions + Enable Adobe Digitial Editions extensions for ePub rendering? + + + + + + + + + Description + + If non-zero, +Adobe Digital Editions +extensions will be used when rendering to ePub output. Adobe Digital Editions extensions consists +rendering and layout extensions. + This parameter can also affect which graphics file formats are supported. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.extension.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.extension.xml new file mode 100644 index 000000000..a7b47ddde --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.extension.xml @@ -0,0 +1,27 @@ + + +admon.graphics.extension +string + + +admon.graphics.extension +Filename extension for admonition graphics + + + + +.png + + + +Description + +Sets the filename extension to use on admonition graphics. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.path.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.path.xml new file mode 100644 index 000000000..32b12b127 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.path.xml @@ -0,0 +1,27 @@ + + +admon.graphics.path +string + + +admon.graphics.path +Path to admonition graphics + + + +images/ + + +Description + +Sets the path to the directory containing the admonition graphics +(caution.png, important.png etc). This location is normally relative +to the output html directory. See base.dir + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.xml new file mode 100644 index 000000000..f5e5ae467 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.graphics.xml @@ -0,0 +1,29 @@ + + +admon.graphics +boolean + + +admon.graphics +Use graphics in admonitions? + + + + + + + + +Description + +If true (non-zero), admonitions are presented in an alternate style that uses +a graphic. Default graphics are provided in the distribution. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.style.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.style.xml new file mode 100644 index 000000000..5abe022b1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.style.xml @@ -0,0 +1,31 @@ + + +admon.style +string + + +admon.style +Specifies the CSS style attribute that should be added to +admonitions. + + + + + + + + +Description + +Specifies the value of the CSS style +attribute that should be added to admonitions. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.textlabel.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.textlabel.xml new file mode 100644 index 000000000..ea1a53f10 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admon.textlabel.xml @@ -0,0 +1,32 @@ + + +admon.textlabel +boolean + + +admon.textlabel +Use text label in admonitions? + + + + + + + + +Description + +If true (non-zero), admonitions are presented with a generated +text label such as Note or Warning in the appropriate language. +If zero, such labels are turned off, but any title child +of the admonition element are still output. +The default value is 1. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.properties.xml new file mode 100644 index 000000000..4dddd26b6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.properties.xml @@ -0,0 +1,25 @@ + + + admonition.properties + attribute set + + +admonition.properties +To set the style for admonitions. + + + + + + +Description +How do you want admonitions styled? +Set the font-size, weight, etc. to the style required + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.title.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.title.properties.xml new file mode 100644 index 000000000..7af23e615 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/admonition.title.properties.xml @@ -0,0 +1,32 @@ + + + + admonition.title.properties + attribute set + + +admonition.title.properties +To set the style for admonitions titles. + + + + + + 14pt + bold + false + always + + + +Description +How do you want admonitions titles styled? +Set the font-size, weight etc to the style required. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/alignment.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/alignment.xml new file mode 100644 index 000000000..9c0a3de35 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/alignment.xml @@ -0,0 +1,41 @@ + + +alignment + list + open + left + start + right + end + center + justify + + +alignment +Specify the default text alignment + + + +justify + + +Description + +The default text alignment is used for most body text. +Allowed values are +left, +right, +start, +end, +center, +justify. +The default value is justify. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotate.toc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotate.toc.xml new file mode 100644 index 000000000..667fa3211 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotate.toc.xml @@ -0,0 +1,28 @@ + + +annotate.toc +boolean + + +annotate.toc +Annotate the Table of Contents? + + + + + + +Description + +If true, TOCs will be annotated. At present, this just means +that the refpurpose of refentry +TOC entries will be displayed. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.css.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.css.xml new file mode 100644 index 000000000..560c56a73 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.css.xml @@ -0,0 +1,71 @@ + + +annotation.css +string + + +annotation.css +CSS rules for annotations + + + + + +/* ====================================================================== + Annotations +*/ + +div.annotation-list { visibility: hidden; + } + +div.annotation-nocss { position: absolute; + visibility: hidden; + } + +div.annotation-popup { position: absolute; + z-index: 4; + visibility: hidden; + padding: 0px; + margin: 2px; + border-style: solid; + border-width: 1px; + width: 200px; + background-color: white; + } + +div.annotation-title { padding: 1px; + font-weight: bold; + border-bottom-style: solid; + border-bottom-width: 1px; + color: white; + background-color: black; + } + +div.annotation-body { padding: 2px; + } + +div.annotation-body p { margin-top: 0px; + padding-top: 0px; + } + +div.annotation-close { position: absolute; + top: 2px; + right: 2px; + } + + + + +Description + +If annotation.support is enabled and the +document contains annotations, then the CSS in this +parameter will be included in the document. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.close.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.close.xml new file mode 100644 index 000000000..002ebb4a7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.close.xml @@ -0,0 +1,31 @@ + + +annotation.graphic.close +uri + + +annotation.graphic.close +Image for identifying a link that closes an annotation popup + + + + + +http://docbook.sourceforge.net/release/images/annot-close.png + + + +Description + +This image is used on popup annotations as the “x†that the +user can click to dismiss the popup. +This image is used on popup annotations as the “x†that the user can +click to dismiss the popup. It may be replaced by a user provided graphic. The size should be approximately 10x10 pixels. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.open.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.open.xml new file mode 100644 index 000000000..c7d1c323a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.graphic.open.xml @@ -0,0 +1,28 @@ + + +annotation.graphic.open +uri + + +annotation.graphic.open +Image for identifying a link that opens an annotation popup + + + + +http://docbook.sourceforge.net/release/images/annot-open.png + + + +Description + +This image is used inline to identify the location of +annotations. It may be replaced by a user provided graphic. The size should be approximately 10x10 pixels. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.js.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.js.xml new file mode 100644 index 000000000..6c7e97ebc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.js.xml @@ -0,0 +1,33 @@ + + +annotation.js +string + + +annotation.js +URIs identifying JavaScript files with support for annotation popups + + + + + + +http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js + + + + +Description + +If annotation.support is enabled and the +document contains annotations, then the URIs listed +in this parameter will be included. These JavaScript files are required +for popup annotation support. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.support.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.support.xml new file mode 100644 index 000000000..29e763336 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/annotation.support.xml @@ -0,0 +1,29 @@ + + +annotation.support +boolean + + +annotation.support +Enable annotations? + + + + + + + + +Description + +If non-zero, the stylesheets will attempt to support annotation +elements in HTML by including some JavaScript (see +annotation.js). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/appendix.autolabel.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/appendix.autolabel.xml new file mode 100644 index 000000000..bae38fa10 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/appendix.autolabel.xml @@ -0,0 +1,73 @@ + + +appendix.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +appendix.autolabel +Specifies the labeling format for Appendix titles + + + + +A + + + +Description + +If non-zero, then appendices will be numbered using the +parameter value as the number format if the value matches one of the +following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (upperalpha). + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/arbortext.extensions.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/arbortext.extensions.xml new file mode 100644 index 000000000..2e571ddb3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/arbortext.extensions.xml @@ -0,0 +1,30 @@ + + +arbortext.extensions +boolean + + +arbortext.extensions +Enable Arbortext extensions? + + + + + + +Description + +If non-zero, +Arbortext +extensions will be used. + +This parameter can also affect which graphics file formats +are supported + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/article.appendix.title.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/article.appendix.title.properties.xml new file mode 100644 index 000000000..61337a1bd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/article.appendix.title.properties.xml @@ -0,0 +1,33 @@ + + +article.appendix.title.properties +attribute set + + +article.appendix.title.properties +Properties for appendix titles that appear in an article + + + + + + + + + + + + +Description + +The properties for the title of an appendix that +appears inside an article. The default is to use +the properties of sect1 titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/author.othername.in.middle.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/author.othername.in.middle.xml new file mode 100644 index 000000000..4ad21dd34 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/author.othername.in.middle.xml @@ -0,0 +1,31 @@ + + +author.othername.in.middle +boolean + + +author.othername.in.middle +Is othername in author a +middle name? + + + + + + + +Description + +If non-zero, the othername of an author +appears between the firstname and +surname. Otherwise, othername +is suppressed. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autolayout-file.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autolayout-file.xml new file mode 100644 index 000000000..150f1237b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autolayout-file.xml @@ -0,0 +1,29 @@ + + +autolayout-file +filename + + +autolayout-file +Identifies the autolayout.xml file + + + + +autolayout.xml + + + +Description +When the source pages are spread over several directories, this +parameter can be set (for example, from the command line of a batch-mode +XSLT processor) to indicate the location of the autolayout.xml file. +FIXME: for browser-based use, there needs to be a PI for this... + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.in.hyperlink.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.in.hyperlink.xml new file mode 100644 index 000000000..dced0bd70 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.in.hyperlink.xml @@ -0,0 +1,29 @@ + + +autotoc.label.in.hyperlink +boolean + + +autotoc.label.in.hyperlink +Include label in hyperlinked titles in TOC? + + + + + + +Description + +If the value of +autotoc.label.in.hyperlink is non-zero, labels +are included in hyperlinked titles in the TOC. If it is instead zero, +labels are still displayed prior to the hyperlinked titles, but +are not hyperlinked along with the titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.separator.xml new file mode 100644 index 000000000..b9cd53a35 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/autotoc.label.separator.xml @@ -0,0 +1,27 @@ + + +autotoc.label.separator +string + + +autotoc.label.separator +Separator between labels and titles in the ToC + + + + +. + + + +Description + +String used to separate labels and titles in a table of contents. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/axf.extensions.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/axf.extensions.xml new file mode 100644 index 000000000..940a187bd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/axf.extensions.xml @@ -0,0 +1,33 @@ + + +axf.extensions +boolean + + +axf.extensions +Enable XSL Formatter extensions? + + + + + + + + +Description + +If non-zero, +XSL Formatter +extensions will be used. XSL Formatter extensions consists of PDF bookmarks, +document information and better index processing. + +This parameter can also affect which graphics file formats +are supported + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/banner.before.navigation.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/banner.before.navigation.xml new file mode 100644 index 000000000..088337807 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/banner.before.navigation.xml @@ -0,0 +1,25 @@ + + +banner.before.navigation +boolean + + +banner.before.navigation +Put banner before navigation? + + + + + + + + +Description +FIXME + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/base.dir.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/base.dir.xml new file mode 100644 index 000000000..e22ca14c2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/base.dir.xml @@ -0,0 +1,29 @@ + + +base.dir +uri + + +base.dir +The base directory of chunks + + + + + + + + +Description + +If specified, the base.dir identifies +the output directory for chunks. (If not specified, the output directory +is system dependent.) + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.item.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.item.separator.xml new file mode 100644 index 000000000..4a56ad6c1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.item.separator.xml @@ -0,0 +1,26 @@ + + +biblioentry.item.separator +string + + +biblioentry.item.separator +Text to separate bibliography entries + + + +. + + +Description + +Text to separate bibliography entries + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.properties.xml new file mode 100644 index 000000000..9e88ddb57 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/biblioentry.properties.xml @@ -0,0 +1,28 @@ + + + biblioentry.properties + attribute set + + +biblioentry.properties +To set the style for biblioentry. + + + + + 0.5in + -0.5in + + + +Description +How do you want biblioentry styled? +Set the font-size, weight, space-above and space-below, indents, etc. to the style required + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.collection.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.collection.xml new file mode 100644 index 000000000..ee49ddea4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.collection.xml @@ -0,0 +1,104 @@ + + +bibliography.collection +string + + +bibliography.collection +Name of the bibliography collection file + + + + +http://docbook.sourceforge.net/release/bibliography/bibliography.xml + + + + +Description + +Maintaining bibliography entries across a set of documents is tedious, time +consuming, and error prone. It makes much more sense, usually, to store all of +the bibliography entries in a single place and simply extract +the ones you need in each document. + +That's the purpose of the +bibliography.collection parameter. To setup a global +bibliography database, follow these steps: + +First, create a stand-alone bibliography document that contains all of +the documents that you wish to reference. Make sure that each bibliography +entry (whether you use biblioentry or bibliomixed) +has an ID. + +My global bibliography, ~/bibliography.xml begins +like this: + + +<!DOCTYPE bibliography + PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> +<bibliography><title>References</title> + +<bibliomixed id="xml-rec"><abbrev>XML 1.0</abbrev>Tim Bray, +Jean Paoli, C. M. Sperberg-McQueen, and Eve Maler, editors. +<citetitle><ulink url="http://www.w3.org/TR/REC-xml">Extensible Markup +Language (XML) 1.0 Second Edition</ulink></citetitle>. +World Wide Web Consortium, 2000. +</bibliomixed> + +<bibliomixed id="xml-names"><abbrev>Namespaces</abbrev>Tim Bray, +Dave Hollander, +and Andrew Layman, editors. +<citetitle><ulink url="http://www.w3.org/TR/REC-xml-names/">Namespaces in +XML</ulink></citetitle>. +World Wide Web Consortium, 1999. +</bibliomixed> + +<!-- ... --> +</bibliography> + + + +When you create a bibliography in your document, simply +provide empty bibliomixed +entries for each document that you wish to cite. Make sure that these +elements have the same ID as the corresponding real +entry in your global bibliography. + +For example: + + +<bibliography><title>Bibliography</title> + +<bibliomixed id="xml-rec"/> +<bibliomixed id="xml-names"/> +<bibliomixed id="DKnuth86">Donald E. Knuth. <citetitle>Computers and +Typesetting: Volume B, TeX: The Program</citetitle>. Addison-Wesley, +1986. ISBN 0-201-13437-3. +</bibliomixed> +<bibliomixed id="relaxng"/> + +</bibliography> + + +Note that it's perfectly acceptable to mix entries from your +global bibliography with normal entries. You can use +xref or other elements to cross-reference your +bibliography entries in exactly the same way you do now. + +Finally, when you are ready to format your document, simply set the +bibliography.collection parameter (in either a +customization layer or directly through your processor's interface) to +point to your global bibliography. + +The stylesheets will format the bibliography in your document as if +all of the entries referenced appeared there literally. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.numbered.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.numbered.xml new file mode 100644 index 000000000..593a1fa98 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.numbered.xml @@ -0,0 +1,27 @@ + + +bibliography.numbered +boolean + + +bibliography.numbered +Should bibliography entries be numbered? + + + + + + + + +Description + +If non-zero bibliography entries will be numbered + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.style.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.style.xml new file mode 100644 index 000000000..363e9804b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bibliography.style.xml @@ -0,0 +1,35 @@ + + +bibliography.style +list +normal +iso690 + + +bibliography.style +Style used for formatting of biblioentries. + + + + +normal + + + +Description + +Currently only normal and +iso690 styles are supported. + +In order to use ISO690 style to the full extent you might need +to use additional markup described on the +following WiKi page. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blockquote.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blockquote.properties.xml new file mode 100644 index 000000000..76d7f1c36 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blockquote.properties.xml @@ -0,0 +1,34 @@ + + + blockquote.properties + attribute set + + +blockquote.properties +To set the style for block quotations. + + + + + +0.5in +0.5in +0.5em +1em +2em + + + + +Description + +The blockquote.properties attribute set specifies +the formating properties of block quotations. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blurb.on.titlepage.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blurb.on.titlepage.enabled.xml new file mode 100644 index 000000000..27e89d75f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/blurb.on.titlepage.enabled.xml @@ -0,0 +1,31 @@ + + +blurb.on.titlepage.enabled +boolean + + +blurb.on.titlepage.enabled +Display personblurb and authorblurb on title pages? + + + + + + + + +Description + +If non-zero, output from authorblurb and +personblurb elements is displayed on title pages. If zero +(the default), output from those elements is suppressed on title pages +(unless you are using a titlepage customization +that causes them to be included). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.attributes.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.attributes.xml new file mode 100644 index 000000000..8ee1ad947 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.attributes.xml @@ -0,0 +1,31 @@ + + +body.attributes +attribute set + + +body.attributes +DEPRECATED + + + + + + white + black + #0000FF + #840084 + #0000FF + + + + +Description +DEPRECATED + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.bg.color.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.bg.color.xml new file mode 100644 index 000000000..8315b859d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.bg.color.xml @@ -0,0 +1,28 @@ + + +body.bg.color +color + + +body.bg.color +Background color for body frame + + + + +#FFFFFF + + + +Description + +Specifies the background color used in the body column of +tabular slides. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.end.indent.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.end.indent.xml new file mode 100644 index 000000000..a5e098c71 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.end.indent.xml @@ -0,0 +1,37 @@ + + +body.end.indent +length + + +body.end.indent +The end-indent for the body text + + + + +0pt + + + +Description + +This end-indent property is added to the fo:flow +for certain page sequences. Which page-sequences it is +applied to is determined by the template named +set.flow.properties. +By default, that template adds it to the flow +for page-sequences using the body +master-reference, as well as appendixes and prefaces. + + +See also body.start.indent. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.family.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.family.xml new file mode 100644 index 000000000..06c3b4790 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.family.xml @@ -0,0 +1,32 @@ + + +body.font.family +list +open +serif +sans-serif +monospace + + +body.font.family +The default font family for body text + + + + +serif + + + +Description + +The body font family is the default font used for text in the page body. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.master.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.master.xml new file mode 100644 index 000000000..323a6a052 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.master.xml @@ -0,0 +1,30 @@ + + +body.font.master + number + + +body.font.master +Specifies the default point size for body text + + + + +10 + + + +Description + +The body font size is specified in two parameters +(body.font.master and body.font.size) +so that math can be performed on the font size by XSLT. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.size.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.size.xml new file mode 100644 index 000000000..fc35ade99 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.font.size.xml @@ -0,0 +1,31 @@ + + +body.font.size +length + + +body.font.size +Specifies the default font size for body text + + + + + + pt + + + +Description + +The body font size is specified in two parameters +(body.font.master and body.font.size) +so that math can be performed on the font size by XSLT. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.bottom.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.bottom.xml new file mode 100644 index 000000000..2302f6492 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.bottom.xml @@ -0,0 +1,29 @@ + + +body.margin.bottom +length + + +body.margin.bottom +The bottom margin of the body text + + + + +0.5in + + + +Description + +The body bottom margin is the distance from the last line of text +in the page body to the bottom of the region-after. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.top.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.top.xml new file mode 100644 index 000000000..182bd9fd3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.margin.top.xml @@ -0,0 +1,28 @@ + + +body.margin.top +length + + +body.margin.top +To specify the size of the top margin of a page + + + + +0.5in + + + +Description + +The body top margin is the distance from the top of the +region-before to the first line of text in the page body. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.start.indent.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.start.indent.xml new file mode 100644 index 000000000..4e348f1c7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/body.start.indent.xml @@ -0,0 +1,64 @@ + + +body.start.indent +length + + +body.start.indent +The start-indent for the body text + + + + + + + 0pt + 0pt + 4pc + + + + + +Description + +This parameter provides +the means of indenting the body text relative to +section titles. +For left-to-right text direction, it indents the left side. +For right-to-left text direction, it indents the right side. +It is used in place of the +title.margin.left for +all XSL-FO processors except FOP 0.25. +It enables support for side floats to appear +in the indented margin area. + +This start-indent property is added to the fo:flow +for certain page sequences. Which page-sequences it is +applied to is determined by the template named +set.flow.properties. +By default, that template adds it to the flow +for page-sequences using the body +master-reference, as well as appendixes and prefaces. + +If this parameter is used, section titles should have +a start-indent value of 0pt if they are to be +outdented relative to the body text. + + +If you are using FOP, then set this parameter to a zero +width value and set the title.margin.left +parameter to the negative value of the desired indent. + + +See also body.end.indent and +title.margin.left. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bookmarks.collapse.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bookmarks.collapse.xml new file mode 100644 index 000000000..332005692 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bookmarks.collapse.xml @@ -0,0 +1,31 @@ + + +bookmarks.collapse +boolean + + +bookmarks.collapse +Specifies the initial state of bookmarks + + + + + + + + +Description + +If non-zero, the bookmark tree is collapsed so that only the +top-level bookmarks are displayed initially. Otherwise, the whole tree +of bookmarks is displayed. + +This parameter currently works with FOP 0.93 or later. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bridgehead.in.toc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bridgehead.in.toc.xml new file mode 100644 index 000000000..490d55632 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bridgehead.in.toc.xml @@ -0,0 +1,28 @@ + + +bridgehead.in.toc +boolean + + +bridgehead.in.toc +Should bridgehead elements appear in the TOC? + + + + + + +Description + +If non-zero, bridgeheads appear in the TOC. Note that +this option is not fully supported and may be removed in a future +version of the stylesheets. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bullet.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bullet.image.xml new file mode 100644 index 000000000..acf2af55e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/bullet.image.xml @@ -0,0 +1,28 @@ + + +bullet.image +filename + + +bullet.image +Bullet image + + + + +toc/bullet.png + + + +Description + +Specifies the filename of the bullet image used for foils in the +framed ToC. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.defaultcolumn.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.defaultcolumn.xml new file mode 100644 index 000000000..6cae38134 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.defaultcolumn.xml @@ -0,0 +1,30 @@ + + +callout.defaultcolumn +integer + + +callout.defaultcolumn +Indicates what column callouts appear in by default + + + + +60 + + + +Description + +If a callout does not identify a column (for example, if it uses +the linerange unit), +it will appear in the default column. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.extension.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.extension.xml new file mode 100644 index 000000000..febc6901d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.extension.xml @@ -0,0 +1,33 @@ + + +callout.graphics.extension +string + + +callout.graphics.extension +Filename extension for callout graphics + + + + +.png +.svg + + + +Description +Sets the filename extension to use on callout graphics. + + +The Docbook XSL distribution provides callout graphics in the following formats: +SVG (extension: .svg) +PNG (extension: .png) +GIF (extension: .gif) + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.number.limit.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.number.limit.xml new file mode 100644 index 000000000..cde5267dc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.number.limit.xml @@ -0,0 +1,34 @@ + + +callout.graphics.number.limit +integer + + +callout.graphics.number.limit +Number of the largest callout graphic + + + + +15 +30 + + + +Description + +If callout.graphics is non-zero, graphics +are used to represent callout numbers instead of plain text. The value +of callout.graphics.number.limit is the largest +number for which a graphic exists. If the callout number exceeds this +limit, the default presentation "(plain text instead of a graphic)" +will be used. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.path.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.path.xml new file mode 100644 index 000000000..00e54c170 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.path.xml @@ -0,0 +1,31 @@ + + +callout.graphics.path +string + + +callout.graphics.path +Path to callout graphics + + + + +images/callouts/ + + + +Description + +Sets the path to the directory holding the callout graphics. his +location is normally relative to the output html directory. see +base.dir. Always terminate the directory with / since the graphic file +is appended to this string, hence needs the separator. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.xml new file mode 100644 index 000000000..a97ac0d79 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.graphics.xml @@ -0,0 +1,30 @@ + + +callout.graphics +boolean + + +callout.graphics +Use graphics for callouts? + + + + + + + + +Description + +If non-zero, callouts are presented with graphics (e.g., reverse-video +circled numbers instead of "(1)", "(2)", etc.). +Default graphics are provided in the distribution. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.icon.size.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.icon.size.xml new file mode 100644 index 000000000..d3acae838 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.icon.size.xml @@ -0,0 +1,28 @@ + + +callout.icon.size +length + + +callout.icon.size +Specifies the size of callout marker icons + + + + +7pt + + + +Description + +Specifies the size of the callout marker icons. +The default size is 7 points. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.list.table.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.list.table.xml new file mode 100644 index 000000000..6fece033c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.list.table.xml @@ -0,0 +1,32 @@ + + +callout.list.table +boolean + + +callout.list.table +Present callout lists using a table? + + + + + + + + +Description + +The default presentation of calloutlists uses +an HTML DL element. Some browsers don't align DLs very well +if callout.graphics is used. With this option +turned on, calloutlists are presented in an HTML +TABLE, which usually results in better alignment +of the callout number with the callout description. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.font.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.font.xml new file mode 100644 index 000000000..e63bffb61 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.font.xml @@ -0,0 +1,29 @@ + + +callout.unicode.font +string + + +callout.unicode.font +Specify a font for Unicode glyphs + + + + +ZapfDingbats + + + +Description + +The name of the font to specify around Unicode callout glyphs. +If set to the empty string, no font change will occur. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.number.limit.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.number.limit.xml new file mode 100644 index 000000000..a9f1f3dea --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.number.limit.xml @@ -0,0 +1,35 @@ + + +callout.unicode.number.limit +integer + + +callout.unicode.number.limit +Number of the largest unicode callout character + + + + +10 + + + +Description + +If callout.unicode +is non-zero, unicode characters are used to represent +callout numbers. The value of +callout.unicode.number.limit +is +the largest number for which a unicode character exists. If the callout number +exceeds this limit, the default presentation "(nnn)" will always +be used. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.start.character.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.start.character.xml new file mode 100644 index 000000000..90a1acdf4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.start.character.xml @@ -0,0 +1,33 @@ + + +callout.unicode.start.character +integer + + +callout.unicode.start.character +First Unicode character to use, decimal value. + + + + +10102 + + + +Description + +If callout.graphics is zero and callout.unicode +is non-zero, unicode characters are used to represent +callout numbers. The value of +callout.unicode.start.character +is the decimal unicode value used for callout number one. Currently, +only 10102 is supported in the stylesheets for this parameter. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.xml new file mode 100644 index 000000000..4ec6a5f30 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callout.unicode.xml @@ -0,0 +1,26 @@ + + +callout.unicode +boolean + + +callout.unicode +Use Unicode characters rather than images for callouts. + + + + + + +Description + +The stylesheets can use either an image of the numbers one to ten, or the single Unicode character which represents the numeral, in white on a black background. Use this to select the Unicode character option. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callouts.extension.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callouts.extension.xml new file mode 100644 index 000000000..80b5845aa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/callouts.extension.xml @@ -0,0 +1,30 @@ + + +callouts.extension +boolean + + +callouts.extension +Enable the callout extension + + + + + + + + +Description + +The callouts extension processes areaset +elements in programlistingco and other text-based +callout elements. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chapter.autolabel.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chapter.autolabel.xml new file mode 100644 index 000000000..32414bcc1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chapter.autolabel.xml @@ -0,0 +1,71 @@ + + +chapter.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +chapter.autolabel +Specifies the labeling format for Chapter titles + + + + + + + +Description + +If non-zero, then chapters will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (arabic). + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.append.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.append.xml new file mode 100644 index 000000000..1f65aadc9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.append.xml @@ -0,0 +1,30 @@ + + +chunk.append +string + + +chunk.append +Specifies content to append to chunked HTML output + + + + + + +Description + +Specifies content to append to the end of HTML files output by +the html/chunk.xsl stylesheet, after the closing +<html> tag. You probably don’t want to set any value +for this parameter; but if you do, the only value it should ever be +set to is a newline character: &#x0a; or +&#10; + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.first.sections.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.first.sections.xml new file mode 100644 index 000000000..f0c1b829a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.first.sections.xml @@ -0,0 +1,31 @@ + + +chunk.first.sections +boolean + + +chunk.first.sections +Chunk the first top-level section? + + + + + + + + +Description + +If non-zero, a chunk will be created for the first top-level +sect1 or section elements in +each component. Otherwise, that section will be part of the chunk for +its parent. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.quietly.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.quietly.xml new file mode 100644 index 000000000..8700b29e2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.quietly.xml @@ -0,0 +1,30 @@ + + +chunk.quietly +boolean + + +chunk.quietly +Omit the chunked filename messages. + + + + + + + + +Description + +If zero (the default), the XSL processor emits a message naming +each separate chunk filename as it is being output. +If nonzero, then the messages are suppressed. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.section.depth.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.section.depth.xml new file mode 100644 index 000000000..d46193c82 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.section.depth.xml @@ -0,0 +1,27 @@ + + +chunk.section.depth +integer + + +chunk.section.depth +Depth to which sections should be chunked + + + + + + + + +Description + +This parameter sets the depth of section chunking. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.sections.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.sections.xml new file mode 100644 index 000000000..2ffb1a3c4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.sections.xml @@ -0,0 +1,30 @@ + + +chunk.sections +boolean + + +chunk.sections +Should top-level sections be chunks in their own right? + + + + + + + + +Description + +If non-zero, chunks will be created for top-level +sect1 and section elements in +each component. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.separate.lots.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.separate.lots.xml new file mode 100644 index 000000000..aa54eabea --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.separate.lots.xml @@ -0,0 +1,36 @@ + + +chunk.separate.lots +boolean + + +chunk.separate.lots +Should each LoT be in its own separate chunk? + + + + + + + + +Description + +If non-zero, each of the ToC and LoTs +(List of Examples, List of Figures, etc.) +will be put in its own separate chunk. +The title page includes generated links to each of the separate files. + + +This feature depends on the +chunk.tocs.and.lots +parameter also being non-zero. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.toc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.toc.xml new file mode 100644 index 000000000..12cdb2caa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.toc.xml @@ -0,0 +1,30 @@ + + +chunk.toc +string + + +chunk.toc +An explicit TOC to be used for chunking + + + + + + + + +Description + +The chunk.toc identifies an explicit TOC that +will be used for chunking. This parameter is only used by the +chunktoc.xsl stylesheet (and customization layers built +from it). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.has.title.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.has.title.xml new file mode 100644 index 000000000..0bdd31b83 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.has.title.xml @@ -0,0 +1,28 @@ + + +chunk.tocs.and.lots.has.title +boolean + + +chunk.tocs.and.lots.has.title +Should ToC and LoTs in a separate chunks have title? + + + + + + + + +Description + +If non-zero title of document is shown before ToC/LoT in +separate chunk. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.xml new file mode 100644 index 000000000..2a01fffa1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunk.tocs.and.lots.xml @@ -0,0 +1,32 @@ + + +chunk.tocs.and.lots +boolean + + +chunk.tocs.and.lots +Should ToC and LoTs be in separate chunks? + + + + + + + + +Description + +If non-zero, ToC and LoT (List of Examples, List of Figures, etc.) +will be put in a separate chunk. At the moment, this chunk is not in the +normal forward/backward navigation list. Instead, a new link is added to the +navigation footer. + +This feature is still somewhat experimental. Feedback welcome. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.cdata-section-elements.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.cdata-section-elements.xml new file mode 100644 index 000000000..3e9be4d59 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.cdata-section-elements.xml @@ -0,0 +1,30 @@ + + +chunker.output.cdata-section-elements +string + + +chunker.output.cdata-section-elements +List of elements to escape with CDATA sections + + + + + + +Description +This parameter specifies the list of elements that should be escaped +as CDATA sections by the chunking stylesheet. Not all processors support +specification of this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-public.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-public.xml new file mode 100644 index 000000000..6aa6e307f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-public.xml @@ -0,0 +1,31 @@ + + +chunker.output.doctype-public +string + + +chunker.output.doctype-public +Public identifer to use in the document type of generated pages + + + + + + +Description +This parameter specifies the public identifier that should be used by +the chunking stylesheet in the document type declaration of chunked pages. +Not all processors support specification of +this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-system.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-system.xml new file mode 100644 index 000000000..2d67906d6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.doctype-system.xml @@ -0,0 +1,31 @@ + + +chunker.output.doctype-system +uri + + +chunker.output.doctype-system +System identifier to use for the document type in generated pages + + + + + + +Description +This parameter specifies the system identifier that should be used by +the chunking stylesheet in the document type declaration of chunked pages. +Not all processors support specification of +this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.encoding.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.encoding.xml new file mode 100644 index 000000000..f8993e97c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.encoding.xml @@ -0,0 +1,31 @@ + + +chunker.output.encoding +string + + +chunker.output.encoding +Encoding used in generated pages + + + +ISO-8859-1 + + +Description +This parameter specifies the encoding to be used in files +generated by the chunking stylesheet. Not all processors support +specification of this parameter. + +This parameter used to be named default.encoding. + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.indent.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.indent.xml new file mode 100644 index 000000000..3da9ad4b3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.indent.xml @@ -0,0 +1,30 @@ + + +chunker.output.indent +string + + +chunker.output.indent +Specification of indentation on generated pages + + + +no + + +Description +This parameter specifies the value of the indent +specification for generated pages. Not all processors support +specification of this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.media-type.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.media-type.xml new file mode 100644 index 000000000..61869715f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.media-type.xml @@ -0,0 +1,35 @@ + + +chunker.output.media-type +string + + +chunker.output.media-type +Media type to use in generated pages + + + + + + +Description +This parameter specifies the media type that should be used by +the chunking stylesheet. Not all processors support specification of +this parameter. + +This parameter specifies the media type that should be used by the +chunking stylesheet. This should be one from those defined in +[RFC2045] and + [RFC2046] + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. +It must be one from html, xml or text + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.method.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.method.xml new file mode 100644 index 000000000..dc9359b5f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.method.xml @@ -0,0 +1,32 @@ + + +chunker.output.method +list +html +xml + + +chunker.output.method +Method used in generated pages + + + +html + + +Description +This parameter specifies the output method to be used in files +generated by the chunking stylesheet. + +This parameter used to be named output.method. + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.omit-xml-declaration.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.omit-xml-declaration.xml new file mode 100644 index 000000000..4b8262f8a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.omit-xml-declaration.xml @@ -0,0 +1,30 @@ + + +chunker.output.omit-xml-declaration +string + + +chunker.output.omit-xml-declaration +Omit-xml-declaration for generated pages + + + +no + + +Description +This parameter specifies the value of the omit-xml-declaration +specification for generated pages. Not all processors support +specification of this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.standalone.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.standalone.xml new file mode 100644 index 000000000..8972c4733 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/chunker.output.standalone.xml @@ -0,0 +1,31 @@ + + +chunker.output.standalone +string + + +chunker.output.standalone +Standalone declaration for generated pages + + + +no + + +Description +This parameter specifies the value of the standalone + specification for generated pages. It must be either + yes or no. Not all + processors support specification of this parameter. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/citerefentry.link.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/citerefentry.link.xml new file mode 100644 index 000000000..623511b6d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/citerefentry.link.xml @@ -0,0 +1,29 @@ + + +citerefentry.link +boolean + + +citerefentry.link +Generate URL links when cross-referencing RefEntrys? + + + + + + + +Description + +If non-zero, a web link will be generated, presumably +to an online man->HTML gateway. The text of the link is +generated by the generate.citerefentry.link template. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/collect.xref.targets.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/collect.xref.targets.xml new file mode 100644 index 000000000..378c96908 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/collect.xref.targets.xml @@ -0,0 +1,33 @@ + + +collect.xref.targets +list +no +yes +only + + +collect.xref.targets +Controls whether cross reference data is +collected + + +no + + +Description + + +In order to resolve olinks efficiently, the stylesheets can +generate an external data file containing information about +all potential cross reference endpoints in a document. +This parameter determines whether the collection process is run when the document is processed by the stylesheet. The default value is no, which means the data file is not generated during processing. The other choices are yes, which means the data file is created and the document is processed for output, and only, which means the data file is created but the document is not processed for output. +See also targets.filename. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.back.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.back.xml new file mode 100644 index 000000000..95ee76db0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.back.xml @@ -0,0 +1,27 @@ + + +column.count.back +integer + + +column.count.back +Number of columns on back matter pages + + + + + + + + +Description + +Number of columns on back matter (appendix, glossary, etc.) pages. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.body.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.body.xml new file mode 100644 index 000000000..a5d65b32a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.body.xml @@ -0,0 +1,27 @@ + + +column.count.body +integer + + +column.count.body +Number of columns on body pages + + + + + + + + +Description + +Number of columns on body pages. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.front.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.front.xml new file mode 100644 index 000000000..64ff3ac01 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.front.xml @@ -0,0 +1,27 @@ + + +column.count.front +integer + + +column.count.front +Number of columns on front matter pages + + + + + + + + +Description + +Number of columns on front matter (dedication, preface, etc.) pages. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.index.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.index.xml new file mode 100644 index 000000000..e48544855 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.index.xml @@ -0,0 +1,27 @@ + + +column.count.index +integer + + +column.count.index +Number of columns on index pages + + + + +2 + + + +Description + +Number of columns on index pages. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.lot.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.lot.xml new file mode 100644 index 000000000..770988dc5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.lot.xml @@ -0,0 +1,28 @@ + + +column.count.lot +integer + + +column.count.lot +Number of columns on a 'List-of-Titles' page + + + + + + + + +Description + +Number of columns on a page sequence containing the Table of Contents, +List of Figures, etc. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.titlepage.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.titlepage.xml new file mode 100644 index 000000000..3deba6fe5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.count.titlepage.xml @@ -0,0 +1,27 @@ + + +column.count.titlepage +integer + + +column.count.titlepage +Number of columns on a title page + + + + + + + + +Description + +Number of columns on a title page + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.back.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.back.xml new file mode 100644 index 000000000..3aaa1d3f1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.back.xml @@ -0,0 +1,28 @@ + + +column.gap.back +length + + +column.gap.back +Gap between columns in back matter + + + + +12pt + + + +Description + +Specifies the gap between columns in back matter (if +column.count.back is greater than one). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.body.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.body.xml new file mode 100644 index 000000000..57b0168aa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.body.xml @@ -0,0 +1,28 @@ + + +column.gap.body +length + + +column.gap.body +Gap between columns in the body + + + + +12pt + + + +Description + +Specifies the gap between columns in body matter (if +column.count.body is greater than one). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.front.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.front.xml new file mode 100644 index 000000000..a6f7263a1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.front.xml @@ -0,0 +1,28 @@ + + +column.gap.front +length + + +column.gap.front +Gap between columns in the front matter + + + + +12pt + + + +Description + +Specifies the gap between columns in front matter (if +column.count.front is greater than one). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.index.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.index.xml new file mode 100644 index 000000000..2279f773e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.index.xml @@ -0,0 +1,28 @@ + + +column.gap.index +length + + +column.gap.index +Gap between columns in the index + + + + +12pt + + + +Description + +Specifies the gap between columns in indexes (if +column.count.index is greater than one). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.lot.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.lot.xml new file mode 100644 index 000000000..da0fa0040 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.lot.xml @@ -0,0 +1,28 @@ + + +column.gap.lot +length + + +column.gap.lot +Gap between columns on a 'List-of-Titles' page + + + + +12pt + + + +Description + +Specifies the gap between columns on 'List-of-Titles' pages (if +column.count.lot is greater than one). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.titlepage.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.titlepage.xml new file mode 100644 index 000000000..7c13dbdae --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/column.gap.titlepage.xml @@ -0,0 +1,29 @@ + + +column.gap.titlepage +length + + +column.gap.titlepage +Gap between columns on title pages + + + + +12pt + + + +Description + +Specifies the gap between columns on title pages (if +column.count.titlepage is greater than one). + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/compact.list.item.spacing.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/compact.list.item.spacing.xml new file mode 100644 index 000000000..f48f4a628 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/compact.list.item.spacing.xml @@ -0,0 +1,28 @@ + + +compact.list.item.spacing +attribute set + + +compact.list.item.spacing +What space do you want between list items (when spacing="compact")? + + + + + 0em + 0em + 0.2em + + +Description +Specify what spacing you want between each list item when +spacing is +compact. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.label.includes.part.label.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.label.includes.part.label.xml new file mode 100644 index 000000000..6dd7a6837 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.label.includes.part.label.xml @@ -0,0 +1,39 @@ + + +component.label.includes.part.label +boolean + + +component.label.includes.part.label +Do component labels include the part label? + + + + + + +Description + +If non-zero, number labels for chapter, +appendix, and other component elements are prefixed with +the label of the part element that contains them. So you might see +Chapter II.3 instead of Chapter 3. Also, the labels for formal +elements such as table and figure will include +the part label. If there is no part element container, then no prefix +is generated. + + +This feature is most useful when the +label.from.part parameter is turned on. +In that case, there would be more than one chapter +1, and the extra part label prefix will identify +each chapter unambiguously. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.title.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.title.properties.xml new file mode 100644 index 000000000..58cd4b434 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.title.properties.xml @@ -0,0 +1,40 @@ + + +component.title.properties +attribute set + + +component.title.properties +Properties for component titles + + + + + + always + + + + false + + + center + start + + + + + + + +Description + +The properties common to all component titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.titlepage.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.titlepage.properties.xml new file mode 100644 index 000000000..47179f4f6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/component.titlepage.properties.xml @@ -0,0 +1,33 @@ + + +component.titlepage.properties +attribute set + + +component.titlepage.properties +Properties for component titlepages + + + + + + + + + +Description + +The properties that are applied to the outer block containing +all the component title page information. +Its main use is to set a span="all" +property on the block that is a direct child of the flow. + +This attribute-set also applies to index titlepages. It is empty by default. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/contrib.inline.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/contrib.inline.enabled.xml new file mode 100644 index 000000000..5d5fa99c0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/contrib.inline.enabled.xml @@ -0,0 +1,26 @@ + + +contrib.inline.enabled +boolean + + +contrib.inline.enabled +Display contrib output inline? + + + +1 + + +Description + +If non-zero (the default), output of the contrib element is +displayed as inline content rather than as block content. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.bleed.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.bleed.xml new file mode 100644 index 000000000..af3420e86 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.bleed.xml @@ -0,0 +1,28 @@ + + +crop.mark.bleed +length + + +crop.mark.bleed +Length of invisible part of crop marks. + + + + +6pt + + + +Description + +Length of invisible part of crop marks. Crop marks are controlled by +crop.marks parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.offset.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.offset.xml new file mode 100644 index 000000000..cfd9bd373 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.offset.xml @@ -0,0 +1,28 @@ + + +crop.mark.offset +length + + +crop.mark.offset +Length of crop marks. + + + + +24pt + + + +Description + +Length of crop marks. Crop marks are controlled by +crop.marks parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.width.xml new file mode 100644 index 000000000..86c28b59f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.mark.width.xml @@ -0,0 +1,28 @@ + + +crop.mark.width +length + + +crop.mark.width +Width of crop marks. + + + + +0.5pt + + + +Description + +Width of crop marks. Crop marks are controlled by +crop.marks parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.marks.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.marks.xml new file mode 100644 index 000000000..c68d5a09b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/crop.marks.xml @@ -0,0 +1,28 @@ + + +crop.marks +boolean + + +crop.marks +Output crop marks? + + + + + + + + +Description + +If non-zero, crop marks will be added to each page. Currently this +works only with XEP if you have xep.extensions set. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.decoration.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.decoration.xml new file mode 100644 index 000000000..02e30266a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.decoration.xml @@ -0,0 +1,33 @@ + + +css.decoration +boolean + + +css.decoration +Enable CSS decoration of elements + + + + + + + + +Description + + +If non-zero, then html elements produced by the stylesheet may be +decorated with style attributes. For example, the +li tags produced for list items may include a +fragment of CSS in the style attribute which sets +the CSS property "list-style-type". + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.dir.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.dir.xml new file mode 100644 index 000000000..e32b17892 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.dir.xml @@ -0,0 +1,33 @@ + + +css.stylesheet.dir +uri + + +css.stylesheet.dir +Default directory for CSS stylesheets + + + + + + + + +Description + +Identifies the default directory for the CSS stylesheet +generated on all the slides. This parameter can be set in the source +document with the <?dbhtml?> pseudo-attribute +css-stylesheet-dir. + +If non-empty, this value is prepended to each of the stylesheets. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.xml new file mode 100644 index 000000000..2acc66c57 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/css.stylesheet.xml @@ -0,0 +1,29 @@ + + +css.stylesheet +uri + + +css.stylesheet +CSS stylesheet for slides + + + + +slides.css + + + +Description + +Identifies the CSS stylesheet used by all the slides. This parameter +can be set in the source document with the <?dbhtml?> pseudo-attribute +css-stylesheet. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/current.docid.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/current.docid.xml new file mode 100644 index 000000000..93616f222 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/current.docid.xml @@ -0,0 +1,27 @@ + + +current.docid +string + + +current.docid +targetdoc identifier for the document being +processed + + + + + +Description + +When olinks between documents are resolved for HTML output, the stylesheet can compute the relative path between the current document and the target document. The stylesheet needs to know the targetdoc identifiers for both documents, as they appear in the target.database.document database file. This parameter passes to the stylesheet +the targetdoc identifier of the current document, since that +identifier does not appear in the document itself. +This parameter can also be used for print output. If an olink's targetdoc id differs from the current.docid, then the stylesheet can append the target document's title to the generated olink text. That identifies to the reader that the link is to a different document, not the current document. See also olink.doctitle to enable that feature. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/currentpage.marker.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/currentpage.marker.xml new file mode 100644 index 000000000..2bccf301e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/currentpage.marker.xml @@ -0,0 +1,25 @@ + + +currentpage.marker +string + + +currentpage.marker +The text symbol used to mark the current page + + + + +@ + + + +Description +Character to use as identifying the current page in + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/custom.css.source.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/custom.css.source.xml new file mode 100644 index 000000000..24278ad57 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/custom.css.source.xml @@ -0,0 +1,119 @@ + + + custom.css.source + string + + + custom.css.source + Name of a custom CSS input file + + + + + + + Description + +The custom.css.source +parameter enables you to add CSS styles to DocBook's +HTML output. + +The parameter +specifies the name of a file containing custom +CSS styles. The file must be a well-formed XML file that +consists of a single style root +element that contains CSS styles as its text content. +For example: + + +]]> + +The filename specified by the parameter +should have a .xml +filename suffix, although that is not required. +The default value of this parameter is blank. + +If custom.css.source is not blank, then +the stylesheet takes the following actions. +These actions take place regardless of the value of +the make.clean.html parameter. + + + + The stylesheet uses the XSLT document() + function to open the file specified by the parameter and + load it into a variable. + + + The stylesheet forms an output pathname consisting of the + value of the base.dir parameter (if it is set) + and the value of custom.css.source, + with the .xml suffix stripped off. + + + + The stylesheet removes the style + wrapper element and writes just the CSS text content to the output file. + + + The stylesheet adds a link element to the + HTML HEAD element to reference this external CSS stylesheet. + For example: + <link rel="stylesheet" href="custom.css" type="text/css"> + + + + + + + +If the make.clean.html parameter is nonzero +(the default is zero), +and if the docbook.css.source parameter +is not blank (the default is not blank), +then the stylesheet will also generate a default CSS file +and add a link tag to reference it. +The link to the custom CSS comes after the +link to the default, so it should cascade properly +in most browsers. +If you do not want two link tags, and +instead want your custom CSS to import the default generated +CSS file, then do the following: + + + + + Add a line like the following to your custom CSS source file: + @import url("docbook.css") + + + + Set the docbook.css.link parameter + to zero. This will omit the link tag + that references the default CSS file. + + + +If you set make.clean.html to nonzero but +you do not want the default CSS generated, then also set +the docbook.css.source parameter to blank. +Then no default CSS will be generated, and so +all CSS styles must come from your custom CSS file. + +You can use the generate.css.header +parameter to instead write the CSS to each HTML HEAD +element in a style tag instead of an external CSS file. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.float.class.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.float.class.xml new file mode 100644 index 000000000..1078b600e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.float.class.xml @@ -0,0 +1,34 @@ + + +default.float.class +string + + +default.float.class +Specifies the default float class + + + + + + + left + before + + + + + +Description + +Selects the direction in which a float should be placed. for +xsl-fo this is before, for html it is left. For Western texts, the +before direction is the top of the page. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.image.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.image.width.xml new file mode 100644 index 000000000..0e84a7259 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.image.width.xml @@ -0,0 +1,30 @@ + + +default.image.width +length + + +default.image.width +The default width of images + + + + + + + + +Description + +If specified, this value will be used for the +width attribute on images that do not specify any +viewport dimensions. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.frame.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.frame.xml new file mode 100644 index 000000000..38c8667b9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.frame.xml @@ -0,0 +1,28 @@ + + +default.table.frame +string + + +default.table.frame +The default framing of tables + + + + +all + + + +Description + +This value will be used when there is no frame attribute on the +table. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.rules.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.rules.xml new file mode 100644 index 000000000..ed698ec23 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.rules.xml @@ -0,0 +1,76 @@ + + +default.table.rules +string + + +default.table.rules +The default column and row rules for tables using HTML markup + + + + +none + + + +Description + +Tables using HTML markup elements can use an attribute +named rules on the table or +informaltable element +to specify whether column and row border rules should be +displayed. This parameter lets you specify a global default +style for all HTML tables that don't otherwise have +that attribute. +These are the supported values: + + +all + +Rules will appear between all rows and columns. + + + +rows + +Rules will appear between rows only. + + + +cols + +Rules will appear between columns only. + + + +groups + +Rules will appear between row groups (thead, tfoot, tbody). +No support for rules between column groups yet. + + + + +none + +No rules. This is the default value. + + + + + + +The border after the last row and the border after +the last column are not affected by +this setting. Those borders are controlled by +the frame attribute on the table element. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.width.xml new file mode 100644 index 000000000..184ce52bd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.table.width.xml @@ -0,0 +1,26 @@ + + +default.table.width +length + + +default.table.width +The default width of tables + + + + + + +Description +If non-zero, this value will be used for the +width attribute on tables that do not specify an +alternate width (with the dbhtml table-width or +dbfo table-width processing instruction). + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.units.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.units.xml new file mode 100644 index 000000000..f83c82241 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/default.units.xml @@ -0,0 +1,37 @@ + + +default.units +list +cm +mm +in +pt +pc +px +em + + +default.units +Default units for an unqualified dimension + + + + +pt + + + +Description + +If an unqualified dimension is encountered (for example, in a +graphic width), the default.units will be used for the +units. Unqualified dimensions are not allowed in XSL Formatting Objects. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dingbat.font.family.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dingbat.font.family.xml new file mode 100644 index 000000000..f9719cf0a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dingbat.font.family.xml @@ -0,0 +1,33 @@ + + +dingbat.font.family +list +open +serif +sans-serif +monospace + + +dingbat.font.family +The font family for copyright, quotes, and other symbols + + + + +serif + + + +Description + +The dingbat font family is used for dingbats. If it is defined +as the empty string, no font change is effected around dingbats. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.link.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.link.xml new file mode 100644 index 000000000..6d9e6e692 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.link.xml @@ -0,0 +1,42 @@ + + +docbook.css.link +boolean + + +docbook.css.link +Insert a link referencing the default CSS stylesheet + + + + + + + + +Description + +The stylesheets are capable of generating a default +CSS stylesheet file. The parameters +make.clean.html and +docbook.css.source control that feature. + +Normally if a default CSS file is generated, then +the stylesheet inserts a link tag in the HTML +HEAD element to reference it. +However, you can omit that link reference if +you set the docbook.css.link to zero +(1 is the default). + +This parameter is useful when you want to import the +default CSS into a custom CSS file generated using the +custom.css.source parameter. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.source.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.source.xml new file mode 100644 index 000000000..8ba7eb768 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/docbook.css.source.xml @@ -0,0 +1,83 @@ + + + docbook.css.source + string + + + docbook.css.source + Name of the default CSS input file + + + + docbook.css.xml + + + Description + +The docbook.css.source parameter +specifies the name of the file containing the default DocBook +CSS styles. Those styles are necessary when the +make.clean.html parameter is nonzero. + +The file is a well-formed XML file that +must consist of a single style root +element that contains CSS styles as its text content. +The default value of the parameter (and filename) +is docbook.css.xml. +The stylesheets ship with the default file. You can substitute +your own and specify its path in this parameter. + +If docbook.css.source is not blank, +and make.clean.html is nonzero, then +the stylesheet takes the following actions: + + + + The stylesheet uses the XSLT document() + function to open the file specified by the parameter and + load it into a variable. + + + The stylesheet forms an output pathname consisting of the + value of the base.dir parameter (if it is set) + and the value of docbook.css.source, + with the .xml suffix stripped off. + + + + The stylesheet removes the style + wrapper element and writes just the CSS text content to the output file. + + + The stylesheet adds a link element to the + HTML HEAD element to reference the external CSS stylesheet. + For example: + <link rel="stylesheet" href="docbook.css" type="text/css"> + + However, if the docbook.css.link + parameter is set to zero, then no link is written + for the default CSS file. That is useful if a custom + CSS file will import the default CSS stylesheet to ensure + proper cascading of styles. + + + +If the docbook.css.source parameter +is changed from its default docbook.css.xml to blank, +then no default CSS is generated. Likewise if the +make.clean.html parameter is set to zero, +then no default CSS is generated. The +custom.css.source parameter can be used +instead to generate a complete custom CSS file. + +You can use the generate.css.header +parameter to instead write the CSS to each HTML HEAD +element in a style tag instead of an external CSS file. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/double.sided.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/double.sided.xml new file mode 100644 index 000000000..3758f1ffc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/double.sided.xml @@ -0,0 +1,31 @@ + + +double.sided +boolean + + +double.sided +Is the document to be printed double sided? + + + + + + + + +Description + +Double-sided documents are printed with a slightly wider margin +on the binding edge of the page. + +FIXME: The current set of parameters does not take writing direction +into account. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.mode.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.mode.xml new file mode 100644 index 000000000..2f62d06ef --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.mode.xml @@ -0,0 +1,36 @@ + + +draft.mode +list +no +yes +maybe + + +draft.mode +Select draft mode + + + + +no + + + +Description + +Selects draft mode. If draft.mode is +yes, the entire document will be treated +as a draft. If it is no, the entire document +will be treated as a final copy. If it is maybe, +individual sections will be treated as draft or final independently, depending +on how their status attribute is set. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.watermark.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.watermark.image.xml new file mode 100644 index 000000000..ef053a0df --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/draft.watermark.image.xml @@ -0,0 +1,27 @@ + + +draft.watermark.image +uri + + +draft.watermark.image +The URI of the image to be used for draft watermarks + + + + +images/draft.png + + + +Description + +The image to be used for draft watermarks. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dry-run.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dry-run.xml new file mode 100644 index 000000000..dd481c39b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dry-run.xml @@ -0,0 +1,27 @@ + + +dry-run +boolean + + +dry-run +Indicates that no files should be produced + + + + + + +Description +When using the XSLT processor to manage dependencies and construct +the website, this parameter can be used to suppress the generation of +new and updated files. Effectively, this allows you to see what the +stylesheet would do, without actually making any changes. +Only applies when XSLT-based chunking is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dynamic.toc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dynamic.toc.xml new file mode 100644 index 000000000..232f19e13 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/dynamic.toc.xml @@ -0,0 +1,29 @@ + + +dynamic.toc +boolean + + +dynamic.toc +Dynamic ToCs? + + + + + + + + +Description + +If non-zero, JavaScript is used to make the ToC panel dynamic. +In a dynamic ToC, each section in the ToC can be expanded and collapsed by +clicking on the appropriate image. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.assignment.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.assignment.xml new file mode 100644 index 000000000..5c8974868 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.assignment.xml @@ -0,0 +1,39 @@ + + +ebnf.assignment +rtf + + +ebnf.assignment +The EBNF production assignment operator + + + + + +::= + + + + ::= + + + + + +Description + +The ebnf.assignment parameter determines what +text is used to show assignment in productions +in productionsets. + +While ::= is common, so are several +other operators. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.statement.terminator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.statement.terminator.xml new file mode 100644 index 000000000..4e8bd1248 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.statement.terminator.xml @@ -0,0 +1,32 @@ + + +ebnf.statement.terminator +rtf + + +ebnf.statement.terminator +Punctuation that ends an EBNF statement. + + + + + + + + + +Description + +The ebnf.statement.terminator parameter determines what +text is used to terminate each production +in productionset. + +Some notations end each statement with a period. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.bgcolor.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.bgcolor.xml new file mode 100644 index 000000000..747f14006 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.bgcolor.xml @@ -0,0 +1,30 @@ + + +ebnf.table.bgcolor +color + + +ebnf.table.bgcolor +Background color for EBNF tables + + + + +#F5DCB3 + + + +Description + +Sets the background color for EBNF tables (a pale brown). No +bgcolor attribute is output if +ebnf.table.bgcolor is set to the null string. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.border.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.border.xml new file mode 100644 index 000000000..e4e50aee0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ebnf.table.border.xml @@ -0,0 +1,26 @@ + + +ebnf.table.border +boolean + + +ebnf.table.border +Selects border on EBNF tables + + + + + + +Description + +Selects the border on EBNF tables. If non-zero, the tables have +borders, otherwise they don't. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.autolabel.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.autolabel.xml new file mode 100644 index 000000000..622196e58 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.autolabel.xml @@ -0,0 +1,28 @@ + + +eclipse.autolabel +boolean + + +eclipse.autolabel +Should tree-like ToC use autonumbering feature? + + + + + + + + +Description + +If you want to include chapter and section numbers into ToC in +the left panel, set this parameter to 1. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.id.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.id.xml new file mode 100644 index 000000000..75557e55d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.id.xml @@ -0,0 +1,28 @@ + + +eclipse.plugin.id +string + + +eclipse.plugin.id +Eclipse Help plugin id + + + + +com.example.help + + + +Description + +Eclipse Help plugin id. You should change this id to something +unique for each help. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.name.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.name.xml new file mode 100644 index 000000000..0df83ec66 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.name.xml @@ -0,0 +1,27 @@ + + +eclipse.plugin.name +string + + +eclipse.plugin.name +Eclipse Help plugin name + + + + +DocBook Online Help Sample + + + +Description + +Eclipse Help plugin name. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.provider.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.provider.xml new file mode 100644 index 000000000..03261fe5c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/eclipse.plugin.provider.xml @@ -0,0 +1,27 @@ + + +eclipse.plugin.provider +string + + +eclipse.plugin.provider +Eclipse Help plugin provider name + + + + +Example provider + + + +Description + +Eclipse Help plugin provider name. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/editedby.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/editedby.enabled.xml new file mode 100644 index 000000000..78089f95a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/editedby.enabled.xml @@ -0,0 +1,27 @@ + + +editedby.enabled +boolean + + +editedby.enabled +Display “Edited by†heading above editor name? + + + +1 + + +Description + +If non-zero, a localized Edited +by heading is displayed above editor names in output of the +editor element. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.delimiters.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.delimiters.enabled.xml new file mode 100644 index 000000000..b07cd6d1b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.delimiters.enabled.xml @@ -0,0 +1,34 @@ + + +email.delimiters.enabled +boolean + + +email.delimiters.enabled +Generate delimiters around email addresses? + + + + + + + + +Description + +If non-zero, delimiters + +For delimiters, the +stylesheets are currently hard-coded to output angle +brackets. + +are generated around e-mail addresses +(the output of the email element). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.mailto.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.mailto.enabled.xml new file mode 100644 index 000000000..e4eb8d108 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/email.mailto.enabled.xml @@ -0,0 +1,29 @@ + + +email.mailto.enabled +boolean + + +email.mailto.enabled +Generate mailto: links for email addresses? + + + + + + + + +Description + +If non-zero the generated output for the email element +will be a clickable mailto: link that brings up the default mail client +on the system. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/emphasis.propagates.style.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/emphasis.propagates.style.xml new file mode 100644 index 000000000..9ff55f525 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/emphasis.propagates.style.xml @@ -0,0 +1,26 @@ + + +emphasis.propagates.style +boolean + + +emphasis.propagates.style +Pass emphasis role attribute through to HTML? + + + + + + +Description +If non-zero, the role attribute of +emphasis elements will be passed through to the HTML as a +class attribute on a span that surrounds the +emphasis. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/entry.propagates.style.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/entry.propagates.style.xml new file mode 100644 index 000000000..7f43c66eb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/entry.propagates.style.xml @@ -0,0 +1,30 @@ + + +entry.propagates.style +boolean + + +entry.propagates.style +Pass entry role attribute through to HTML? + + + + + + + + +Description + +If true, the role attribute of entry elements +will be passed through to the HTML as a class attribute on the +td or th generated for the table +cell. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/epub.autolabel.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/epub.autolabel.xml new file mode 100644 index 000000000..8a6455582 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/epub.autolabel.xml @@ -0,0 +1,28 @@ + + +epub.autolabel +boolean + + +epub.autolabel +Should tree-like ToC use autonumbering feature? + + + + + + + + +Description + +If you want to include chapter and section numbers into ToC in, +set this parameter to 1. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.number.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.number.properties.xml new file mode 100644 index 000000000..6e05d398a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.number.properties.xml @@ -0,0 +1,28 @@ + + +equation.number.properties +attribute set + + +equation.number.properties +Properties that apply to the fo:table-cell containing the number +of an equation that does not have a title. + + + + + end + center + + +Description +Properties that apply to the fo:table-cell containing the number +of an equation when it has no title. The number in an equation with a +title is formatted along with the title, and this attribute-set does not apply. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.properties.xml new file mode 100644 index 000000000..a88f6837f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/equation.properties.xml @@ -0,0 +1,27 @@ + + +equation.properties +attribute set + + +equation.properties +Properties associated with a equation + + + + + + + + +Description + +The styling for equations. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/example.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/example.properties.xml new file mode 100644 index 000000000..53e695b4d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/example.properties.xml @@ -0,0 +1,27 @@ + + +example.properties +attribute set + + +example.properties +Properties associated with a example + + + + + + + + +Description + +The styling for examples. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/exsl.node.set.available.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/exsl.node.set.available.xml new file mode 100644 index 000000000..c5d009e03 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/exsl.node.set.available.xml @@ -0,0 +1,44 @@ + + +exsl.node.set.available +boolean + + +exsl.node.set.available +Is the test function-available('exsl:node-set') true? + + + + + + 1 + 0 + + + + + +Description + +If non-zero, +then the exsl:node-set() function is available to be used in +the stylesheet. +If zero, then the function is not available. +This param automatically detects the presence of +the function and does not normally need to be set manually. + +This param was created to handle a long-standing +bug in the Xalan processor that fails to detect the +function even though it is available. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.href.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.href.xml new file mode 100644 index 000000000..bc37dafe2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.href.xml @@ -0,0 +1,28 @@ + + +feedback.href +uri + + +feedback.href +HREF (URI) for feedback link + + + + + + + + +Description +The feedback.href value is used as the value +for the href attribute on the feedback +link. If feedback.href +is empty, no feedback link is generated. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.link.text.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.link.text.xml new file mode 100644 index 000000000..c80feefaa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.link.text.xml @@ -0,0 +1,28 @@ + + +feedback.link.text +string + + +feedback.link.text +The text of the feedback link + + + + +Feedback + + + +Description +The contents of this variable is used as the text of the feedback +link if feedback.href is not empty. If +feedback.href is empty, no feedback link is +generated. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.with.ids.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.with.ids.xml new file mode 100644 index 000000000..3edfa260e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/feedback.with.ids.xml @@ -0,0 +1,27 @@ + + +feedback.with.ids +boolean + + +feedback.with.ids +Toggle use of IDs in feedback + + + + + + + + +Description +If feedback.with.ids is non-zero, the ID of the +current page will be added to the feedback link. This can be used, for +example, if the feedback.href is a CGI script. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/figure.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/figure.properties.xml new file mode 100644 index 000000000..e9f6748ac --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/figure.properties.xml @@ -0,0 +1,27 @@ + + +figure.properties +attribute set + + +figure.properties +Properties associated with a figure + + + + + + + + +Description + +The styling for figures. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/filename-prefix.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/filename-prefix.xml new file mode 100644 index 000000000..54c043d3d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/filename-prefix.xml @@ -0,0 +1,28 @@ + + +filename-prefix +string + + +filename-prefix +Prefix added to all filenames + + + + + + + + +Description +To produce the text-only (that is, non-tabular) layout +of a website simultaneously with the tabular layout, the filenames have to +be distinguished. That's accomplished by adding the +filename-prefix to the front of each filename. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/firstterm.only.link.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/firstterm.only.link.xml new file mode 100644 index 000000000..32ea30538 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/firstterm.only.link.xml @@ -0,0 +1,29 @@ + + +firstterm.only.link +boolean + + +firstterm.only.link +Does automatic glossterm linking only apply to firstterms? + + + + + + + + +Description + +If non-zero, only firstterms will be automatically linked +to the glossary. If glossary linking is not enabled, this parameter +has no effect. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.properties.xml new file mode 100644 index 000000000..11ad146bb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.properties.xml @@ -0,0 +1,37 @@ + + +foil.properties +attribute set + + +foil.properties +Specifies properties for all foils + + + + + + + + + 1in + 1in + + + + bold + + + + +Description + +This parameter specifies properties that are applied to all foils. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.subtitle.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.subtitle.properties.xml new file mode 100644 index 000000000..4832fbe34 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.subtitle.properties.xml @@ -0,0 +1,36 @@ + + +foil.subtitle.properties +attribute set + + +foil.subtitle.properties +Specifies properties for all foil subtitles + + + + + + + + + center + + pt + + 12pt + + + + +Description + +This parameter specifies properties that are applied to all foil subtitles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.master.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.master.xml new file mode 100644 index 000000000..f5ba07f32 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.master.xml @@ -0,0 +1,29 @@ + + +foil.title.master +number + + +foil.title.master +Specifies unitless font size to use for foil titles + + + + +36 + + + + +Description + +Specifies a unitless font size to use for foil titles; used in +combination with the foil.title.size +parameter. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.size.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.size.xml new file mode 100644 index 000000000..3163600ff --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foil.title.size.xml @@ -0,0 +1,32 @@ + + +foil.title.size +length + + +foil.title.size +Specifies font size to use for foil titles, including units + + + + + + pt + + + + +Description + +This parameter combines the value of the +foil.title.master parameter with a unit +specification. The default unit is pt +(points). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.properties.xml new file mode 100644 index 000000000..cd9805a46 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.properties.xml @@ -0,0 +1,31 @@ + + +foilgroup.properties +attribute set + + +foilgroup.properties +Specifies properties for all foilgroups + + + + + + + + + + + + +Description + +This parameter specifies properties that are applied to all foilgroups. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.toc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.toc.xml new file mode 100644 index 000000000..31d7cb342 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/foilgroup.toc.xml @@ -0,0 +1,29 @@ + + +foilgroup.toc +boolean + + +foilgroup.toc +Put ToC on foilgroup pages? + + + + + + + + +Description + +If non-zero, a ToC will be placed on foilgroup pages (after any +other content). + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.column.widths.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.column.widths.xml new file mode 100644 index 000000000..eca227059 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.column.widths.xml @@ -0,0 +1,80 @@ + + +footer.column.widths +string + + +footer.column.widths +Specify relative widths of footer areas + + + +1 1 1 + + +Description + +Page footers in print output use a three column table +to position text at the left, center, and right side of +the footer on the page. +This parameter lets you specify the relative sizes of the +three columns. The default value is +"1 1 1". + +The parameter value must be three numbers, separated +by white space. The first number represents the relative +width of the inside footer for +double-sided output. The second number is the relative +width of the center footer. The third number is the +relative width of the outside footer for +double-sided output. + +For single-sided output, the first number is the +relative width of left footer for left-to-right +text direction, or the right footer for right-to-left +text direction. +The third number is the +relative width of right footer for left-to-right +text direction, or the left footer for right-to-left +text direction. + +The numbers are used to specify the column widths +for the table that makes up the footer area. +In the FO output, this looks like: + + + +<fo:table-column column-number="1" + column-width="proportional-column-width(1)"/> + + + +The proportional-column-width() +function computes a column width by dividing its +argument by the total of the arguments for all the columns, and +then multiplying the result by the width of the whole table +(assuming all the column specs use the function). +Its argument can be any positive integer or floating point number. +Zero is an acceptable value, although some FO processors +may warn about it, in which case using a very small number might +be more satisfactory. + + +For example, the value "1 2 1" means the center +footer should have twice the width of the other areas. +A value of "0 0 1" means the entire footer area +is reserved for the right (or outside) footer text. +Note that to keep the center area centered on +the page, the left and right values must be +the same. A specification like "1 2 3" means the +center area is no longer centered on the page +since the right area is three times the width of the left area. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.content.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.content.properties.xml new file mode 100644 index 000000000..1212cbd16 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.content.properties.xml @@ -0,0 +1,34 @@ + + +footer.content.properties +attribute set + + +footer.content.properties +Properties of page footer content + + + + + + + + + + + + + + + +Description + +Properties of page footer content. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.hr.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.hr.xml new file mode 100644 index 000000000..d1a5bf8f9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.hr.xml @@ -0,0 +1,26 @@ + + +footer.hr +boolean + + +footer.hr +Toggle <HR> before footer + + + + + + + + +Description +If non-zero, an <HR> is generated at the bottom of each web page, +before the footer. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.rule.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.rule.xml new file mode 100644 index 000000000..6b00adeae --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.rule.xml @@ -0,0 +1,27 @@ + + +footer.rule +boolean + + +footer.rule +Rule over footers? + + + + + + + + +Description + +If non-zero, a rule will be drawn above the page footers. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.height.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.height.xml new file mode 100644 index 000000000..2f6c45e51 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.height.xml @@ -0,0 +1,32 @@ + + +footer.table.height +length + + +footer.table.height +Specify the minimum height of the table containing the running page footers + + + +14pt + + +Description + +Page footers in print output use a three column table +to position text at the left, center, and right side of +the footer on the page. +This parameter lets you specify the minimum height +of the single row in the table. +Since this specifies only the minimum height, +the table should automatically grow to fit taller content. +The default value is "14pt". + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.properties.xml new file mode 100644 index 000000000..12e67d3ed --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footer.table.properties.xml @@ -0,0 +1,30 @@ + + +footer.table.properties +attribute set + + +footer.table.properties +Apply properties to the footer layout table + + + + + + fixed + 100% + + + + +Description + +Properties applied to the table that lays out the page footer. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footers.on.blank.pages.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footers.on.blank.pages.xml new file mode 100644 index 000000000..2964f7817 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footers.on.blank.pages.xml @@ -0,0 +1,27 @@ + + +footers.on.blank.pages +boolean + + +footers.on.blank.pages +Put footers on blank pages? + + + + + + + + +Description + +If non-zero, footers will be placed on blank pages. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.font.size.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.font.size.xml new file mode 100644 index 000000000..88d0c0b22 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.font.size.xml @@ -0,0 +1,28 @@ + + +footnote.font.size +length + + +footnote.font.size +The font size for footnotes + + + + + pt + + + +Description + +The footnote font size is used for...footnotes! + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.mark.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.mark.properties.xml new file mode 100644 index 000000000..2dbc9c108 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.mark.properties.xml @@ -0,0 +1,41 @@ + + +footnote.mark.properties +attribute set + + +footnote.mark.properties +Properties applied to each footnote mark + + + + + + + + 75% + normal + normal + + + + +Description + +This attribute set is applied to the footnote mark used +for each footnote. +It should contain only inline properties. + + +The property to make the mark a superscript is contained in the +footnote template itself, because the current version of FOP reports +an error if baseline-shift is used. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.format.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.format.xml new file mode 100644 index 000000000..c323720cb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.format.xml @@ -0,0 +1,33 @@ + + +footnote.number.format +list +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +footnote.number.format +Identifies the format used for footnote numbers + + + + +1 + + + +Description + +The footnote.number.format specifies the format +to use for footnote numeration (1, i, I, a, or A). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.symbols.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.symbols.xml new file mode 100644 index 000000000..10ca7d3ca --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.number.symbols.xml @@ -0,0 +1,39 @@ + + +footnote.number.symbols + + + +footnote.number.symbols +Special characters to use as footnote markers + + + + + + + + +Description + +If footnote.number.symbols is not the empty string, +footnotes will use the characters it contains as footnote symbols. For example, +*&#x2020;&#x2021;&#x25CA;&#x2720; will identify +footnotes with *, †, ‡, +â—Š, and ✠. If there are more footnotes +than symbols, the stylesheets will fall back to numbered footnotes using +footnote.number.format. + +The use of symbols for footnotes depends on the ability of your +processor (or browser) to render the symbols you select. Not all systems are +capable of displaying the full range of Unicode characters. If the quoted characters +in the preceding paragraph are not displayed properly, that's a good indicator +that you may have trouble using those symbols for footnotes. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.properties.xml new file mode 100644 index 000000000..f62adee84 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.properties.xml @@ -0,0 +1,43 @@ + + +footnote.properties +attribute set + + +footnote.properties +Properties applied to each footnote body + + + + + + + + + normal + normal + + 0pt + 0pt + + wrap + treat-as-space + + + + +Description + +This attribute set is applied to the footnote-block +for each footnote. +It can be used to set the +font-size, font-family, and other inheritable properties that will be +applied to all footnotes. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.sep.leader.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.sep.leader.properties.xml new file mode 100644 index 000000000..27f9489d0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/footnote.sep.leader.properties.xml @@ -0,0 +1,39 @@ + + +footnote.sep.leader.properties +attribute set + + +footnote.sep.leader.properties +Properties associated with footnote separators + + + + + + black + rule + 1in + + + + +Description + +The styling for the rule line that separates the +footnotes from the body text. +These are properties applied to the fo:leader used as +the separator. + +If you want to do more than just set properties on +the leader element, then you can customize the template +named footnote.separator in +fo/pagesetup.xsl. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop.extensions.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop.extensions.xml new file mode 100644 index 000000000..e122368bc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop.extensions.xml @@ -0,0 +1,36 @@ + + +fop.extensions +boolean + + +fop.extensions +Enable extensions for FOP version 0.20.5 and earlier + + + + + + +Description + +If non-zero, extensions intended for +FOP +version 0.20.5 and earlier will be used. +At present, this consists of PDF bookmarks. + + +This parameter can also affect which graphics file formats +are supported. + +If you are using a version of FOP beyond +version 0.20.5, then use the fop1.extensions parameter +instead. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop1.extensions.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop1.extensions.xml new file mode 100644 index 000000000..dcbcf5be8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/fop1.extensions.xml @@ -0,0 +1,34 @@ + + +fop1.extensions +boolean + + +fop1.extensions +Enable extensions for FOP version 0.90 and later + + + + + + +Description + +If non-zero, extensions for +FOP +version 0.90 and later will be used. + + +This parameter can also affect which graphics file formats +are supported. + +The original fop.extensions parameter +should still be used for FOP version 0.20.5 and earlier. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.object.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.object.properties.xml new file mode 100644 index 000000000..f36aeaf71 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.object.properties.xml @@ -0,0 +1,36 @@ + + +formal.object.properties +attribute set + + +formal.object.properties +Properties associated with a formal object such as a figure, or other component that has a title + + + + + + 0.5em + 1em + 2em + 0.5em + 1em + 2em + always + + + + +Description + +The styling for formal objects in docbook. Specify the spacing +before and after the object. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.procedures.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.procedures.xml new file mode 100644 index 000000000..4f1088577 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.procedures.xml @@ -0,0 +1,28 @@ + + +formal.procedures +boolean + + +formal.procedures +Selects formal or informal procedures + + + + + + + + +Description + +Formal procedures are numbered and always have a title. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.placement.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.placement.xml new file mode 100644 index 000000000..e56f20010 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.placement.xml @@ -0,0 +1,41 @@ + + +formal.title.placement +table + + +formal.title.placement +Specifies where formal object titles should occur + + + + + +figure before +example before +equation before +table before +procedure before +task before + + + + +Description + +Specifies where formal object titles should occur. For each formal object +type (figure, +example, +equation, +table, and procedure) +you can specify either the keyword +before or +after. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.properties.xml new file mode 100644 index 000000000..898d57292 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/formal.title.properties.xml @@ -0,0 +1,34 @@ + + +formal.title.properties +attribute set + + +formal.title.properties +Style the title element of formal object such as a figure. + + + + + + bold + + + pt + + false + 0.4em + 0.6em + 0.8em + + + +Description +Specify how the title should be styled. Specify the font size and weight of the title of the formal object. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.decoration.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.decoration.xml new file mode 100644 index 000000000..44037c399 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.decoration.xml @@ -0,0 +1,30 @@ + + +funcsynopsis.decoration +boolean + + +funcsynopsis.decoration +Decorate elements of a funcsynopsis? + + + + + + + + +Description + +If non-zero, elements of the funcsynopsis will be +decorated (e.g. rendered as bold or italic text). The decoration is controlled by +templates that can be redefined in a customization layer. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.style.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.style.xml new file mode 100644 index 000000000..fc3ad85cb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/funcsynopsis.style.xml @@ -0,0 +1,31 @@ + + +funcsynopsis.style +list +ansi +kr + + +funcsynopsis.style +What style of funcsynopsis should be generated? + + + +kr + + +Description + +If funcsynopsis.style is ansi, +ANSI-style function synopses are generated for a +funcsynopsis, otherwise K&R-style +function synopses are generated. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/function.parens.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/function.parens.xml new file mode 100644 index 000000000..15d6df078 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/function.parens.xml @@ -0,0 +1,29 @@ + + +function.parens +boolean + + +function.parens +Generate parens after a function? + + + + + + + + +Description + +If non-zero, the formatting of a function element +will include generated parentheses. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.css.header.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.css.header.xml new file mode 100644 index 000000000..05965c10a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.css.header.xml @@ -0,0 +1,40 @@ + + +generate.css.header +boolean + + +generate.css.header +Insert generated CSS styles in HEAD element + + + + + + + + +Description + +The stylesheets are capable of generating both default +and custom CSS stylesheet files. The parameters +make.clean.html, +docbook.css.source, and +custom.css.source control that feature. + +If you require that CSS styles reside in the HTML +HEAD element instead of external CSS files, +then set the generate.css.header +parameter to nonzero (it is zero by default). +Then instead of generating the CSS in external files, +they are wrapped in style elements in +the HEAD element of each HTML output file. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.id.attributes.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.id.attributes.xml new file mode 100644 index 000000000..6326841d6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.id.attributes.xml @@ -0,0 +1,59 @@ + + +generate.id.attributes +boolean + + +generate.id.attributes +Generate ID attributes on container elements? + + + + + + + + +Description + +If non-zero, the HTML stylesheet will generate ID attributes on +containers. For example, the markup: + +<section id="foo"><title>Some Title</title> +<para>Some para.</para> +</section> + +might produce: + +<div class="section" id="foo"> +<h2>Some Title</h2> +<p>Some para.</p> +</div> + +The alternative is to generate anchors: + +<div class="section"> +<h2><a name="foo"></a>Some Title</h2> +<p>Some para.</p> +</div> + +Because the name attribute of +the a element and the id +attribute of other tags are both of type ID, producing both +generates invalid documents. + +As of version 1.50, you can use this switch to control which type of +identifier is generated. For backwards-compatibility, generating +a anchors is preferred. + +Note: at present, this switch is incompletely implemented. +Disabling ID attributes will suppress them, but enabling ID attributes +will not suppress the anchors. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.index.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.index.xml new file mode 100644 index 000000000..8cab35085 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.index.xml @@ -0,0 +1,25 @@ + + +generate.index +boolean + + +generate.index +Do you want an index? + + + + + + +Description + +Specify if an index should be generated. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.legalnotice.link.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.legalnotice.link.xml new file mode 100644 index 000000000..534e05050 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.legalnotice.link.xml @@ -0,0 +1,72 @@ + + +generate.legalnotice.link +boolean + + +generate.legalnotice.link +Write legalnotice to separate chunk and generate link? + + + + + + +Description + +If the value of generate.legalnotice.link +is non-zero, the stylesheet: + + + + writes the contents of legalnotice to a separate + HTML file + + + inserts a hyperlink to the legalnotice file + + + adds (in the HTML head) either a single + link or element or multiple + link elements (depending on the value of the + html.head.legalnotice.link.multiple + parameter), with the value or values derived from the + html.head.legalnotice.link.types + parameter + + + + Otherwise, if generate.legalnotice.link is + zero, legalnotice contents are rendered on the title + page. + +The name of the separate HTML file is computed as follows: + + + + If a filename is given by the dbhtml filename +processing instruction, that filename is used. + + + If the legalnotice has an id/xml:id +attribute, and if use.id.as.filename != 0, the filename +is the concatenation of the id value and the value of the html.ext +parameter. + + + If the legalnotice does not have an id/xml:id + attribute, or if use.id.as.filename = 0, the filename is the concatenation of "ln-", +auto-generated id value, and html.ext value. + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.manifest.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.manifest.xml new file mode 100644 index 000000000..b561c3609 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.manifest.xml @@ -0,0 +1,27 @@ + + + generate.manifest + boolean + + + generate.manifest + Generate a manifest file? + + + + + + + Description + + If non-zero, a list of HTML files generated by the + stylesheet transformation is written to the file named by + the manifest parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.meta.abstract.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.meta.abstract.xml new file mode 100644 index 000000000..d3ca138d3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.meta.abstract.xml @@ -0,0 +1,29 @@ + + +generate.meta.abstract +boolean + + +generate.meta.abstract +Generate HTML META element from abstract? + + + + + + + + +Description + +If non-zero, document abstracts will be reproduced in the HTML +head, with >meta name="description" content="..." + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.revhistory.link.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.revhistory.link.xml new file mode 100644 index 000000000..bd70cd91d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.revhistory.link.xml @@ -0,0 +1,50 @@ + + +generate.revhistory.link +boolean + + +generate.revhistory.link +Write revhistory to separate chunk and generate link? + + + + + + +Description + +If non-zero, the contents of revhistory are written +to a separate HTML file and a link to the file is +generated. Otherwise, revhistory contents are rendered on +the title page. + +The name of the separate HTML file is computed as follows: + + + + If a filename is given by the dbhtml filename processing instruction, +that filename is used. + + + If the revhistory has an id/xml:id +attribute, and if use.id.as.filename != 0, the filename is the concatenation of +the id value and the value of the html.ext parameter. + + + If the revhistory does not have an id/xml:id +attribute, or if use.id.as.filename = 0, the filename is the concatenation of "rh-", +auto-generated id value, and html.ext value. + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.section.toc.level.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.section.toc.level.xml new file mode 100644 index 000000000..227735a15 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.section.toc.level.xml @@ -0,0 +1,35 @@ + + +generate.section.toc.level +integer + + +generate.section.toc.level +Control depth of TOC generation in sections + + + + + + + + +Description + +The generate.section.toc.level parameter +controls the depth of section in which TOCs will be generated. Note +that this is related to, but not the same as +toc.section.depth, which controls the depth to +which TOC entries will be generated in a given TOC. +If, for example, generate.section.toc.level +is 3, TOCs will be generated in first, second, and third +level sections, but not in fourth level sections. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.toc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.toc.xml new file mode 100644 index 000000000..d23c45e63 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/generate.toc.xml @@ -0,0 +1,108 @@ + + +generate.toc +table + + +generate.toc +Control generation of ToCs and LoTs + + + + + +appendix toc,title +article/appendix nop +article toc,title +book toc,title,figure,table,example,equation +chapter toc,title +part toc,title +preface toc,title +qandadiv toc +qandaset toc +reference toc,title +sect1 toc +sect2 toc +sect3 toc +sect4 toc +sect5 toc +section toc +set toc,title + + +/appendix toc,title +article/appendix nop +/article toc,title +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title + + + + +Description + +This parameter has a structured value. It is a table of space-delimited +path/value pairs. Each path identifies some element in the source document +using a restricted subset of XPath (only the implicit child axis, no wildcards, +no predicates). Paths can be either relative or absolute. + +When processing a particular element, the stylesheets consult this table to +determine if a ToC (or LoT(s)) should be generated. + +For example, consider the entry: + +book toc,figure + +This indicates that whenever a book is formatted, a +Table Of Contents and a List of Figures should be generated. Similarly, + +/chapter toc + +indicates that whenever a document that has a root +of chapter is formatted, a Table of +Contents should be generated. The entry chapter would match +all chapters, but /chapter matches only chapter +document elements. + +Generally, the longest match wins. So, for example, if you want to distinguish +articles in books from articles in parts, you could use these two entries: + +book/article toc,figure +part/article toc + +Note that an article in a part can never match a book/article, +so if you want nothing to be generated for articles in parts, you can simply leave +that rule out. + +If you want to leave the rule in, to make it explicit that you're turning +something off, use the value nop. For example, the following +entry disables ToCs and LoTs for articles: + +article nop + +Do not simply leave the word article in the file +without a matching value. That'd be just begging the silly little +path/value parser to get confused. + +Section ToCs are further controlled by the +generate.section.toc.level parameter. +For a given section level to have a ToC, it must have both an entry in +generate.toc and be within the range enabled by +generate.section.toc.level. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.as.blocks.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.as.blocks.xml new file mode 100644 index 000000000..e18ed19ab --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.as.blocks.xml @@ -0,0 +1,38 @@ + + +glossary.as.blocks +boolean + + +glossary.as.blocks +Present glossarys using blocks instead of lists? + + + + + + + + +Description + +If non-zero, glossarys will be formatted as +blocks. + +If you have long glossterms, proper list +markup in the FO case may produce unattractive lists. By setting this +parameter, you can force the stylesheets to produce block markup +instead of proper lists. + +You can override this setting with a processing instruction as the +child of glossary: dbfo +glossary-presentation="blocks" or dbfo +glossary-presentation="list" + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.collection.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.collection.xml new file mode 100644 index 000000000..6f9828bdd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.collection.xml @@ -0,0 +1,252 @@ + + +glossary.collection +string + + +glossary.collection +Name of the glossary collection file + + + + + + + + +Description + +Glossaries maintained independently across a set of documents +are likely to become inconsistent unless considerable effort is +expended to keep them in sync. It makes much more sense, usually, to +store all of the glossary entries in a single place and simply +extract the ones you need in each document. + +That's the purpose of the +glossary.collection parameter. To setup a global +glossary database, follow these steps: + +Setting Up the Glossary Database + +First, create a stand-alone glossary document that contains all of +the entries that you wish to reference. Make sure that each glossary +entry has an ID. + +Here's an example glossary: + + + +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE glossary + PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> +<glossary> +<glossaryinfo> +<editor><firstname>Eric</firstname><surname>Raymond</surname></editor> +<title>Jargon File 4.2.3 (abridged)</title> +<releaseinfo>Just some test data</releaseinfo> +</glossaryinfo> + +<glossdiv><title>0</title> + +<glossentry> +<glossterm>0</glossterm> +<glossdef> +<para>Numeric zero, as opposed to the letter `O' (the 15th letter of +the English alphabet). In their unmodified forms they look a lot +alike, and various kluges invented to make them visually distinct have +compounded the confusion. If your zero is center-dotted and letter-O +is not, or if letter-O looks almost rectangular but zero looks more +like an American football stood on end (or the reverse), you're +probably looking at a modern character display (though the dotted zero +seems to have originated as an option on IBM 3270 controllers). If +your zero is slashed but letter-O is not, you're probably looking at +an old-style ASCII graphic set descended from the default typewheel on +the venerable ASR-33 Teletype (Scandinavians, for whom /O is a letter, +curse this arrangement). (Interestingly, the slashed zero long +predates computers; Florian Cajori's monumental "A History of +Mathematical Notations" notes that it was used in the twelfth and +thirteenth centuries.) If letter-O has a slash across it and the zero +does not, your display is tuned for a very old convention used at IBM +and a few other early mainframe makers (Scandinavians curse <emphasis>this</emphasis> +arrangement even more, because it means two of their letters collide). +Some Burroughs/Unisys equipment displays a zero with a <emphasis>reversed</emphasis> +slash. Old CDC computers rendered letter O as an unbroken oval and 0 +as an oval broken at upper right and lower left. And yet another +convention common on early line printers left zero unornamented but +added a tail or hook to the letter-O so that it resembled an inverted +Q or cursive capital letter-O (this was endorsed by a draft ANSI +standard for how to draw ASCII characters, but the final standard +changed the distinguisher to a tick-mark in the upper-left corner). +Are we sufficiently confused yet?</para> +</glossdef> +</glossentry> + +<glossentry> +<glossterm>1TBS</glossterm> +<glossdef> +<para role="accidence"> +<phrase role="pronounce"></phrase> +<phrase role="partsofspeach">n</phrase> +</para> +<para>The "One True Brace Style"</para> +<glossseealso>indent style</glossseealso> +</glossdef> +</glossentry> + +<!-- ... --> + +</glossdiv> + +<!-- ... --> + +</glossary> + + + + +Marking Up Glossary Terms + +That takes care of the glossary database, now you have to get the entries +into your document. Unlike bibliography entries, which can be empty, creating +placeholder glossary entries would be very tedious. So instead, +support for glossary.collection relies on implicit linking. + +In your source document, simply use firstterm and +glossterm to identify the terms you wish to have included +in the glossary. The stylesheets assume that you will either set the +baseform attribute correctly, or that the +content of the element exactly matches a term in your glossary. + +If you're using a glossary.collection, don't +make explicit links on the terms in your document. + +So, in your document, you might write things like this: + + +<para>This is dummy text, without any real meaning. +The point is simply to reference glossary terms like <glossterm>0</glossterm> +and the <firstterm baseform="1TBS">One True Brace Style (1TBS)</firstterm>. +The <glossterm>1TBS</glossterm>, as you can probably imagine, is a nearly +religious issue.</para> + + +If you set the firstterm.only.link parameter, +only the terms marked with firstterm will be links. +Otherwise, all the terms will be linked. + + + +Marking Up the Glossary + +The glossary itself has to be identified for the stylesheets. For lack +of a better choice, the role is used. +To identify the glossary as the target for automatic processing, set +the role to auto. The title of this +glossary (and any other information from the glossaryinfo +that's rendered by your stylesheet) will be displayed, but the entries will +come from the database. + + +Unfortunately, the glossary can't be empty, so you must put in +at least one glossentry. The content of this entry +is irrelevant, it will not be rendered: + + +<glossary role="auto"> +<glossentry> +<glossterm>Irrelevant</glossterm> +<glossdef> +<para>If you can see this, the document was processed incorrectly. Use +the <parameter>glossary.collection</parameter> parameter.</para> +</glossdef> +</glossentry> +</glossary> + + +What about glossary divisions? If your glossary database has glossary +divisions and your automatic glossary contains at least +one glossdiv, the automic glossary will have divisions. +If the glossdiv is missing from either location, no divisions +will be rendered. + +Glossary entries (and divisions, if appropriate) in the glossary will +occur in precisely the order they occur in your database. + + + +Formatting the Document + +Finally, when you are ready to format your document, simply set the +glossary.collection parameter (in either a +customization layer or directly through your processor's interface) to +point to your global glossary. + +The stylesheets will format the glossary in your document as if +all of the entries implicilty referenced appeared there literally. + + +Limitations + +Glossary cross-references within the glossary are +not supported. For example, this will not work: + + +<glossentry> +<glossterm>gloss-1</glossterm> +<glossdef><para>A description that references <glossterm>gloss-2</glossterm>.</para> +<glossseealso>gloss-2</glossseealso> +</glossdef> +</glossentry> + + +If you put glossary cross-references in your glossary that way, +you'll get the cryptic error: Warning: +glossary.collection specified, but there are 0 automatic +glossaries. + +Instead, you must do two things: + + + +Markup your glossary using glossseealso: + + +<glossentry> +<glossterm>gloss-1</glossterm> +<glossdef><para>A description that references <glossterm>gloss-2</glossterm>.</para> +<glossseealso>gloss-2</glossseealso> +</glossdef> +</glossentry> + + + + +Make sure there is at least one glossterm reference to +gloss-2 in your document. The +easiest way to do that is probably within a remark in your +automatic glossary: + + +<glossary role="auto"> +<remark>Make sure there's a reference to <glossterm>gloss-2</glossterm>.</remark> +<glossentry> +<glossterm>Irrelevant</glossterm> +<glossdef> +<para>If you can see this, the document was processed incorrectly. Use +the <parameter>glossary.collection</parameter> parameter.</para> +</glossdef> +</glossentry> +</glossary> + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.sort.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.sort.xml new file mode 100644 index 000000000..216130a50 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossary.sort.xml @@ -0,0 +1,32 @@ + + +glossary.sort +boolean + + +glossary.sort +Sort glossentry elements? + + + + + + + + +Description + +If non-zero, then the glossentry elements within a +glossary, glossdiv, or glosslist are sorted on the glossterm, using +the current lang setting. If zero (the default), then +glossentry elements are not sorted and are presented +in document order. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.block.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.block.properties.xml new file mode 100644 index 000000000..4fb481fe6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.block.properties.xml @@ -0,0 +1,32 @@ + + +glossdef.block.properties +attribute set + + +glossdef.block.properties +To add properties to the block of a glossary definition. + + + + + .25in + + + +Description +These properties are added to the block containing a +glossary definition in a glossary when +the glossary.as.blocks parameter +is non-zero. +Use this attribute-set to set the space above and below, +any font properties, +and any indent for the glossary definition. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.list.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.list.properties.xml new file mode 100644 index 000000000..ba715780b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossdef.list.properties.xml @@ -0,0 +1,30 @@ + + +glossdef.list.properties +attribute set + + +glossdef.list.properties +To add properties to the glossary definition in a list. + + + + + + + + +Description +These properties are added to the block containing a +glossary definition in a glossary when +the glossary.as.blocks parameter +is zero. +Use this attribute-set to set font properties, for example. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.list.item.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.list.item.properties.xml new file mode 100644 index 000000000..6830f1781 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.list.item.properties.xml @@ -0,0 +1,32 @@ + + +glossentry.list.item.properties +attribute set + + +glossentry.list.item.properties +To add properties to each glossentry in a list. + + + + + 1em + 0.8em + 1.2em + + + +Description +These properties are added to the fo:list-item containing a +glossentry in a glossary when the glossary.as.blocks parameter +is zero. +Use this attribute-set to set +spacing between entries, for example. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.show.acronym.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.show.acronym.xml new file mode 100644 index 000000000..973643875 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossentry.show.acronym.xml @@ -0,0 +1,37 @@ + + +glossentry.show.acronym +list +no +yes +primary + + +glossentry.show.acronym +Display glossentry acronyms? + + + + +no + + + +Description + +A setting of yes means they should be displayed; +no means they shouldn't. If primary is used, +then they are shown as the primary text for the entry. + + +This setting controls both acronym and +abbrev elements in the glossentry. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glosslist.as.blocks.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glosslist.as.blocks.xml new file mode 100644 index 000000000..d72083714 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glosslist.as.blocks.xml @@ -0,0 +1,27 @@ + + +glosslist.as.blocks +boolean + + +glosslist.as.blocks +Use blocks for glosslists? + + + + + + + + +Description + +See glossary.as.blocks. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.auto.link.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.auto.link.xml new file mode 100644 index 000000000..03d9a30a4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.auto.link.xml @@ -0,0 +1,33 @@ + + +glossterm.auto.link +boolean + + +glossterm.auto.link +Generate links from glossterm to glossentry automatically? + + + + + + + + +Description + +If non-zero, links from inline glossterms to the corresponding +glossentry elements in a glossary or glosslist +will be automatically generated. This is useful when your glossterms are consistent +and you don't want to add links manually. + +The automatic link generation feature is not used on glossterm elements +that have a linkend attribute. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.block.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.block.properties.xml new file mode 100644 index 000000000..84e6a6c29 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.block.properties.xml @@ -0,0 +1,35 @@ + + +glossterm.block.properties +attribute set + + +glossterm.block.properties +To add properties to the block of a glossentry's glossterm. + + + + + 1em + 0.8em + 1.2em + always + always + + + +Description +These properties are added to the block containing a +glossary term in a glossary when the glossary.as.blocks parameter +is non-zero. +Use this attribute-set to set the space above and below, +font properties, +and any indent for the glossary term. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.list.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.list.properties.xml new file mode 100644 index 000000000..abe0d313e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.list.properties.xml @@ -0,0 +1,30 @@ + + +glossterm.list.properties +attribute set + + +glossterm.list.properties +To add properties to the glossterm in a list. + + + + + + + + +Description +These properties are added to the block containing a +glossary term in a glossary when the glossary.as.blocks parameter +is zero. +Use this attribute-set to set +font properties, for example. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.separation.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.separation.xml new file mode 100644 index 000000000..d0d2b8de0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.separation.xml @@ -0,0 +1,31 @@ + + +glossterm.separation +length + + +glossterm.separation +Separation between glossary terms and descriptions in list mode + + + + +0.25in + + + +Description + +Specifies the miminum horizontal +separation between glossary terms and descriptions when +they are presented side-by-side using lists +when the glossary.as.blocks +is zero. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.width.xml new file mode 100644 index 000000000..0cd3b82cd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/glossterm.width.xml @@ -0,0 +1,28 @@ + + +glossterm.width +length + + +glossterm.width +Width of glossterm in list presentation mode + + + + +2in + + + +Description + +This parameter specifies the width reserved for glossary terms when +a list presentation is used. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphic.default.extension.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphic.default.extension.xml new file mode 100644 index 000000000..93f2983a8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphic.default.extension.xml @@ -0,0 +1,29 @@ + + +graphic.default.extension +string + + +graphic.default.extension +Default extension for graphic filenames + + + + + + +Description + +If a graphic or mediaobject +includes a reference to a filename that does not include an extension, +and the format attribute is +unspecified, the default extension will be used. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphical.admonition.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphical.admonition.properties.xml new file mode 100644 index 000000000..ca257d760 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphical.admonition.properties.xml @@ -0,0 +1,42 @@ + + +graphical.admonition.properties +attribute set + + +graphical.admonition.properties +To add properties to the outer block of a graphical admonition. + + + + + 1em + 0.8em + 1.2em + 1em + 0.8em + 1.2em + + + +Description +These properties are added to the outer block containing the +entire graphical admonition, including its title. +It is used when the parameter +admon.graphics is set to nonzero. +Use this attribute-set to set the space above and below, +and any indent for the whole admonition. + +In addition to these properties, a graphical admonition +also applies the admonition.title.properties +attribute-set to the title, and applies the +admonition.properties attribute-set +to the rest of the content. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphics.dir.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphics.dir.xml new file mode 100644 index 000000000..e8d83ae3c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphics.dir.xml @@ -0,0 +1,33 @@ + + +graphics.dir +uri + + +graphics.dir +Graphics directory + + + + + + + + +Description + +Identifies the graphics directory for the navigation components +generated on all the slides. This parameter can be set in the source +document with the <?dbhtml?> pseudo-attribute +graphics-dir. + +If non-empty, this value is prepended to each of the graphic +image paths. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.extension.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.extension.xml new file mode 100644 index 000000000..c4da7e123 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.extension.xml @@ -0,0 +1,30 @@ + + +graphicsize.extension +boolean + + +graphicsize.extension +Enable the getWidth()/getDepth() extension functions + + + + + + + + +Description + +If non-zero (and if use.extensions is non-zero +and if you're using a processor that supports extension functions), the +getWidth and getDepth functions +will be used to extract image sizes from graphics. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.use.img.src.path.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.use.img.src.path.xml new file mode 100644 index 000000000..aff5b30c0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/graphicsize.use.img.src.path.xml @@ -0,0 +1,30 @@ + + +graphicsize.use.img.src.path +boolean + + +graphicsize.use.img.src.path +Prepend img.src.path before +filenames passed to extension functions + + + + + + + + +Description + +If non-zero img.src.path parameter will +be appended before filenames passed to extension functions for +measuring image dimensions. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.column.widths.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.column.widths.xml new file mode 100644 index 000000000..7d85b96ad --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.column.widths.xml @@ -0,0 +1,80 @@ + + +header.column.widths +string + + +header.column.widths +Specify relative widths of header areas + + + +1 1 1 + + +Description + +Page headers in print output use a three column table +to position text at the left, center, and right side of +the header on the page. +This parameter lets you specify the relative sizes of the +three columns. The default value is +"1 1 1". + +The parameter value must be three numbers, separated +by white space. The first number represents the relative +width of the inside header for +double-sided output. The second number is the relative +width of the center header. The third number is the +relative width of the outside header for +double-sided output. + +For single-sided output, the first number is the +relative width of left header for left-to-right +text direction, or the right header for right-to-left +text direction. +The third number is the +relative width of right header for left-to-right +text direction, or the left header for right-to-left +text direction. + +The numbers are used to specify the column widths +for the table that makes up the header area. +In the FO output, this looks like: + + + +<fo:table-column column-number="1" + column-width="proportional-column-width(1)"/> + + + +The proportional-column-width() +function computes a column width by dividing its +argument by the total of the arguments for all the columns, and +then multiplying the result by the width of the whole table +(assuming all the column specs use the function). +Its argument can be any positive integer or floating point number. +Zero is an acceptable value, although some FO processors +may warn about it, in which case using a very small number might +be more satisfactory. + + +For example, the value "1 2 1" means the center +header should have twice the width of the other areas. +A value of "0 0 1" means the entire header area +is reserved for the right (or outside) header text. +Note that to keep the center area centered on +the page, the left and right values must be +the same. A specification like "1 2 3" means the +center area is no longer centered on the page +since the right area is three times the width of the left area. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.content.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.content.properties.xml new file mode 100644 index 000000000..2d0291c45 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.content.properties.xml @@ -0,0 +1,34 @@ + + +header.content.properties +attribute set + + +header.content.properties +Properties of page header content + + + + + + + + + + + + + + + +Description + +Properties of page header content. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.hr.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.hr.xml new file mode 100644 index 000000000..08d846a9d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.hr.xml @@ -0,0 +1,26 @@ + + +header.hr +boolean + + +header.hr +Toggle <HR> after header + + + + + + + + +Description +If non-zero, an <HR> is generated at the bottom of each web page, +before the footer. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.rule.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.rule.xml new file mode 100644 index 000000000..b4c031e82 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.rule.xml @@ -0,0 +1,27 @@ + + +header.rule +boolean + + +header.rule +Rule under headers? + + + + + + + + +Description + +If non-zero, a rule will be drawn below the page headers. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.height.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.height.xml new file mode 100644 index 000000000..69b6f08e5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.height.xml @@ -0,0 +1,32 @@ + + +header.table.height +length + + +header.table.height +Specify the minimum height of the table containing the running page headers + + + +14pt + + +Description + +Page headers in print output use a three column table +to position text at the left, center, and right side of +the header on the page. +This parameter lets you specify the minimum height +of the single row in the table. +Since this specifies only the minimum height, +the table should automatically grow to fit taller content. +The default value is "14pt". + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.properties.xml new file mode 100644 index 000000000..b5f60529d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/header.table.properties.xml @@ -0,0 +1,30 @@ + + +header.table.properties +attribute set + + +header.table.properties +Apply properties to the header layout table + + + + + + fixed + 100% + + + + +Description + +Properties applied to the table that lays out the page header. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/headers.on.blank.pages.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/headers.on.blank.pages.xml new file mode 100644 index 000000000..1fad48e3d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/headers.on.blank.pages.xml @@ -0,0 +1,27 @@ + + +headers.on.blank.pages +boolean + + +headers.on.blank.pages +Put headers on blank pages? + + + + + + + + +Description + +If non-zero, headers will be placed on blank pages. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hidetoc.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hidetoc.image.xml new file mode 100644 index 000000000..705b61f4a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hidetoc.image.xml @@ -0,0 +1,29 @@ + + +hidetoc.image +filename + + +hidetoc.image +Hide ToC image + + + + +hidetoc.gif + + + +Description + +Specifies the filename of the hide ToC image. This is used +when the ToC hide/show parameter is +enabled. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.default.language.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.default.language.xml new file mode 100644 index 000000000..0f00103f5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.default.language.xml @@ -0,0 +1,27 @@ + + +highlight.default.language +string + + +highlight.default.language +Default language of programlisting + + + + + + + + +Description + +This language is used when there is no language attribute on programlisting. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.source.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.source.xml new file mode 100644 index 000000000..c4eb1a836 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.source.xml @@ -0,0 +1,82 @@ + + +highlight.source +boolean + + +highlight.source +Should the content of programlisting +be syntactically highlighted? + + + + + + + + +Description + +When this parameter is non-zero, the stylesheets will try to do syntax highlighting of the +content of programlisting elements. You specify the language for each programlisting +by using the language attribute. The highlight.default.language +parameter can be used to specify the language for programlistings without a language +attribute. Syntax highlighting also works for screen and synopsis elements. + +The actual highlighting work is done by the XSLTHL extension module. This is an external Java library that has to be +downloaded separately (see below). + + +In order to use this extension, you must + +add xslthl-2.x.x.jar to your Java classpath. The latest version is available +from the XSLT syntax highlighting project +at SourceForge. + + +use a customization layer in which you import one of the following stylesheet modules: + + + html/highlight.xsl + + + + xhtml/highlight.xsl + + + + xhtml-1_1/highlight.xsl + + + + fo/highlight.xsl + + + + + +let either the xslthl.config Java system property or the +highlight.xslthl.config parameter point to the configuration file for syntax +highlighting (using URL syntax). DocBook XSL comes with a ready-to-use configuration file, +highlighting/xslthl-config.xml. + + + +The extension works with Saxon 6.5.x and Xalan-J. (Saxon 8.5 or later is also supported, but since it is +an XSLT 2.0 processor it is not guaranteed to work with DocBook XSL in all circumstances.) + +The following is an example of a Saxon 6 command adapted for syntax highlighting, to be used on Windows: + + +java -cp c:/Java/saxon.jar;c:/Java/xslthl-2.0.1.jar +-Dxslthl.config=file:///c:/docbook-xsl/highlighting/xslthl-config.xml com.icl.saxon.StyleSheet +-o test.html test.xml myhtml.xsl + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.xslthl.config.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.xslthl.config.xml new file mode 100644 index 000000000..451937ce6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/highlight.xslthl.config.xml @@ -0,0 +1,33 @@ + + +highlight.xslthl.config +uri + + +highlight.xslthl.config +Location of XSLTHL configuration file + + + + + + + + +Description + +This location has precedence over the corresponding Java property. + +Please note that usually you have to specify location as URL not +just as a simple path on the local +filesystem. E.g. file:///home/user/xslthl/my-xslthl-config.xml. + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/home.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/home.image.xml new file mode 100644 index 000000000..22e545504 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/home.image.xml @@ -0,0 +1,27 @@ + + +home.image +filename + + +home.image +Home image + + + + +active/nav-home.png + + + +Description + +Specifies the filename of the home navigation icon. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.append.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.append.xml new file mode 100644 index 000000000..461e61b8e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.append.xml @@ -0,0 +1,30 @@ + + +html.append +string + + +html.append +Specifies content to append to HTML output + + + + + + +Description + +Specifies content to append to the end of HTML files output by +the html/docbook.xsl stylesheet, after the +closing <html> tag. You probably don’t want to set any +value for this parameter; but if you do, the only value it should ever +be set to is a newline character: &#x0a; or +&#10; + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.base.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.base.xml new file mode 100644 index 000000000..74e7fd9a3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.base.xml @@ -0,0 +1,30 @@ + + +html.base +uri + + +html.base +An HTML base URI + + + + + + + +Description + +If html.base is set, it is used for the base element +in the head of the html documents. The parameter specifies +the base URL for all relative URLs in the document. This is useful +for dynamically served html where the base URI needs to be +shifted. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellpadding.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellpadding.xml new file mode 100644 index 000000000..7240f0f47 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellpadding.xml @@ -0,0 +1,29 @@ + + +html.cellpadding +integer + + +html.cellpadding +Default value for cellpadding in HTML tables + + + + + + + + +Description + +If non-zero, this value will be used as the default cellpadding value +in HTML tables. nn for pixels or nn% for percentage length. E.g. 5 or +5% + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellspacing.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellspacing.xml new file mode 100644 index 000000000..5ddfdacd0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cellspacing.xml @@ -0,0 +1,29 @@ + + +html.cellspacing +integer + + +html.cellspacing +Default value for cellspacing in HTML tables + + + + + + + + +Description + +If non-zero, this value will be used as the default cellspacing +value in HTML tables. nn for pixels or nn% for percentage +length. E.g. 5 or 5% + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cleanup.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cleanup.xml new file mode 100644 index 000000000..e4fc0c8d9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.cleanup.xml @@ -0,0 +1,34 @@ + + +html.cleanup +boolean + + +html.cleanup +Attempt to clean up the resulting HTML? + + + + + + + + +Description + +If non-zero, and if the EXSLT +extensions are supported by your processor, the resulting HTML will be +cleaned up. This improves the chances that the +resulting HTML will be valid. It may also improve the formatting of +some elements. + +This parameter is different from make.valid.html +because it uses extension functions to manipulate result-tree-fragments. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.ext.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.ext.xml new file mode 100644 index 000000000..8d6fd9552 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.ext.xml @@ -0,0 +1,29 @@ + + +html.ext +string + + +html.ext +Identifies the extension of generated HTML files + + + + +.html + + + +Description + +The extension identified by html.ext will +be used as the filename extension for chunks created by this +stylesheet. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.extra.head.links.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.extra.head.links.xml new file mode 100644 index 000000000..ddc666fc8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.extra.head.links.xml @@ -0,0 +1,31 @@ + + +html.extra.head.links +boolean + + +html.extra.head.links +Toggle extra HTML head link information + + + + + + + + +Description + +If non-zero, extra link elements will be +generated in the head of chunked HTML files. These +extra links point to chapters, appendixes, sections, etc. as supported +by the Site Navigation Bar in Mozilla 1.0 (as of CR1, at least). + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.multiple.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.multiple.xml new file mode 100644 index 000000000..7c0cba183 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.multiple.xml @@ -0,0 +1,44 @@ + + +html.head.legalnotice.link.multiple +boolean + + +html.head.legalnotice.link.multiple +Generate multiple link instances in html head for legalnotice? + + + + + + + + +Description + +If html.head.legalnotice.link.multiple is +non-zero and the value of +html.head.legalnotice.link.types contains +multiple link types, then the stylesheet generates (in the +head section of the HTML source) one +link element for each link type specified. For +example, if the value of +html.head.legalnotice.link.types is +“copyright licenseâ€: + + <link rel="copyright" href="ln-id2524073.html" title="Legal Notice"> + <link rel="license" href="ln-id2524073.html" title="Legal Notice"> + + Otherwise, the stylesheet generates generates a single + link instance; for example: + + <link rel="copyright license" href="ln-id2524073.html" title="Legal Notice"> + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.types.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.types.xml new file mode 100644 index 000000000..4ca02ffda --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.head.legalnotice.link.types.xml @@ -0,0 +1,75 @@ + + +html.head.legalnotice.link.types +string + + +html.head.legalnotice.link.types +Specifies link types for legalnotice link in html head + + + + +copyright + + + +Description + +The value of +html.head.legalnotice.link.types is a +space-separated list of link types, as described in Section 6.12 +of the HTML 4.01 specification. If the value of the +generate.legalnotice.link parameter is +non-zero, then the stylesheet generates (in the +head section of the HTML source) either a single +HTML link element or, if the value of the +html.head.legalnotice.link.multiple is +non-zero, one link element for each link type +specified. Each link has the following attributes: + + + + a rel attribute whose + value is derived from the value of + html.head.legalnotice.link.types + + + an href attribute whose + value is set to the URL of the file containing the + legalnotice + + + a title attribute whose + value is set to the title of the corresponding + legalnotice (or a title programatically + determined by the stylesheet) + + + +For example: + + <link rel="license" href="ln-id2524073.html" title="Legal Notice"> + + +About the default value + + In an ideal world, the default value of + html.head.legalnotice.link.types would + probably be “licenseâ€, since the content of the + DocBook legalnotice is typically license + information, not copyright information. However, the default value + is “copyright†for pragmatic reasons: because + that’s among the set of “recognized link types†listed in Section + 6.12 of the HTML 4.01 specification, and because certain + browsers and browser extensions are preconfigured to recognize that + value. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.link.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.link.xml new file mode 100644 index 000000000..24975630e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.link.xml @@ -0,0 +1,39 @@ + + +html.longdesc.link +boolean + + +html.longdesc.link +Should a link to the longdesc be included in the HTML? + + + + + + + + +Description + +If non-zero, links will be created to the +HTML files created for the +longdesc attribute. It makes no +sense to enable this option without also enabling the +html.longdesc parameter. + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.xml new file mode 100644 index 000000000..10f341a29 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.longdesc.xml @@ -0,0 +1,28 @@ + + +html.longdesc +boolean + + +html.longdesc +Should longdesc URIs be created? + + + + + + +Description +If non-zero, HTML files will be created for the +longdesc attribute. These files +are created from the textobjects in +mediaobjects and +inlinemediaobject. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.type.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.type.xml new file mode 100644 index 000000000..f20b7065e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.type.xml @@ -0,0 +1,26 @@ + + +html.stylesheet.type +string + + +html.stylesheet.type +The type of the stylesheet used in the generated HTML + + + +text/css + + +Description + +The type of the stylesheet to place in the HTML link tag. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.xml new file mode 100644 index 000000000..340709471 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/html.stylesheet.xml @@ -0,0 +1,36 @@ + + +html.stylesheet +string + + +html.stylesheet +Name of the stylesheet(s) to use in the generated HTML + + + + + + + + +Description + +The html.stylesheet parameter is either +empty, indicating that no stylesheet link tag should be +generated in the html output, or it is a list of one or more +stylesheet files. + +Multiple stylesheets are space-delimited. If you need to +reference a stylesheet URI that includes a space, encode it with +%20. A separate html link element will +be generated for each stylesheet in the order they are listed in the +parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.alias.file.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.alias.file.xml new file mode 100644 index 000000000..be11b28fc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.alias.file.xml @@ -0,0 +1,27 @@ + + +htmlhelp.alias.file +string + + +htmlhelp.alias.file +Filename of alias file. + + + + +alias.h + + + +Description + +Specifies the filename of the alias file (used for context-sensitive help). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.autolabel.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.autolabel.xml new file mode 100644 index 000000000..1426d0088 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.autolabel.xml @@ -0,0 +1,28 @@ + + +htmlhelp.autolabel +boolean + + +htmlhelp.autolabel +Should tree-like ToC use autonumbering feature? + + + + + + + + +Description + +Set this to non-zero to include chapter and section numbers into ToC +in the left panel. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.back.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.back.xml new file mode 100644 index 000000000..1fc12bbad --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.back.xml @@ -0,0 +1,27 @@ + + +htmlhelp.button.back +boolean + + +htmlhelp.button.back +Should the Back button be shown? + + + + + + + + +Description + +Set to non-zero to include the Hide/Show button shown on toolbar + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.forward.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.forward.xml new file mode 100644 index 000000000..f6411bbf5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.forward.xml @@ -0,0 +1,27 @@ + + +htmlhelp.button.forward +boolean + + +htmlhelp.button.forward +Should the Forward button be shown? + + + + + + + + +Description + +Set to non-zero to include the Forward button on the toolbar. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.hideshow.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.hideshow.xml new file mode 100644 index 000000000..04f1ff0ca --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.hideshow.xml @@ -0,0 +1,27 @@ + + +htmlhelp.button.hideshow +boolean + + +htmlhelp.button.hideshow +Should the Hide/Show button be shown? + + + + + + + + +Description + +Set to non-zero to include the Hide/Show button shown on toolbar + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.url.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.url.xml new file mode 100644 index 000000000..30275071f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.url.xml @@ -0,0 +1,27 @@ + + +htmlhelp.button.home.url +string + + +htmlhelp.button.home.url +URL address of page accessible by Home button + + + + + + + + +Description + +URL address of page accessible by Home button. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.xml new file mode 100644 index 000000000..e4e97fe28 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.home.xml @@ -0,0 +1,27 @@ + + +htmlhelp.button.home +boolean + + +htmlhelp.button.home +Should the Home button be shown? + + + + + + + + +Description + +Set to non-zero to include the Home button on the toolbar. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.title.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.title.xml new file mode 100644 index 000000000..aa9da5997 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.title.xml @@ -0,0 +1,27 @@ + + +htmlhelp.button.jump1.title +string + + +htmlhelp.button.jump1.title +Title of Jump1 button + + + + +User1 + + + +Description + +Title of Jump1 button. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.url.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.url.xml new file mode 100644 index 000000000..22248c4ce --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.url.xml @@ -0,0 +1,27 @@ + + +htmlhelp.button.jump1.url +string + + +htmlhelp.button.jump1.url +URL address of page accessible by Jump1 button + + + + + + + + +Description + +URL address of page accessible by Jump1 button. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.xml new file mode 100644 index 000000000..f6f8d9ce7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump1.xml @@ -0,0 +1,23 @@ + + +htmlhelp.button.jump1 +boolean + + +htmlhelp.button.jump1 +Should the Jump1 button be shown? + + + + + + +Description + Set to non-zero to include the Jump1 button on the toolbar. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.title.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.title.xml new file mode 100644 index 000000000..3b5f124ff --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.title.xml @@ -0,0 +1,27 @@ + + +htmlhelp.button.jump2.title +string + + +htmlhelp.button.jump2.title +Title of Jump2 button + + + + +User2 + + + +Description + +Title of Jump2 button. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.url.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.url.xml new file mode 100644 index 000000000..dcd24341a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.url.xml @@ -0,0 +1,27 @@ + + +htmlhelp.button.jump2.url +string + + +htmlhelp.button.jump2.url +URL address of page accessible by Jump2 button + + + + + + + + +Description + +URL address of page accessible by Jump2 button. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.xml new file mode 100644 index 000000000..916b1ee18 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.jump2.xml @@ -0,0 +1,27 @@ + + +htmlhelp.button.jump2 +boolean + + +htmlhelp.button.jump2 +Should the Jump2 button be shown? + + + + + + + + +Description + +Set to non-zero to include the Jump2 button on the toolbar. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.locate.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.locate.xml new file mode 100644 index 000000000..5b5555253 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.locate.xml @@ -0,0 +1,28 @@ + + +htmlhelp.button.locate +boolean + + +htmlhelp.button.locate +Should the Locate button be shown? + + + + + + + + +Description + +If you want Locate button shown on toolbar, turn this +parameter to 1. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.next.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.next.xml new file mode 100644 index 000000000..b5352b2ca --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.next.xml @@ -0,0 +1,27 @@ + + +htmlhelp.button.next +boolean + + +htmlhelp.button.next +Should the Next button be shown? + + + + + + + + +Description + +Set to non-zero to include the Next button on the toolbar. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.options.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.options.xml new file mode 100644 index 000000000..21bed81a6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.options.xml @@ -0,0 +1,28 @@ + + +htmlhelp.button.options +boolean + + +htmlhelp.button.options +Should the Options button be shown? + + + + + + + + +Description + +If you want Options button shown on toolbar, turn this +parameter to 1. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.prev.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.prev.xml new file mode 100644 index 000000000..a6d989b4b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.prev.xml @@ -0,0 +1,28 @@ + + +htmlhelp.button.prev +boolean + + +htmlhelp.button.prev +Should the Prev button be shown? + + + + + + + + +Description + +Set to non-zero to include the Prev button on the toolbar. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.print.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.print.xml new file mode 100644 index 000000000..1c0e81649 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.print.xml @@ -0,0 +1,28 @@ + + +htmlhelp.button.print +boolean + + +htmlhelp.button.print +Should the Print button be shown? + + + + + + + + +Description + +Set to non-zero to include the Print button on the toolbar. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.refresh.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.refresh.xml new file mode 100644 index 000000000..294fcbe30 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.refresh.xml @@ -0,0 +1,27 @@ + + +htmlhelp.button.refresh +boolean + + +htmlhelp.button.refresh +Should the Refresh button be shown? + + + + + + + + +Description + +Set to non-zero to include the Stop button on the toolbar. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.stop.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.stop.xml new file mode 100644 index 000000000..fdbe5492a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.stop.xml @@ -0,0 +1,28 @@ + + +htmlhelp.button.stop +boolean + + +htmlhelp.button.stop +Should the Stop button be shown? + + + + + + + + +Description + +If you want Stop button shown on toolbar, turn this +parameter to 1. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.zoom.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.zoom.xml new file mode 100644 index 000000000..a25dc4031 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.button.zoom.xml @@ -0,0 +1,28 @@ + + +htmlhelp.button.zoom +boolean + + +htmlhelp.button.zoom +Should the Zoom button be shown? + + + + + + + + +Description + +Set to non-zero to include the Zoom button on the toolbar. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.chm.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.chm.xml new file mode 100644 index 000000000..51cba301d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.chm.xml @@ -0,0 +1,27 @@ + + +htmlhelp.chm +string + + +htmlhelp.chm +Filename of output HTML Help file. + + + + +htmlhelp.chm + + + +Description + +Set the name of resulting CHM file + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.default.topic.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.default.topic.xml new file mode 100644 index 000000000..577f44092 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.default.topic.xml @@ -0,0 +1,37 @@ + + +htmlhelp.default.topic +string + + +htmlhelp.default.topic +Name of file with default topic + + + + + + + + +Description + +Normally first chunk of document is displayed when you open HTML +Help file. If you want to display another topic, simply set its +filename by this parameter. + +This is useful especially if you don't generate ToC in front of +your document and you also hide root element in ToC. E.g.: + +<xsl:param name="generate.book.toc" select="0"/> +<xsl:param name="htmlhelp.hhc.show.root" select="0"/> +<xsl:param name="htmlhelp.default.topic">pr01.html</xsl:param> + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.display.progress.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.display.progress.xml new file mode 100644 index 000000000..eab1c9668 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.display.progress.xml @@ -0,0 +1,28 @@ + + +htmlhelp.display.progress +boolean + + +htmlhelp.display.progress +Display compile progress? + + + + + + + + +Description + +Set to non-zero to to display compile progress + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.encoding.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.encoding.xml new file mode 100644 index 000000000..579cf7fce --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.encoding.xml @@ -0,0 +1,28 @@ + + +htmlhelp.encoding +string + + +htmlhelp.encoding +Character encoding to use in files for HTML Help compiler. + + + + +iso-8859-1 + + + +Description + +HTML Help Compiler is not UTF-8 aware, so you should always use an +appropriate single-byte encoding here. Use one from iana, the registered charset values. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enhanced.decompilation.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enhanced.decompilation.xml new file mode 100644 index 000000000..558e89b08 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enhanced.decompilation.xml @@ -0,0 +1,27 @@ + + +htmlhelp.enhanced.decompilation +boolean + + +htmlhelp.enhanced.decompilation +Allow enhanced decompilation of CHM? + + + + + + + + +Description + +When non-zero this parameter enables enhanced decompilation of CHM. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enumerate.images.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enumerate.images.xml new file mode 100644 index 000000000..a2aaac862 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.enumerate.images.xml @@ -0,0 +1,28 @@ + + +htmlhelp.enumerate.images +boolean + + +htmlhelp.enumerate.images +Should the paths to all used images be added to the project file? + + + + + + + + +Description + +Set to non-zero if you insert images into your documents as +external binary entities or if you are using absolute image paths. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.force.map.and.alias.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.force.map.and.alias.xml new file mode 100644 index 000000000..7dca30b6d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.force.map.and.alias.xml @@ -0,0 +1,26 @@ + + +htmlhelp.force.map.and.alias +boolean + + +htmlhelp.force.map.and.alias +Should [MAP] and [ALIAS] sections be added to the project file unconditionally? + + + + + + +Description + Set to non-zero if you have your own + alias.h and context.h + files and you want to include references to them in the project + file. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.binary.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.binary.xml new file mode 100644 index 000000000..ea978f7e8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.binary.xml @@ -0,0 +1,29 @@ + + +htmlhelp.hhc.binary +boolean + + +htmlhelp.hhc.binary +Generate binary ToC? + + + + + + + + +Description + +Set to non-zero to generate a binary TOC. You must create a binary TOC +if you want to add Prev/Next buttons to toolbar (which is default +behaviour). Files with binary TOC can't be merged. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.folders.instead.books.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.folders.instead.books.xml new file mode 100644 index 000000000..ca36e5ad4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.folders.instead.books.xml @@ -0,0 +1,31 @@ + + +htmlhelp.hhc.folders.instead.books +boolean + + +htmlhelp.hhc.folders.instead.books +Use folder icons in ToC (instead of book icons)? + + + + + + + + +Description + +Set to non-zero for folder-like icons or zero for book-like icons in the ToC. +If you want to use folder-like icons, you must switch off the binary ToC using +htmlhelp.hhc.binary. + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.section.depth.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.section.depth.xml new file mode 100644 index 000000000..35c492af0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.section.depth.xml @@ -0,0 +1,27 @@ + + +htmlhelp.hhc.section.depth +integer + + +htmlhelp.hhc.section.depth +Depth of TOC for sections in a left pane. + + + + +5 + + + +Description + +Set the section depth in the left pane of HTML Help viewer. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.show.root.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.show.root.xml new file mode 100644 index 000000000..0de26b9ff --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.show.root.xml @@ -0,0 +1,29 @@ + + +htmlhelp.hhc.show.root +boolean + + +htmlhelp.hhc.show.root +Should there be an entry for the root element in the ToC? + + + + + + + + +Description + +If set to zero, there will be no entry for the root element in the +ToC. This is useful when you want to provide the user with an expanded +ToC as a default. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.width.xml new file mode 100644 index 000000000..4011399b3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.width.xml @@ -0,0 +1,28 @@ + + +htmlhelp.hhc.width +integer + + +htmlhelp.hhc.width +Width of navigation pane + + + + + + + + +Description + +This parameter specifies the width of the navigation pane (containing TOC and +other navigation tabs) in pixels. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.xml new file mode 100644 index 000000000..475ef2050 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhc.xml @@ -0,0 +1,27 @@ + + +htmlhelp.hhc +string + + +htmlhelp.hhc +Filename of TOC file. + + + + +toc.hhc + + + +Description + +Set the name of the TOC file. The default is toc.hhc. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhk.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhk.xml new file mode 100644 index 000000000..aee473e42 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhk.xml @@ -0,0 +1,27 @@ + + +htmlhelp.hhk +string + + +htmlhelp.hhk +Filename of index file. + + + + +index.hhk + + + +Description + +set the name of the index file. The default is index.hhk. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.tail.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.tail.xml new file mode 100644 index 000000000..c239b9afb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.tail.xml @@ -0,0 +1,28 @@ + + +htmlhelp.hhp.tail +string + + +htmlhelp.hhp.tail +Additional content for project file. + + + + + + + + +Description + +If you want to include some additional parameters into project file, +store appropriate part of project file into this parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.window.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.window.xml new file mode 100644 index 000000000..6c29eeda9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.window.xml @@ -0,0 +1,28 @@ + + +htmlhelp.hhp.window +string + + +htmlhelp.hhp.window +Name of default window. + + + + +Main + + + +Description + +Name of default window. If empty no [WINDOWS] section will be +added to project file. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.windows.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.windows.xml new file mode 100644 index 000000000..afd435f5c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.windows.xml @@ -0,0 +1,29 @@ + + +htmlhelp.hhp.windows +string + + +htmlhelp.hhp.windows +Definition of additional windows + + + + + + + + +Description + +Content of this parameter is placed at the end of [WINDOWS] +section of project file. You can use it for defining your own +addtional windows. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.xml new file mode 100644 index 000000000..74954d724 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.hhp.xml @@ -0,0 +1,28 @@ + + +htmlhelp.hhp +string + + +htmlhelp.hhp +Filename of project file. + + + + +htmlhelp.hhp + + + +Description + +Change this parameter if you want different name of project +file than htmlhelp.hhp. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.map.file.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.map.file.xml new file mode 100644 index 000000000..b47c56520 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.map.file.xml @@ -0,0 +1,25 @@ + + +htmlhelp.map.file +string + + +htmlhelp.map.file +Filename of map file. + + + +context.h + + +Description +Set the name of map file. The default is + context.h. (used for context-sensitive + help). + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.only.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.only.xml new file mode 100644 index 000000000..f10dbf585 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.only.xml @@ -0,0 +1,32 @@ + + +htmlhelp.only +boolean + + +htmlhelp.only +Should only project files be generated? + + + + + + + + +Description + + +Set to non-zero if you want to play with various HTML Help parameters +and you don't need to regenerate all HTML files. This setting will not +process whole document, only project files (hhp, hhc, hhk,...) will be +generated. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.remember.window.position.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.remember.window.position.xml new file mode 100644 index 000000000..3aaea1f70 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.remember.window.position.xml @@ -0,0 +1,27 @@ + + +htmlhelp.remember.window.position +boolean + + +htmlhelp.remember.window.position +Remember help window position? + + + + + + + + +Description + +Set to non-zero to remember help window position between starts. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.advanced.search.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.advanced.search.xml new file mode 100644 index 000000000..3aa09a658 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.advanced.search.xml @@ -0,0 +1,28 @@ + + +htmlhelp.show.advanced.search +boolean + + +htmlhelp.show.advanced.search +Should advanced search features be available? + + + + + + + + +Description + +If you want advanced search features in your help, turn this +parameter to 1. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.favorities.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.favorities.xml new file mode 100644 index 000000000..925bbb1fe --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.favorities.xml @@ -0,0 +1,28 @@ + + +htmlhelp.show.favorities +boolean + + +htmlhelp.show.favorities +Should the Favorites tab be shown? + + + + + + + + +Description + +Set to non-zero to include a Favorites tab in the navigation pane +of the help window. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.menu.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.menu.xml new file mode 100644 index 000000000..b3d6285cf --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.menu.xml @@ -0,0 +1,28 @@ + + +htmlhelp.show.menu +boolean + + +htmlhelp.show.menu +Should the menu bar be shown? + + + + + + + + +Description + +Set to non-zero to have an application menu bar in your HTML Help window. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.toolbar.text.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.toolbar.text.xml new file mode 100644 index 000000000..fc87d9c29 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.show.toolbar.text.xml @@ -0,0 +1,28 @@ + + +htmlhelp.show.toolbar.text +boolean + + +htmlhelp.show.toolbar.text +Show text under toolbar buttons? + + + + + + + + +Description + +Set to non-zero to display texts under toolbar buttons, zero to switch +off displays. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.title.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.title.xml new file mode 100644 index 000000000..f4397cab1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.title.xml @@ -0,0 +1,28 @@ + + +htmlhelp.title +string + + +htmlhelp.title +Title of HTML Help + + + + + + + + +Description + +Content of this parameter will be used as a title for generated +HTML Help. If empty, title will be automatically taken from document. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.use.hhk.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.use.hhk.xml new file mode 100644 index 000000000..720c1e254 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.use.hhk.xml @@ -0,0 +1,28 @@ + + +htmlhelp.use.hhk +boolean + + +htmlhelp.use.hhk +Should the index be built using the HHK file? + + + + + + + + +Description + +If non-zero, the index is created using the HHK file (instead of using object +elements in the HTML files). For more information, see Generating an index. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.window.geometry.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.window.geometry.xml new file mode 100644 index 000000000..0ec75f744 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/htmlhelp.window.geometry.xml @@ -0,0 +1,30 @@ + + +htmlhelp.window.geometry +string + + +htmlhelp.window.geometry +Set initial geometry of help window + + + + + + + + +Description + +This parameter specifies initial position of help +window. E.g. + +<xsl:param name="htmlhelp.window.geometry">[160,64,992,704]</xsl:param> + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.characters.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.characters.xml new file mode 100644 index 000000000..e6cae2096 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.characters.xml @@ -0,0 +1,30 @@ + + +hyphenate.verbatim.characters +string + + +hyphenate.verbatim.characters +List of characters after which a line break can occur in listings + + + + + + + + +Description + +If you enable hyphenate.verbatim line +breaks are allowed only on space characters. If this is not enough for +your document, you can specify list of additional characters after +which line break is allowed in this parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.xml new file mode 100644 index 000000000..c66e700cf --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.verbatim.xml @@ -0,0 +1,45 @@ + + +hyphenate.verbatim +boolean + + +hyphenate.verbatim +Should verbatim environments be hyphenated on space characters? + + + + + + +Description + +If the lines of program listing are too long to fit into one +line it is quite common to split them at space and indicite by hook +arrow that code continues on the next line. You can turn on this +behaviour for programlisting, +screen and synopsis elements by +using this parameter. + +Note that you must also enable line wrapping for verbatim environments and +select appropriate hyphenation character (e.g. hook arrow). This can +be done using monospace.verbatim.properties +attribute set: + +<xsl:attribute-set name="monospace.verbatim.properties" + use-attribute-sets="verbatim.properties monospace.properties"> + <xsl:attribute name="wrap-option">wrap</xsl:attribute> + <xsl:attribute name="hyphenation-character">&#x25BA;</xsl:attribute> +</xsl:attribute-set> + +For a list of arrows available in Unicode see http://www.unicode.org/charts/PDF/U2190.pdf and http://www.unicode.org/charts/PDF/U2900.pdf and make sure that +selected character is available in the font you are using for verbatim +environments. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.xml new file mode 100644 index 000000000..46a2d6140 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/hyphenate.xml @@ -0,0 +1,29 @@ + + +hyphenate +list +closed +true +false + + +hyphenate +Specify hyphenation behavior + + + +true + + +Description + +If true, words may be hyphenated. Otherwise, they may not. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/id.warnings.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/id.warnings.xml new file mode 100644 index 000000000..7b2716fdc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/id.warnings.xml @@ -0,0 +1,25 @@ + + +id.warnings +boolean + + +id.warnings +Should warnings be generated for titled elements without IDs? + + + + + + +Description +If non-zero, the stylesheet will issue a warning for any element +(other than the root element) which has a title but does not have an +ID. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ignore.image.scaling.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ignore.image.scaling.xml new file mode 100644 index 000000000..c35d17823 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ignore.image.scaling.xml @@ -0,0 +1,28 @@ + + +ignore.image.scaling +boolean + + +ignore.image.scaling +Tell the stylesheets to ignore the author's image scaling attributes + + + + + + + + +Description + +If non-zero, the scaling attributes on graphics and media objects are +ignored. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/img.src.path.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/img.src.path.xml new file mode 100644 index 000000000..d295019b0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/img.src.path.xml @@ -0,0 +1,40 @@ + + +img.src.path +string + + +img.src.path +Path to HTML/FO image files + + + + + + +Description + +Add a path prefix to the value of the fileref +attribute of graphic, inlinegraphic, and imagedata elements. The resulting +compound path is used in the output as the value of the src +attribute of img (HTML) or external-graphic (FO). + + + +The path given by img.src.path could be relative to the directory where the HTML/FO +files are created, or it could be an absolute URI. +The default value is empty. +Be sure to include a trailing slash if needed. + + +This prefix is not applied to any filerefs that start +with "/" or contain "//:". + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.div.title.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.div.title.properties.xml new file mode 100644 index 000000000..edbec2f2e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.div.title.properties.xml @@ -0,0 +1,39 @@ + + +index.div.title.properties +attribute set + + +index.div.title.properties +Properties associated with the letter headings in an +index + + + + + + 0pt + 14.4pt + + bold + always + + + + 0pt + + + + +Description + +This attribute set is used on the letter headings that separate +the divisions in an index. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.entry.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.entry.properties.xml new file mode 100644 index 000000000..323235833 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.entry.properties.xml @@ -0,0 +1,33 @@ + + +index.entry.properties +attribute set + + +index.entry.properties +Properties applied to the formatted entries +in an index + + + + + + 0pt + + + + +Description + +This attribute set is applied to the block containing +the entries in a letter division in an index. It can be used to set the +font-size, font-family, and other inheritable properties that will be +applied to all index entries. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.links.to.section.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.links.to.section.xml new file mode 100644 index 000000000..47c0da5bb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.links.to.section.xml @@ -0,0 +1,76 @@ + + +index.links.to.section +boolean + + +index.links.to.section +HTML index entries link to container section title + + + + + + + + +Description + +If zero, then an index entry in an index links +directly to the location of the +generated anchor that is output +for the indexterm. If two identical indexterm elements +exist in the same section, then both entries appear +in the index with the same title but link to different +locations. + +If non-zero, then an index entry in an index links to the +section title containing the indexterm, rather than +directly to the anchor output for the indexterm. +Duplicate indexterm entries in the same section are dropped. + + +The default value is 1, so index entries link to +section titles by default. + +In both cases, the link text in an index entry is the +title of the section containing the indexterm. +That is because HTML does not have numbered pages. +It also provides the reader with context information +for each link. + +This parameter lets you choose which style of +index linking you want. + + + +When set to 0, an index entry takes you +to the precise location of its corresponding indexterm. +However, if you have a lot of duplicate +entries in sections, then you have a lot of duplicate +titles in the index, which makes it more cluttered. +The reader may not recognize why duplicate titles +appear until they follow the links. Also, the links +may land the reader in the middle of a section where the +section title is not visible, which may also be +confusing to the reader. + + +When set to 1, an index entry link is +less precise, but duplicate titles in the +index entries are eliminated. +Landing on the section title location may confirm the reader's +expectation that a link that +shows a section title will take them to that section title, +not a location within the section. + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.method.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.method.xml new file mode 100644 index 000000000..21279565d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.method.xml @@ -0,0 +1,162 @@ + + +index.method +list +basic +kosek +kimber + + +index.method +Select method used to group index entries in an index + + + + +basic + + + +Description + +This parameter lets you select which method to use for sorting and grouping + index entries in an index. +Indexes in Latin-based languages that have accented characters typically +sort together accented words and unaccented words. +Thus à (U+00C1 LATIN CAPITAL LETTER A WITH ACUTE) would sort together +with A (U+0041 LATIN CAPITAL LETTER A), so both would appear in the A +section of the index. +Languages using other alphabets (such as Russian, which is written in the Cyrillic alphabet) +and languages using ideographic chararacters (such as Japanese) +require grouping specific to the languages and alphabets. + + +The default indexing method is limited. +It can group accented characters in Latin-based languages only. +It cannot handle non-Latin alphabets or ideographic languages. +The other indexing methods require extensions of one type or +another, and do not work with +all XSLT processors, which is why they are not used by default. + +The three choices for indexing method are: + + +basic + + +(default) Sort and groups words based only on the Latin alphabet. +Words with accented Latin letters will group and sort with +their respective primary letter, but +words in non-Latin alphabets will be +put in the Symbols section of the index. + + + + +kosek + + +This method sorts and groups words based on letter groups configured in +the DocBook locale file for the given language. +See, for example, the French locale file common/fr.xml. +This method requires that the XSLT processor +supports the EXSLT extensions (most do). +It also requires support for using +user-defined functions in xsl:key (xsltproc does not). + +This method is suitable for any language for which you can +list all the individual characters that should appear +in each letter group in an index. +It is probably not practical to use it for ideographic languages +such as Chinese that have hundreds or thousands of characters. + + +To use the kosek method, you must: + + + +Use a processor that supports its extensions, such as +Saxon 6 or Xalan (xsltproc and Saxon 8 do not). + + + +Set the index.method parameter's value to kosek. + + + +Import the appropriate index extensions stylesheet module +fo/autoidx-kosek.xsl or +html/autoidx-kosek.xsl into your +customization. + + + + + + + +kimber + + +This method uses extensions to the Saxon processor to implement +sophisticated indexing processes. It uses its own +configuration file, which can include information for any number of +languages. Each language's configuration can group +words using one of two processes. In the +enumerated process similar to that used in the kosek method, +you indicate the groupings character-by-character. +In the between-key process, you specify the +break-points in the sort order that should start a new group. +The latter configuration is useful for ideographic languages +such as Chinese, Japanese, and Korean. +You can also define your own collation algorithms and how you +want mixed Latin-alphabet words sorted. + + +For a whitepaper describing the extensions, see: +http://www.innodata-isogen.com/knowledge_center/white_papers/back_of_book_for_xsl_fo.pdf. + + + +To download the extension library, see +http://www.innodata-isogen.com/knowledge_center/tools_downloads/i18nsupport. + + + + +To use the kimber method, you must: + + + +Use Saxon (version 6 or 8) as your XSLT processor. + + + +Install and configure the Innodata Isogen library, using +the documentation that comes with it. + + + +Set the index.method parameter's value to kimber. + + + +Import the appropriate index extensions stylesheet module +fo/autoidx-kimber.xsl or +html/autoidx-kimber.xsl into your +customization. + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.number.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.number.separator.xml new file mode 100644 index 000000000..8f5151234 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.number.separator.xml @@ -0,0 +1,54 @@ + + +index.number.separator +string + + +index.number.separator +Override for punctuation separating page numbers in index + + + + + + + + +Description + +This parameter permits you to override the text to insert between +page references in a formatted index entry. Typically +that would be a comma and a space. + + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'number-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +override the gentext with the content of this parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. + + +In HTML index output, section title references are used instead of +page number references. This punctuation appears between +such section titles in an HTML index. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.role.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.role.xml new file mode 100644 index 000000000..81d65ddba --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.role.xml @@ -0,0 +1,48 @@ + + +index.on.role +boolean + + +index.on.role +Select indexterms based on role value + + + + + + + + +Description + + +If non-zero, +then an index element that has a +role attribute +value will contain only those indexterm +elements with a matching role value. +If an index has no role +attribute or it is blank, then the index will contain +all indexterms in the current scope. + + +If index.on.role is zero, then the +role attribute has no effect +on selecting indexterms for an index. + + +If you are using DocBook version 4.3 or later, you should +use the type attribute instead of role +on indexterm and index, +and set the index.on.type to a nonzero +value. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.type.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.type.xml new file mode 100644 index 000000000..a5189c7b1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.on.type.xml @@ -0,0 +1,52 @@ + + +index.on.type +boolean + + +index.on.type +Select indexterms based on type +attribute value + + + + + + + + +Description + + +If non-zero, +then an index element that has a +type attribute +value will contain only those indexterm +elements with a matching type attribute value. +If an index has no type +attribute or it is blank, then the index will contain +all indexterms in the current scope. + + + +If index.on.type is zero, then the +type attribute has no effect +on selecting indexterms for an index. + + +For those using DocBook version 4.2 or earlier, +the type attribute is not available +for index terms. However, you can achieve the same +effect by using the role attribute +in the same manner on indexterm +and index, and setting the stylesheet parameter +index.on.role to a nonzero value. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.page.number.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.page.number.properties.xml new file mode 100644 index 000000000..74d105a78 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.page.number.properties.xml @@ -0,0 +1,31 @@ + + +index.page.number.properties +attribute set + + +index.page.number.properties +Properties associated with index page numbers + + + + + + + + + +Description + +Properties associated with page numbers in indexes. +Changing color to indicate the page number is a link is +one possibility. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.prefer.titleabbrev.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.prefer.titleabbrev.xml new file mode 100644 index 000000000..3f010ae8d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.prefer.titleabbrev.xml @@ -0,0 +1,29 @@ + + +index.prefer.titleabbrev +boolean + + +index.prefer.titleabbrev +Should abbreviated titles be used as back references? + + + + + + + + +Description + +If non-zero, and if a titleabbrev is defined, the abbreviated title +is used as the link text of a back reference in the index. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.preferred.page.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.preferred.page.properties.xml new file mode 100644 index 000000000..1b7a26fff --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.preferred.page.properties.xml @@ -0,0 +1,32 @@ + + +index.preferred.page.properties +attribute set + + +index.preferred.page.properties +Properties used to emphasize page number references for +significant index terms + + + + + + bold + + + + +Description + +Properties used to emphasize page number references for +significant index terms (significance=preferred). Currently works only with +XEP. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.range.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.range.separator.xml new file mode 100644 index 000000000..aff09a93b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.range.separator.xml @@ -0,0 +1,57 @@ + + +index.range.separator +string + + +index.range.separator +Override for punctuation separating the two numbers +in a page range in index + + + + + + + + +Description + +This parameter permits you +to override the text to insert between +the two numbers of a page range in an index. +This parameter is only used by those XSL-FO processors +that support an extension for generating such page ranges +(such as XEP). + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'range-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +override the gentext with the content of this parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. + + +In HTML index output, section title references are used instead of +page number references. So there are no page ranges +and this parameter has no effect. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.term.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.term.separator.xml new file mode 100644 index 000000000..ab2f672c9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/index.term.separator.xml @@ -0,0 +1,54 @@ + + +index.term.separator +string + + +index.term.separator +Override for punctuation separating an index term +from its list of page references in an index + + + + + + + + +Description + +This parameter permits you to override +the text to insert between +the end of an index term and its list of page references. +Typically that might be a comma and a space. + + +Because this text may be locale dependent, +this parameter's value is normally taken from a gentext +template named 'term-separator' in the +context 'index' in the stylesheet +locale file for the language +of the current document. +This parameter can be used to override the gentext string, +and would typically be used on the command line. +This parameter would apply to all languages. + + +So this text string can be customized in two ways. +You can reset the default gentext string using +the local.l10n.xml parameter, or you can +fill in the content for this normally empty +override parameter. +The content can be a simple string, or it can be +something more complex such as a call-template. +For fo output, it could be an fo:leader +element to provide space of a specific length, or a dot leader. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informal.object.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informal.object.properties.xml new file mode 100644 index 000000000..e89cc1178 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informal.object.properties.xml @@ -0,0 +1,29 @@ + + +informal.object.properties +attribute set + + +informal.object.properties +Properties associated with an informal (untitled) object, such as an informalfigure + + + + + 0.5em + 1em + 2em + 0.5em + 1em + 2em + + +Description +The styling for informal objects in docbook. Specify the spacing before and after the object. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalequation.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalequation.properties.xml new file mode 100644 index 000000000..88a57bec5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalequation.properties.xml @@ -0,0 +1,27 @@ + + +informalequation.properties +attribute set + + +informalequation.properties +Properties associated with an informalequation + + + + + + + + +Description + +The styling for informalequations. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalexample.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalexample.properties.xml new file mode 100644 index 000000000..90ffb2c78 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalexample.properties.xml @@ -0,0 +1,27 @@ + + +informalexample.properties +attribute set + + +informalexample.properties +Properties associated with an informalexample + + + + + + + + +Description + +The styling for informalexamples. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalfigure.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalfigure.properties.xml new file mode 100644 index 000000000..c7662483c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informalfigure.properties.xml @@ -0,0 +1,27 @@ + + +informalfigure.properties +attribute set + + +informalfigure.properties +Properties associated with an informalfigure + + + + + + + + +Description + +The styling for informalfigures. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informaltable.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informaltable.properties.xml new file mode 100644 index 000000000..c9688836f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/informaltable.properties.xml @@ -0,0 +1,32 @@ + + +informaltable.properties +attribute set + + +informaltable.properties +Properties associated with the block surrounding an informaltable + + + + + + + + +Description + +Block styling properties for informaltables. This parameter should really +have been called informaltable.block.properties or something +like that, but we’re leaving it to avoid backwards-compatibility +problems. + +See also table.table.properties. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/inherit.keywords.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/inherit.keywords.xml new file mode 100644 index 000000000..7939a6a3a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/inherit.keywords.xml @@ -0,0 +1,31 @@ + + +inherit.keywords +boolean + + +inherit.keywords +Inherit keywords from ancestor elements? + + + + + + + +Description + +If inherit.keywords +is non-zero, the keyword meta for each HTML +head element will include all of the keywords from +ancestor elements. Otherwise, only the keywords from the current section +will be used. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.link.page.number.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.link.page.number.xml new file mode 100644 index 000000000..b26c0f6af --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.link.page.number.xml @@ -0,0 +1,69 @@ + + +insert.link.page.number +list +no +yes +maybe + + +insert.link.page.number +Turns page numbers in link elements on and off + + + + +no + + + +Description + +The value of this parameter determines if +cross references using the link element in +printed output will +include standard page number citations. +It has three possible values. + + + +no +No page number references will be generated. + + + +yes +Page number references will be generated +for all link elements. +The style of page reference may be changed +if an xrefstyle +attribute is used. + + + +maybe +Page number references will not be generated +for a link element unless +it has an +xrefstyle +attribute whose value specifies a page reference. + + + + +Although the xrefstyle attribute +can be used to turn the page reference on or off, it cannot be +used to control the formatting of the page number as it +can in xref. +In link it will always format with +the style established by the +gentext template with name="page.citation" +in the l:context name="xref". + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.page.number.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.page.number.xml new file mode 100644 index 000000000..dc6da3d06 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.page.number.xml @@ -0,0 +1,83 @@ + + +insert.olink.page.number +list +no +yes +maybe + + +insert.olink.page.number +Turns page numbers in olinks on and off + + + + +no + + + +Description + +The value of this parameter determines if +cross references made between documents with +olink will +include page number citations. +In most cases this is only applicable to references in printed output. + +The parameter has three possible values. + + + +no +No page number references will be generated for olinks. + + + +yes +Page number references will be generated +for all olink references. +The style of page reference may be changed +if an xrefstyle +attribute is used. + + + +maybe +Page number references will not be generated +for an olink element unless +it has an +xrefstyle +attribute whose value specifies a page reference. + + + +Olinks that point to targets within the same document +are treated as xrefs, and controlled by +the insert.xref.page.number parameter. + + +Page number references for olinks to +external documents can only be inserted if the +information exists in the olink database. +This means each olink target element +(div or obj) +must have a page attribute +whose value is its page number in the target document. +The XSL stylesheets are not able to extract that information +during processing because pages have not yet been created in +XSLT transformation. Only the XSL-FO processor knows what +page each element is placed on. +Therefore some postprocessing must take place to populate +page numbers in the olink database. + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.pdf.frag.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.pdf.frag.xml new file mode 100644 index 000000000..e93706053 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.olink.pdf.frag.xml @@ -0,0 +1,68 @@ + + +insert.olink.pdf.frag +boolean + + +insert.olink.pdf.frag +Add fragment identifiers for links into PDF files + + + + + + + + +Description + +The value of this parameter determines whether +the cross reference URIs to PDF documents made with +olink will +include fragment identifiers. + + +When forming a URI to link to a PDF document, +a fragment identifier (typically a '#' followed by an +id value) appended to the PDF filename can be used by +the PDF viewer to open +the PDF file to a location within the document instead of +the first page. +However, not all PDF files have id +values embedded in them, and not all PDF viewers can +handle fragment identifiers. + + +If insert.olink.pdf.frag is set +to a non-zero value, then any olink targeting a +PDF file will have the fragment identifier appended to the URI. +The URI is formed by concatenating the value of the +olink.base.uri parameter, the +value of the baseuri +attribute from the document +element in the olink database with the matching +targetdoc value, +and the value of the href +attribute for the targeted element in the olink database. +The href attribute +contains the fragment identifier. + + +If insert.olink.pdf.frag is set +to zero (the default value), then +the href attribute +from the olink database +is not appended to PDF olinks, so the fragment identifier is left off. +A PDF olink is any olink for which the +baseuri attribute +from the matching document +element in the olink database ends with '.pdf'. +Any other olinks will still have the fragment identifier added. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.xref.page.number.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.xref.page.number.xml new file mode 100644 index 000000000..8c3aa0728 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/insert.xref.page.number.xml @@ -0,0 +1,60 @@ + + +insert.xref.page.number +list +no +yes +maybe + + +insert.xref.page.number +Turns page numbers in xrefs on and off + + + + +no + + + +Description + +The value of this parameter determines if +cross references (xrefs) in +printed output will +include page number citations. +It has three possible values. + + + +no +No page number references will be generated. + + + +yes +Page number references will be generated +for all xref elements. +The style of page reference may be changed +if an xrefstyle +attribute is used. + + + +maybe +Page number references will not be generated +for an xref element unless +it has an +xrefstyle +attribute whose value specifies a page reference. + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.properties.xml new file mode 100644 index 000000000..49f8ee649 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.properties.xml @@ -0,0 +1,26 @@ + + +itemizedlist.label.properties +attribute set + + +itemizedlist.label.properties +Properties that apply to each label inside itemized list. + + + + + + +Description +Properties that apply to each label inside itemized list. E.g.: +<xsl:attribute-set name="itemizedlist.label.properties"> + <xsl:attribute name="text-align">right</xsl:attribute> +</xsl:attribute-set> + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.width.xml new file mode 100644 index 000000000..1d2c88c8d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.label.width.xml @@ -0,0 +1,28 @@ + + +itemizedlist.label.width +length + + + itemizedlist.label.width +The default width of the label (bullet) in an itemized list. + + + + + 1.0em + + + +Description +Specifies the default width of the label (usually a bullet or other +symbol) in an itemized list. You can override the default value on any +particular list with the “dbfo†processing instruction using the +“label-width†pseudoattribute. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.properties.xml new file mode 100644 index 000000000..d7c7c1d27 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/itemizedlist.properties.xml @@ -0,0 +1,23 @@ + + +itemizedlist.properties +attribute set + + +itemizedlist.properties +Properties that apply to each list-block generated by itemizedlist. + + + + + + +Description +Properties that apply to each fo:list-block generated by itemizedlist. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/javahelp.encoding.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/javahelp.encoding.xml new file mode 100644 index 000000000..ba729c8cb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/javahelp.encoding.xml @@ -0,0 +1,31 @@ + + +javahelp.encoding +string + + +javahelp.encoding +Character encoding to use in control files for JavaHelp. + + + + +iso-8859-1 + + + +Description + +JavaHelp crashes on some characters when written as character +references. In that case you can use this parameter to select an appropriate encoding. + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keep.relative.image.uris.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keep.relative.image.uris.xml new file mode 100644 index 000000000..3a5a098d7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keep.relative.image.uris.xml @@ -0,0 +1,34 @@ + + +keep.relative.image.uris +boolean + + +keep.relative.image.uris +Should image URIs be resolved against xml:base? + + + + + + + + + +Description + +If non-zero, relative URIs (in, for example +fileref attributes) will be used in the generated +output. Otherwise, the URIs will be made absolute with respect to the +base URI. + +Note that the stylesheets calculate (and use) the absolute form +for some purposes, this only applies to the resulting output. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keyboard.nav.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keyboard.nav.xml new file mode 100644 index 000000000..49b0c0b59 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/keyboard.nav.xml @@ -0,0 +1,29 @@ + + +keyboard.nav +boolean + + +keyboard.nav +Enable keyboard navigation? + + + + + + + + +Description + +If non-zero, JavaScript is added to the slides to enable keyboard +navigation. Pressing 'n', space, or return moves forward; pressing 'p' moves +backward. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.default.language.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.default.language.xml new file mode 100644 index 000000000..ed89e069a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.default.language.xml @@ -0,0 +1,30 @@ + + + l10n.gentext.default.language + string + + + l10n.gentext.default.language + Sets the default language for generated text + + + + +en + + + +Description + +The value of the l10n.gentext.default.language +parameter is used as the language for generated text if no setting is provided +in the source document. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.language.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.language.xml new file mode 100644 index 000000000..ff941c7c7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.language.xml @@ -0,0 +1,33 @@ + + +l10n.gentext.language +string + + +l10n.gentext.language +Sets the gentext language + + + + + + + + +Description + +If this parameter is set to any value other than the empty string, its +value will be used as the value for the language when generating text. Setting +l10n.gentext.language overrides any settings within the +document being formatted. + +It's much more likely that you might want to set the +l10n.gentext.default.language parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.use.xref.language.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.use.xref.language.xml new file mode 100644 index 000000000..d70017afb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.gentext.use.xref.language.xml @@ -0,0 +1,53 @@ + + +l10n.gentext.use.xref.language +boolean + + +l10n.gentext.use.xref.language +Use the language of target when generating cross-reference text? + + + + + + + + +Description + +If non-zero, the language of the target will be used when +generating cross reference text. Usually, the current +language is used when generating text (that is, the language of the +element that contains the cross-reference element). But setting this parameter +allows the language of the element pointed to to control +the generated text. + +Consider the following example: + + +<para lang="en">See also <xref linkend="chap3"/>.</para> + + + +Suppose that Chapter 3 happens to be written in German. +If l10n.gentext.use.xref.language is non-zero, the +resulting text will be something like this: + +
    +See also Kapital 3. +
    + +Where the more traditional rendering would be: + +
    +See also Chapter 3. +
    + +
    +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.lang.value.rfc.compliant.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.lang.value.rfc.compliant.xml new file mode 100644 index 000000000..e0dbd7953 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/l10n.lang.value.rfc.compliant.xml @@ -0,0 +1,57 @@ + + +l10n.lang.value.rfc.compliant +boolean + + +l10n.lang.value.rfc.compliant +Make value of lang attribute RFC compliant? + + + + + + + + +Description + +If non-zero, ensure that the values for all lang attributes in HTML output are RFC +compliantSection 8.1.1, Language Codes, in the HTML 4.0 Recommendation states that: + +
    [RFC1766] defines and explains the language codes +that must be used in HTML documents. +Briefly, language codes consist of a primary code and a possibly +empty series of subcodes: + +language-code = primary-code ( "-" subcode )* + +And in RFC 1766, Tags for the Identification +of Languages, the EBNF for "language tag" is given as: + +Language-Tag = Primary-tag *( "-" Subtag ) +Primary-tag = 1*8ALPHA +Subtag = 1*8ALPHA + +
    +
    . + +by taking any underscore characters in any lang values found in source documents, and +replacing them with hyphen characters in output HTML files. For +example, zh_CN in a source document becomes +zh-CN in the HTML output form that source. + + +This parameter does not cause any case change in lang values, because RFC 1766 +explicitly states that all "language tags" (as it calls them) "are +to be treated as case insensitive". + +
    + +
    +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/label.from.part.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/label.from.part.xml new file mode 100644 index 000000000..5deb96030 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/label.from.part.xml @@ -0,0 +1,38 @@ + + +label.from.part +boolean + + +label.from.part +Renumber components in each part? + + + + + + + + +Description + +If label.from.part is non-zero, then + numbering of components — preface, + chapter, appendix, and + reference (when reference occurs at the + component level) — is re-started within each + part. +If label.from.part is zero (the + default), numbering of components is not + re-started within each part; instead, components are + numbered sequentially throughout each book, + regardless of whether or not they occur within part + instances. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/line-height.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/line-height.xml new file mode 100644 index 000000000..f0f4b3246 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/line-height.xml @@ -0,0 +1,27 @@ + + +line-height +string + + +line-height +Specify the line-height property + + + + +normal + + + +Description + +Sets the line-height property. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.everyNth.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.everyNth.xml new file mode 100644 index 000000000..5e7bcacc7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.everyNth.xml @@ -0,0 +1,29 @@ + + +linenumbering.everyNth +integer + + +linenumbering.everyNth +Indicate which lines should be numbered + + + + +5 + + + +Description + +If line numbering is enabled, everyNth line will be +numbered. Note that numbering is one based, not zero based. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.extension.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.extension.xml new file mode 100644 index 000000000..726781aee --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.extension.xml @@ -0,0 +1,30 @@ + + +linenumbering.extension +boolean + + +linenumbering.extension +Enable the line numbering extension + + + + + + + + +Description + +If non-zero, verbatim environments (address, literallayout, +programlisting, screen, synopsis) that specify line numbering will +have line numbers. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.separator.xml new file mode 100644 index 000000000..8bf7d2213 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.separator.xml @@ -0,0 +1,30 @@ + + +linenumbering.separator +string + + +linenumbering.separator +Specify a separator between line numbers and lines + + + + + + + + +Description + +The separator is inserted between line numbers and lines in the +verbatim environment. The default value is a single white space. + Note the interaction with linenumbering.width + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.width.xml new file mode 100644 index 000000000..78515c3ee --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/linenumbering.width.xml @@ -0,0 +1,29 @@ + + +linenumbering.width +integer + + +linenumbering.width +Indicates the width of line numbers + + + + +3 + + + +Description + +If line numbering is enabled, line numbers will appear right +justified in a field "width" characters wide. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/link.mailto.url.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/link.mailto.url.xml new file mode 100644 index 000000000..0715b32fc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/link.mailto.url.xml @@ -0,0 +1,29 @@ + + +link.mailto.url +string + + +link.mailto.url +Mailto URL for the LINK REL=made HTML HEAD element + + + + + + + + +Description + +If not the empty string, this address will be used for the +rel=made link element in the html head + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.properties.xml new file mode 100644 index 000000000..dbf9dfc13 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.properties.xml @@ -0,0 +1,25 @@ + + +list.block.properties +attribute set + + +list.block.properties +Properties that apply to each list-block generated by list. + + + + + 0.2em + 1.5em + + +Description +Properties that apply to each fo:list-block generated by itemizedlist/orderedlist. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.spacing.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.spacing.xml new file mode 100644 index 000000000..377e6f8a8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.block.spacing.xml @@ -0,0 +1,29 @@ + + +list.block.spacing +attribute set + + +list.block.spacing +What spacing do you want before and after lists? + + + + + 1em + 0.8em + 1.2em + 1em + 0.8em + 1.2em + + +Description +Specify the spacing required before and after a list. It is necessary to specify the space after a list block because lists can come inside of paras. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.item.spacing.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.item.spacing.xml new file mode 100644 index 000000000..21916520f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/list.item.spacing.xml @@ -0,0 +1,26 @@ + + +list.item.spacing +attribute set + + +list.item.spacing +What space do you want between list items? + + + + + 1em + 0.8em + 1.2em + + +Description +Specify what spacing you want between each list item. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.clean.html.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.clean.html.xml new file mode 100644 index 000000000..fbf80d02b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.clean.html.xml @@ -0,0 +1,51 @@ + + +make.clean.html +boolean + + +make.clean.html +Make HTML conform to modern coding standards + + + + + + + + +Description + +If make.clean.html is true, the stylesheets take +extra effort to ensure that the resulting HTML is conforms to +modern HTML coding standards. In addition to eliminating +excessive and noncompliant coding, it moves presentation +HTML coding to a CSS stylesheet. + +The resulting HTML is dependent on +CSS for formatting, and so the stylesheet is capable of +generating a supporting CSS file. The docbook.css.source +and custom.css.source parameters control +how a CSS file is generated. + +If you require your CSS to reside in the HTML +head element, then the generate.css.header +can be used to do that. + +The make.clean.html parameter is +different from html.cleanup +because the former changes the resulting markup; it does not use extension functions +like the latter to manipulate result-tree-fragments, +and is therefore applicable to any XSLT processor. + +If make.clean.html is set to zero (the default), +then the stylesheet retains its original +old style +HTML formatting features. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.graphic.viewport.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.graphic.viewport.xml new file mode 100644 index 000000000..0bad336f8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.graphic.viewport.xml @@ -0,0 +1,35 @@ + + +make.graphic.viewport +boolean + + +make.graphic.viewport +Use tables in HTML to make viewports for graphics + + + + + + + + +Description + +The HTML img element only supports the notion +of content-area scaling; it doesn't support the distinction between a +content-area and a viewport-area, so we have to make some compromises. + +If make.graphic.viewport is non-zero, a table +will be used to frame the image. This creates an effective viewport-area. + + +Tables and alignment don't work together, so this parameter is ignored +if alignment is specified on an image. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.index.markup.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.index.markup.xml new file mode 100644 index 000000000..7942b5a50 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.index.markup.xml @@ -0,0 +1,73 @@ + + +make.index.markup +boolean + + +make.index.markup +Generate XML index markup in the index? + + + + + + + + +Description + +This parameter enables a very neat trick for getting properly +merged, collated back-of-the-book indexes. G. Ken Holman suggested +this trick at Extreme Markup Languages 2002 and I'm indebted to him +for it. + +Jeni Tennison's excellent code in +autoidx.xsl does a great job of merging and +sorting indexterms in the document and building a +back-of-the-book index. However, there's one thing that it cannot +reasonably be expected to do: merge page numbers into ranges. (I would +not have thought that it could collate and suppress duplicate page +numbers, but in fact it appears to manage that task somehow.) + +Ken's trick is to produce a document in which the index at the +back of the book is displayed in XML. Because the index +is generated by the FO processor, all of the page numbers have been resolved. +It's a bit hard to explain, but what it boils down to is that instead of having +an index at the back of the book that looks like this: + +
    +A +ap1, 1, 2, 3 + +
    + +you get one that looks like this: + +
    +<indexdiv>A</indexdiv> +<indexentry> +<primaryie>ap1</primaryie>, +<phrase role="pageno">1</phrase>, +<phrase role="pageno">2</phrase>, +<phrase role="pageno">3</phrase> +</indexentry> +
    + +After building a PDF file with this sort of odd-looking index, you can +extract the text from the PDF file and the result is a proper index expressed in +XML. + +Now you have data that's amenable to processing and a simple Perl script +(such as fo/pdf2index) can +merge page ranges and generate a proper index. + +Finally, reformat your original document using this literal index instead of +an automatically generated one and bingo! + +
    +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.single.year.ranges.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.single.year.ranges.xml new file mode 100644 index 000000000..c49ab97be --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.single.year.ranges.xml @@ -0,0 +1,28 @@ + + +make.single.year.ranges +boolean + + +make.single.year.ranges +Print single-year ranges (e.g., 1998-1999) + + + + + + + +Description + +If non-zero, year ranges that span a single year will be printed +in range notation (1998-1999) instead of discrete notation +(1998, 1999). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.valid.html.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.valid.html.xml new file mode 100644 index 000000000..8618d39a7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.valid.html.xml @@ -0,0 +1,35 @@ + + +make.valid.html +boolean + + +make.valid.html +Attempt to make sure the HTML output is valid HTML + + + + + + + + +Description + +If make.valid.html is true, the stylesheets take +extra effort to ensure that the resulting HTML is valid. This may mean that some +para tags are translated into HTML divs or +that other substitutions occur. + +This parameter is different from html.cleanup +because it changes the resulting markup; it does not use extension functions +to manipulate result-tree-fragments and is therefore applicable to any +XSLT processor. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.year.ranges.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.year.ranges.xml new file mode 100644 index 000000000..b1a238267 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/make.year.ranges.xml @@ -0,0 +1,32 @@ + + +make.year.ranges +boolean + + +make.year.ranges +Collate copyright years into ranges? + + + + + + +Description + +If non-zero, multiple copyright year elements will be +collated into ranges. +This works only if each year number is put into a separate +year element. The copyright element permits multiple +year elements. If a year element contains a dash or +a comma, then that year element will not be merged into +any range. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.authors.section.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.authors.section.enabled.xml new file mode 100644 index 000000000..73cb63782 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.authors.section.enabled.xml @@ -0,0 +1,46 @@ + + +man.authors.section.enabled +boolean + + +man.authors.section.enabled +Display auto-generated AUTHORS section? + + + +1 + + +Description + +If the value of +man.authors.section.enabled is non-zero +(the default), then an AUTHORS section is +generated near the end of each man page. The output of the +AUTHORS section is assembled from any +author, editor, and othercredit +metadata found in the contents of the child info or +refentryinfo (if any) of the refentry +itself, or from any author, editor, and +othercredit metadata that may appear in info +contents of any ancestors of the refentry. + +If the value of +man.authors.section.enabled is zero, the +the auto-generated AUTHORS section is +suppressed. + +Set the value of + man.authors.section.enabled to zero if + you want to have a manually created AUTHORS + section in your source, and you want it to appear in output + instead of the auto-generated AUTHORS + section. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.base.url.for.relative.links.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.base.url.for.relative.links.xml new file mode 100644 index 000000000..a802ec80a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.base.url.for.relative.links.xml @@ -0,0 +1,76 @@ + + + man.base.url.for.relative.links + string + + + man.base.url.for.relative.links + Specifies a base URL for relative links + + + + [set $man.base.url.for.relative.links]/ + + + Description + + For any “notesource†listed in the auto-generated + “NOTES†section of output man pages (which is generated when + the value of the + man.endnotes.list.enabled parameter + is non-zero), if the notesource is a link source with a + relative URI, the URI is displayed in output with the value + of the + man.base.url.for.relative.links + parameter prepended to the value of the link URI. + + + A link source is an notesource that references an + external resource: + + + a ulink element with a url attribute + + + any element with an xlink:href attribute + + + an imagedata, audiodata, or + videodata element + + + + + + If you use relative URIs in link sources in your DocBook + refentry source, and you leave + man.base.url.for.relative.links + unset, the relative links will appear “as is†in the “Notes†+ section of any man-page output generated from your source. + That’s probably not what you want, because such relative + links are only usable in the context of HTML output. So, to + make the links meaningful and usable in the context of + man-page output, set a value for + man.base.url.for.relative.links that + points to the online version of HTML output generated from + your DocBook refentry source. For + example: + <xsl:param name="man.base.url.for.relative.links" + >http://www.kernel.org/pub/software/scm/git/docs/</xsl:param> + + + + + Related Parameters + man.endnotes.list.enabled + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.break.after.slash.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.break.after.slash.xml new file mode 100644 index 000000000..859edb731 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.break.after.slash.xml @@ -0,0 +1,46 @@ + + +man.break.after.slash +boolean + + +man.break.after.slash +Enable line-breaking after slashes? + + + + +0 + + +Description + +If non-zero, line-breaking after slashes is enabled. This is +mainly useful for causing long URLs or pathnames/filenames to be +broken up or "wrapped" across lines (though it also has the side +effect of sometimes causing relatively short URLs and pathnames to be +broken up across lines too). + +If zero (the default), line-breaking after slashes is +disabled. In that case, strings containing slashes (for example, URLs +or filenames) are not broken across lines, even if they exceed the +maximum column widith. + + + If you set a non-zero value for this parameter, check your + man-page output carefuly afterwards, in order to make sure that the + setting has not introduced an excessive amount of breaking-up of URLs + or pathnames. If your content contains mostly short URLs or + pathnames, setting a non-zero value for + man.break.after.slash will probably result in + in a significant number of relatively short URLs and pathnames being + broken across lines, which is probably not what you want. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.enabled.xml new file mode 100644 index 000000000..5522339ea --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.enabled.xml @@ -0,0 +1,55 @@ + + +man.charmap.enabled +boolean + + +man.charmap.enabled +Apply character map before final output? + + + + + + + + +Description + +If the value of the man.charmap.enabled +parameter is non-zero, a "character map" is used to substitute certain +Unicode symbols and special characters with appropriate roff/groff +equivalents, just before writing each man-page file to the +filesystem. If instead the value of +man.charmap.enabled is zero, Unicode characters +are passed through "as is". + +Details + +For converting certain Unicode symbols and special characters in +UTF-8 or UTF-16 encoded XML source to appropriate groff/roff +equivalents in man-page output, the DocBook XSL Stylesheets +distribution includes a roff character map that is compliant with the XSLT character +map format as detailed in the XSLT 2.0 specification. The map +contains more than 800 character mappings and can be considered the +standard roff character map for the distribution. + +You can use the man.charmap.uri +parameter to specify a URI for the location for an alternate roff +character map to use in place of the standard roff character map +provided in the distribution. + +You can also use a subset of a character map. For details, +see the man.charmap.use.subset, +man.charmap.subset.profile, and +man.charmap.subset.profile.english +parameters. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.english.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.english.xml new file mode 100644 index 000000000..cbc9fb0b6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.english.xml @@ -0,0 +1,80 @@ + + +man.charmap.subset.profile.english +string + + +man.charmap.subset.profile.english +Profile of character map subset + + + + + +@*[local-name() = 'block'] = 'Miscellaneous Technical' or +(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and + @*[local-name() = 'class'] = 'symbols') +or +(@*[local-name() = 'block'] = 'General Punctuation' and + (@*[local-name() = 'class'] = 'spaces' or + @*[local-name() = 'class'] = 'dashes' or + @*[local-name() = 'class'] = 'quotes' or + @*[local-name() = 'class'] = 'bullets' + ) +) or +@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or +@*[local-name() = 'name'] = 'WORD JOINER' or +@*[local-name() = 'name'] = 'SERVICE MARK' or +@*[local-name() = 'name'] = 'TRADE MARK SIGN' or +@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE' + + + + +Description + +If the value of the + man.charmap.use.subset parameter is + non-zero, and your DocBook source is written in English (that + is, if its lang or xml:lang attribute on the root element + in your DocBook source or on the first refentry + element in your source has the value en or if + it has no lang or xml:lang attribute), then the + character-map subset specified by the + man.charmap.subset.profile.english + parameter is used instead of the full roff character map. + +Otherwise, if the lang or xml:lang attribute + on the root element in your DocBook source or on the first + refentry element in your source has a value other + than en, then the character-map subset + specified by the + man.charmap.subset.profile parameter is + used instead of + man.charmap.subset.profile.english. + +The difference between the two subsets is that + man.charmap.subset.profile provides + mappings for characters in Western European languages that are + not part of the Roman (English) alphabet (ASCII character set). + +The value of man.charmap.subset.profile.english +is a string representing an XPath expression that matches attribute +names and values for output-character elements in the character map. + +For other details, see the documentation for the +man.charmap.subset.profile.english and +man.charmap.use.subset parameters. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.xml new file mode 100644 index 000000000..913a4e3b9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.subset.profile.xml @@ -0,0 +1,297 @@ + + +man.charmap.subset.profile +string + + +man.charmap.subset.profile +Profile of character map subset + + + + + +@*[local-name() = 'block'] = 'Miscellaneous Technical' or +(@*[local-name() = 'block'] = 'C1 Controls And Latin-1 Supplement (Latin-1 Supplement)' and + (@*[local-name() = 'class'] = 'symbols' or + @*[local-name() = 'class'] = 'letters') +) or +@*[local-name() = 'block'] = 'Latin Extended-A' +or +(@*[local-name() = 'block'] = 'General Punctuation' and + (@*[local-name() = 'class'] = 'spaces' or + @*[local-name() = 'class'] = 'dashes' or + @*[local-name() = 'class'] = 'quotes' or + @*[local-name() = 'class'] = 'bullets' + ) +) or +@*[local-name() = 'name'] = 'HORIZONTAL ELLIPSIS' or +@*[local-name() = 'name'] = 'WORD JOINER' or +@*[local-name() = 'name'] = 'SERVICE MARK' or +@*[local-name() = 'name'] = 'TRADE MARK SIGN' or +@*[local-name() = 'name'] = 'ZERO WIDTH NO-BREAK SPACE' + + + + +Description + +If the value of the +man.charmap.use.subset parameter is non-zero, +and your DocBook source is not written in English (that + is, if the lang or xml:lang attribute on the root element + in your DocBook source or on the first refentry + element in your source has a value other than + en), then the character-map subset specified + by the man.charmap.subset.profile + parameter is used instead of the full roff character map. + +Otherwise, if the lang or xml:lang attribute on the root + element in your DocBook + source or on the first refentry element in your source + has the value en or if it has no lang or xml:lang attribute, then the character-map + subset specified by the + man.charmap.subset.profile.english + parameter is used instead of + man.charmap.subset.profile. + +The difference between the two subsets is that + man.charmap.subset.profile provides + mappings for characters in Western European languages that are + not part of the Roman (English) alphabet (ASCII character set). + +The value of man.charmap.subset.profile +is a string representing an XPath expression that matches attribute +names and values for output-character +elements in the character map. + +The attributes supported in the standard roff character map included in the distribution are: + + + character + + a raw Unicode character or numeric Unicode + character-entity value (either in decimal or hex); all + characters have this attribute + + + + name + + a standard full/long ISO/Unicode character name (e.g., + "OHM SIGN"); all characters have this attribute + + + + block + + a standard Unicode "block" name (e.g., "General + Punctuation"); all characters have this attribute. For the full + list of Unicode block names supported in the standard roff + character map, see . + + + + class + + a class of characters (e.g., "spaces"). Not all + characters have this attribute; currently, it is used only with + certain characters within the "C1 Controls And Latin-1 + Supplement" and "General Punctuation" blocks. For details, see + . + + + + entity + + an ISO entity name (e.g., "ohm"); not all characters + have this attribute, because not all characters have ISO entity + names; for example, of the 800 or so characters in the standard + roff character map included in the distribution, only around 300 + have ISO entity names. + + + + + string + + a string representing an roff/groff escape-code (with + "@esc@" used in place of the backslash), or a simple ASCII + string; all characters in the roff character map have this + attribute + + + + +The value of man.charmap.subset.profile +is evaluated as an XPath expression at run-time to select a portion of +the roff character map to use. You can tune the subset used by adding +or removing parts. For example, if you need to use a wide range of +mathematical operators in a document, and you want to have them +converted into roff markup properly, you might add the following: + + @*[local-name() = 'block'] ='MathematicalOperators' + +That will cause a additional set of around 67 additional "math" +characters to be converted into roff markup. + + +Depending on which XSLT engine you use, either the EXSLT +dyn:evaluate extension function (for xsltproc or +Xalan) or saxon:evaluate extension function (for +Saxon) are used to dynamically evaluate the value of +man.charmap.subset.profile at run-time. If you +don't use xsltproc, Saxon, Xalan -- or some other XSLT engine that +supports dyn:evaluate -- you must either set the +value of the man.charmap.use.subset parameter +to zero and process your documents using the full character map +instead, or set the value of the +man.charmap.enabled parameter to zero instead +(so that character-map processing is disabled completely. + + +An alternative to using +man.charmap.subset.profile is to create your +own custom character map, and set the value of +man.charmap.uri to the URI/filename for +that. If you use a custom character map, you will probably want to +include in it just the characters you want to use, and so you will +most likely also want to set the value of +man.charmap.use.subset to zero. +You can create a +custom character map by making a copy of the standard roff character map provided in the distribution, and +then adding to, changing, and/or deleting from that. + + +If you author your DocBook XML source in UTF-8 or UTF-16 +encoding and aren't sure what OSes or environments your man-page +output might end up being viewed on, and not sure what version of +nroff/groff those environments might have, you should be careful about +what Unicode symbols and special characters you use in your source and +what parts you add to the value of +man.charmap.subset.profile. +Many of the escape codes used are specific to groff and using +them may not provide the expected output on an OS or environment that +uses nroff instead of groff. +On the other hand, if you intend for your man-page output to be +viewed only on modern systems (for example, GNU/Linux systems, FreeBSD +systems, or Cygwin environments) that have a good, up-to-date groff, +then you can safely include a wide range of Unicode symbols and +special characters in your UTF-8 or UTF-16 encoded DocBook XML source +and add any of the supported Unicode block names to the value of +man.charmap.subset.profile. + + + +For other details, see the documentation for the +man.charmap.use.subset parameter. + +Supported Unicode block names and "class" values + + + Below is the full list of Unicode block names and "class" + values supported in the standard roff stylesheet provided in the + distribution, along with a description of which codepoints from the + Unicode range corresponding to that block name or block/class + combination are supported. + + + + C1 Controls And Latin-1 Supplement (Latin-1 Supplement) (x00a0 to x00ff) + class values + + + symbols + + + letters + + + + + Latin Extended-A (x0100 to x017f, partial) + + + Spacing Modifier Letters (x02b0 to x02ee, partial) + + + Greek and Coptic (x0370 to x03ff, partial) + + + General Punctuation (x2000 to x206f, partial) + class values + + + spaces + + + dashes + + + quotes + + + daggers + + + bullets + + + leaders + + + primes + + + + + + Superscripts and Subscripts (x2070 to x209f) + + + Currency Symbols (x20a0 to x20b1) + + + Letterlike Symbols (x2100 to x214b) + + + Number Forms (x2150 to x218f) + + + Arrows (x2190 to x21ff, partial) + + + Mathematical Operators (x2200 to x22ff, partial) + + + Control Pictures (x2400 to x243f) + + + Enclosed Alphanumerics (x2460 to x24ff) + + + Geometric Shapes (x25a0 to x25f7, partial) + + + Miscellaneous Symbols (x2600 to x26ff, partial) + + + Dingbats (x2700 to x27be, partial) + + + Alphabetic Presentation Forms (xfb00 to xfb04 only) + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.uri.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.uri.xml new file mode 100644 index 000000000..0c8f57451 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.uri.xml @@ -0,0 +1,42 @@ + + +man.charmap.uri +uri + + +man.charmap.uri +URI for custom roff character map + + + + + + + + +Description + +For converting certain Unicode symbols and special characters in +UTF-8 or UTF-16 encoded XML source to appropriate groff/roff +equivalents in man-page output, the DocBook XSL Stylesheets +distribution includes an XSLT character +map. That character map can be considered the standard roff +character map for the distribution. + +If the value of the man.charmap.uri +parameter is non-empty, that value is used as the URI for the location +for an alternate roff character map to use in place of the standard +roff character map provided in the distribution. + + +Do not set a value for man.charmap.uri +unless you have a custom roff character map that differs from the +standard one provided in the distribution. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.use.subset.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.use.subset.xml new file mode 100644 index 000000000..4403704ff --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.charmap.use.subset.xml @@ -0,0 +1,80 @@ + + +man.charmap.use.subset +boolean + + +man.charmap.use.subset +Use subset of character map instead of full map? + + + + + + + + +Description + +If the value of the +man.charmap.use.subset parameter is non-zero, +a subset of the roff character map is used instead of the full roff +character map. The profile of the subset used is determined either +by the value of the +man.charmap.subset.profile +parameter (if the source is not in English) or the +man.charmap.subset.profile.english +parameter (if the source is in English). + + + You may want to experiment with setting a non-zero value of + man.charmap.use.subset, so that the full + character map is used. Depending on which XSLT engine you run, + setting a non-zero value for + man.charmap.use.subset may significantly + increase the time needed to process your documents. Or it may + not. For example, if you set it and run it with xsltproc, it seems + to dramatically increase processing time; on the other hand, if you + set it and run it with Saxon, it does not seem to increase + processing time nearly as much. + + If processing time is not a important concern and/or you can + tolerate the increase in processing time imposed by using the full + character map, set man.charmap.use.subset to + zero. + + +Details + +For converting certain Unicode symbols and special characters in +UTF-8 or UTF-16 encoded XML source to appropriate groff/roff +equivalents in man-page output, the DocBook XSL Stylesheets +distribution includes a roff character map that is compliant with the XSLT character +map format as detailed in the XSLT 2.0 specification. The map +contains more than 800 character mappings and can be considered the +standard roff character map for the distribution. + + +You can use the man.charmap.uri +parameter to specify a URI for the location for an alternate roff +character map to use in place of the standard roff character map +provided in the distribution. + + +Because it is not terrifically efficient to use the standard +800-character character map in full -- and for most (or all) users, +never necessary to use it in full -- the DocBook XSL Stylesheets +support a mechanism for using, within any given character map, a +subset of character mappings instead of the full set. You can use the +man.charmap.subset.profile or +man.charmap.subset.profile.english +parameter to tune the profile of that subset to use. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.copyright.section.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.copyright.section.enabled.xml new file mode 100644 index 000000000..9e8358761 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.copyright.section.enabled.xml @@ -0,0 +1,46 @@ + + +man.copyright.section.enabled +boolean + + +man.copyright.section.enabled +Display auto-generated COPYRIGHT section? + + + +1 + + +Description + +If the value of +man.copyright.section.enabled is non-zero +(the default), then a COPYRIGHT section is +generated near the end of each man page. The output of the +COPYRIGHT section is assembled from any +copyright and legalnotice metadata found in +the contents of the child info or +refentryinfo (if any) of the refentry +itself, or from any copyright and +legalnotice metadata that may appear in info +contents of any ancestors of the refentry. + +If the value of +man.copyright.section.enabled is zero, the +the auto-generated COPYRIGHT section is +suppressed. + +Set the value of + man.copyright.section.enabled to zero if + you want to have a manually created COPYRIGHT + section in your source, and you want it to appear in output + instead of the auto-generated COPYRIGHT + section. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.are.numbered.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.are.numbered.xml new file mode 100644 index 000000000..b069ec3ed --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.are.numbered.xml @@ -0,0 +1,106 @@ + + +man.endnotes.are.numbered +boolean + + +man.endnotes.are.numbered +Number endnotes? + + + + +1 + + + +Description + +If the value of man.endnotes.are.numbered is +non-zero (the default), then for each non-empty +A “non-empty†notesource is one that looks like +this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/">manpages</ulink> +an “empty†notesource is on that looks like this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/> + “notesourceâ€: + + + + a number (in square brackets) is displayed inline after the + rendered inline contents (if any) of the notesource + + + the contents of the notesource are included in a + numbered list of endnotes that is generated at the end of + each man page; the number for each endnote corresponds to + the inline number for the notesource with which it is + associated + + +The default heading for the list of endnotes is +NOTES. To output a different heading, set a value +for the man.endnotes.section.heading +parameter. + + + The endnotes list is also displayed (but without + numbers) if the value of + man.endnotes.list.enabled is + non-zero. + + + +If the value of man.endnotes.are.numbered is +zero, numbering of endnotess is suppressed; only inline +contents (if any) of the notesource are displayed inline. + + If you are thinking about disabling endnote numbering by setting + the value of man.endnotes.are.numbered to zero, + before you do so, first take some time to carefully + consider the information needs and experiences of your users. The + square-bracketed numbers displayed inline after notesources may seem + obstrusive and aesthetically unpleasingAs far as notesources that are links, ytou might + think it would be better to just display URLs for non-empty + links inline, after their content, rather than displaying + square-bracketed numbers all over the place. But it's not better. In + fact, it's not even practical, because many (most) URLs for links + are too long to be displayed inline. They end up overflowing the + right margin. You can set a non-zero value for + man.break.after.slash parameter to deal with + that, but it could be argued that what you end up with is at least + as ugly, and definitely more obstrusive, then having short + square-bracketed numbers displayed inline., + + but in a text-only output format, the + numbered-notesources/endnotes-listing mechanism is the only + practical way to handle this kind of content. + + Also, users of “text based†browsers such as + lynx will already be accustomed to seeing inline + numbers for links. And various "man to html" applications, such as + the widely used man2html (VH-Man2html) + application, can automatically turn URLs into "real" HTML hyperlinks + in output. So leaving man.endnotes.are.numbered + at its default (non-zero) value ensures that no information is + lost in your man-page output. It just gets + “rearrangedâ€. + + +The handling of empty links is not affected by this +parameter. Empty links are handled simply by displaying their URLs +inline. Empty links are never auto-numbered. + +If you disable endnotes numbering, you should probably also set +man.font.links to an empty value (to +disable font formatting for links. + + +Related Parameters + man.endnotes.list.enabled, + man.font.links + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.enabled.xml new file mode 100644 index 000000000..89d81888f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.enabled.xml @@ -0,0 +1,105 @@ + + +man.endnotes.list.enabled +boolean + + +man.endnotes.list.enabled +Display endnotes list at end of man page? + + + + +1 + + + +Description + +If the value of man.endnotes.list.enabled is +non-zero (the default), then an endnotes list is added to the end of +the output man page. + +If the value of man.endnotes.list.enabled is +zero, the list is suppressed — unless link numbering is enabled (that +is, if man.endnotes.are.numbered is non-zero), in +which case, that setting overrides the +man.endnotes.list.enabled setting, and the +endnotes list is still displayed. The reason is that inline +numbering of notesources associated with endnotes only makes sense +if a (numbered) list of endnotes is also generated. + + + Leaving + man.endnotes.list.enabled at its default + (non-zero) value ensures that no “out of line†information (such + as the URLs for hyperlinks and images) gets lost in your + man-page output. It just gets “rearrangedâ€. + So if you’re thinking about disabling endnotes listing by + setting the value of + man.endnotes.list.enabled to zero: + Before you do so, first take some time to carefully consider + the information needs and experiences of your users. The “out + of line†information has value even if the presentation of it + in text output is not as interactive as it may be in other + output formats. + As far as the specific case of URLs: Even though the URLs + displayed in text output may not be “real†(clickable) + hyperlinks, many X terminals have convenience features for + recognizing URLs and can, for example, present users with + an options to open a URL in a browser with the user clicks on + the URL is a terminal window. And short of those, users with X + terminals can always manually cut and paste the URLs into a web + browser. + Also, note that various “man to html†tools, such as the + widely used man2html (VH-Man2html) + application, automatically mark up URLs with a@href markup + during conversion — resulting in “real†hyperlinks in HTML + output from those tools. + + +To “turn off†numbering of endnotes in the +endnotes list, set man.endnotes.are.numbered +to zero. The endnotes list will +still be displayed; it will just be displayed without the +numbersIt can still make sense to have +the list of endnotes displayed even if you have endnotes numbering turned +off. In that case, your endnotes list basically becomes a “list +of references†without any association with specific text in +your document. This is probably the best option if you find the inline +endnotes numbering obtrusive. Your users will still have access to all the “out of line†+such as URLs for hyperlinks. + + +The default heading for the endnotes list is +NOTES. To change that, set a non-empty +value for the man.endnotes.list.heading +parameter. + +In the case of notesources that are links: Along with the +URL for each link, the endnotes list includes the contents of the +link. The list thus includes only non-empty + +A “non-empty†link is one that looks like +this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/">manpages</ulink> +an “empty link†is on that looks like this: <ulink url="http://docbook.sf.net/snapshot/xsl/doc/manpages/"/> + links. + +Empty links are never included, and never numbered. They are simply +displayed inline, without any numbering. + +In addition, if there are multiple instances of links in a +refentry that have the same URL, the URL is listed only +once. The contents listed for that link in the endnotes list are +the contents of the first link which has that URL. + +If you disable endnotes listing, you should probably also set +man.links.are.underlined to zero (to disable +link underlining). + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.heading.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.heading.xml new file mode 100644 index 000000000..fe6545c93 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.endnotes.list.heading.xml @@ -0,0 +1,36 @@ + + +man.endnotes.list.heading +string + + +man.endnotes.list.heading +Specifies an alternate name for endnotes list + + + + + + + + +Description + +If the value of the +man.endnotes.are.numbered parameter +and/or the man.endnotes.list.enabled +parameter is non-zero (the defaults for both are non-zero), a +numbered list of endnotes is generated near the end of each man +page. The default heading for the list of endnotes is the +equivalent of the English word NOTES in +the current locale. To cause an alternate heading to be displayed, +set a non-empty value for the +man.endnotes.list.heading parameter — +for example, REFERENCES. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcprototype.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcprototype.xml new file mode 100644 index 000000000..67b698ba8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcprototype.xml @@ -0,0 +1,30 @@ + + +man.font.funcprototype +string + + +man.font.funcprototype +Specifies font for funcprototype output + + + + + BI + + + +Description + +The man.font.funcprototype parameter +specifies the font for funcprototype output. It +should be a valid roff font name, such as BI or +B. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcsynopsisinfo.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcsynopsisinfo.xml new file mode 100644 index 000000000..bd7a36fae --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.funcsynopsisinfo.xml @@ -0,0 +1,30 @@ + + +man.font.funcsynopsisinfo +string + + +man.font.funcsynopsisinfo +Specifies font for funcsynopsisinfo output + + + + + B + + + +Description + +The man.font.funcsynopsisinfo parameter +specifies the font for funcsynopsisinfo output. It +should be a valid roff font name, such as B or +I. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.links.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.links.xml new file mode 100644 index 000000000..0f8a1e0f7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.links.xml @@ -0,0 +1,64 @@ + + +man.font.links +string + + +man.font.links +Specifies font for links + + + + +B + + + +Description + +The man.font.links parameter +specifies the font for output of links (ulink instances +and any instances of any element with an xlink:href attribute). + +The value of man.font.links must be + either B or I, or empty. If +the value is empty, no font formatting is applied to links. + +If you set man.endnotes.are.numbered and/or +man.endnotes.list.enabled to zero (disabled), then +you should probably also set an empty value for +man.font.links. But if +man.endnotes.are.numbered is non-zero (enabled), +you should probably keep +man.font.links set to +B or IThe + main purpose of applying a font format to links in most output +formats it to indicate that the formatted text is +“clickableâ€; given that links rendered in man pages are +not “real†hyperlinks that users can click on, it might +seem like there is never a good reason to have font formatting for +link contents in man output. +In fact, if you suppress the +display of inline link references (by setting +man.endnotes.are.numbered to zero), there is no +good reason to apply font formatting to links. However, if +man.endnotes.are.numbered is non-zero, having +font formatting for links (arguably) serves a purpose: It provides +“context†information about exactly what part of the text +is being “annotated†by the link. Depending on how you +mark up your content, that context information may or may not +have value.. + + +Related Parameters + man.endnotes.list.enabled, + man.endnotes.are.numbered + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.headings.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.headings.xml new file mode 100644 index 000000000..5056f2b69 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.headings.xml @@ -0,0 +1,30 @@ + + +man.font.table.headings +string + + +man.font.table.headings +Specifies font for table headings + + + + + B + + + +Description + +The man.font.table.headings parameter +specifies the font for table headings. It should be +a valid roff font, such as B or +I. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.title.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.title.xml new file mode 100644 index 000000000..a7f2ae9e1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.font.table.title.xml @@ -0,0 +1,30 @@ + + +man.font.table.title +string + + +man.font.table.title +Specifies font for table headings + + + + + B + + + +Description + +The man.font.table.title parameter +specifies the font for table titles. It should be +a valid roff font, such as B or +I. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.funcsynopsis.style.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.funcsynopsis.style.xml new file mode 100644 index 000000000..0597087ba --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.funcsynopsis.style.xml @@ -0,0 +1,26 @@ + + +man.funcsynopsis.style +list +ansi +kr + + +man.funcsynopsis.style +What style of funcsynopsis should be generated? + + +ansi + +Description +If man.funcsynopsis.style is +ansi, ANSI-style function synopses are +generated for a funcsynopsis, otherwise K&R-style +function synopses are generated. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.computer.inlines.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.computer.inlines.xml new file mode 100644 index 000000000..3e23ade4c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.computer.inlines.xml @@ -0,0 +1,53 @@ + + +man.hyphenate.computer.inlines +boolean + + +man.hyphenate.computer.inlines +Hyphenate computer inlines? + + + + +0 + + +Description + +If zero (the default), hyphenation is suppressed for +computer inlines such as environment variables, +constants, etc. This parameter current affects output of the following +elements: + + + classname + constant + envar + errorcode + option + replaceable + userinput + type + varname + + + + + If hyphenation is already turned off globally (that is, if + man.hyphenate is zero, setting the + man.hyphenate.computer.inlines is not + necessary. + + +If man.hyphenate.computer.inlines is +non-zero, computer inlines will not be treated specially and will be +hyphenated like other words when needed. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.filenames.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.filenames.xml new file mode 100644 index 000000000..891d6dae1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.filenames.xml @@ -0,0 +1,47 @@ + + +man.hyphenate.filenames +boolean + + +man.hyphenate.filenames +Hyphenate filenames? + + + + +0 + + +Description + +If zero (the default), hyphenation is suppressed for +filename output. + + + If hyphenation is already turned off globally (that is, if + man.hyphenate is zero, setting + man.hyphenate.filenames is not + necessary. + + +If man.hyphenate.filenames is non-zero, +filenames will not be treated specially and are subject to hyphenation +just like other words. + + + If you are thinking about setting a non-zero value for + man.hyphenate.filenames in order to make long + filenames/pathnames break across lines, you'd probably be better off + experimenting with setting the + man.break.after.slash parameter first. That + will cause long pathnames to be broken after slashes. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.urls.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.urls.xml new file mode 100644 index 000000000..a64dfa75b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.urls.xml @@ -0,0 +1,46 @@ + + +man.hyphenate.urls +boolean + + +man.hyphenate.urls +Hyphenate URLs? + + + + +0 + + +Description + +If zero (the default), hyphenation is suppressed for output of +the ulink url attribute. + + + If hyphenation is already turned off globally (that is, if + man.hyphenate is zero, setting + man.hyphenate.urls is not necessary. + + +If man.hyphenate.urls is non-zero, URLs +will not be treated specially and are subject to hyphenation just like +other words. + + + If you are thinking about setting a non-zero value for + man.hyphenate.urls in order to make long + URLs break across lines, you'd probably be better off + experimenting with setting the + man.break.after.slash parameter first. That + will cause long URLs to be broken after slashes. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.xml new file mode 100644 index 000000000..9198bbbb9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.hyphenate.xml @@ -0,0 +1,59 @@ + + +man.hyphenate +boolean + + +man.hyphenate +Enable hyphenation? + + + + +0 + + +Description + +If non-zero, hyphenation is enabled. + + +The default value for this parameter is zero because groff is +not particularly smart about how it does hyphenation; it can end up +hyphenating a lot of things that you don't want hyphenated. To +mitigate that, the default behavior of the stylesheets is to suppress +hyphenation of computer inlines, filenames, and URLs. (You can +override the default behavior by setting non-zero values for the +man.hyphenate.urls, +man.hyphenate.filenames, and +man.hyphenate.computer.inlines parameters.) But +the best way is still to just globally disable hyphenation, as the +stylesheets do by default. + +The only good reason to enabled hyphenation is if you have also +enabled justification (which is disabled by default). The reason is +that justified text can look very bad unless you also hyphenate it; to +quote the Hypenation node from the groff info page: + +
    + Since the odds are not great for finding a set of + words, for every output line, which fit nicely on a line without + inserting excessive amounts of space between words, 'gtroff' + hyphenates words so that it can justify lines without inserting too + much space between words. +
    + +So, if you set a non-zero value for the +man.justify parameter (to enable +justification), then you should probably also set a non-zero value for +man.hyphenate (to enable hyphenation).
    +
    + + +
    +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.blurbs.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.blurbs.xml new file mode 100644 index 000000000..bf9bb91ea --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.blurbs.xml @@ -0,0 +1,33 @@ + + +man.indent.blurbs +boolean + + +man.indent.blurbs +Adjust indentation of blurbs? + + + + + + + +Description + +If the value of man.indent.blurbs is +non-zero, the width of the left margin for +authorblurb, personblurb, and +contrib output is set to the value of the +man.indent.width parameter +(3n by default). If instead the value of +man.indent.blurbs is zero, the built-in roff +default width (7.2n) is used. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.lists.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.lists.xml new file mode 100644 index 000000000..a2654d093 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.lists.xml @@ -0,0 +1,35 @@ + + +man.indent.lists +boolean + + +man.indent.lists +Adjust indentation of lists? + + + + + + + +Description + +If the value of man.indent.lists is +non-zero, the width of the left margin for list items in +itemizedlist, +orderedlist, +variablelist output (and output of some other +lists) is set to the value of the +man.indent.width parameter +(4n by default). If instead the value of +man.indent.lists is zero, the built-in roff +default width (7.2n) is used. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.refsect.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.refsect.xml new file mode 100644 index 000000000..2865f8c6a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.refsect.xml @@ -0,0 +1,70 @@ + + +man.indent.refsect +boolean + + +man.indent.refsect +Adjust indentation of refsect* and refsection? + + + + + + + +Description + +If the value of man.indent.refsect is +non-zero, the width of the left margin for +refsect1, refsect2 and +refsect3 contents and titles (and first-level, +second-level, and third-level nested +refsectioninstances) is adjusted by the value of +the man.indent.width parameter. With +man.indent.width set to its default value of +3n, the main results are that: + + + + contents of refsect1 are output with a + left margin of three characters instead the roff default of seven + or eight characters + + + contents of refsect2 are displayed in + console output with a left margin of six characters instead the of + the roff default of seven characters + + + the contents of refsect3 and nested + refsection instances are adjusted + accordingly. + + + +If instead the value of man.indent.refsect is +zero, no margin adjustment is done for refsect* +output. + + + If your content is primarly comprised of + refsect1 and refsect2 content + (or the refsection equivalent) – with few or + no refsect3 or lower nested sections , you may be + able to “conserve†space in your output by setting + man.indent.refsect to a non-zero value. Doing + so will “squeeze†the left margin in such as way as to provide an + additional four characters of “room†per line in + refsect1 output. That extra room may be useful + if, for example, you have many verbatim sections with long lines in + them. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.verbatims.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.verbatims.xml new file mode 100644 index 000000000..0436c9ed2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.verbatims.xml @@ -0,0 +1,33 @@ + + +man.indent.verbatims +boolean + + +man.indent.verbatims +Adjust indentation of verbatims? + + + + + + + +Description + +If the value of man.indent.verbatims is +non-zero, the width of the left margin for output of verbatim +environments (programlisting, +screen, and so on) is set to the value of the +man.indent.width parameter +(3n by default). If instead the value of +man.indent.verbatims is zero, the built-in roff +default width (7.2n) is used. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.width.xml new file mode 100644 index 000000000..2d4496de7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.indent.width.xml @@ -0,0 +1,39 @@ + + +man.indent.width +length + + +man.indent.width +Specifies width used for adjusted indents + + + + +4 + + + +Description +The man.indent.width parameter specifies +the width used for adjusted indents. The value of +man.indent.width is used for indenting of +lists, verbatims, headings, and elsewhere, depending on whether the +values of certain man.indent.* boolean parameters +are non-zero. + +The value of man.indent.width should +include a valid roff measurement unit (for example, +n or u). The default value of +4n specifies a 4-en width; when viewed on a +console, that amounts to the width of four characters. For details +about roff measurment units, see the Measurements +node in the groff info page. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.justify.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.justify.xml new file mode 100644 index 000000000..5495d05cb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.justify.xml @@ -0,0 +1,52 @@ + + +man.justify +boolean + + +man.justify +Justify text to both right and left margins? + + + + +0 + + +Description + +If non-zero, text is justified to both the right and left +margins (or, in roff terminology, "adjusted and filled" to both the +right and left margins). If zero (the default), text is adjusted to +the left margin only -- producing what is traditionally called +"ragged-right" text. + + +The default value for this parameter is zero because justified +text looks good only when it is also hyphenated. Without hyphenation, +excessive amounts of space often end up getting between words, in +order to "pad" lines out to align on the right margin. + +The problem is that groff is not particularly smart about how it +does hyphenation; it can end up hyphenating a lot of things that you +don't want hyphenated. So, disabling both justification and +hyphenation ensures that hyphens won't get inserted where you don't +want to them, and you don't end up with lines containing excessive +amounts of space between words. + +However, if do you decide to set a non-zero value for the +man.justify parameter (to enable +justification), then you should probably also set a non-zero value for +man.hyphenate (to enable hyphenation). + +Yes, these default settings run counter to how most existing man +pages are formatted. But there are some notable exceptions, such as +the perl man pages. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.base.dir.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.base.dir.xml new file mode 100644 index 000000000..25113d0c2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.base.dir.xml @@ -0,0 +1,39 @@ + + +man.output.base.dir +uri + + +man.output.base.dir +Specifies separate output directory + + + +man/ + + +Description + +The man.output.base.dir parameter +specifies the base directory into which man-page files are output. The +man.output.subdirs.enabled parameter controls +whether the files are output in subdirectories within the base +directory. + + + The values of the man.output.base.dir + and man.output.subdirs.enabled parameters are + used only if the value of + man.output.in.separate.dir parameter is + non-zero. If the value of the + man.output.in.separate.dir is zero, man-page + files are not output in a separate directory. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.better.ps.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.better.ps.enabled.xml new file mode 100644 index 000000000..82d15dd0c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.better.ps.enabled.xml @@ -0,0 +1,61 @@ + + +man.output.better.ps.enabled +boolean + + +man.output.better.ps.enabled +Enable enhanced print/PostScript output? + + + +0 + + +Description + +If the value of the +man.output.better.ps.enabled parameter is +non-zero, certain markup is embedded in each generated man page +such that PostScript output from the man -Tps +command for that page will include a number of enhancements +designed to improve the quality of that output. + +If man.output.better.ps.enabled is +zero (the default), no such markup is embedded in generated man +pages, and no enhancements are included in the PostScript +output generated from those man pages by the man + -Tps command. + + + The enhancements provided by this parameter rely on + features that are specific to groff (GNU troff) and that are + not part of “classic†AT&T troff or any of its + derivatives. Therefore, any man pages you generate with this + parameter enabled will be readable only on systems on which + the groff (GNU troff) program is installed, such as GNU/Linux + systems. The pages will not not be + readable on systems on with the classic troff (AT&T + troff) command is installed. + + +The value of this parameter only affects PostScript output + generated from the man command. It has no + effect on output generated using the FO backend. + + + You can generate PostScript output for any man page by + running the following command: + man FOO -Tps > FOO.ps + You can then generate PDF output by running the following + command: + ps2pdf FOO.ps + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.encoding.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.encoding.xml new file mode 100644 index 000000000..7154bc87a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.encoding.xml @@ -0,0 +1,53 @@ + + +man.output.encoding +string + + +man.output.encoding +Encoding used for man-page output + + + + +UTF-8 + + + +Description + +This parameter specifies the encoding to use for files generated +by the manpages stylesheet. Not all processors support specification +of this parameter. + + + If the value of the man.charmap.enabled + parameter is non-zero (the default), keeping the + man.output.encoding parameter at its default + value (UTF-8) or setting it to + UTF-16 does not cause your + man pages to be output in raw UTF-8 or UTF-16 -- because + any Unicode characters for which matches are found in the enabled + character map will be replaced with roff escape sequences before the + final man-page files are generated. + + So if you want to generate "real" UTF-8 man pages, without any + character substitution being performed on your content, you need to + set man.charmap.enabled to zero (which will + completely disable character-map processing). + + You may also need to set + man.charmap.enabled to zero if you want to + output man pages in an encoding other than UTF-8 + or UTF-16. Character-map processing is based on + Unicode character values and may not work with other output + encodings. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.in.separate.dir.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.in.separate.dir.xml new file mode 100644 index 000000000..1492720b9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.in.separate.dir.xml @@ -0,0 +1,32 @@ + + +man.output.in.separate.dir +boolean + + +man.output.in.separate.dir +Output man-page files in separate output directory? + + + + + + + + +Description + +If the value of man.output.in.separate.dir +parameter is non-zero, man-page files are output in a separate +directory, specified by the man.output.base.dir +parameter; otherwise, if the value of +man.output.in.separate.dir is zero, man-page files +are not output in a separate directory. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.lang.in.name.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.lang.in.name.enabled.xml new file mode 100644 index 000000000..1fed3c04d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.lang.in.name.enabled.xml @@ -0,0 +1,50 @@ + + +man.output.lang.in.name.enabled +boolean + + +man.output.lang.in.name.enabled +Include $LANG value in man-page filename/pathname? + + + + + + + + +Description + + The man.output.lang.in.name.enabled + parameter specifies whether a $lang value is + included in man-page filenames and pathnames. + + If the value of + man.output.lang.in.name.enabled is non-zero, + man-page files are output with the $lang value + included in their filenames or pathnames as follows; + + + + if man.output.subdirs.enabled is + non-zero, each file is output to, e.g., a + man/$lang/man8/foo.8 + pathname + + + if man.output.subdirs.enabled is + zero, each file is output with a + foo.$lang.8 + filename + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.enabled.xml new file mode 100644 index 000000000..5da041cd9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.enabled.xml @@ -0,0 +1,27 @@ + + + man.output.manifest.enabled + boolean + + + man.output.manifest.enabled + Generate a manifest file? + + + + + + + Description + + If non-zero, a list of filenames for man pages generated by + the stylesheet transformation is written to the file named by the + man.output.manifest.filename parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.filename.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.filename.xml new file mode 100644 index 000000000..f514ede9c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.manifest.filename.xml @@ -0,0 +1,29 @@ + + + man.output.manifest.filename + string + + + man.output.manifest.filename + Name of manifest file + + + + MAN.MANIFEST + + + Description + + The man.output.manifest.filename parameter + specifies the name of the file to which the manpages manifest file + is written (if the value of the + man.output.manifest.enabled parameter is + non-zero). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.quietly.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.quietly.xml new file mode 100644 index 000000000..acde7f42f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.quietly.xml @@ -0,0 +1,37 @@ + + +man.output.quietly +boolean + + +man.output.quietly +Suppress filename messages emitted when generating output? + + + + + + + + +Description + +If zero (the default), for each man-page file created, a message +with the name of the file is emitted. If non-zero, the files are +output "quietly" -- that is, the filename messages are +suppressed. + + + If you are processing a large amount of refentry + content, you may be able to speed up processing significantly by + setting a non-zero value for + man.output.quietly. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.subdirs.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.subdirs.enabled.xml new file mode 100644 index 000000000..876b94e4d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.output.subdirs.enabled.xml @@ -0,0 +1,40 @@ + + +man.output.subdirs.enabled +boolean + + +man.output.subdirs.enabled +Output man-page files in subdirectories within base output directory? + + + + + + + + +Description + +The man.output.subdirs.enabled parameter +controls whether man-pages files are output in subdirectories within +the base directory specified by the directory specified by the +man.output.base.dir parameter. + + + The values of the man.output.base.dir + and man.output.subdirs.enabled parameters are + used only if the value of + man.output.in.separate.dir parameter is + non-zero. If the value of the + man.output.in.separate.dir is zero, man-page + files are not output in a separate directory. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.segtitle.suppress.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.segtitle.suppress.xml new file mode 100644 index 000000000..e54336d94 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.segtitle.suppress.xml @@ -0,0 +1,28 @@ + + +man.segtitle.suppress +boolean + + +man.segtitle.suppress +Suppress display of segtitle contents? + + + + + + + +Description + +If the value of man.segtitle.suppress is +non-zero, then display of segtitle contents is +suppressed in output. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.post.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.post.xml new file mode 100644 index 000000000..b12448d82 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.post.xml @@ -0,0 +1,34 @@ + + +man.string.subst.map.local.post +string + + +man.string.subst.map.local.post +Specifies “local†string substitutions + + + + + + + + +Description + +Use the man.string.subst.map.local.post +parameter to specify any “local†string substitutions to perform over +the entire roff source for each man page after +performing the string substitutions specified by the man.string.subst.map parameter. + +For details about the format of this parameter, see the +documentation for the man.string.subst.map +parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.pre.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.pre.xml new file mode 100644 index 000000000..6483752fb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.local.pre.xml @@ -0,0 +1,34 @@ + + +man.string.subst.map.local.pre +string + + +man.string.subst.map.local.pre +Specifies “local†string substitutions + + + + + + + + +Description + +Use the man.string.subst.map.local.pre +parameter to specify any “local†string substitutions to perform over +the entire roff source for each man page before +performing the string substitutions specified by the man.string.subst.map parameter. + +For details about the format of this parameter, see the +documentation for the man.string.subst.map +parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.xml new file mode 100644 index 000000000..0feed4aa6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.string.subst.map.xml @@ -0,0 +1,162 @@ + + +man.string.subst.map +rtf + + +man.string.subst.map +Specifies a set of string substitutions + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Description + +The man.string.subst.map parameter +contains a map that specifies a set of +string substitutions to perform over the entire roff source for each +man page, either just before generating final man-page output (that +is, before writing man-page files to disk) or, if the value of the +man.charmap.enabled parameter is non-zero, +before applying the roff character map. + +You can use man.string.subst.map as a +“lightweight†character map to perform “essential†substitutions -- +that is, substitutions that are always performed, +even if the value of the man.charmap.enabled +parameter is zero. For example, you can use it to replace quotation +marks or other special characters that are generated by the DocBook +XSL stylesheets for a particular locale setting (as opposed to those +characters that are actually in source XML documents), or to replace +any special characters that may be automatically generated by a +particular customization of the DocBook XSL stylesheets. + + + Do you not change value of the + man.string.subst.map parameter unless you are + sure what you are doing. First consider adding your + string-substitution mappings to either or both of the following + parameters: + + + man.string.subst.map.local.pre + applied before + man.string.subst.map + + + man.string.subst.map.local.post + applied after + man.string.subst.map + + + By default, both of those parameters contain no + string substitutions. They are intended as a means for you to + specify your own local string-substitution mappings. + + If you remove any of default mappings from the value of the + man.string.subst.map parameter, you are + likely to end up with broken output. And be very careful about adding + anything to it; it’s used for doing string substitution over the + entire roff source of each man page – it causes target strings to be + replaced in roff requests and escapes, not just in the visible + contents of the page. + + + + + + Contents of the substitution map + + The string-substitution map contains one or more + ss:substitution elements, each of which has two + attributes: + + + oldstring + + string to replace + + + + newstring + + string with which to replace oldstring + + + + It may also include XML comments (that is, delimited with + "<!--" and "-->"). + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.enabled.xml new file mode 100644 index 000000000..1156c5fd0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.enabled.xml @@ -0,0 +1,37 @@ + + +man.subheading.divider.enabled +boolean + + +man.subheading.divider.enabled +Add divider comment to roff source before/after subheadings? + + + + +0 + + + +Description + +If the value of the +man.subheading.divider.enabled parameter is +non-zero, the contents of the +man.subheading.divider parameter are used to +add a "divider" before and after subheadings in the roff +output. The divider is not visisble in the +rendered man page; it is added as a comment, in the source, +simply for the purpose of increasing reability of the source. + +If man.subheading.divider.enabled is zero +(the default), the subheading divider is suppressed. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.xml new file mode 100644 index 000000000..dbd266963 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.subheading.divider.xml @@ -0,0 +1,37 @@ + + +man.subheading.divider +string + + +man.subheading.divider +Specifies string to use as divider comment before/after subheadings + + + + +======================================================================== + + + +Description + +If the value of the +man.subheading.divider.enabled parameter is +non-zero, the contents of the +man.subheading.divider parameter are used to +add a "divider" before and after subheadings in the roff +output. The divider is not visisble in the +rendered man page; it is added as a comment, in the source, +simply for the purpose of increasing reability of the source. + +If man.subheading.divider.enabled is zero +(the default), the subheading divider is suppressed. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.table.footnotes.divider.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.table.footnotes.divider.xml new file mode 100644 index 000000000..2ad4608b2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.table.footnotes.divider.xml @@ -0,0 +1,29 @@ + + +man.table.footnotes.divider +string + + +man.table.footnotes.divider +Specifies divider string that appears before table footnotes + + + + +---- + + + +Description + +In each table that contains footenotes, the string specified by +the man.table.footnotes.divider parameter is +output before the list of footnotes for the table. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra1.suppress.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra1.suppress.xml new file mode 100644 index 000000000..c0241d2e8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra1.suppress.xml @@ -0,0 +1,32 @@ + + +man.th.extra1.suppress +boolean + + +man.th.extra1.suppress +Suppress extra1 part of header/footer? + + + + +0 + + +Description + +If the value of man.th.extra1.suppress is +non-zero, then the extra1 part of the +.TH title line header/footer is suppressed. + +The content of the extra1 field is almost +always displayed in the center footer of the page and is, universally, +a date. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.max.length.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.max.length.xml new file mode 100644 index 000000000..d3513ecd7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.max.length.xml @@ -0,0 +1,43 @@ + + +man.th.extra2.max.length +integer + + +man.th.extra2.max.length +Maximum length of extra2 in header/footer + + + + +30 + + + +Description + +Specifies the maximum permitted length of the +extra2 part of the man-page part of the +.TH title line header/footer. If the +extra2 content exceeds the maxiumum specified, it +is truncated down to the maximum permitted length. + +The content of the extra2 field is usually +displayed in the left footer of the page and is typically "source" +data indicating the software system or product that the item +documented in the man page belongs to, often in the form +Name Version; +for example, "GTK+ 1.2" (from the gtk-options(7) +man page). + +The default value for this parameter is reasonable but somewhat +arbitrary. If you are processing pages with long "source" information, +you may want to experiment with changing the value in order to achieve +the correct aesthetic results. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.suppress.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.suppress.xml new file mode 100644 index 000000000..0fcd3ed6f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra2.suppress.xml @@ -0,0 +1,44 @@ + + +man.th.extra2.suppress +boolean + + +man.th.extra2.suppress +Suppress extra2 part of header/footer? + + + + +0 + + +Description + +If the value of man.th.extra2.suppress is +non-zero, then the extra2 part of the +.TH title line header/footer is suppressed. + +The content of the extra2 field is usually +displayed in the left footer of the page and is typically "source" +data, often in the form +Name Version; +for example, "GTK+ 1.2" (from the gtk-options(7) +man page). + + + You can use the + refentry.source.name.suppress and + refentry.version.suppress parameters to + independently suppress the Name and + Version parts of the + extra2 field. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.max.length.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.max.length.xml new file mode 100644 index 000000000..77e55e4c5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.max.length.xml @@ -0,0 +1,42 @@ + + +man.th.extra3.max.length +integer + + +man.th.extra3.max.length +Maximum length of extra3 in header/footer + + + + +30 + + + +Description + +Specifies the maximum permitted length of the +extra3 part of the man-page .TH +title line header/footer. If the extra3 content +exceeds the maxiumum specified, it is truncated down to the maximum +permitted length. + +The content of the extra3 field is usually +displayed in the middle header of the page and is typically a "manual +name"; for example, "GTK+ User's Manual" (from the +gtk-options(7) man page). + +The default value for this parameter is reasonable but somewhat +arbitrary. If you are processing pages with long "manual names" -- or +especially if you are processing pages that have both long "title" +parts (command/function, etc. names) and long +manual names -- you may want to experiment with changing the value in +order to achieve the correct aesthetic results. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.suppress.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.suppress.xml new file mode 100644 index 000000000..81d6c0d9d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.extra3.suppress.xml @@ -0,0 +1,34 @@ + + +man.th.extra3.suppress +boolean + + +man.th.extra3.suppress +Suppress extra3 part of header/footer? + + + + +0 + + +Description + +If the value of man.th.extra3.suppress is +non-zero, then the extra3 part of the +.TH title line header/footer is +suppressed. + +The content of the extra3 field is usually +displayed in the middle header of the page and is typically a "manual +name"; for example, "GTK+ User's Manual" (from the +gtk-options(7) man page). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.title.max.length.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.title.max.length.xml new file mode 100644 index 000000000..7fdf0bfca --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/man.th.title.max.length.xml @@ -0,0 +1,63 @@ + + +man.th.title.max.length +integer + + +man.th.title.max.length +Maximum length of title in header/footer + + + + +20 + + + +Description + +Specifies the maximum permitted length of the title part of the +man-page .TH title line header/footer. If the title +exceeds the maxiumum specified, it is truncated down to the maximum +permitted length. + +Details + + +Every man page generated using the DocBook stylesheets has a +title line, specified using the TH roff +macro. Within that title line, there is always, at a minimum, a title, +followed by a section value (representing a man "section" -- usually +just a number). + +The title and section are displayed, together, in the visible +header of each page. Where in the header they are displayed depends on +OS the man page is viewed on, and on what version of nroff/groff/man +is used for viewing the page. But, at a minimum and across all +systems, the title and section are displayed on the right-hand column +of the header. On many systems -- those with a modern groff, including +Linux systems -- they are displayed twice: both in the left and right +columns of the header. + +So if the length of the title exceeds a certain percentage of +the column width in which the page is viewed, the left and right +titles can end up overlapping, making them unreadable, or breaking to +another line, which doesn't look particularly good. + +So the stylesheets provide the +man.th.title.max.length parameter as a means +for truncating titles that exceed the maximum length that can be +viewing properly in a page header. + +The default value is reasonable but somewhat arbitrary. If you +have pages with long titles, you may want to experiment with changing +the value in order to achieve the correct aesthetic results. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.in.base.dir.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.in.base.dir.xml new file mode 100644 index 000000000..d00276750 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.in.base.dir.xml @@ -0,0 +1,29 @@ + + +manifest.in.base.dir +boolean + + +manifest.in.base.dir +Should the manifest file be written into base.dir? + + + + + + + + +Description + +If non-zero, the manifest file as well as project files for HTML Help and +Eclipse Help are written into base.dir instead +of the current directory. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.xml new file mode 100644 index 000000000..96d092a8c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manifest.xml @@ -0,0 +1,29 @@ + + + manifest + string + + + manifest + Name of manifest file + + + + + HTML.manifest + + + + Description + + The name of the file to which a manifest is written (if the + value of the generate.manifest parameter + is non-zero). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manual.toc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manual.toc.xml new file mode 100644 index 000000000..7a640c7a3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/manual.toc.xml @@ -0,0 +1,29 @@ + + +manual.toc +string + + +manual.toc +An explicit TOC to be used for the TOC + + + + + + + + +Description + +The manual.toc identifies an explicit TOC that +will be used for building the printed TOC. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.float.type.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.float.type.xml new file mode 100644 index 000000000..0b34230b7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.float.type.xml @@ -0,0 +1,77 @@ + + +margin.note.float.type +list +none +before +left +start +right +end +inside +outside + + +margin.note.float.type +Select type of float for margin note customizations + + + + +none + + + +Description + +Selects the type of float for margin notes. +DocBook does not define a margin note element, so this +feature must be implemented as a customization of the stylesheet. +See margin.note.properties for +an example. + + + +If margin.note.float.type is +none, then +no float is used. + + + +If margin.note.float.type is +before, then +the float appears at the top of the page. On some processors, +that may be the next page rather than the current page. + + + +If margin.note.float.type is +left or +start, then +a left side float is used. + + + +If margin.note.float.type is +right or +end, then +a right side float is used. + + + +If your XSL-FO processor supports floats positioned on the +inside or +outside +of double-sided pages, then you have those two +options for side floats as well. + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.properties.xml new file mode 100644 index 000000000..02dc20e50 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.properties.xml @@ -0,0 +1,54 @@ + + +margin.note.properties +attribute set + + +margin.note.properties +Attribute set for margin.note properties + + + + + + 90% + start + + + + +Description + +The styling for margin notes. +By default, margin notes are not implemented for any +element. A stylesheet customization is needed to make +use of this attribute-set. + +You can use a template named floater +to create the customization. +That template can create side floats by specifying the +content and characteristics as template parameters. + + +For example: +<xsl:template match="para[@role='marginnote']"> + <xsl:call-template name="floater"> + <xsl:with-param name="position"> + <xsl:value-of select="$margin.note.float.type"/> + </xsl:with-param> + <xsl:with-param name="width"> + <xsl:value-of select="$margin.note.width"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-imports/> + </xsl:with-param> + </xsl:call-template> +</xsl:template> + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.title.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.title.properties.xml new file mode 100644 index 000000000..84399bbe9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.title.properties.xml @@ -0,0 +1,32 @@ + + +margin.note.title.properties +attribute set + + +margin.note.title.properties +Attribute set for margin note titles + + + + + + bold + false + start + always + + + + +Description + +The styling for margin note titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.width.xml new file mode 100644 index 000000000..3ee0aa4e7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/margin.note.width.xml @@ -0,0 +1,35 @@ + + +margin.note.width +length + + +margin.note.width +Set the default width for margin notes + + + + +1in + + + +Description + +Sets the default width for margin notes when used as a side +float. The width determines the degree to which the margin note block +intrudes into the text area. + +If margin.note.float.type is +before or +none, then +this parameter is ignored. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/marker.section.level.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/marker.section.level.xml new file mode 100644 index 000000000..70bd4fdcb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/marker.section.level.xml @@ -0,0 +1,50 @@ + + +marker.section.level +integer + + +marker.section.level +Control depth of sections shown in running headers or footers + + + + +2 + + + +Description + +The marker.section.level parameter +controls the depth of section levels that may be displayed +in running headers and footers. For example, if the value +is 2 (the default), then titles from sect1 and +sect2 or equivalent section +elements are candidates for use in running headers and +footers. + +Each candidate title is marked in the FO output with a +<fo:marker marker-class-name="section.head.marker"> +element. + +In order for such titles to appear in headers +or footers, the header.content +or footer.content template +must be customized to retrieve the marker using +an output element such as: + + +<fo:retrieve-marker retrieve-class-name="section.head.marker" + retrieve-position="first-including-carryover" + retrieve-boundary="page-sequence"/> + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.menu.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.menu.separator.xml new file mode 100644 index 000000000..cf142e216 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.menu.separator.xml @@ -0,0 +1,42 @@ + + +menuchoice.menu.separator +string + + +menuchoice.menu.separator +Separator between items of a menuchoice +with guimenuitem or +guisubmenu + + + + + → + + + +Description + +Separator used to connect items of a menuchoice with +guimenuitem or guisubmenu. Other elements +are linked with menuchoice.separator. + +The default value is &#x2192;, which is the +&rarr; (right arrow) character entity. +The current FOP (0.20.5) requires setting the font-family +explicitly. + +The default value also includes spaces around the arrow, +which will allow a line to break. Replace the spaces with +&#xA0; (nonbreaking space) if you don't want those +spaces to break. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.separator.xml new file mode 100644 index 000000000..3034f253b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/menuchoice.separator.xml @@ -0,0 +1,32 @@ + + +menuchoice.separator +string + + +menuchoice.separator +Separator between items of a menuchoice +other than guimenuitem and +guisubmenu + + + + ++ + + + +Description + +Separator used to connect items of a menuchoice other +than guimenuitem and guisubmenu. The latter +elements are linked with menuchoice.menu.separator. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/minus.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/minus.image.xml new file mode 100644 index 000000000..ea86e23aa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/minus.image.xml @@ -0,0 +1,29 @@ + + +minus.image +filename + + +minus.image +Minus image + + + + +toc/open.png + + + +Description + +Specifies the filename of the minus image; the image used in a +dynamic ToC to indicate that a section +can be collapsed. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.font.family.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.font.family.xml new file mode 100644 index 000000000..e91548b6a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.font.family.xml @@ -0,0 +1,29 @@ + + +monospace.font.family +string + + +monospace.font.family +The default font family for monospace environments + + + + +monospace + + + +Description + +The monospace font family is used for verbatim environments +(program listings, screens, etc.). + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.properties.xml new file mode 100644 index 000000000..0a8425b52 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.properties.xml @@ -0,0 +1,38 @@ + + +monospace.properties +attribute set + + +monospace.properties +Properties of monospaced content + + + + + + + + + + + + +Description + +Specifies the font name for monospaced output. This property set +used to set the font-size as well, but that doesn't work very well +when different fonts are used (as they are in titles and paragraphs, +for example). + +If you want to set the font-size in a customization layer, it's +probably going to be more appropriate to set font-size-adjust, if your +formatter supports it. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.font.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.font.width.xml new file mode 100644 index 000000000..88b88dce4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.font.width.xml @@ -0,0 +1,40 @@ + + +monospace.verbatim.font.width +length + + +monospace.verbatim.font.width +Width of a single monospace font character + + + + +0.60em + + + +Description + +Specifies with em units the width of a single character +of the monospace font. The default value is 0.6em. + +This parameter is only used when a screen +or programlisting element has a +width attribute, which is +expressed as a plain integer to indicate the maximum character count +of each line. +To convert this character count to an actual maximum width +measurement, the width of the font characters must be provided. +Different monospace fonts have different character width, +so this parameter should be adjusted to fit the +monospace font being used. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.properties.xml new file mode 100644 index 000000000..3d7ca3dfa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/monospace.verbatim.properties.xml @@ -0,0 +1,27 @@ + + +monospace.verbatim.properties +attribute set + + +monospace.verbatim.properties +What font and size do you want for monospaced content? + + + + + + start + no-wrap + + + +Description +Specify the font name and size you want for monospaced output + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.bottom.bgcolor.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.bottom.bgcolor.xml new file mode 100644 index 000000000..f0667d71b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.bottom.bgcolor.xml @@ -0,0 +1,28 @@ + + +multiframe.bottom.bgcolor +color + + +multiframe.bottom.bgcolor +Background color for bottom navigation frame + + + + +white + + + +Description + +Specifies the background color of the bottom navigation frame when +multiframe is enabled. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.navigation.height.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.navigation.height.xml new file mode 100644 index 000000000..06dbc1c23 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.navigation.height.xml @@ -0,0 +1,28 @@ + + +multiframe.navigation.height +length + + +multiframe.navigation.height +Height of navigation frames + + + + +40 + + + +Description + +Specifies the height of the navigation frames in pixels when +multiframe is enabled. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.top.bgcolor.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.top.bgcolor.xml new file mode 100644 index 000000000..4814fc89d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.top.bgcolor.xml @@ -0,0 +1,28 @@ + + +multiframe.top.bgcolor +color + + +multiframe.top.bgcolor +Background color for top navigation frame + + + + +white + + + +Description + +Specifies the background color of the top navigation frame when +multiframe is enabled. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.xml new file mode 100644 index 000000000..b4fbf370f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/multiframe.xml @@ -0,0 +1,31 @@ + + +multiframe +boolean + + +multiframe +Use multiple frames for slide bodies? + + + + + + + + +Description + +If non-zero, multiple frames are used for the body of each +slide. This is one way of forcing the slide navigation elements to +appear in constant locations. The other way is with overlays. The overlay and +multiframe parameters are mutually +exclusive. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.separator.xml new file mode 100644 index 000000000..e3695f941 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.separator.xml @@ -0,0 +1,28 @@ + + +nav.separator +boolean + + +nav.separator +Output separator between navigation and body? + + + + + + + + +Description + +If non-zero, a separator (<HR>) is +added between the navigation links and the content of each slide. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.table.summary.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.table.summary.xml new file mode 100644 index 000000000..1c1559b21 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nav.table.summary.xml @@ -0,0 +1,27 @@ + + +nav.table.summary +string + + +nav.table.summary +HTML Table summary attribute value for navigation tables + + + + +Navigation + + + +Description +The value of this parameter is used as the value of the table +summary attribute for the navigation table. +Only applies with the tabular presentation is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbgcolor.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbgcolor.xml new file mode 100644 index 000000000..c6fcececb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbgcolor.xml @@ -0,0 +1,26 @@ + + +navbgcolor +color + + +navbgcolor +The background color of the navigation TOC + + + + +#4080FF + + + +Description +The background color of the navigation TOC. +Only applies with the tabular presentation is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbodywidth.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbodywidth.xml new file mode 100644 index 000000000..b93cf821f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navbodywidth.xml @@ -0,0 +1,26 @@ + + +navbodywidth +length + + +navbodywidth +Specifies the width of the navigation table body + + + + + + + + +Description +The width of the body column. +Only applies with the tabular presentation is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.extension.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.extension.xml new file mode 100644 index 000000000..416e0c44a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.extension.xml @@ -0,0 +1,28 @@ + + +navig.graphics.extension +string + + +navig.graphics.extension +Extension for navigational graphics + + + + +.gif + + + +Description + +Sets the filename extension to use on navigational graphics used +in the headers and footers of chunked HTML. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.path.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.path.xml new file mode 100644 index 000000000..373208e76 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.path.xml @@ -0,0 +1,30 @@ + + +navig.graphics.path +string + + +navig.graphics.path +Path to navigational graphics + + + + +images/ + + + +Description + +Sets the path, probably relative to the directory where the HTML +files are created, to the navigational graphics used in the +headers and footers of chunked HTML. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.xml new file mode 100644 index 000000000..03e28b61f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.graphics.xml @@ -0,0 +1,31 @@ + + +navig.graphics +boolean + + +navig.graphics +Use graphics in navigational headers and footers? + + + + + + + + +Description + +If non-zero, the navigational headers and footers in chunked +HTML are presented in an alternate style that uses graphical icons for +Next, Previous, Up, and Home. Default graphics are provided in the +distribution. If zero, text is used instead of graphics. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.showtitles.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.showtitles.xml new file mode 100644 index 000000000..a4eb3ff47 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navig.showtitles.xml @@ -0,0 +1,32 @@ + + +navig.showtitles +boolean + + +navig.showtitles +Display titles in HTML headers and footers? + + + +1 + + +Description + +If non-zero, +the headers and footers of chunked HTML +display the titles of the next and previous chunks, +along with the words 'Next' and 'Previous' (or the +equivalent graphical icons if navig.graphics is true). +If false (zero), then only the words 'Next' and 'Previous' +(or the icons) are displayed. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navtocwidth.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navtocwidth.xml new file mode 100644 index 000000000..0d21ae03b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/navtocwidth.xml @@ -0,0 +1,26 @@ + + +navtocwidth +length + + +navtocwidth +Specifies the width of the navigation table TOC + + + + +220 + + + +Description +The width, in pixels, of the navigation column. +Only applies with the tabular presentation is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/next.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/next.image.xml new file mode 100644 index 000000000..4dbd60a99 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/next.image.xml @@ -0,0 +1,27 @@ + + +next.image +filename + + +next.image +Right-arrow image + + + + +active/nav-next.png + + + +Description + +Specifies the filename of the right-pointing navigation arrow. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.home.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.home.image.xml new file mode 100644 index 000000000..2f4ecd867 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.home.image.xml @@ -0,0 +1,27 @@ + + +no.home.image +filename + + +no.home.image +Inactive home image + + + + +inactive/nav-home.png + + + +Description + +Specifies the filename of the inactive home navigation icon. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.next.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.next.image.xml new file mode 100644 index 000000000..966fe2647 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.next.image.xml @@ -0,0 +1,27 @@ + + +no.next.image +filename + + +no.next.image +Inactive right-arrow image + + + + +inactive/nav-next.png + + + +Description + +Specifies the filename of the inactive right-pointing navigation arrow. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.prev.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.prev.image.xml new file mode 100644 index 000000000..763223112 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.prev.image.xml @@ -0,0 +1,27 @@ + + +no.prev.image +filename + + +no.prev.image +Inactive left-arrow image + + + + +inactive/nav-prev.png + + + +Description + +Specifies the filename of the inactive left-pointing navigation arrow. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.toc.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.toc.image.xml new file mode 100644 index 000000000..43e9eea95 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.toc.image.xml @@ -0,0 +1,27 @@ + + +no.toc.image +filename + + +no.toc.image +Inactive ToC image + + + + +inactive/nav-toc.png + + + +Description + +Specifies the filename of the inactive ToC navigation icon. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.up.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.up.image.xml new file mode 100644 index 000000000..a19a34d00 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/no.up.image.xml @@ -0,0 +1,27 @@ + + +no.up.image +filename + + +no.up.image +Inactive up-arrow image + + + + +inactive/nav-up.png + + + +Description + +Specifies the filename of the inactive upward-pointing navigation arrow. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.depth.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.depth.xml new file mode 100644 index 000000000..a4e615f02 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.depth.xml @@ -0,0 +1,27 @@ + + +nominal.image.depth +length + + +nominal.image.depth +Nominal image depth + + + + + + + + +Description + +See nominal.image.width. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.width.xml new file mode 100644 index 000000000..bfa989a2c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.image.width.xml @@ -0,0 +1,43 @@ + + +nominal.image.width +length + + +nominal.image.width +The nominal image width + + + + + + + + +Description + +Graphic widths expressed as a percentage are problematic. In the +following discussion, we speak of width and contentwidth, but +the same issues apply to depth and contentdepth. + +A width of 50% means "half of the available space for the image." +That's fine. But note that in HTML, this is a dynamic property and +the image size will vary if the browser window is resized. + +A contentwidth of 50% means "half of the actual image width". +But what does that mean if the stylesheets cannot assess the image's +actual size? Treating this as a width of 50% is one possibility, but +it produces behavior (dynamic scaling) that seems entirely out of +character with the meaning. + +Instead, the stylesheets define a +nominal.image.width and convert percentages to +actual values based on that nominal size. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.table.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.table.width.xml new file mode 100644 index 000000000..f5dcfb933 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nominal.table.width.xml @@ -0,0 +1,30 @@ + + +nominal.table.width +length + + +nominal.table.width +The (absolute) nominal width of tables + + + + +6in + + + +Description + +In order to convert CALS column widths into HTML column widths, it +is sometimes necessary to have an absolute table width to use for conversion +of mixed absolute and relative widths. This value must be an absolute +length (not a percentage). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nongraphical.admonition.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nongraphical.admonition.properties.xml new file mode 100644 index 000000000..ba8a06a5e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/nongraphical.admonition.properties.xml @@ -0,0 +1,41 @@ + + +nongraphical.admonition.properties +attribute set + + +nongraphical.admonition.properties +To add properties to the outer block of a nongraphical admonition. + + + + + 0.8em + 1em + 1.2em + 0.25in + 0.25in + + + +Description +These properties are added to the outer block containing the +entire nongraphical admonition, including its title. +It is used when the parameter +admon.graphics is set to zero. +Use this attribute-set to set the space above and below, +and any indent for the whole admonition. + +In addition to these properties, a nongraphical admonition +also applies the admonition.title.properties +attribute-set to the title, and the +admonition.properties attribute-set +to the rest of the content. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/normal.para.spacing.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/normal.para.spacing.xml new file mode 100644 index 000000000..bb2a6c099 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/normal.para.spacing.xml @@ -0,0 +1,26 @@ + + +normal.para.spacing +attribute set + + +normal.para.spacing +What space do you want between normal paragraphs + + + + + 1em + 0.8em + 1.2em + + +Description +Specify the spacing required between normal paragraphs + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.base.uri.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.base.uri.xml new file mode 100644 index 000000000..d88dd62d2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.base.uri.xml @@ -0,0 +1,35 @@ + + +olink.base.uri +uri + + +olink.base.uri +Base URI used in olink hrefs + + + + + +Description + +When cross reference data is collected for resolving olinks, it +may be necessary to prepend a base URI to each target's href. This +parameter lets you set that base URI when cross reference data is +collected. This feature is needed when you want to link to a document +that is processed without chunking. The output filename for such a +document is not known to the XSL stylesheet; the only target +information consists of fragment identifiers such as +#idref. To enable the resolution of olinks between +documents, you should pass the name of the HTML output file as the +value of this parameter. Then the hrefs recorded in the cross +reference data collection look like +outfile.html#idref, which can be reached as links +from other documents. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.debug.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.debug.xml new file mode 100644 index 000000000..e49a17622 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.debug.xml @@ -0,0 +1,36 @@ + + +olink.debug +boolean + + +olink.debug +Turn on debugging messages for olinks + + + + + + + + +Description + +If non-zero, then each olink will generate several +messages about how it is being resolved during processing. +This is useful when an olink does not resolve properly +and the standard error messages are not sufficient to +find the problem. + + +You may need to read through the olink XSL templates +to understand the context for some of the debug messages. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.doctitle.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.doctitle.xml new file mode 100644 index 000000000..356347da5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.doctitle.xml @@ -0,0 +1,146 @@ + + +olink.doctitle +list +no +yes +maybe + + +olink.doctitle +show the document title for external olinks? + + + +no + + +Description + +When olinks between documents are resolved, the generated text +may not make it clear that the reference is to another document. +It is possible for the stylesheets to append the other document's +title to external olinks. For this to happen, two parameters must +be set. + + +This olink.doctitle parameter +should be set to either yes or maybe +to enable this feature. + + + +And you should also set the current.docid +parameter to the document id for the document currently +being processed for output. + + + + + +Then if an olink's targetdoc id differs from +the current.docid value, the stylesheet knows +that it is a reference to another document and can +append the target document's +title to the generated olink text. + +The text for the target document's title is copied from the +olink database from the ttl element +of the top-level div for that document. +If that ttl element is missing or empty, +no title is output. + + +The supported values for olink.doctitle are: + + + +yes + + +Always insert the title to the target document if it is not +the current document. + + + + +no + + +Never insert the title to the target document, even if requested +in an xrefstyle attribute. + + + + +maybe + + +Only insert the title to the target document, if requested +in an xrefstyle attribute. + + + + +An xrefstyle attribute +may override the global setting for individual olinks. +The following values are supported in an +xrefstyle +attribute using the select: syntax: + + + + +docname + + +Insert the target document name for this olink using the +docname gentext template, but only +if the value of olink.doctitle +is not no. + + + + +docnamelong + + +Insert the target document name for this olink using the +docnamelong gentext template, but only +if the value of olink.doctitle +is not no. + + + + +nodocname + + +Omit the target document name even if +the value of olink.doctitle +is yes. + + + + +Another way of inserting the target document name +for a single olink is to employ an +xrefstyle +attribute using the template: syntax. +The %o placeholder (the letter o, not zero) +in such a template +will be filled in with the target document's title when it is processed. +This will occur regardless of +the value of olink.doctitle. + +Note that prior to version 1.66 of the XSL stylesheets, +the allowed values for this parameter were 0 and 1. Those +values are still supported and mapped to 'no' and 'yes', respectively. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.fragid.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.fragid.xml new file mode 100644 index 000000000..32580383a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.fragid.xml @@ -0,0 +1,23 @@ + + +olink.fragid +string + + +olink.fragid +Names the fragment identifier portion of an OLink resolver query + + + +fragid= + + +Description +The fragment identifier portion of an olink target. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.lang.fallback.sequence.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.lang.fallback.sequence.xml new file mode 100644 index 000000000..7d3d8113b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.lang.fallback.sequence.xml @@ -0,0 +1,83 @@ + + +olink.lang.fallback.sequence +string + + +olink.lang.fallback.sequence +look up translated documents if olink not found? + + + + + + +Description + + +This parameter defines a list of lang values +to search among to resolve olinks. + + +Normally an olink tries to resolve to a document in the same +language as the olink itself. The language of an olink +is determined by its nearest ancestor element with a +lang attribute, otherwise the +value of the l10n.gentext.default.lang +parameter. + + +An olink database can contain target data for the same +document in multiple languages. Each set of data has the +same value for the targetdoc attribute in +the document element in the database, but with a +different lang attribute value. + + +When an olink is being resolved, the target is first +sought in the document with the same language as the olink. +If no match is found there, then this parameter is consulted +for additional languages to try. + +The olink.lang.fallback.sequence +must be a whitespace separated list of lang values to +try. The first one with a match in the olink database is used. +The default value is empty. + +For example, a document might be written in German +and contain an olink with +targetdoc="adminguide". +When the document is processed, the processor +first looks for a target dataset in the +olink database starting with: + +<document targetdoc="adminguide" lang="de">. + + +If there is no such element, then the +olink.lang.fallback.sequence +parameter is consulted. +If its value is, for example, fr en, then the processor next +looks for targetdoc="adminguide" lang="fr", and +then for targetdoc="adminguide" lang="en". +If there is still no match, it looks for +targetdoc="adminguide" with no +lang attribute. + + +This parameter is useful when a set of documents is only +partially translated, or is in the process of being translated. +If a target of an olink has not yet been translated, then this +parameter permits the processor to look for the document in +other languages. This assumes the reader would rather have +a link to a document in a different language than to have +a broken link. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.outline.ext.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.outline.ext.xml new file mode 100644 index 000000000..2de2fe2d5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.outline.ext.xml @@ -0,0 +1,28 @@ + + +olink.outline.ext +string + + +olink.outline.ext +The extension of OLink outline files + + + + +.olink + + + +Description + +The extension to be expected for OLink outline files +Bob has this parameter as dead. Please don't use + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.properties.xml new file mode 100644 index 000000000..b76657e7c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.properties.xml @@ -0,0 +1,33 @@ + + +olink.properties +attribute set + + +olink.properties +Properties associated with the cross-reference +text of an olink. + + + + + + replace + + + + +Description + +This attribute set is applied to the +fo:basic-link element of an olink. It is not applied to the +optional page number or optional title of the external +document. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.pubid.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.pubid.xml new file mode 100644 index 000000000..4f0b50c6c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.pubid.xml @@ -0,0 +1,27 @@ + + +olink.pubid +string + + +olink.pubid +Names the public identifier portion of an OLink resolver query + + + + +pubid + + + +Description + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.resolver.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.resolver.xml new file mode 100644 index 000000000..fa7d471ba --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.resolver.xml @@ -0,0 +1,23 @@ + + +olink.resolver +string + + +olink.resolver +The root name of the OLink resolver (usually a script) + + + + /cgi-bin/olink + + +Description +FIXME: + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.sysid.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.sysid.xml new file mode 100644 index 000000000..6d4542f5d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/olink.sysid.xml @@ -0,0 +1,27 @@ + + +olink.sysid +string + + +olink.sysid +Names the system identifier portion of an OLink resolver query + + + + +sysid + + + +Description + +FIXME + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.properties.xml new file mode 100644 index 000000000..39b043295 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.properties.xml @@ -0,0 +1,26 @@ + + +orderedlist.label.properties +attribute set + + +orderedlist.label.properties +Properties that apply to each label inside ordered list. + + + + + + +Description +Properties that apply to each label inside ordered list. E.g.: +<xsl:attribute-set name="orderedlist.label.properties"> + <xsl:attribute name="text-align">right</xsl:attribute> +</xsl:attribute-set> + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.width.xml new file mode 100644 index 000000000..18c8fa84c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.label.width.xml @@ -0,0 +1,28 @@ + + +orderedlist.label.width +length + + +orderedlist.label.width +The default width of the label (number) in an ordered list. + + + + +1.2em + + + +Description +Specifies the default width of the label (usually a number or +sequence of numbers) in an ordered list. You can override the default +value on any particular list with the “dbfo†processing instruction +using the “label-width†pseudoattribute. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.properties.xml new file mode 100644 index 000000000..59061cb3d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/orderedlist.properties.xml @@ -0,0 +1,24 @@ + + +orderedlist.properties +attribute set + + +orderedlist.properties +Properties that apply to each list-block generated by orderedlist. + + + + + 2em + + +Description +Properties that apply to each fo:list-block generated by orderedlist. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/othercredit.like.author.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/othercredit.like.author.enabled.xml new file mode 100644 index 000000000..2e789dd09 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/othercredit.like.author.enabled.xml @@ -0,0 +1,31 @@ + + +othercredit.like.author.enabled +boolean + + +othercredit.like.author.enabled +Display othercredit in same style as author? + + + +0 + + +Description + +If non-zero, output of the +othercredit element on titlepages is displayed in +the same style as author and +editor output. If zero then +othercredit output is displayed using a style +different than that of author and +editor. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output-root.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output-root.xml new file mode 100644 index 000000000..d37b054c7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output-root.xml @@ -0,0 +1,28 @@ + + +output-root +filename + + +output-root +Specifies the root directory of the website + + + + +. + + + +Description +When using the XSLT processor to manage dependencies and construct +the website, this parameter can be used to indicate the root directory +where the resulting pages are placed. +Only applies when XSLT-based chunking is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output.indent.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output.indent.xml new file mode 100644 index 000000000..40406d7a0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/output.indent.xml @@ -0,0 +1,32 @@ + + +output.indent +list +no +yes + + +output.indent +Indent output? + + + + +no + + + +Description + +Specifies the setting of the indent +parameter on the HTML slides. For more information, see the discussion +of the xsl:output element in the XSLT specification. +Select from yes or no. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.js.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.js.xml new file mode 100644 index 000000000..162f87aa3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.js.xml @@ -0,0 +1,28 @@ + + +overlay.js +filename + + +overlay.js +Overlay JavaScript file + + + + +overlay.js + + + +Description + +Specifies the filename of the overlay JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.logo.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.logo.xml new file mode 100644 index 000000000..e74077118 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.logo.xml @@ -0,0 +1,28 @@ + + +overlay.logo +uri + + +overlay.logo +Logo to overlay on ToC frame + + + + +http://docbook.sourceforge.net/release/buttons/slides-1.png + + + +Description + +If this URI is non-empty, JavaScript is used to overlay the +specified image on the ToC frame. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.xml new file mode 100644 index 000000000..f955b23a7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/overlay.xml @@ -0,0 +1,32 @@ + + +overlay +boolean + + +overlay +Overlay footer navigation? + + + + + + + + +Description + +If non-zero, JavaScript is added to the slides to make the +bottom navigation appear at the bottom of each page. This option and +multiframe are mutually exclusive. + +If this parameter is zero, the bottom navigation simply appears +below the content of each slide. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.portrait.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.portrait.xml new file mode 100644 index 000000000..0dee73eef --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.portrait.xml @@ -0,0 +1,69 @@ + + +page.height.portrait +length + + +page.height.portrait +Specify the physical size of the long edge of the page + + + + + + 210mm + 11in + 8.5in + 2378mm + 1682mm + 1189mm + 841mm + 594mm + 420mm + 297mm + 210mm + 148mm + 105mm + 74mm + 52mm + 37mm + 1414mm + 1000mm + 707mm + 500mm + 353mm + 250mm + 176mm + 125mm + 88mm + 62mm + 44mm + 1297mm + 917mm + 648mm + 458mm + 324mm + 229mm + 162mm + 114mm + 81mm + 57mm + 40mm + 11in + + + + +Description + +The portrait page height is the length of the long +edge of the physical page. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.xml new file mode 100644 index 000000000..96e32c0e5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.height.xml @@ -0,0 +1,37 @@ + + +page.height +length + + +page.height +The height of the physical page + + + + + + + + + + + + + + + +Description + +The page height is generally calculated from the +paper.type and +page.orientation parameters. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.bottom.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.bottom.xml new file mode 100644 index 000000000..e1877f3ab --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.bottom.xml @@ -0,0 +1,29 @@ + + +page.margin.bottom +length + + +page.margin.bottom +The bottom margin of the page + + + + +0.5in + + + +Description + +The bottom page margin is the distance from the bottom of the region-after +to the physical bottom of the page. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.inner.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.inner.xml new file mode 100644 index 000000000..97782ba40 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.inner.xml @@ -0,0 +1,56 @@ + + +page.margin.inner +length + + +page.margin.inner +The inner page margin + + + + + + 1.25in + 1in + + + + +Description + +The inner page margin is the distance from bound edge of the +page to the first column of text. + +The inner page margin is the distance from bound edge of the +page to the outer edge of the first column of text. + +In left-to-right text direction, +this is the left margin of recto (front side) pages. +For single-sided output, it is the left margin +of all pages. + +In right-to-left text direction, +this is the right margin of recto pages. +For single-sided output, this is the +right margin of all pages. + + +Current versions (at least as of version 4.13) +of the XEP XSL-FO processor do not +correctly handle these margin settings for documents +with right-to-left text direction. +The workaround in that situation is to reverse +the values for page.margin.inner +and page.margin.outer, until +this bug is fixed by RenderX. It does not affect documents +with left-to-right text direction. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.outer.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.outer.xml new file mode 100644 index 000000000..61dfeb8e4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.outer.xml @@ -0,0 +1,53 @@ + + +page.margin.outer +length + + +page.margin.outer +The outer page margin + + + + + + 0.75in + 1in + + + + +Description + +The outer page margin is the distance from non-bound edge of the +page to the outer edge of the last column of text. + +In left-to-right text direction, +this is the right margin of recto (front side) pages. +For single-sided output, it is the right margin +of all pages. + +In right-to-left text direction, +this is the left margin of recto pages. +For single-sided output, this is the +left margin of all pages. + + +Current versions (at least as of version 4.13) +of the XEP XSL-FO processor do not +correctly handle these margin settings for documents +with right-to-left text direction. +The workaround in that situation is to reverse +the values for page.margin.inner +and page.margin.outer, until +this bug is fixed by RenderX. It does not affect documents +with left-to-right text direction. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.top.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.top.xml new file mode 100644 index 000000000..a7e53e86e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.margin.top.xml @@ -0,0 +1,28 @@ + + +page.margin.top +length + + +page.margin.top +The top margin of the page + + + + +0.5in + + + +Description + +The top page margin is the distance from the physical top of the +page to the top of the region-before. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.orientation.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.orientation.xml new file mode 100644 index 000000000..37971c0c6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.orientation.xml @@ -0,0 +1,32 @@ + + +page.orientation +list +portrait +landscape + + +page.orientation +Select the page orientation + + + + +portrait + + + +Description + + Select one from portrait or landscape. +In portrait orientation, the short edge is horizontal; in +landscape orientation, it is vertical. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.portrait.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.portrait.xml new file mode 100644 index 000000000..8216fc32c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.portrait.xml @@ -0,0 +1,67 @@ + + +page.width.portrait +length + + +page.width.portrait +Specify the physical size of the short edge of the page + + + + + + 8.5in + 1682mm + 1189mm + 841mm + 594mm + 420mm + 297mm + 210mm + 148mm + 105mm + 74mm + 52mm + 37mm + 26mm + 1000mm + 707mm + 500mm + 353mm + 250mm + 176mm + 125mm + 88mm + 62mm + 44mm + 31mm + 917mm + 648mm + 458mm + 324mm + 229mm + 162mm + 114mm + 81mm + 57mm + 40mm + 28mm + 8.5in + + + + +Description + +The portrait page width is the length of the short +edge of the physical page. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.xml new file mode 100644 index 000000000..ff160602c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/page.width.xml @@ -0,0 +1,36 @@ + + +page.width +length + + +page.width +The width of the physical page + + + + + + + + + + + + + + + +Description + +The page width is generally calculated from the +paper.type and +page.orientation parameters. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pages.template.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pages.template.xml new file mode 100644 index 000000000..fff546c10 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pages.template.xml @@ -0,0 +1,29 @@ + + +pages.template +uri + + +pages.template +Specify the template Pages document + + + + + + + + +Description + +The pages.template parameter specifies a Pages (the Apple word processing application) document to use as a template for the generated document. The template document is used to define the (extensive) headers for the generated document, in particular the paragraph and character styles that are used to format the various elements. Any content in the template document is ignored. + +A template document is used in order to allow maintenance of the paragraph and character styles to be done using Pages itself, rather than these XSL stylesheets. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/paper.type.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/paper.type.xml new file mode 100644 index 000000000..2656c9cbd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/paper.type.xml @@ -0,0 +1,73 @@ + + +paper.type +list +open +open +USletter8.5x11in +USlandscape11x8.5in +USlegal8.5inx14in +USlegallandscape14inx8.5in +4A02378x1682mm +2A01682x1189mm +A01189x841mm +A1841x594mm +A2594x420mm +A3420x297mm +A4297x210mm +A5210x148mm +A6148x105mm +A7105x74mm +A874x52mm +A952x37mm +A1037x26mm +B01414x1000mm +B11000x707mm +B2707x500mm +B3500x353mm +B4353x250mm +B5250x176mm +B6176x125mm +B7125x88mm +B888x62mm +B962x44mm +B1044x31mm +C01297x917mm +C1917x648mm +C2648x458mm +C3458x324mm +C4324x229mm +C5229x162mm +C6162x114mm +C7114x81mm +C881x57mm +C957x40mm +C1040x28mm + + +paper.type +Select the paper type + + + + +USletter + + + +Description + +The paper type is a convenient way to specify the paper size. +The list of known paper sizes includes USletter and most of the A, +B, and C sizes. See page.width.portrait, for example. + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/para.propagates.style.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/para.propagates.style.xml new file mode 100644 index 000000000..0415adf27 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/para.propagates.style.xml @@ -0,0 +1,29 @@ + + +para.propagates.style +boolean + + +para.propagates.style +Pass para role attribute through to HTML? + + + + + + + + +Description + +If true, the role attribute of para elements +will be passed through to the HTML as a class attribute on the +p generated for the paragraph. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/part.autolabel.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/part.autolabel.xml new file mode 100644 index 000000000..4f1a42c5e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/part.autolabel.xml @@ -0,0 +1,73 @@ + + +part.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +part.autolabel +Specifies the labeling format for Part titles + + + + +I + + + +Description + +If non-zero, then parts will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (upperroman). + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/passivetex.extensions.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/passivetex.extensions.xml new file mode 100644 index 000000000..2b1cb778d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/passivetex.extensions.xml @@ -0,0 +1,37 @@ + + +passivetex.extensions +boolean + + +passivetex.extensions +Enable PassiveTeX extensions? + + + + + + +Description + +If non-zero, +PassiveTeX +extensions will be used. At present, this consists of PDF bookmarks +and sorted index terms. + + +This parameter can also affect which graphics file formats +are supported + + + PassiveTeX is incomplete and development has ceased. In most cases, +another XSL-FO engine is probably a better choice. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pgwide.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pgwide.properties.xml new file mode 100644 index 000000000..c63b4615b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pgwide.properties.xml @@ -0,0 +1,52 @@ + + +pgwide.properties +attribute set + + +pgwide.properties +Properties to make a figure or table page wide. + + + + + + + 0pt + + + + +Description + +This attribute set is used to set the properties +that make a figure or table "page wide" in fo output. +It comes into effect when an attribute pgwide="1" +is used. + + + +By default, it sets start-indent +to 0pt. +In a stylesheet that sets the parameter +body.start.indent +to a non-zero value in order to indent body text, +this attribute set can be used to outdent pgwide +figures to the start margin. + + +If a document uses a multi-column page layout, +then this attribute set could try setting span +to a value of all. However, this may +not work with some processors because a span property must be on an +fo:block that is a direct child of fo:flow. It may work in +some processors anyway. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/phrase.propagates.style.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/phrase.propagates.style.xml new file mode 100644 index 000000000..8c2589226 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/phrase.propagates.style.xml @@ -0,0 +1,29 @@ + + +phrase.propagates.style +boolean + + +phrase.propagates.style +Pass phrase role attribute through to HTML? + + + + + + + +Description + +If non-zero, the role attribute of phrase elements +will be passed through to the HTML as a class +attribute on a span that surrounds the +phrase. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pixels.per.inch.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pixels.per.inch.xml new file mode 100644 index 000000000..86faff5ce --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/pixels.per.inch.xml @@ -0,0 +1,31 @@ + + +pixels.per.inch +integer + + +pixels.per.inch +How many pixels are there per inch? + + + + +90 + + + +Description + +When lengths are converted to pixels, this value is used to +determine the size of a pixel. The default value is taken from the +XSL +Recommendation. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/plus.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/plus.image.xml new file mode 100644 index 000000000..17b3d3ca2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/plus.image.xml @@ -0,0 +1,29 @@ + + +plus.image +filename + + +plus.image +Plus image + + + + +toc/closed.png + + + +Description + +Specifies the filename of the plus image; the image used in a +dynamic ToC to indicate that a section +can be expanded. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/points.per.em.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/points.per.em.xml new file mode 100644 index 000000000..76bd22e8a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/points.per.em.xml @@ -0,0 +1,29 @@ + + +points.per.em +number + + +points.per.em +Specify the nominal size of an em-space in points + + + + +10 + + + +Description + +The fixed value used for calculations based upon the size of a +character. The assumption made is that ten point font is in use. This +assumption may not be valid. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preface.autolabel.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preface.autolabel.xml new file mode 100644 index 000000000..f59115a51 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preface.autolabel.xml @@ -0,0 +1,71 @@ + + +preface.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +preface.autolabel +Specifices the labeling format for Preface titles + + + + + + +Description + +If non-zero then prefaces will be numbered using the parameter +value as the number format if the value matches one of the following: + + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + + +Any nonzero value other than the above will generate +the default number format (arabic). + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prefer.internal.olink.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prefer.internal.olink.xml new file mode 100644 index 000000000..2599d76c1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prefer.internal.olink.xml @@ -0,0 +1,78 @@ + + +prefer.internal.olink +boolean + + +prefer.internal.olink +Prefer a local olink reference to an external reference + + + + + + + + +Description + +If you are re-using XML content modules in multiple documents, +you may want to redirect some of your olinks. This parameter +permits you to redirect an olink to the current document. + + +For example: you are writing documentation for a product, +which includes 3 manuals: a little installation +booklet (booklet.xml), a user +guide (user.xml), and a reference manual (reference.xml). +All 3 documents begin with the same introduction section (intro.xml) that +contains a reference to the customization section (custom.xml) which is +included in both user.xml and reference.xml documents. + + +How do you write the link to custom.xml in intro.xml +so that it is interpreted correctly in all 3 documents? + +If you use xref, it will fail in user.xml. + +If you use olink (pointing to reference.xml), +the reference in user.xml +will point to the customization section of the reference manual, while it is +actually available in user.xml. + + + +If you set the prefer.internal.olink +parameter to a non-zero value, then the processor will +first look in the olink database +for the olink's targetptr attribute value +in document matching the current.docid +parameter value. If it isn't found there, then +it tries the document in the database +with the targetdoc +value that matches the olink's targetdoc +attribute. + + +This feature permits an olink reference to resolve to +the current document if there is an element +with an id matching the olink's targetptr +value. The current document's olink data must be +included in the target database for this to work. + + +There is a potential for incorrect links if +the same id attribute value is used for different +content in different documents. +Some of your olinks may be redirected to the current document +when they shouldn't be. It is not possible to control +individual olink instances. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preferred.mediaobject.role.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preferred.mediaobject.role.xml new file mode 100644 index 000000000..57b09890b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/preferred.mediaobject.role.xml @@ -0,0 +1,40 @@ + + +preferred.mediaobject.role +string + + +preferred.mediaobject.role +Select which mediaobject to use based on +this value of an object's role attribute. + + + + + + + + + +Description + +A mediaobject may contain several objects such as imageobjects. +If the parameter use.role.for.mediaobject is +non-zero, then the role attribute on +imageobjects and other objects within a +mediaobject container will be used to select which object +will be used. If one of the objects has a role value that matches the +preferred.mediaobject.role parameter, then it +has first priority for selection. If more than one has such a role +value, the first one is used. + + +See the use.role.for.mediaobject parameter +for the sequence of selection. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prev.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prev.image.xml new file mode 100644 index 000000000..b01711579 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/prev.image.xml @@ -0,0 +1,27 @@ + + +prev.image +filename + + +prev.image +Left-arrow image + + + + +active/nav-prev.png + + + +Description + +Specifies the filename of the left-pointing navigation arrow. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/procedure.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/procedure.properties.xml new file mode 100644 index 000000000..f6cadb02a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/procedure.properties.xml @@ -0,0 +1,29 @@ + + +procedure.properties +attribute set + + +procedure.properties +Properties associated with a procedure + + + + + + auto + + + + +Description + +The styling for procedures. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.empty.source.toc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.empty.source.toc.xml new file mode 100644 index 000000000..772b45666 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.empty.source.toc.xml @@ -0,0 +1,39 @@ + + +process.empty.source.toc +boolean + + +process.empty.source.toc +Generate automated TOC if toc element occurs in a source document? + + + + + + +Description + +Specifies that if an empty toc element is found in a +source document, an automated TOC is generated at this point in the +document. + + Depending on what the value of the + generate.toc parameter is, setting this + parameter to 1 could result in generation of + duplicate automated TOCs. So the + process.empty.source.toc is primarily useful + as an "override": by placing an empty toc in your + document and setting this parameter to 1, you can + force a TOC to be generated even if generate.toc + says not to. + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.source.toc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.source.toc.xml new file mode 100644 index 000000000..b91657a9a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/process.source.toc.xml @@ -0,0 +1,39 @@ + + +process.source.toc +boolean + + +process.source.toc +Process a non-empty toc element if it occurs in a source document? + + + + + + +Description + +Specifies that the contents of a non-empty "hard-coded" +toc element in a source document are processed to +generate a TOC in output. + + This parameter has no effect on automated generation of + TOCs. An automated TOC may still be generated along with the + "hard-coded" TOC. To suppress automated TOC generation, adjust the + value of the generate.toc paramameter. + + The process.source.toc parameter also has + no effect if the toc element is empty; handling + for empty toc is controlled by the + process.empty.source.toc parameter. + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.arch.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.arch.xml new file mode 100644 index 000000000..afcd34c44 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.arch.xml @@ -0,0 +1,39 @@ + + +profile.arch +string + + +profile.arch +Target profile for arch +attribute + + + + + + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.attribute.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.attribute.xml new file mode 100644 index 000000000..e7dc5d01c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.attribute.xml @@ -0,0 +1,34 @@ + + +profile.attribute +string + + +profile.attribute +Name of user-specified profiling attribute + + + + + + + + +Description + +This parameter is used in conjuction with +profile.value. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.audience.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.audience.xml new file mode 100644 index 000000000..1c5b1a309 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.audience.xml @@ -0,0 +1,38 @@ + + +profile.audience +string + + +profile.audience +Target profile for audience +attribute + + + + + + + + +Description + +Value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.condition.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.condition.xml new file mode 100644 index 000000000..8bb01a360 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.condition.xml @@ -0,0 +1,38 @@ + + +profile.condition +string + + +profile.condition +Target profile for condition +attribute + + + + + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.conformance.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.conformance.xml new file mode 100644 index 000000000..606af4ca0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.conformance.xml @@ -0,0 +1,38 @@ + + +profile.conformance +string + + +profile.conformance +Target profile for conformance +attribute + + + + + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.lang.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.lang.xml new file mode 100644 index 000000000..43b9439aa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.lang.xml @@ -0,0 +1,38 @@ + + +profile.lang +string + + +profile.lang +Target profile for lang +attribute + + + + + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.os.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.os.xml new file mode 100644 index 000000000..ba6f430b0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.os.xml @@ -0,0 +1,38 @@ + + +profile.os +string + + +profile.os +Target profile for os +attribute + + + + + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revision.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revision.xml new file mode 100644 index 000000000..28f668d94 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revision.xml @@ -0,0 +1,38 @@ + + +profile.revision +string + + +profile.revision +Target profile for revision +attribute + + + + + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revisionflag.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revisionflag.xml new file mode 100644 index 000000000..3ab8919be --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.revisionflag.xml @@ -0,0 +1,38 @@ + + +profile.revisionflag +string + + +profile.revisionflag +Target profile for revisionflag +attribute + + + + + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.role.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.role.xml new file mode 100644 index 000000000..5758e4aec --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.role.xml @@ -0,0 +1,54 @@ + + +profile.role +string + + +profile.role +Target profile for role +attribute + + + + + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + +Note that role is often +used for other purposes than profiling. For example it is commonly +used to get emphasize in bold font: + +<emphasis role="bold">very important</emphasis> + +If you are using role for +these purposes do not forget to add values like bold to +value of this parameter. If you forgot you will get document with +small pieces missing which are very hard to track. + +For this reason it is not recommended to use role attribute for profiling. You should +rather use profiling specific attributes like userlevel, os, arch, condition, etc. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.security.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.security.xml new file mode 100644 index 000000000..8ffca0f62 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.security.xml @@ -0,0 +1,38 @@ + + +profile.security +string + + +profile.security +Target profile for security +attribute + + + + + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.separator.xml new file mode 100644 index 000000000..a4317f53e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.separator.xml @@ -0,0 +1,27 @@ + + +profile.separator +string + + +profile.separator +Separator character for compound profile values + + + + +; + + + +Description + +Separator character used for compound profile values. See profile.arch + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.status.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.status.xml new file mode 100644 index 000000000..c9fc469c8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.status.xml @@ -0,0 +1,38 @@ + + +profile.status +string + + +profile.status +Target profile for status +attribute + + + + + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.userlevel.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.userlevel.xml new file mode 100644 index 000000000..39e263b14 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.userlevel.xml @@ -0,0 +1,38 @@ + + +profile.userlevel +string + + +profile.userlevel +Target profile for userlevel +attribute + + + + + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.value.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.value.xml new file mode 100644 index 000000000..85f719017 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.value.xml @@ -0,0 +1,41 @@ + + +profile.value +string + + +profile.value +Target profile for user-specified attribute + + + + + + + + +Description + +When you are using this parameter you must also specify name of +profiling attribute with parameter +profile.attribute. + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.vendor.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.vendor.xml new file mode 100644 index 000000000..c0187f000 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.vendor.xml @@ -0,0 +1,38 @@ + + +profile.vendor +string + + +profile.vendor +Target profile for vendor +attribute + + + + + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.wordsize.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.wordsize.xml new file mode 100644 index 000000000..e30ffc7fc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/profile.wordsize.xml @@ -0,0 +1,38 @@ + + +profile.wordsize +string + + +profile.wordsize +Target profile for wordsize +attribute + + + + + + + + +Description + +The value of this parameter specifies profiles which should be +included in the output. You can specify multiple profiles by +separating them by semicolon. You can change separator character by +profile.separator +parameter. + +This parameter has effect only when you are using profiling +stylesheets (profile-docbook.xsl, +profile-chunk.xsl, …) instead of normal +ones (docbook.xsl, +chunk.xsl, …). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/punct.honorific.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/punct.honorific.xml new file mode 100644 index 000000000..7c8a38e48 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/punct.honorific.xml @@ -0,0 +1,28 @@ + + +punct.honorific +string + + +punct.honorific +Punctuation after an honorific in a personal name. + + + + +. + + + +Description + +This parameter specifies the punctuation that should be added after an +honorific in a personal name. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.defaultlabel.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.defaultlabel.xml new file mode 100644 index 000000000..0b43f0d8b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.defaultlabel.xml @@ -0,0 +1,86 @@ + + +qanda.defaultlabel +list +number +qanda +none + + +qanda.defaultlabel +Sets the default for defaultlabel on QandASet. + + + + +number + + + +Description + +If no defaultlabel attribute is specified on +a qandaset, this value is used. It is generally one of the legal +values for the defaultlabel attribute (none, +number or +qanda), or one of the additional stylesheet-specific values +(qnumber or qnumberanda). +The default value is 'number'. + +The values are rendered as follows: + +qanda + +questions are labeled "Q:" and +answers are labeled "A:". + + + +number + +The questions are enumerated and the answers +are not labeled. + + + +qnumber + +The questions are labeled "Q:" followed by a number, and answers are not +labeled. +When sections are numbered, adding a label +to the number distinguishes the question numbers +from the section numbers. +This value is not allowed in the +defaultlabel attribute +of a qandaset element. + + + +qnumberanda + +The questions are labeled "Q:" followed by a number, and +the answers are labeled "A:". +When sections are numbered, adding a label +to the number distinguishes the question numbers +from the section numbers. +This value is not allowed in the +defaultlabel attribute +of a qandaset element. + + + +none + +No distinguishing label precedes Questions or Answers. + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.in.toc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.in.toc.xml new file mode 100644 index 000000000..9597b71dd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.in.toc.xml @@ -0,0 +1,34 @@ + + +qanda.in.toc +boolean + + +qanda.in.toc +Should qandaentry questions appear in +the document table of contents? + + + + + + +Description + +If true (non-zero), then the generated table of contents +for a document will include qandaset titles, +qandadiv titles, +and question elements. The default value (zero) excludes +them from the TOC. + +This parameter does not affect any tables of contents +that may be generated inside a qandaset or qandadiv. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.inherit.numeration.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.inherit.numeration.xml new file mode 100644 index 000000000..744c0e84d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.inherit.numeration.xml @@ -0,0 +1,30 @@ + + +qanda.inherit.numeration +boolean + + +qanda.inherit.numeration +Does enumeration of QandASet components inherit the numeration of parent elements? + + + + + + + + +Description + +If non-zero, numbered qandadiv elements and +question and answer inherit the enumeration of +the ancestors of the qandaset. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.nested.in.toc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.nested.in.toc.xml new file mode 100644 index 000000000..01bdf5a22 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.nested.in.toc.xml @@ -0,0 +1,29 @@ + + +qanda.nested.in.toc +boolean + + +qanda.nested.in.toc +Should nested answer/qandaentry instances appear in TOC? + + + + + + + + +Description + +If non-zero, instances of qandaentry +that are children of answer elements are shown in +the TOC. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level1.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level1.properties.xml new file mode 100644 index 000000000..edaecc900 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level1.properties.xml @@ -0,0 +1,32 @@ + + +qanda.title.level1.properties +attribute set + + +qanda.title.level1.properties +Properties for level-1 qanda set titles + + + + + + + + pt + + + + + +Description + +The properties of level-1 qanda set titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level2.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level2.properties.xml new file mode 100644 index 000000000..ca48ca1a5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level2.properties.xml @@ -0,0 +1,32 @@ + + +qanda.title.level2.properties +attribute set + + +qanda.title.level2.properties +Properties for level-2 qanda set titles + + + + + + + + pt + + + + + +Description + +The properties of level-2 qanda set titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level3.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level3.properties.xml new file mode 100644 index 000000000..c9c098ea9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level3.properties.xml @@ -0,0 +1,32 @@ + + +qanda.title.level3.properties +attribute set + + +qanda.title.level3.properties +Properties for level-3 qanda set titles + + + + + + + + pt + + + + + +Description + +The properties of level-3 qanda set titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level4.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level4.properties.xml new file mode 100644 index 000000000..4344e7679 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level4.properties.xml @@ -0,0 +1,32 @@ + + +qanda.title.level4.properties +attribute set + + +qanda.title.level4.properties +Properties for level-4 qanda set titles + + + + + + + + pt + + + + + +Description + +The properties of level-4 qanda set titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level5.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level5.properties.xml new file mode 100644 index 000000000..31b0d203c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level5.properties.xml @@ -0,0 +1,32 @@ + + +qanda.title.level5.properties +attribute set + + +qanda.title.level5.properties +Properties for level-5 qanda set titles + + + + + + + + pt + + + + + +Description + +The properties of level-5 qanda set titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level6.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level6.properties.xml new file mode 100644 index 000000000..920c7e9ec --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.level6.properties.xml @@ -0,0 +1,34 @@ + + +qanda.title.level6.properties +attribute set + + +qanda.title.level6.properties +Properties for level-6 qanda set titles + + + + + + + + pt + + + + + +Description + +The properties of level-6 qanda set titles. +This property set is actually +used for all titles below level 5. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.properties.xml new file mode 100644 index 000000000..7c3c2a16a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qanda.title.properties.xml @@ -0,0 +1,37 @@ + + +qanda.title.properties +attribute set + + +qanda.title.properties +Properties for qanda set titles + + + + + + + + + bold + + always + 0.8em + 1.0em + 1.2em + + + + +Description + +The properties common to all qanda set titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qandadiv.autolabel.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qandadiv.autolabel.xml new file mode 100644 index 000000000..596350af6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/qandadiv.autolabel.xml @@ -0,0 +1,26 @@ + + +qandadiv.autolabel +boolean + + +qandadiv.autolabel +Are divisions in QAndASets enumerated? + + + + + + +Description + +If non-zero, unlabeled qandadivs will be enumerated. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refclass.suppress.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refclass.suppress.xml new file mode 100644 index 000000000..8f9b52ae9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refclass.suppress.xml @@ -0,0 +1,28 @@ + + +refclass.suppress +boolean + + +refclass.suppress +Suppress display of refclass contents? + + + + + + + +Description + +If the value of refclass.suppress is +non-zero, then display of refclass contents is +suppressed in output. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.enabled.xml new file mode 100644 index 000000000..11de66070 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.enabled.xml @@ -0,0 +1,46 @@ + + +refentry.date.profile.enabled +boolean + + +refentry.date.profile.enabled +Enable refentry "date" profiling? + + + + +0 + + +Description + +If the value of +refentry.date.profile.enabled is non-zero, then +during refentry metadata gathering, the info profile +specified by the customizable +refentry.date.profile parameter is used. + +If instead the value of +refentry.date.profile.enabled is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering refentry "date" data. + +If you find that the default refentry +metadata-gathering behavior is causing incorrect "date" data to show +up in your output, then consider setting a non-zero value for +refentry.date.profile.enabled and adjusting the +value of refentry.date.profile to cause correct +data to be gathered. + +Note that the terms "source" and "date" have special meanings in +this context. For details, see the documentation for the +refentry.date.profile parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.xml new file mode 100644 index 000000000..1220ed035 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.date.profile.xml @@ -0,0 +1,38 @@ + + +refentry.date.profile +string + + +refentry.date.profile +Specifies profile for refentry "date" data + + + + + + (($info[//date])[last()]/date)[1]| + (($info[//pubdate])[last()]/pubdate)[1] + + + + +Description + +The value of refentry.date.profile is a +string representing an XPath expression. It is evaluated at run-time +and used only if refentry.date.profile.enabled +is non-zero. Otherwise, the refentry metadata-gathering +logic "hard coded" into the stylesheets is used. + + The man(7) man page describes this content +as "the date of the last revision". In man pages, it is the content +that is usually displayed in the center footer. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.name.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.name.xml new file mode 100644 index 000000000..f59e6d550 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.name.xml @@ -0,0 +1,33 @@ + + +refentry.generate.name +boolean + + +refentry.generate.name +Output NAME header before refnames? + + + + + + + + +Description + +If non-zero, a "NAME" section title is output before the list +of refnames. This parameter and +refentry.generate.title are mutually +exclusive. This means that if you change this parameter to zero, you +should set refentry.generate.title to non-zero unless +you want get quite strange output. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.title.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.title.xml new file mode 100644 index 000000000..8029b2076 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.generate.title.xml @@ -0,0 +1,33 @@ + + +refentry.generate.title +boolean + + +refentry.generate.title +Output title before refnames? + + + + + + + + +Description + +If non-zero, the reference page title or first name is +output before the list of refnames. This parameter and +refentry.generate.name are mutually exclusive. +This means that if you change this parameter to non-zero, you +should set refentry.generate.name to zero unless +you want get quite strange output. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.fallback.profile.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.fallback.profile.xml new file mode 100644 index 000000000..636278568 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.fallback.profile.xml @@ -0,0 +1,48 @@ + + +refentry.manual.fallback.profile +string + + +refentry.manual.fallback.profile +Specifies profile of "fallback" for refentry "manual" data + + + + + +refmeta/refmiscinfo[not(@class = 'date')][1]/node() + + + +Description + +The value of +refentry.manual.fallback.profile is a string +representing an XPath expression. It is evaluated at run-time and +used only if no "manual" data can be found by other means (that is, +either using the refentry metadata-gathering logic "hard +coded" in the stylesheets, or the value of +refentry.manual.profile, if it is +enabled). + + +Depending on which XSLT engine you run, either the EXSLT +dyn:evaluate extension function (for xsltproc or +Xalan) or saxon:evaluate extension function (for +Saxon) are used to dynamically evaluate the value of +refentry.manual.fallback.profile at +run-time. If you don't use xsltproc, Saxon, Xalan -- or some other +XSLT engine that supports dyn:evaluate -- you +must manually disable fallback processing by setting an empty value +for the refentry.manual.fallback.profile +parameter. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.enabled.xml new file mode 100644 index 000000000..a3b7b549c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.enabled.xml @@ -0,0 +1,47 @@ + + +refentry.manual.profile.enabled +boolean + + +refentry.manual.profile.enabled +Enable refentry "manual" profiling? + + + + +0 + + +Description + +If the value of +refentry.manual.profile.enabled is +non-zero, then during refentry metadata gathering, the info +profile specified by the customizable +refentry.manual.profile parameter is +used. + +If instead the value of +refentry.manual.profile.enabled is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering refentry "manual" data. + +If you find that the default refentry +metadata-gathering behavior is causing incorrect "manual" data to show +up in your output, then consider setting a non-zero value for +refentry.manual.profile.enabled and adjusting +the value of refentry.manual.profile to cause +correct data to be gathered. + +Note that the term "manual" has a special meanings in this +context. For details, see the documentation for the +refentry.manual.profile parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.xml new file mode 100644 index 000000000..214b1701e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.manual.profile.xml @@ -0,0 +1,72 @@ + + +refentry.manual.profile +string + + +refentry.manual.profile +Specifies profile for refentry "manual" data + + + + + + (($info[//title])[last()]/title)[1]| + ../title/node() + + + + +Description + +The value of refentry.manual.profile is +a string representing an XPath expression. It is evaluated at +run-time and used only if +refentry.manual.profile.enabled is +non-zero. Otherwise, the refentry metadata-gathering logic +"hard coded" into the stylesheets is used. + +In man pages, this content is usually displayed in the middle of +the header of the page. The man(7) man page +describes this as "the title of the manual (e.g., Linux +Programmer's Manual)". Here are some examples from +existing man pages: + + + dpkg utilities + (dpkg-name) + + + User Contributed Perl Documentation + (GET) + + + GNU Development Tools + (ld) + + + Emperor Norton Utilities + (ddate) + + + Debian GNU/Linux manual + (faked) + + + GIMP Manual Pages + (gimp) + + + KDOC Documentation System + (qt2kdoc) + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.meta.get.quietly.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.meta.get.quietly.xml new file mode 100644 index 000000000..0ed29f6c5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.meta.get.quietly.xml @@ -0,0 +1,37 @@ + + +refentry.meta.get.quietly +boolean + + +refentry.meta.get.quietly +Suppress notes and warnings when gathering refentry metadata? + + + + + + + + +Description + +If zero (the default), notes and warnings about “missing†markup +are generated during gathering of refentry metadata. If non-zero, the +metadata is gathered “quietly†-- that is, the notes and warnings are +suppressed. + + + If you are processing a large amount of refentry + content, you may be able to speed up processing significantly by + setting a non-zero value for + refentry.meta.get.quietly. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.pagebreak.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.pagebreak.xml new file mode 100644 index 000000000..42b84661b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.pagebreak.xml @@ -0,0 +1,33 @@ + + +refentry.pagebreak +boolean + + +refentry.pagebreak +Start each refentry on a new page + + + + + + +Description + +If non-zero (the default), each refentry +element will start on a new page. If zero, a page +break will not be generated between refentry elements. +The exception is when the refentry elements are children of +a part element, in which case the page breaks are always +retained. That is because a part element does not generate +a page-sequence for its children, so each refentry must +start its own page-sequence. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.separator.xml new file mode 100644 index 000000000..a7eeb84b8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.separator.xml @@ -0,0 +1,29 @@ + + +refentry.separator +boolean + + +refentry.separator +Generate a separator between consecutive RefEntry elements? + + + + + + + + +Description + +If true, a separator will be generated between consecutive +reference pages. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.fallback.profile.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.fallback.profile.xml new file mode 100644 index 000000000..1761378a9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.fallback.profile.xml @@ -0,0 +1,49 @@ + + +refentry.source.fallback.profile +string + + +refentry.source.fallback.profile +Specifies profile of "fallback" for refentry "source" data + + + + + +refmeta/refmiscinfo[not(@class = 'date')][1]/node() + + + +Description + +The value of +refentry.source.fallback.profile is a string +representing an XPath expression. It is evaluated at run-time and used +only if no "source" data can be found by other means (that is, either +using the refentry metadata-gathering logic "hard coded" in +the stylesheets, or the value of the +refentry.source.name.profile and +refentry.version.profile parameters, if those +are enabled). + + +Depending on which XSLT engine you run, either the EXSLT +dyn:evaluate extension function (for xsltproc or +Xalan) or saxon:evaluate extension function (for +Saxon) are used to dynamically evaluate the value of +refentry.source.fallback.profile at +run-time. If you don't use xsltproc, Saxon, Xalan -- or some other +XSLT engine that supports dyn:evaluate -- you +must manually disable fallback processing by setting an empty value +for the refentry.source.fallback.profile +parameter. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.enabled.xml new file mode 100644 index 000000000..f87ec0fe2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.enabled.xml @@ -0,0 +1,48 @@ + + +refentry.source.name.profile.enabled +boolean + + +refentry.source.name.profile.enabled +Enable refentry "source name" profiling? + + + + +0 + + +Description + +If the value of +refentry.source.name.profile.enabled is +non-zero, then during refentry metadata gathering, the info +profile specified by the customizable +refentry.source.name.profile parameter is +used. + +If instead the value of +refentry.source.name.profile.enabled is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering refentry "source name" data. + +If you find that the default refentry +metadata-gathering behavior is causing incorrect "source name" data to +show up in your output, then consider setting a non-zero value for +refentry.source.name.profile.enabled and +adjusting the value of +refentry.source.name.profile to cause correct +data to be gathered. + +Note that the terms "source" and "source name" have special +meanings in this context. For details, see the documentation for the +refentry.source.name.profile parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.xml new file mode 100644 index 000000000..c9a101228 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.profile.xml @@ -0,0 +1,89 @@ + + +refentry.source.name.profile +string + + +refentry.source.name.profile +Specifies profile for refentry "source name" data + + + + + + (($info[//productname])[last()]/productname)[1]| + (($info[//corpname])[last()]/corpname)[1]| + (($info[//corpcredit])[last()]/corpcredit)[1]| + (($info[//corpauthor])[last()]/corpauthor)[1]| + (($info[//orgname])[last()]/orgname)[1]| + (($info[//publishername])[last()]/publishername)[1] + + + + +Description + +The value of refentry.source.name.profile +is a string representing an XPath expression. It is evaluated at +run-time and used only if +refentry.source.name.profile.enabled is +non-zero. Otherwise, the refentry metadata-gathering logic +"hard coded" into the stylesheets is used. + +A "source name" is one part of a (potentially) two-part +Name Version +"source" field. In man pages, it is usually displayed in the left +footer of the page. It typically indicates the software system or +product that the item documented in the man page belongs to. The +man(7) man page describes it as "the source of +the command", and provides the following examples: + + + For binaries, use something like: GNU, NET-2, SLS + Distribution, MCC Distribution. + + + For system calls, use the version of the kernel that you + are currently looking at: Linux 0.99.11. + + + For library calls, use the source of the function: GNU, BSD + 4.3, Linux DLL 4.4.1. + + + + +In practice, there are many pages that simply have a Version +number in the "source" field. So, it looks like what we have is a +two-part field, +Name Version, +where: + + + Name + + product name (e.g., BSD) or org. name (e.g., GNU) + + + + Version + + version number + + + +Each part is optional. If the Name is a +product name, then the Version is probably +the version of the product. Or there may be no +Name, in which case, if there is a +Version, it is probably the version +of the item itself, not the product it is part of. Or, if the +Name is an organization name, then there +probably will be no Version. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.suppress.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.suppress.xml new file mode 100644 index 000000000..b29127eb4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.source.name.suppress.xml @@ -0,0 +1,42 @@ + + +refentry.source.name.suppress +boolean + + +refentry.source.name.suppress +Suppress "name" part of refentry "source" contents? + + + + +0 + + +Description + +If the value of +refentry.source.name.suppress is non-zero, then +during refentry metadata gathering, no "source name" data +is added to the refentry "source" contents. Instead (unless +refentry.version.suppress is also non-zero), +only "version" data is added to the "source" contents. + +If you find that the refentry metadata gathering +mechanism is causing unwanted "source name" data to show up in your +output -- for example, in the footer (or possibly header) of a man +page -- then you might consider setting a non-zero value for +refentry.source.name.suppress. + +Note that the terms "source", "source name", and "version" have +special meanings in this context. For details, see the documentation +for the refentry.source.name.profile +parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.title.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.title.properties.xml new file mode 100644 index 000000000..5bb1f2565 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.title.properties.xml @@ -0,0 +1,59 @@ + + +refentry.title.properties +attribute set + + +refentry.title.properties +Title properties for a refentry title + + + + + + + + + 18pt + bold + 1em + false + always + 0.8em + 1.0em + 1.2em + 0.5em + 0.4em + 0.6em + + + + + +Description + +Formatting properties applied to the title generated for the +refnamediv part of output for +refentry when the value of the +refentry.generate.title parameter is +non-zero. The font size is supplied by the appropriate section.levelX.title.properties +attribute-set, computed from the location of the +refentry in the section hierarchy. + + + This parameter has no effect on the the title generated for + the refnamediv part of output for + refentry when the value of the + refentry.generate.name parameter is + non-zero. By default, that title is formatted with the same + properties as the titles for all other first-level children of + refentry. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.enabled.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.enabled.xml new file mode 100644 index 000000000..3b95bbe50 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.enabled.xml @@ -0,0 +1,47 @@ + + +refentry.version.profile.enabled +boolean + + +refentry.version.profile.enabled +Enable refentry "version" profiling? + + + + +0 + + +Description + +If the value of +refentry.version.profile.enabled is +non-zero, then during refentry metadata gathering, the info +profile specified by the customizable +refentry.version.profile parameter is +used. + +If instead the value of +refentry.version.profile.enabled is zero (the +default), then "hard coded" logic within the DocBook XSL stylesheets +is used for gathering refentry "version" data. + +If you find that the default refentry +metadata-gathering behavior is causing incorrect "version" data to show +up in your output, then consider setting a non-zero value for +refentry.version.profile.enabled and adjusting +the value of refentry.version.profile to cause +correct data to be gathered. + +Note that the terms "source" and "version" have special +meanings in this context. For details, see the documentation for the +refentry.version.profile parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.xml new file mode 100644 index 000000000..ff8582541 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.profile.xml @@ -0,0 +1,41 @@ + + +refentry.version.profile +string + + +refentry.version.profile +Specifies profile for refentry "version" data + + + + + + (($info[//productnumber])[last()]/productnumber)[1]| + (($info[//edition])[last()]/edition)[1]| + (($info[//releaseinfo])[last()]/releaseinfo)[1] + + + + +Description + +The value of refentry.version.profile is +a string representing an XPath expression. It is evaluated at +run-time and used only if +refentry.version.profile.enabled is +non-zero. Otherwise, the refentry metadata-gathering logic +"hard coded" into the stylesheets is used. + +A "source.name" is one part of a (potentially) two-part +Name Version +"source" field. For more details, see the documentation for the +refentry.source.name.profile parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.suppress.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.suppress.xml new file mode 100644 index 000000000..b701ad8db --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.version.suppress.xml @@ -0,0 +1,43 @@ + + +refentry.version.suppress +boolean + + +refentry.version.suppress +Suppress "version" part of refentry "source" contents? + + + + +0 + + +Description + +If the value of refentry.version.suppress +is non-zero, then during refentry metadata gathering, no +"version" data is added to the refentry "source" +contents. Instead (unless +refentry.source.name.suppress is also +non-zero), only "source name" data is added to the "source" +contents. + +If you find that the refentry metadata gathering +mechanism is causing unwanted "version" data to show up in your output +-- for example, in the footer (or possibly header) of a man page -- +then you might consider setting a non-zero value for +refentry.version.suppress. + +Note that the terms "source", "source name", and "version" have +special meanings in this context. For details, see the documentation +for the refentry.source.name.profile +parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.xref.manvolnum.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.xref.manvolnum.xml new file mode 100644 index 000000000..56b93b7bb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/refentry.xref.manvolnum.xml @@ -0,0 +1,31 @@ + + +refentry.xref.manvolnum +boolean + + +refentry.xref.manvolnum +Output manvolnum as part of +refentry cross-reference? + + + + + + + + +Description + +if non-zero, the manvolnum is used when cross-referencing +refentrys, either with xref +or citerefentry. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/reference.autolabel.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/reference.autolabel.xml new file mode 100644 index 000000000..1a9dc5b38 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/reference.autolabel.xml @@ -0,0 +1,67 @@ + + +reference.autolabel +list +0none +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +reference.autolabel +Specifies the labeling format for Reference titles + + + + I + + +Description +If non-zero, references will be numbered using the parameter + value as the number format if the value matches one of the + following: + + + + 1 or arabic + + Arabic numeration (1, 2, 3 ...). + + + + A or upperalpha + + Uppercase letter numeration (A, B, C ...). + + + + a or loweralpha + + Lowercase letter numeration (a, b, c ...). + + + + I or upperroman + + Uppercase roman numeration (I, II, III ...). + + + + i or lowerroman + + Lowercase roman letter numeration (i, ii, iii ...). + + + +Any non-zero value other than the above will generate +the default number format (upperroman). + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.after.extent.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.after.extent.xml new file mode 100644 index 000000000..b29abba74 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.after.extent.xml @@ -0,0 +1,29 @@ + + +region.after.extent +length + + +region.after.extent +Specifies the height of the footer. + + + + +0.4in + + + +Description + +The region after extent is the height of the area where footers +are printed. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.before.extent.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.before.extent.xml new file mode 100644 index 000000000..c62cc408f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/region.before.extent.xml @@ -0,0 +1,29 @@ + + +region.before.extent +length + + +region.before.extent +Specifies the height of the header + + + + +0.4in + + + +Description + +The region before extent is the height of the area where headers +are printed. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.cell.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.cell.properties.xml new file mode 100644 index 000000000..49c403744 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.cell.properties.xml @@ -0,0 +1,28 @@ + + +revhistory.table.cell.properties +attribute set + + +revhistory.table.cell.properties +The properties of table cells used for formatting revhistory + + + + + + + + + +Description + +This property set defines appearance of individual cells in revhistory table. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.properties.xml new file mode 100644 index 000000000..43116d037 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.table.properties.xml @@ -0,0 +1,28 @@ + + +revhistory.table.properties +attribute set + + +revhistory.table.properties +The properties of table used for formatting revhistory + + + + + + + + + +Description + +This property set defines appearance of revhistory table. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.title.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.title.properties.xml new file mode 100644 index 000000000..f97d646ba --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/revhistory.title.properties.xml @@ -0,0 +1,28 @@ + + +revhistory.title.properties +attribute set + + +revhistory.title.properties +The properties of revhistory title + + + + + + + + + +Description + +This property set defines appearance of revhistory title. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.filename.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.filename.xml new file mode 100644 index 000000000..ae5ca5b40 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.filename.xml @@ -0,0 +1,29 @@ + + +root.filename +uri + + +root.filename +Identifies the name of the root HTML file when chunking + + + + +index + + + +Description + +The root.filename is the base filename for +the chunk created for the root of each document processed. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.properties.xml new file mode 100644 index 000000000..26c9951f5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/root.properties.xml @@ -0,0 +1,46 @@ + + +root.properties +attribute set + + +root.properties +The properties of the fo:root element + + + + + + + + + + + + + + + + + + character-by-character + disregard-shifts + + + + + + + +Description + +This property set is used on the fo:root element of +an FO file. It defines a set of default, global parameters. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/rootid.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/rootid.xml new file mode 100644 index 000000000..a0715af3b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/rootid.xml @@ -0,0 +1,33 @@ + + +rootid +string + + +rootid +Specify the root element to format + + + + + + + +Description + +If rootid is not empty, it must be the +value of an ID that occurs in the document being formatted. The entire +document will be loaded and parsed, but formatting will begin at the +element identified, rather than at the root. For example, this allows +you to process only chapter 4 of a book. +Because the entire document is available to the processor, automatic +numbering, cross references, and other dependencies are correctly +resolved. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.default.title.end.punct.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.default.title.end.punct.xml new file mode 100644 index 000000000..d151e8b3c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.default.title.end.punct.xml @@ -0,0 +1,27 @@ + + +runinhead.default.title.end.punct +string + + +runinhead.default.title.end.punct +Default punctuation character on a run-in-head + + + +. + + + +Description + +If non-zero, For a formalpara, use the specified +string as the separator between the title and following text. The period is the default value. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.title.end.punct.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.title.end.punct.xml new file mode 100644 index 000000000..025aeed44 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/runinhead.title.end.punct.xml @@ -0,0 +1,32 @@ + + +runinhead.title.end.punct +string + + +runinhead.title.end.punct +Characters that count as punctuation on a run-in-head + + + + +.!?: + + + +Description + +Specify which characters are to be counted as punctuation. These +characters are checked for a match with the last character of the +title. If no match is found, the +runinhead.default.title.end.punct contents are +inserted. This is to avoid duplicated punctuation in the output. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/running.foot.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/running.foot.properties.xml new file mode 100644 index 000000000..ee9859240 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/running.foot.properties.xml @@ -0,0 +1,34 @@ + + +running.foot.properties +attribute set + + +running.foot.properties +Specifies properties for running foot on each slide + + + + + + + + + 14pt + #9F9F9F + + + + +Description + +This parameter specifies properties that are applied to the +running foot area of each slide. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sans.font.family.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sans.font.family.xml new file mode 100644 index 000000000..d569b1284 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sans.font.family.xml @@ -0,0 +1,29 @@ + + +sans.font.family +string + + +sans.font.family +The default sans-serif font family + + + + +sans-serif + + + +Description + +The default sans-serif font family. At the present, this isn't +actually used by the stylesheets. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.callouts.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.callouts.xml new file mode 100644 index 000000000..e08fcdbbb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.callouts.xml @@ -0,0 +1,30 @@ + + +saxon.callouts +boolean + + +saxon.callouts +Enable the callout extension + + + + + + + + +Description + +The callouts extension processes areaset +elements in ProgramListingCO and other text-based +callout elements. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.character.representation.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.character.representation.xml new file mode 100644 index 000000000..bd8bcac8a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.character.representation.xml @@ -0,0 +1,38 @@ + + +saxon.character.representation +string + + +saxon.character.representation +Saxon character representation used in generated HTML pages + + + + + + +Description + +This parameter has effect only when Saxon 6 is used (version 6.4.2 or later). +It sets the character representation in files generated by the chunking stylesheets. +If you want to suppress entity references for characters with direct representations in +chunker.output.encoding, set the parameter value to native. + + + For more information, see Saxon output character representation. + + +This parameter is documented here, but the declaration is actually +in the chunker.xsl stylesheet module. + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.linenumbering.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.linenumbering.xml new file mode 100644 index 000000000..451028bdb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.linenumbering.xml @@ -0,0 +1,32 @@ + + +saxon.linenumbering +boolean + + +saxon.linenumbering +Enable the line numbering extension + + + + + + + + +Description + +If non-zero, verbatim environments (elements that have the +format='linespecific' notation attribute: address, +literallayout, programlisting, +screen, synopsis) that specify line numbering +will have line numbers. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.tablecolumns.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.tablecolumns.xml new file mode 100644 index 000000000..e9d967433 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/saxon.tablecolumns.xml @@ -0,0 +1,30 @@ + + +saxon.tablecolumns +boolean + + +saxon.tablecolumns +Enable the table columns extension function + + + + + + + + +Description + +The table columns extension function adjusts the widths of table +columns in the HTML result to more accurately reflect the specifications +in the CALS table. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/script.dir.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/script.dir.xml new file mode 100644 index 000000000..9cb92afa9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/script.dir.xml @@ -0,0 +1,33 @@ + + +script.dir +uri + + +script.dir +Script directory + + + + + + + + +Description + +Identifies the JavaScript source directory for the slides. +This parameter can be set in the source +document with the <?dbhtml?> pseudo-attribute +script-dir. + +If non-empty, this value is prepended to each of the JavaScript files. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.max.depth.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.max.depth.xml new file mode 100644 index 000000000..e588e00da --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.max.depth.xml @@ -0,0 +1,32 @@ + + +section.autolabel.max.depth +integer + + +section.autolabel.max.depth +The deepest level of sections that are numbered. + + + + +8 + + + +Description + +When section numbering is turned on by the +section.autolabel parameter, then this +parameter controls the depth of section nesting that is +numbered. Sections nested to a level deeper than this value will not +be numbered. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.xml new file mode 100644 index 000000000..85eede6bc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.autolabel.xml @@ -0,0 +1,26 @@ + + +section.autolabel +boolean + + +section.autolabel +Are sections enumerated? + + + + + + +Description + +If true (non-zero), unlabeled sections will be enumerated. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.container.element.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.container.element.xml new file mode 100644 index 000000000..a6c40599f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.container.element.xml @@ -0,0 +1,62 @@ + + +section.container.element +list +block +wrapper + + +section.container.element +Select XSL-FO element name to contain sections + + + + +block + + + +Description + +Selects the element name for outer container of +each section. The choices are block (default) +or wrapper. +The fo: namespace prefix is added +by the stylesheet to form the full element name. + + +This element receives the section id +attribute and the appropriate section level attribute-set. + + +Changing this parameter to wrapper +is only necessary when producing multi-column output +that contains page-wide spans. Using fo:wrapper +avoids the nesting of fo:block +elements that prevents spans from working (the standard says +a span must be on a block that is a direct child of +fo:flow). + + +If set to wrapper, the +section attribute-sets only support properties +that are inheritable. That's because there is no +block to apply them to. Properties such as +font-family are inheritable, but properties such as +border are not. + + +Only some XSL-FO processors need to use this parameter. +The Antenna House processor, for example, will handle +spans in nested blocks without changing the element name. +The RenderX XEP product and FOP follow the XSL-FO standard +and need to use wrapper. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.label.includes.component.label.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.label.includes.component.label.xml new file mode 100644 index 000000000..505d47210 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.label.includes.component.label.xml @@ -0,0 +1,27 @@ + + +section.label.includes.component.label +boolean + + +section.label.includes.component.label +Do section labels include the component label? + + + + + + +Description + +If non-zero, section labels are prefixed with the label of the +component that contains them. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level1.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level1.properties.xml new file mode 100644 index 000000000..4aa70b074 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level1.properties.xml @@ -0,0 +1,43 @@ + + +section.level1.properties +attribute set + + +section.level1.properties +Properties for level-1 sections + + + + + + + + + +Description + +The properties that apply to the containing +block of a level-1 section, and therefore apply to +the whole section. This includes sect1 +elements and section elements at level 1. + + +For example, you could start each level-1 section on +a new page by using: +<xsl:attribute-set name="section.level1.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level2.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level2.properties.xml new file mode 100644 index 000000000..5dd76e938 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level2.properties.xml @@ -0,0 +1,43 @@ + + +section.level2.properties +attribute set + + +section.level2.properties +Properties for level-2 sections + + + + + + + + + +Description + +The properties that apply to the containing +block of a level-2 section, and therefore apply to +the whole section. This includes sect2 +elements and section elements at level 2. + + +For example, you could start each level-2 section on +a new page by using: +<xsl:attribute-set name="section.level2.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level3.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level3.properties.xml new file mode 100644 index 000000000..0bcd69696 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level3.properties.xml @@ -0,0 +1,43 @@ + + +section.level3.properties +attribute set + + +section.level3.properties +Properties for level-3 sections + + + + + + + + + +Description + +The properties that apply to the containing +block of a level-3 section, and therefore apply to +the whole section. This includes sect3 +elements and section elements at level 3. + + +For example, you could start each level-3 section on +a new page by using: +<xsl:attribute-set name="section.level3.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level4.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level4.properties.xml new file mode 100644 index 000000000..140885169 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level4.properties.xml @@ -0,0 +1,43 @@ + + +section.level4.properties +attribute set + + +section.level4.properties +Properties for level-4 sections + + + + + + + + + +Description + +The properties that apply to the containing +block of a level-4 section, and therefore apply to +the whole section. This includes sect4 +elements and section elements at level 4. + + +For example, you could start each level-4 section on +a new page by using: +<xsl:attribute-set name="section.level4.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level5.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level5.properties.xml new file mode 100644 index 000000000..9093b94ae --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level5.properties.xml @@ -0,0 +1,43 @@ + + +section.level5.properties +attribute set + + +section.level5.properties +Properties for level-5 sections + + + + + + + + + +Description + +The properties that apply to the containing +block of a level-5 section, and therefore apply to +the whole section. This includes sect5 +elements and section elements at level 5. + + +For example, you could start each level-5 section on +a new page by using: +<xsl:attribute-set name="section.level5.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level6.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level6.properties.xml new file mode 100644 index 000000000..dda793789 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.level6.properties.xml @@ -0,0 +1,43 @@ + + +section.level6.properties +attribute set + + +section.level6.properties +Properties for level-6 sections + + + + + + + + + +Description + +The properties that apply to the containing +block of a level 6 or lower section, and therefore apply to +the whole section. This includes +section elements at level 6 and lower. + + +For example, you could start each level-6 section on +a new page by using: +<xsl:attribute-set name="section.level6.properties"> + <xsl:attribute name="break-before">page</xsl:attribute> +</xsl:attribute-set> + + +This attribute set inherits attributes from the +general section.properties attribute set. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.properties.xml new file mode 100644 index 000000000..06acc314d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.properties.xml @@ -0,0 +1,35 @@ + + +section.properties +attribute set + + +section.properties +Properties for all section levels + + + + + + + + + +Description + +The properties that apply to the containing +block of all section levels, and therefore apply to +the whole section. +This attribute set is inherited by the +more specific attribute sets such as +section.level1.properties. +The default is empty. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level1.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level1.properties.xml new file mode 100644 index 000000000..91c63ed25 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level1.properties.xml @@ -0,0 +1,32 @@ + + +section.title.level1.properties +attribute set + + +section.title.level1.properties +Properties for level-1 section titles + + + + + + + + pt + + + + + +Description + +The properties of level-1 section titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level2.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level2.properties.xml new file mode 100644 index 000000000..a25648a7d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level2.properties.xml @@ -0,0 +1,33 @@ + + + +section.title.level2.properties +attribute set + + +section.title.level2.properties +Properties for level-2 section titles + + + + + + + + pt + + + + + +Description + +The properties of level-2 section titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level3.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level3.properties.xml new file mode 100644 index 000000000..a009a6e31 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level3.properties.xml @@ -0,0 +1,32 @@ + + +section.title.level3.properties +attribute set + + +section.title.level3.properties +Properties for level-3 section titles + + + + + + + + pt + + + + + +Description + +The properties of level-3 section titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level4.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level4.properties.xml new file mode 100644 index 000000000..00d439895 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level4.properties.xml @@ -0,0 +1,32 @@ + + +section.title.level4.properties +attribute set + + +section.title.level4.properties +Properties for level-4 section titles + + + + + + + + pt + + + + + +Description + +The properties of level-4 section titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level5.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level5.properties.xml new file mode 100644 index 000000000..c25b5efe7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level5.properties.xml @@ -0,0 +1,32 @@ + + +section.title.level5.properties +attribute set + + +section.title.level5.properties +Properties for level-5 section titles + + + + + + + + pt + + + + + +Description + +The properties of level-5 section titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level6.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level6.properties.xml new file mode 100644 index 000000000..a2a0feb78 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.level6.properties.xml @@ -0,0 +1,33 @@ + + +section.title.level6.properties +attribute set + + +section.title.level6.properties +Properties for level-6 section titles + + + + + + + + pt + + + + + +Description + +The properties of level-6 section titles. This property set is actually +used for all titles below level 5. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.properties.xml new file mode 100644 index 000000000..ab849afd5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/section.title.properties.xml @@ -0,0 +1,39 @@ + + +section.title.properties +attribute set + + +section.title.properties +Properties for section titles + + + + + + + + + bold + + always + 0.8em + 1.0em + 1.2em + start + + + + + +Description + +The properties common to all section titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/segmentedlist.as.table.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/segmentedlist.as.table.xml new file mode 100644 index 000000000..fb2c23670 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/segmentedlist.as.table.xml @@ -0,0 +1,28 @@ + + +segmentedlist.as.table +boolean + + +segmentedlist.as.table +Format segmented lists as tables? + + + + + + + + +Description + +If non-zero, segmentedlists will be formatted as +tables. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sequential.links.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sequential.links.xml new file mode 100644 index 000000000..293827dd6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sequential.links.xml @@ -0,0 +1,25 @@ + + +sequential.links +boolean + + +sequential.links +Make sequentional links? + + + + + + + + +Description +FIXME + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.style.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.style.xml new file mode 100644 index 000000000..0907806a4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.style.xml @@ -0,0 +1,36 @@ + + +shade.verbatim.style +attribute set + + +shade.verbatim.style +Properties that specify the style of shaded verbatim listings + + + + + + 0 + #E0E0E0 + + + #E0E0E0 + + + + +Description + +Properties that specify the style of shaded verbatim listings. The +parameters specified (the border and background color) are added to +the styling of the xsl-fo output. A border might be specified as "thin +black solid" for example. See xsl-fo + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.xml new file mode 100644 index 000000000..82a721624 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/shade.verbatim.xml @@ -0,0 +1,30 @@ + + +shade.verbatim +boolean + + +shade.verbatim +Should verbatim environments be shaded? + + + + + + +Description + +In the FO stylesheet, if this parameter is non-zero then the +shade.verbatim.style properties will be applied +to verbatim environments. + +In the HTML stylesheet, this parameter is now deprecated. Use +CSS instead. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.comments.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.comments.xml new file mode 100644 index 000000000..ac7bc2457 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.comments.xml @@ -0,0 +1,32 @@ + + +show.comments +boolean + + +show.comments +Display remark elements? + + + + + + + + +Description + +If non-zero, comments will be displayed, otherwise they +are suppressed. Comments here refers to the remark element +(which was called comment prior to DocBook +4.0), not XML comments (<-- like this -->) which are +unavailable. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.foil.number.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.foil.number.xml new file mode 100644 index 000000000..627c6a7e3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.foil.number.xml @@ -0,0 +1,28 @@ + + +show.foil.number +boolean + + +show.foil.number +Show foil number on each foil? + + + + + + + + +Description + +If non-zero, on each slide there will be its number. Currently +not supported in all output formats. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.revisionflag.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.revisionflag.xml new file mode 100644 index 000000000..c589b01ad --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/show.revisionflag.xml @@ -0,0 +1,42 @@ + + +show.revisionflag +boolean + + +show.revisionflag +Enable decoration of elements that have a revisionflag + + + + + + + + +Description + + +If show.revisionflag is turned on, then the stylesheets +may produce additional markup designed to allow a CSS stylesheet to +highlight elements that have specific revisionflag settings. + +The markup inserted will be usually be either a <span> or +<div> with an appropriate class +attribute. (The value of the class attribute will be the same as the +value of the revisionflag attribute). In some contexts, for example +tables, where extra markup would be structurally illegal, the class +attribute will be added to the appropriate container element. + +In general, the stylesheets only test for revisionflag in contexts +where an importing stylesheet would have to redefine whole templates. +Most of the revisionflag processing is expected to be done by another +stylesheet, for example changebars.xsl. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/showtoc.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/showtoc.image.xml new file mode 100644 index 000000000..7b1fca38a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/showtoc.image.xml @@ -0,0 +1,29 @@ + + +showtoc.image +filename + + +showtoc.image +Show ToC image + + + + +showtoc.gif + + + +Description + +Specifies the filename of the show ToC image. This is used +when the ToC hide/show parameter is +enabled. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/side.float.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/side.float.properties.xml new file mode 100644 index 000000000..0a6d904cc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/side.float.properties.xml @@ -0,0 +1,50 @@ + + +side.float.properties +attribute set + + +side.float.properties +Attribute set for side float container properties + + + + + + 2in + 4pt + 4pt + 2pt + 2pt + 0pt + 0pt + start + + + + +Description + +Properties that are applied to the +fo:block-container inside of +a side float that is generated by the template named +floater. +That template generates a side float +when the side.float.type is set to one +of the values for a side float. + +If you do only left or +start side floats, you may want to set the +padding-start attribute to zero. +If you do only right or +end side floats, you may want to set the +padding-end attribute to zero. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.type.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.type.xml new file mode 100644 index 000000000..8c6a286a0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.type.xml @@ -0,0 +1,90 @@ + + +sidebar.float.type +list +none +before +left +start +right +end +inside +outside + + +sidebar.float.type +Select type of float for sidebar elements + + + + +none + + + +Description + +Selects the type of float for sidebar elements. + + + +If sidebar.float.type is +none, then +no float is used. + + + +If sidebar.float.type is +before, then +the float appears at the top of the page. On some processors, +that may be the next page rather than the current page. + + + + +If sidebar.float.type is +left, +then a left side float is used. + + + + +If sidebar.float.type is +start, +then when the text direction is left-to-right a left side float is used. +When the text direction is right-to-left, a right side float is used. + + + + +If sidebar.float.type is +right, +then a right side float is used. + + + + +If sidebar.float.type is +end, +then when the text direction is left-to-right a right side float is used. +When the text direction is right-to-left, a left side float is used. + + + + +If your XSL-FO processor supports floats positioned on the +inside or +outside +of double-sided pages, then you have those two +options for side floats as well. + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.width.xml new file mode 100644 index 000000000..cb989e4e6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.float.width.xml @@ -0,0 +1,35 @@ + + +sidebar.float.width +length + + +sidebar.float.width +Set the default width for sidebars + + + + +1in + + + +Description + +Sets the default width for sidebars when used as a side float. +The width determines the degree to which the sidebar block intrudes into +the text area. + +If sidebar.float.type is +before or +none, then +this parameter is ignored. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.properties.xml new file mode 100644 index 000000000..fc98ac0cd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.properties.xml @@ -0,0 +1,42 @@ + + +sidebar.properties +attribute set + + +sidebar.properties +Attribute set for sidebar properties + + + + + + solid + 1pt + black + #DDDDDD + 12pt + 12pt + 6pt + 6pt + 0pt + 0pt + + + + + +Description + +The styling for sidebars. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.title.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.title.properties.xml new file mode 100644 index 000000000..f1b1d5184 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/sidebar.title.properties.xml @@ -0,0 +1,32 @@ + + +sidebar.title.properties +attribute set + + +sidebar.title.properties +Attribute set for sidebar titles + + + + + + bold + false + start + always + + + + +Description + +The styling for sidebars titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/simplesect.in.toc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/simplesect.in.toc.xml new file mode 100644 index 000000000..9bc3ab5d8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/simplesect.in.toc.xml @@ -0,0 +1,26 @@ + + +simplesect.in.toc +boolean + + +simplesect.in.toc +Should simplesect elements appear in the TOC? + + + + + + +Description + +If non-zero, simplesects will be included in the TOC. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.font.family.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.font.family.xml new file mode 100644 index 000000000..e1c754104 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.font.family.xml @@ -0,0 +1,31 @@ + + +slide.font.family +list +open +serif +sans-serif +monospace + + +slide.font.family +Specifies font family to use for slide bodies + + + + +Helvetica + + + +Description + +Specifies the font family to use for slides bodies. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.title.font.family.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.title.font.family.xml new file mode 100644 index 000000000..a5a3a88af --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slide.title.font.family.xml @@ -0,0 +1,31 @@ + + +slide.title.font.family +list +open +serif +sans-serif +monospace + + +slide.title.font.family +Specifies font family to use for slide titles + + + + +Helvetica + + + +Description + +Specifies the font family to use for slides titles. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.js.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.js.xml new file mode 100644 index 000000000..90fffaeb7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.js.xml @@ -0,0 +1,28 @@ + + +slides.js +filename + + +slides.js +Slides overlay file + + + + +slides.js + + + +Description + +Specifies the filename of the slides JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.properties.xml new file mode 100644 index 000000000..daca82c94 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/slides.properties.xml @@ -0,0 +1,31 @@ + + +slides.properties +attribute set + + +slides.properties +Specifies properties for all slides + + + + + + + + + + + + +Description + +This parameter specifies properties that are applied to all slides. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/spacing.paras.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/spacing.paras.xml new file mode 100644 index 000000000..2f2323a1a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/spacing.paras.xml @@ -0,0 +1,30 @@ + + +spacing.paras +boolean + + +spacing.paras +Insert additional <p> elements for spacing? + + + + + + + + +Description + +When non-zero, additional, empty paragraphs are inserted in +several contexts (for example, around informal figures), to create a +more pleasing visual appearance in many browsers. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/speakernote.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/speakernote.properties.xml new file mode 100644 index 000000000..089115a76 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/speakernote.properties.xml @@ -0,0 +1,32 @@ + + +speakernote.properties +attribute set + + +speakernote.properties +Specifies properties for all speakernotes + + + + + + Times Roman + italic + 12pt + normal + + + + +Description + +This parameter specifies properties that are applied to all speakernotes. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/subscript.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/subscript.properties.xml new file mode 100644 index 000000000..d2c771113 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/subscript.properties.xml @@ -0,0 +1,29 @@ + + +subscript.properties +attribute set + + +subscript.properties +Properties associated with subscripts + + + + + + 75% + + + + +Description + +Specifies styling properties for subscripts. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/superscript.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/superscript.properties.xml new file mode 100644 index 000000000..ecf6af15d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/superscript.properties.xml @@ -0,0 +1,29 @@ + + +superscript.properties +attribute set + + +superscript.properties +Properties associated with superscripts + + + + + + 75% + + + + +Description + +Specifies styling properties for superscripts. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.footer.navigation.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.footer.navigation.xml new file mode 100644 index 000000000..430ed9777 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.footer.navigation.xml @@ -0,0 +1,26 @@ + + +suppress.footer.navigation +boolean + + +suppress.footer.navigation +Disable footer navigation + + + +0 + + +Description + + +If non-zero, footer navigation will be suppressed. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.header.navigation.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.header.navigation.xml new file mode 100644 index 000000000..8fff0810a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.header.navigation.xml @@ -0,0 +1,27 @@ + + +suppress.header.navigation +boolean + + +suppress.header.navigation +Disable header navigation + + + + + + + + +Description + +If non-zero, header navigation will be suppressed. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.homepage.title.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.homepage.title.xml new file mode 100644 index 000000000..38a330625 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.homepage.title.xml @@ -0,0 +1,25 @@ + + +suppress.homepage.title +boolean + + +suppress.homepage.title +Suppress title on homepage? + + + + + + + + +Description +FIXME:If non-zero, the title on the homepage is suppressed? + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.navigation.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.navigation.xml new file mode 100644 index 000000000..351fc4d43 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/suppress.navigation.xml @@ -0,0 +1,28 @@ + + +suppress.navigation +boolean + + +suppress.navigation +Disable header and footer navigation + + + + + + + + +Description + + +If non-zero, header and footer navigation will be suppressed. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/symbol.font.family.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/symbol.font.family.xml new file mode 100644 index 000000000..8acc791fd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/symbol.font.family.xml @@ -0,0 +1,45 @@ + + +symbol.font.family +list +open +serif +sans-serif +monospace + + +symbol.font.family +The font families to be searched for symbols outside + of the body font + + + + +Symbol,ZapfDingbats + + + +Description + +A typical body or title font does not contain all +the character glyphs that DocBook supports. This parameter +specifies additional fonts that should be searched for +special characters not in the normal font. +These symbol font names are automatically appended +to the body or title font family name when fonts +are specified in a +font-family +property in the FO output. + +The symbol font names should be entered as a +comma-separated list. The default value is +Symbol,ZapfDingbats. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.borders.with.css.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.borders.with.css.xml new file mode 100644 index 000000000..2640fb98d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.borders.with.css.xml @@ -0,0 +1,28 @@ + + +table.borders.with.css +boolean + + +table.borders.with.css +Use CSS to specify table, row, and cell borders? + + + + + + + + +Description + +If non-zero, CSS will be used to draw table borders. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.color.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.color.xml new file mode 100644 index 000000000..326e14864 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.color.xml @@ -0,0 +1,39 @@ + + +table.cell.border.color +color + + +table.cell.border.color +Specifies the border color of table cells + + + + + +black + + + +Description + +Set the color of table cell borders. If non-zero, the value is used +for the border coloration. See CSS. A +color is either a keyword or a numerical RGB specification. +Keywords are aqua, black, blue, fuchsia, gray, green, lime, maroon, +navy, olive, orange, purple, red, silver, teal, white, and +yellow. + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.style.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.style.xml new file mode 100644 index 000000000..221a29c33 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.style.xml @@ -0,0 +1,42 @@ + + +table.cell.border.style +list +none +solid +dotted +dashed +double +groove +ridge +inset +outset +solid + + +table.cell.border.style +Specifies the border style of table cells + + + + +solid + + + +Description + +Specifies the border style of table cells. + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.thickness.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.thickness.xml new file mode 100644 index 000000000..093e38ed8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.border.thickness.xml @@ -0,0 +1,35 @@ + + +table.cell.border.thickness +length + + +table.cell.border.thickness +Specifies the thickness of table cell borders + + + + +0.5pt + + + +Description + +If non-zero, specifies the thickness of borders on table +cells. The units are points. See +CSS + + + To control properties of cell borders in HTML output, you must also turn on the + table.borders.with.css parameter. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.padding.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.padding.xml new file mode 100644 index 000000000..25fd65358 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.cell.padding.xml @@ -0,0 +1,32 @@ + + +table.cell.padding +attribute set + + +table.cell.padding +Specifies the padding of table cells + + + + + + 2pt + 2pt + 2pt + 2pt + + + + +Description + +Specifies the padding of table cells. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.entry.padding.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.entry.padding.xml new file mode 100644 index 000000000..cfd6aa332 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.entry.padding.xml @@ -0,0 +1,27 @@ + + +table.entry.padding +length + + +table.entry.padding + + + + + +2pt + + + +Description + +FIXME: + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.format.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.format.xml new file mode 100644 index 000000000..ebbd2ea3b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.format.xml @@ -0,0 +1,33 @@ + + +table.footnote.number.format +list +11,2,3... +AA,B,C... +aa,b,c... +ii,ii,iii... +II,II,III... + + +table.footnote.number.format +Identifies the format used for footnote numbers in tables + + + + +a + + + +Description + +The table.footnote.number.format specifies the format +to use for footnote numeration (1, i, I, a, or A) in tables. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.symbols.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.symbols.xml new file mode 100644 index 000000000..a8d8c23ef --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.number.symbols.xml @@ -0,0 +1,39 @@ + + +table.footnote.number.symbols +string + + +table.footnote.number.symbols +Special characters to use a footnote markers in tables + + + + + + + + +Description + +If table.footnote.number.symbols is not the empty string, +table footnotes will use the characters it contains as footnote symbols. For example, +*&#x2020;&#x2021;&#x25CA;&#x2720; will identify +footnotes with *, †, ‡, +â—Š, and ✠. If there are more footnotes +than symbols, the stylesheets will fall back to numbered footnotes using +table.footnote.number.format. + +The use of symbols for footnotes depends on the ability of your +processor (or browser) to render the symbols you select. Not all systems are +capable of displaying the full range of Unicode characters. If the quoted characters +in the preceding paragraph are not displayed properly, that's a good indicator +that you may have trouble using those symbols for footnotes. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.properties.xml new file mode 100644 index 000000000..94bed80b2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.footnote.properties.xml @@ -0,0 +1,39 @@ + + +table.footnote.properties +attribute set + + +table.footnote.properties +Properties applied to each table footnote body + + + + + + + + + normal + normal + 2pt + + + + + +Description + +This attribute set is applied to the footnote-block +for each table footnote. +It can be used to set the +font-size, font-family, and other inheritable properties that will be +applied to all table footnotes. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.color.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.color.xml new file mode 100644 index 000000000..070cb6a3d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.color.xml @@ -0,0 +1,28 @@ + + +table.frame.border.color +color + + +table.frame.border.color +Specifies the border color of table frames + + + + + +black + + + +Description + +Specifies the border color of table frames. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.style.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.style.xml new file mode 100644 index 000000000..881840c5a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.style.xml @@ -0,0 +1,37 @@ + + +table.frame.border.style +list +none +solid +dotted +dashed +double +groove +ridge +inset +outset +solid + + +table.frame.border.style +Specifies the border style of table frames + + + + +solid + + + +Description + +Specifies the border style of table frames. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.thickness.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.thickness.xml new file mode 100644 index 000000000..1eaa04aef --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.frame.border.thickness.xml @@ -0,0 +1,27 @@ + + +table.frame.border.thickness +length + + +table.frame.border.thickness +Specifies the thickness of the frame border + + + + +0.5pt + + + +Description + +Specifies the thickness of the border on the table's frame. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.properties.xml new file mode 100644 index 000000000..76340c8d3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.properties.xml @@ -0,0 +1,34 @@ + + +table.properties +attribute set + + +table.properties +Properties associated with the block surrounding a table + + + + + + auto + + + + +Description + +Block styling properties for tables. This parameter should really +have been called table.block.properties or something +like that, but we’re leaving it to avoid backwards-compatibility +problems. + +See also table.table.properties. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.spacer.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.spacer.image.xml new file mode 100644 index 000000000..12e6d5a52 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.spacer.image.xml @@ -0,0 +1,26 @@ + + +table.spacer.image +filename + + +table.spacer.image +Invisible pixel for tabular accessibility + + + + +graphics/spacer.gif + + + +Description +This is the 1x1 pixel, transparent pixel used for the table trick to increase the accessibility of the tabular +website presentation. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.table.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.table.properties.xml new file mode 100644 index 000000000..4ee34223c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/table.table.properties.xml @@ -0,0 +1,36 @@ + + +table.table.properties +attribute set + + +table.table.properties +Properties associated with a table + + + + + + retain + collapse + + + + +Description + +The styling for tables. This parameter should really +have been called table.properties, but that parameter +name was inadvertently established for the block-level properties +of the table as a whole. + + +See also table.properties. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tablecolumns.extension.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tablecolumns.extension.xml new file mode 100644 index 000000000..2ec817a3e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tablecolumns.extension.xml @@ -0,0 +1,30 @@ + + +tablecolumns.extension +boolean + + +tablecolumns.extension +Enable the table columns extension function + + + + + + + + +Description + +The table columns extension function adjusts the widths of table +columns in the HTML result to more accurately reflect the specifications +in the CALS table. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/target.database.document.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/target.database.document.xml new file mode 100644 index 000000000..042f01737 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/target.database.document.xml @@ -0,0 +1,37 @@ + + +target.database.document +uri + + +target.database.document +Name of master database file for resolving +olinks + + + + olinkdb.xml + + +Description + + +To resolve olinks between documents, the stylesheets use a master +database document that identifies the target datafiles for all the +documents within the scope of the olinks. This parameter value is the +URI of the master document to be read during processing to resolve +olinks. The default value is olinkdb.xml. + +The data structure of the file is defined in the +targetdatabase.dtd DTD. The database file +provides the high level elements to record the identifiers, locations, +and relationships of documents. The cross reference data for +individual documents is generally pulled into the database using +system entity references or XIncludes. See also +targets.filename. + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/targets.filename.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/targets.filename.xml new file mode 100644 index 000000000..de6e29c89 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/targets.filename.xml @@ -0,0 +1,32 @@ + + +targets.filename +string + + +targets.filename +Name of cross reference targets data file + + +target.db + + +Description + + +In order to resolve olinks efficiently, the stylesheets can +generate an external data file containing information about +all potential cross reference endpoints in a document. +This parameter lets you change the name of the generated +file from the default name target.db. +The name must agree with that used in the target database +used to resolve olinks during processing. +See also target.database.document. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/template.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/template.xml new file mode 100644 index 000000000..9d35f83f3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/template.xml @@ -0,0 +1,27 @@ + + +[[NAME]] + + + +[[NAME]] + + + + + + + + + +Description + +FIXME: + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.delims.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.delims.xml new file mode 100644 index 000000000..3a302f795 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.delims.xml @@ -0,0 +1,47 @@ + + +tex.math.delims +boolean + + +tex.math.delims +Should equations output for processing by TeX be +surrounded by math mode delimiters? + + + + + + + + +Description + +For compatibility with DSSSL based DBTeXMath from Allin Cottrell +you should set this parameter to 0. + + + This feature is useful for print/PDF output only if you + use the obsolete and now unsupported PassiveTeX XSL-FO + engine. + + + +Related Parameters + tex.math.in.alt, + passivetex.extensions + + +See Also + You can also use the dbtex delims processing + instruction to control whether delimiters are output. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.file.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.file.xml new file mode 100644 index 000000000..fbc6eaa69 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.file.xml @@ -0,0 +1,42 @@ + + +tex.math.file +string + + +tex.math.file +Name of temporary file for generating images from equations + + + + +tex-math-equations.tex + + + +Description + +Name of auxiliary file for TeX equations. This file can be +processed by dvi2bitmap to get bitmap versions of equations for HTML +output. + + +Related Parameters + tex.math.in.alt, + tex.math.delims, + + +More information + For how-to documentation on embedding TeX equations and + generating output from them, see + DBTeXMath. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.in.alt.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.in.alt.xml new file mode 100644 index 000000000..ed1abb975 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/tex.math.in.alt.xml @@ -0,0 +1,76 @@ + + +tex.math.in.alt +list +plain +latex + + +tex.math.in.alt +TeX notation used for equations + + + + + + + + +Description + +If you want type math directly in TeX notation in equations, +this parameter specifies notation used. Currently are supported two +values -- plain and latex. Empty +value means that you are not using TeX math at all. + +Preferred way for including TeX alternative of math is inside of +textobject element. Eg.: + +<inlineequation> +<inlinemediaobject> +<imageobject> +<imagedata fileref="eq1.gif"/> +</imageobject> +<textobject><phrase>E=mc squared</phrase></textobject> +<textobject role="tex"><phrase>E=mc^2</phrase></textobject> +</inlinemediaobject> +</inlineequation> + +If you are using graphic element, you can +store TeX inside alt element: + +<inlineequation> +<alt role="tex">a^2+b^2=c^2</alt> +<graphic fileref="a2b2c2.gif"/> +</inlineequation> + +If you want use this feature, you should process your FO with +PassiveTeX, which only supports TeX math notation. When calling +stylsheet, don't forget to specify also +passivetex.extensions=1. + +If you want equations in HTML, just process generated file +tex-math-equations.tex by TeX or LaTeX. Then run +dvi2bitmap program on result DVI file. You will get images for +equations in your document. + + + This feature is useful for print/PDF output only if you + use the obsolete and now unsupported PassiveTeX XSL-FO + engine. + + + + +Related Parameters + tex.math.delims, + passivetex.extensions, + tex.math.file + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.home.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.home.xml new file mode 100644 index 000000000..0bc81dd79 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.home.xml @@ -0,0 +1,27 @@ + + +text.home +string + + +text.home +Home + + + + +Home + + + +Description + +FIXME: + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.next.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.next.xml new file mode 100644 index 000000000..d89b8e8e7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.next.xml @@ -0,0 +1,27 @@ + + +text.next +string + + +text.next +FIXME: + + + + +Next + + + +Description + +FIXME: + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.prev.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.prev.xml new file mode 100644 index 000000000..62d28e3de --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.prev.xml @@ -0,0 +1,27 @@ + + +text.prev +string + + +text.prev +FIXME: + + + + +Prev + + + +Description + +FIXME: + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.toc.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.toc.xml new file mode 100644 index 000000000..083b8e31a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.toc.xml @@ -0,0 +1,27 @@ + + +text.toc +string + + +text.toc +FIXME: + + + + +ToC + + + +Description + +FIXME: + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.up.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.up.xml new file mode 100644 index 000000000..f6dca22b8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/text.up.xml @@ -0,0 +1,27 @@ + + +text.up +string + + +text.up +FIXME: + + + + +Up + + + +Description + +FIXME: + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textbgcolor.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textbgcolor.xml new file mode 100644 index 000000000..b9aefe6e9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textbgcolor.xml @@ -0,0 +1,26 @@ + + +textbgcolor +color + + +textbgcolor +The background color of the table body + + + + +white + + + +Description +The background color of the table body. +Only applies with the tabular presentation is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textdata.default.encoding.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textdata.default.encoding.xml new file mode 100644 index 000000000..b6f30a8b9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textdata.default.encoding.xml @@ -0,0 +1,32 @@ + + +textdata.default.encoding +string + + +textdata.default.encoding +Default encoding of external text files which are included +using textdata element + + + + + + + + +Description + +Specifies the encoding of any external text files included using +textdata element. This value is used only when you do +not specify encoding by the appropriate attribute +directly on textdata. An empty string is interpreted as the system +default encoding. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textinsert.extension.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textinsert.extension.xml new file mode 100644 index 000000000..a6f1ea400 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/textinsert.extension.xml @@ -0,0 +1,62 @@ + + + textinsert.extension + boolean + + + textinsert.extension + Enables the textinsert extension element + + + + + + + Description + The textinsert extension element inserts the contents of + a file into the result tree (as text). + + To use the textinsert extension element, you must use + either Saxon or Xalan as your XSLT processor (it doesn’t + work with xsltproc), along with either the DocBook Saxon + extensions or DocBook Xalan extensions (for more + information about those extensions, see DocBook Saxon Extensions and DocBook Xalan Extensions), and you must set both + the use.extensions and + textinsert.extension parameters to + 1. + As an alternative to using the textinsert element, + consider using an Xinclude element with the + parse="text" attribute and value + specified, as detailed in Using XInclude for text inclusions. + + + See Also + You can also use the dbhtml-include href processing + instruction to insert external files — both files containing + plain text and files with markup content (including HTML + content). + + More information + For how-to documentation on inserting contents of + external code files and other text files into output, see + External code files. + For guidelines on inserting contents of + HTML files into output, see Inserting external HTML code. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.font.family.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.font.family.xml new file mode 100644 index 000000000..369021f08 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.font.family.xml @@ -0,0 +1,33 @@ + + +title.font.family +list +open +serif +sans-serif +monospace + + +title.font.family +The default font family for titles + + + + +sans-serif + + + +Description + +The title font family is used for titles (chapter, section, figure, +etc.) + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.margin.left.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.margin.left.xml new file mode 100644 index 000000000..dc50dd137 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/title.margin.left.xml @@ -0,0 +1,65 @@ + + +title.margin.left +length + + +title.margin.left +Adjust the left margin for titles + + + + + + + -4pc + 0pt + 0pt + + + + + +Description + +This parameter provides +the means of adjusting the left margin for titles +when the XSL-FO processor being used is +an old version of FOP (0.25 and earlier). +It is only useful when the fop.extensions +is nonzero. + +The left margin of the body region +is calculated to include this space, +and titles are outdented to the left outside +the body region by this amount, +effectively leaving titles at the intended left margin +and the body text indented. +Currently this method is only used for old FOP because +it cannot properly use the body.start.indent +parameter. + + +The default value when the fop.extensions +parameter is nonzero is -4pc, which means the +body text is indented 4 picas relative to +the titles. +The default value when the fop.extensions +parameter equals zero is 0pt, and +the body indent should instead be specified +using the body.start.indent +parameter. + + +If you set the value to zero, be sure to still include +a unit indicator such as 0pt, or +the FO processor will report errors. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/titlefoil.html.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/titlefoil.html.xml new file mode 100644 index 000000000..5fa2acd50 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/titlefoil.html.xml @@ -0,0 +1,27 @@ + + +titlefoil.html +filename + + +titlefoil.html +Name of title foil HTML file + + + + + + + + +Description + +Sets the filename used for the slides titlepage. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.bg.color.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.bg.color.xml new file mode 100644 index 000000000..1389c62b6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.bg.color.xml @@ -0,0 +1,27 @@ + + +toc.bg.color +color + + +toc.bg.color +Background color for ToC frame + + + + +#FFFFFF + + + +Description + +Specifies the background color used in the ToC frame. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.graphic.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.graphic.xml new file mode 100644 index 000000000..bb24888f8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.graphic.xml @@ -0,0 +1,28 @@ + + +toc.blank.graphic +boolean + + +toc.blank.graphic +Use graphic for "blanks" in TOC? + + + + + + + + +Description +If non-zero, "blanks" in the the TOC will be accomplished +with the graphic identified by toc.spacer.image. + +Only applies with the tabular presentation is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.image.xml new file mode 100644 index 000000000..82caa2f32 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.image.xml @@ -0,0 +1,27 @@ + + +toc.blank.image +filename + + +toc.blank.image +The image for "blanks" in the TOC + + + + +graphics/blank.gif + + + +Description +If toc.blank.graphic is non-zero, this image +will be used to for "blanks" in the TOC. +Only applies with the tabular presentation is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.text.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.text.xml new file mode 100644 index 000000000..d39aec4fd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.blank.text.xml @@ -0,0 +1,27 @@ + + +toc.blank.text +string + + +toc.blank.text +The text for "blanks" in the TOC + + + + +    + + + +Description +If toc.blank.graphic is zero, this text string +will be used for "blanks" in the TOC. +Only applies with the tabular presentation is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.hide.show.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.hide.show.xml new file mode 100644 index 000000000..1570ec438 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.hide.show.xml @@ -0,0 +1,33 @@ + + +toc.hide.show +boolean + + +toc.hide.show +Enable hide/show button for ToC frame + + + + + + + + +Description + +If non-zero, JavaScript (and an additional icon, see +hidetoc.image and +showtoc.image) is added to each slide +to allow the ToC panel to be toggled on each panel. + +There is a bug in Mozilla 1.0 (at least as of CR3) that causes +the browser to reload the titlepage when this feature is used. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.html.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.html.xml new file mode 100644 index 000000000..62c060c79 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.html.xml @@ -0,0 +1,27 @@ + + +toc.html +filename + + +toc.html +Name of ToC HTML file + + + + + + + + +Description + +Sets the filename used for the table of contents page. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.image.xml new file mode 100644 index 000000000..147155cf8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.image.xml @@ -0,0 +1,27 @@ + + +toc.image +filename + + +toc.image +ToC image + + + + +active/nav-toc.png + + + +Description + +Specifies the filename of the ToC navigation icon. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.indent.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.indent.width.xml new file mode 100644 index 000000000..449e74ccb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.indent.width.xml @@ -0,0 +1,34 @@ + + +toc.indent.width +float + + +toc.indent.width +Amount of indentation for TOC entries + + + + +24 + + + + +Description + +Specifies, in points, the distance by which each level of the +TOC is indented from its parent. + +This value is expressed in points, without +a unit (in other words, it is a bare number). Using a bare number allows the stylesheet +to perform calculations that would otherwise have to be performed by the FO processor +because not all processors support expressions. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.line.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.line.properties.xml new file mode 100644 index 000000000..0886fa45b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.line.properties.xml @@ -0,0 +1,44 @@ + + +toc.line.properties +attribute set + + +toc.line.properties +Properties for lines in ToCs and LoTs + + + + + + justify + start + + + + + + +Description + +Properties which are applied to every line in ToC (or LoT). You can +modify them in order to change appearance of all, or some lines. For +example, in order to make lines for chapters bold, specify the +following in your customization layer: + +<xsl:attribute-set name="toc.line.properties"> + <xsl:attribute name="font-weight"> + <xsl:choose> + <xsl:when test="self::chapter">bold</xsl:when> + <xsl:otherwise>normal</xsl:otherwise> + </xsl:choose> + </xsl:attribute> +</xsl:attribute-set> + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.list.type.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.list.type.xml new file mode 100644 index 000000000..31dc465df --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.list.type.xml @@ -0,0 +1,30 @@ + + +toc.list.type +list +dl +ul +ol + + +toc.list.type +Type of HTML list element to use for Tables of Contents + + + +dl + + +Description + +When an automatically generated Table of Contents (or List of Titles) +is produced, this HTML element will be used to make the list. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.margin.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.margin.properties.xml new file mode 100644 index 000000000..25963df57 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.margin.properties.xml @@ -0,0 +1,33 @@ + + +toc.margin.properties +attribute set + + +toc.margin.properties +Margin properties used on Tables of Contents + + + + + + 0.5em + 1em + 2em + 0.5em + 1em + 2em + + + + +Description +This attribute set is used on Tables of Contents. These attributes are set +on the wrapper that surrounds the ToC block, not on each individual lines. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.max.depth.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.max.depth.xml new file mode 100644 index 000000000..75902b386 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.max.depth.xml @@ -0,0 +1,25 @@ + + +toc.max.depth +integer + + +toc.max.depth +How many levels should be created for each TOC? + + + +8 + + +Description + +Specifies the maximal depth of TOC on all levels. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.graphic.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.graphic.xml new file mode 100644 index 000000000..4b2cb74f3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.graphic.xml @@ -0,0 +1,28 @@ + + +toc.pointer.graphic +boolean + + +toc.pointer.graphic +Use graphic for TOC pointer? + + + + + + + + +Description +If non-zero, the "pointer" in the TOC will be displayed +with the graphic identified by toc.pointer.image. + +Only applies with the tabular presentation is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.image.xml new file mode 100644 index 000000000..bf0690189 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.image.xml @@ -0,0 +1,27 @@ + + +toc.pointer.image +filename + + +toc.pointer.image +The image for the "pointer" in the TOC + + + + +graphics/arrow.gif + + + +Description +If toc.pointer.graphic is non-zero, this image +will be used for the "pointer" in the TOC. +Only applies with the tabular presentation is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.text.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.text.xml new file mode 100644 index 000000000..b094765ae --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.pointer.text.xml @@ -0,0 +1,27 @@ + + +toc.pointer.text +string + + +toc.pointer.text +The text for the "pointer" in the TOC + + + + + >  + + + +Description +If toc.pointer.graphic is zero, this text string +will be used to display the "pointer" in the TOC. +Only applies with the tabular presentation is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.row.height.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.row.height.xml new file mode 100644 index 000000000..89bac8372 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.row.height.xml @@ -0,0 +1,33 @@ + + +toc.row.height +length + + +toc.row.height +Height of ToC rows in dynamic ToCs + + + + +22 + + + +Description + +This parameter specifies the height of each row in the table of +contents. This is only applicable if a dynamic ToC is used. You may want to +adjust this parameter for optimal appearance with the font and image +sizes selected by your CSS +stylesheet. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.section.depth.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.section.depth.xml new file mode 100644 index 000000000..db99f9c6a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.section.depth.xml @@ -0,0 +1,28 @@ + + +toc.section.depth +integer + + +toc.section.depth +How deep should recursive sections appear +in the TOC? + + + +2 + + +Description + +Specifies the depth to which recursive sections should appear in the +TOC. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.graphic.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.graphic.xml new file mode 100644 index 000000000..0a5729c23 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.graphic.xml @@ -0,0 +1,28 @@ + + +toc.spacer.graphic +boolean + + +toc.spacer.graphic +Use graphic for TOC spacer? + + + + + + + + +Description +If non-zero, the indentation in the TOC will be accomplished +with the graphic identified by toc.spacer.image. + +Only applies with the tabular presentation is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.image.xml new file mode 100644 index 000000000..0d550167d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.image.xml @@ -0,0 +1,27 @@ + + +toc.spacer.image +filename + + +toc.spacer.image +The image for spacing the TOC + + + + +graphics/blank.gif + + + +Description +If toc.spacer.graphic is non-zero, this image +will be used to indent the TOC. +Only applies with the tabular presentation is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.text.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.text.xml new file mode 100644 index 000000000..bfb605f57 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.spacer.text.xml @@ -0,0 +1,27 @@ + + +toc.spacer.text +string + + +toc.spacer.text +The text for spacing the TOC + + + + +    + + + +Description +If toc.spacer.graphic is zero, this text string +will be used to indent the TOC. +Only applies with the tabular presentation is being used. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.width.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.width.xml new file mode 100644 index 000000000..71a3c03b7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/toc.width.xml @@ -0,0 +1,28 @@ + + +toc.width +length + + +toc.width +Width of ToC frame + + + + +250 + + + + +Description + +Specifies the width of the ToC frame in pixels. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ua.js.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ua.js.xml new file mode 100644 index 000000000..8242a7162 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ua.js.xml @@ -0,0 +1,28 @@ + + +ua.js +filename + + +ua.js +UA JavaScript file + + + + +ua.js + + + +Description + +Specifies the filename of the UA JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.footnotes.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.footnotes.xml new file mode 100644 index 000000000..f17c884a6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.footnotes.xml @@ -0,0 +1,34 @@ + + +ulink.footnotes +boolean + + +ulink.footnotes +Generate footnotes for ulinks? + + + + + + + + +Description + +If non-zero, and if ulink.show also is non-zero, +the URL of each ulink will appear as a footnote. + +DocBook 5 does not have an ulink element. When processing +DocBoook 5 documents, ulink.footnotes applies to all inline +elements that are marked up with xlink:href attributes +that point to external resources. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.chars.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.chars.xml new file mode 100644 index 000000000..7fdd771d7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.chars.xml @@ -0,0 +1,37 @@ + + +ulink.hyphenate.chars +string + + +ulink.hyphenate.chars +List of characters to allow ulink URLs to be automatically hyphenated on + + + + +/ + + + +Description + +If the ulink.hyphenate is not empty, then +hyphenation of ulinks is turned on, and any +character contained in this parameter is treated as an allowable +hyphenation point. + +The default value is /, but the parameter +could be customized +to contain other URL characters, as for example: + +<xsl:param name="ulink.hyphenate.chars">:/@&?.#</xsl:param> + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.xml new file mode 100644 index 000000000..719e9374c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.hyphenate.xml @@ -0,0 +1,35 @@ + + +ulink.hyphenate +string + + +ulink.hyphenate +Allow URLs to be automatically hyphenated + + + + + + + + +Description + +If not empty, the specified character (or more generally, content) is +added to URLs after every character included in the string +in the ulink.hyphenate.chars parameter (default +is /). If the character in this parameter is a +Unicode soft hyphen (0x00AD) or Unicode zero-width space (0x200B), some FO +processors will be able to reasonably hyphenate long URLs. + +As of 28 Jan 2002, discretionary hyphens are more widely and correctly +supported than zero-width spaces for this purpose. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.show.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.show.xml new file mode 100644 index 000000000..6f90d5800 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.show.xml @@ -0,0 +1,37 @@ + + +ulink.show +boolean + + +ulink.show +Display URLs after ulinks? + + + + + + + + +Description + +If non-zero, the URL of each ulink will +appear after the text of the link. If the text of the link and the URL +are identical, the URL is suppressed. + +See also ulink.footnotes. + +DocBook 5 does not have an ulink element. When processing +DocBoook 5 documents, ulink.show applies to all inline +elements that are marked up with xlink:href attributes +that point to external resources. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.target.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.target.xml new file mode 100644 index 000000000..cf1d42bd3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/ulink.target.xml @@ -0,0 +1,29 @@ + + +ulink.target +string + + +ulink.target +The HTML anchor target for ULinks + + + + +_top + + + +Description + +If ulink.target is non-zero, its value will +be used for the target attribute +on anchors generated for ulinks. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/up.image.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/up.image.xml new file mode 100644 index 000000000..1c3bfa214 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/up.image.xml @@ -0,0 +1,27 @@ + + +up.image +filename + + +up.image +Up-arrow image + + + + +active/nav-up.png + + + +Description + +Specifies the filename of the upward-pointing navigation arrow. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.embed.for.svg.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.embed.for.svg.xml new file mode 100644 index 000000000..f7c52cc5f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.embed.for.svg.xml @@ -0,0 +1,33 @@ + + +use.embed.for.svg +boolean + + +use.embed.for.svg +Use HTML embed for SVG? + + + + + + + + +Description + +If non-zero, an embed element will be created for +SVG figures. An object is always created, +this parameter merely controls whether or not an additional embed +is generated inside the object. + +On the plus side, this may be more portable among browsers and plug-ins. +On the minus side, it isn't valid HTML. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.extensions.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.extensions.xml new file mode 100644 index 000000000..4dce71bc3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.extensions.xml @@ -0,0 +1,31 @@ + + +use.extensions +boolean + + +use.extensions +Enable extensions + + + + + + + + +Description + +If non-zero, extensions may be used. Each extension is +further controlled by its own parameter. But if +use.extensions is zero, no extensions will +be used. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.as.filename.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.as.filename.xml new file mode 100644 index 000000000..e5133e9f5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.as.filename.xml @@ -0,0 +1,30 @@ + + +use.id.as.filename +boolean + + +use.id.as.filename +Use ID value of chunk elements as the filename? + + + + + + + + +Description + +If use.id.as.filename +is non-zero, the filename of chunk elements that have IDs will be +derived from the ID value. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.function.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.function.xml new file mode 100644 index 000000000..5f4e6f71a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.id.function.xml @@ -0,0 +1,32 @@ + + +use.id.function +boolean + + +use.id.function +Use the XPath id() function to find link targets? + + + + + + + + +Description + +If 1, the stylesheets use the id() function +to find the targets of cross reference elements. This is more +efficient, but only works if your XSLT processor implements the +id() function, naturally. +THIS PARAMETER IS NOT SUPPORTED. IT IS ALWAYS ASSUMED TO BE 1. +SEE xref.xsl IF YOU NEED TO TURN IT OFF. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.local.olink.style.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.local.olink.style.xml new file mode 100644 index 000000000..eb4f57aa7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.local.olink.style.xml @@ -0,0 +1,28 @@ + + +use.local.olink.style +boolean + + +use.local.olink.style +Process olinks using xref style of current +document + + + + +Description + +When cross reference data is collected for use by olinks, the data for each potential target includes one field containing a completely assembled cross reference string, as if it were an xref generated in that document. Other fields record the separate title, number, and element name of each target. When an olink is formed to a target from another document, the olink resolves to that preassembled string by default. If the use.local.olink.style parameter is set to non-zero, then instead the cross +reference string is formed again from the target title, number, and +element name, using the stylesheet processing the targeting document. +Then olinks will match the xref style in the targeting document +rather than in the target document. If both documents are processed +with the same stylesheet, then the results will be the same. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.as.xrefstyle.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.as.xrefstyle.xml new file mode 100644 index 000000000..56c4470a4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.as.xrefstyle.xml @@ -0,0 +1,93 @@ + + +use.role.as.xrefstyle +boolean + + +use.role.as.xrefstyle +Use role attribute for +xrefstyle on xref? + + + + + + + + +Description + +In DocBook documents that conform to a schema older than V4.3, this parameter allows +role to serve the purpose of specifying the cross reference style. + +If non-zero, the role attribute on +xref will be used to select the cross reference style. +In DocBook V4.3, the xrefstyle attribute was added for this purpose. +If the xrefstyle attribute is present, +role will be ignored, regardless of the setting +of this parameter. + + + +Example + +The following small stylesheet shows how to configure the +stylesheets to make use of the cross reference style: + +<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.0"> + +<xsl:import href="../xsl/html/docbook.xsl"/> + +<xsl:output method="html"/> + +<xsl:param name="local.l10n.xml" select="document('')"/> +<l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0"> + <l:l10n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" language="en"> + <l:context name="xref"> + <l:template name="chapter" style="title" text="Chapter %n, %t"/> + <l:template name="chapter" text="Chapter %n"/> + </l:context> + </l:l10n> +</l:i18n> + +</xsl:stylesheet> + +With this stylesheet, the cross references in the following document: + +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> +<book id="book"><title>Book</title> + +<preface> +<title>Preface</title> + +<para>Normal: <xref linkend="ch1"/>.</para> +<para>Title: <xref xrefstyle="title" linkend="ch1"/>.</para> + +</preface> + +<chapter id="ch1"> +<title>First Chapter</title> + +<para>Irrelevant.</para> + +</chapter> +</book> + +will appear as: + + +Normal: Chapter 1. +Title: Chapter 1, First Chapter. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.for.mediaobject.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.for.mediaobject.xml new file mode 100644 index 000000000..9241aced8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.role.for.mediaobject.xml @@ -0,0 +1,56 @@ + + +use.role.for.mediaobject +boolean + + +use.role.for.mediaobject +Use role attribute +value for selecting which of several objects within a mediaobject to use. + + + + + + + + + +Description + +If non-zero, the role attribute on +imageobjects or other objects within a mediaobject container will be used to select which object will be +used. + + +The order of selection when then parameter is non-zero is: + + + + If the stylesheet parameter preferred.mediaobject.role has a value, then the object whose role equals that value is selected. + + +Else if an object's role attribute has a value of +html for HTML processing or +fo for FO output, then the first +of such objects is selected. + + + +Else the first suitable object is selected. + + + +If the value of +use.role.for.mediaobject +is zero, then role attributes are not considered +and the first suitable object +with or without a role value is used. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.svg.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.svg.xml new file mode 100644 index 000000000..8f13be0f8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/use.svg.xml @@ -0,0 +1,30 @@ + + +use.svg +boolean + + +use.svg +Allow SVG in the result tree? + + + + + + + + +Description + +If non-zero, SVG will be considered an acceptable image format. SVG +is passed through to the result tree, so correct rendering of the resulting +diagram depends on the formatter (FO processor or web browser) that is used +to process the output from the stylesheet. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.blocks.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.blocks.xml new file mode 100644 index 000000000..71e1c98cf --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.blocks.xml @@ -0,0 +1,62 @@ + + +variablelist.as.blocks +boolean + + +variablelist.as.blocks +Format variablelists lists as blocks? + + + + + + + + +Description + +If non-zero, variablelists will be formatted as +blocks. + +If you have long terms, proper list markup in the FO case may produce +unattractive lists. By setting this parameter, you can force the stylesheets +to produce block markup instead of proper lists. + +You can override this setting with a processing instruction as the +child of variablelist: dbfo +list-presentation="blocks" or dbfo +list-presentation="list". + +When using list-presentation="list", +you can also control the amount of space used for the terms with +the dbfo term-width=".25in" processing instruction, +the termlength attribute on variablelist, +or allow the stylesheets to attempt to calculate the amount of space to leave based on the +number of letters in the longest term. + + + <variablelist> + <?dbfo list-presentation="list"?> + <?dbfo term-width="1.5in"?> + <?dbhtml list-presentation="table"?> + <?dbhtml term-width="1.5in"?> + <varlistentry> + <term>list</term> + <listitem> + <para> + Formatted as a list even if variablelist.as.blocks is set to 1. + </para> + </listitem> + </varlistentry> + </variablelist> + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.table.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.table.xml new file mode 100644 index 000000000..113d2f582 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.as.table.xml @@ -0,0 +1,54 @@ + + +variablelist.as.table +boolean + + +variablelist.as.table +Format variablelists as tables? + + + + + + + + +Description + +If non-zero, variablelists will be formatted as +tables. A processing instruction exists to specify a particular width for the +column containing the terms: +dbhtml term-width=".25in" + +You can override this setting with a processing instruction as the +child of variablelist: dbhtml +list-presentation="table" or dbhtml +list-presentation="list". + +This parameter only applies to the HTML transformations. In the +FO case, proper list markup is robust enough to handle the formatting. +But see also variablelist.as.blocks. + + <variablelist> + <?dbhtml list-presentation="table"?> + <?dbhtml term-width="1.5in"?> + <?dbfo list-presentation="list"?> + <?dbfo term-width="1in"?> + <varlistentry> + <term>list</term> + <listitem> + <para> + Formatted as a table even if variablelist.as.table is set to 0. + </para> + </listitem> + </varlistentry> + </variablelist> + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.max.termlength.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.max.termlength.xml new file mode 100644 index 000000000..ff56a8786 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.max.termlength.xml @@ -0,0 +1,46 @@ + + +variablelist.max.termlength +number + + +variablelist.max.termlength +Specifies the longest term in variablelists + + + + +24 + + + +Description + +In variablelists, the listitem +is indented to leave room for the +term elements. That indent may be computed +if it is not specified with a termlength +attribute on the variablelist element. + + +The computation counts characters in the +term elements in the list +to find the longest term. However, some terms are very long +and would produce extreme indents. This parameter lets you +set a maximum character count. Any terms longer than the maximum +would line wrap. The default value is 24. + + +The character counts are converted to physical widths +by multiplying by 0.50em. There will be some variability +in how many actual characters fit in the space +since some characters are wider than others. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.break.after.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.break.after.xml new file mode 100644 index 000000000..8472f5ec2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.break.after.xml @@ -0,0 +1,39 @@ + + +variablelist.term.break.after +boolean + + +variablelist.term.break.after +Generate line break after each term within a +multi-term varlistentry? + + + + +0 + + +Description + +Set a non-zero value for the +variablelist.term.break.after parameter to +generate a line break between terms in a +multi-term varlistentry. + + +If you set a non-zero value for +variablelist.term.break.after, you may also +want to set the value of the +variablelist.term.separator parameter to an +empty string (to suppress rendering of the default comma and space +after each term). + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.properties.xml new file mode 100644 index 000000000..4a4835de4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.properties.xml @@ -0,0 +1,29 @@ + + +variablelist.term.properties +attribute set + + +variablelist.term.properties +To add properties to the term elements in a variablelist. + + + + + + + + +Description +These properties are added to the block containing a +term in a variablelist. +Use this attribute-set to set +font properties or alignment, for example. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.separator.xml new file mode 100644 index 000000000..f3df883b0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/variablelist.term.separator.xml @@ -0,0 +1,40 @@ + + +variablelist.term.separator +string + + +variablelist.term.separator +Text to separate terms within a multi-term +varlistentry + + + + +, + + +Description + +When a varlistentry contains multiple term +elements, the string specified in the value of the +variablelist.term.separator parameter is placed +after each term except the last. + + + To generate a line break between multiple terms in + a varlistentry, set a non-zero value for the + variablelist.term.break.after parameter. If + you do so, you may also want to set the value of the + variablelist.term.separator parameter to an + empty string (to suppress rendering of the default comma and space + after each term). + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/verbatim.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/verbatim.properties.xml new file mode 100644 index 000000000..28a368ae3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/verbatim.properties.xml @@ -0,0 +1,38 @@ + + +verbatim.properties +attribute set + + +verbatim.properties +Properties associated with verbatim text + + + + + + 0.8em + 1em + 1.2em + 0.8em + 1em + 1.2em + false + no-wrap + false + preserve + preserve + start + + + +Description +This attribute set is used on all verbatim environments. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/wordml.template.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/wordml.template.xml new file mode 100644 index 000000000..4dae8a89e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/wordml.template.xml @@ -0,0 +1,29 @@ + + +wordml.template +uri + + +wordml.template +Specify the template WordML document + + + + + + + + +Description + +The wordml.template parameter specifies a WordML document to use as a template for the generated document. The template document is used to define the (extensive) headers for the generated document, in particular the paragraph and character styles that are used to format the various elements. Any content in the template document is ignored. + +A template document is used in order to allow maintenance of the paragraph and character styles to be done using Word itself, rather than these XSL stylesheets. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/writing.mode.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/writing.mode.xml new file mode 100644 index 000000000..c6959333d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/writing.mode.xml @@ -0,0 +1,83 @@ + + +writing.mode +string + + +writing.mode +Direction of text flow based on locale + + + + + + + writing-mode + + + + + + + + + + +Description + +Sets direction of text flow and text alignment based on locale. +The value is normally taken from the gentext file for the +lang attribute of the document's root element, using the +key name 'writing-mode' to look it up in the gentext file. +But the param can also be +set on the command line to override that gentext value. + +Accepted values are: + + + lr-tb + + Left-to-right text flow in each line, lines stack top to bottom. + + + + rl-tb + + Right-to-left text flow in each line, lines stack top to bottom. + + + + tb-rl + + Top-to-bottom text flow in each vertical line, lines stack right to left. + Supported by only a few XSL-FO processors. Not supported in HTML output. + + + + lr + + Shorthand for lr-tb. + + + + rl + + Shorthand for rl-tb. + + + + tb + + Shorthand for tb-rl. + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbCollapsibleLists.js.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbCollapsibleLists.js.xml new file mode 100644 index 000000000..b30391f1a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbCollapsibleLists.js.xml @@ -0,0 +1,28 @@ + + +xbCollapsibleLists.js +filename + + +xbCollapsibleLists.js +xbCollapsibleLists JavaScript file + + + + +xbCollapsibleLists.js + + + +Description + +Specifies the filename of the xbCollapsibleLists JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbDOM.js.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbDOM.js.xml new file mode 100644 index 000000000..a699e9c91 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbDOM.js.xml @@ -0,0 +1,28 @@ + + +xbDOM.js +filename + + +xbDOM.js +xbDOM JavaScript file + + + + +xbDOM.js + + + +Description + +Specifies the filename of the xbDOM JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbLibrary.js.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbLibrary.js.xml new file mode 100644 index 000000000..fe2d8fee3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbLibrary.js.xml @@ -0,0 +1,28 @@ + + +xbLibrary.js +filename + + +xbLibrary.js +xbLibrary JavaScript file + + + + +xbLibrary.js + + + +Description + +Specifies the filename of the xbLibrary JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbStyle.js.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbStyle.js.xml new file mode 100644 index 000000000..b587573e2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xbStyle.js.xml @@ -0,0 +1,28 @@ + + +xbStyle.js +filename + + +xbStyle.js +xbStyle JavaScript file + + + + +xbStyle.js + + + +Description + +Specifies the filename of the xbStyle JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.extensions.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.extensions.xml new file mode 100644 index 000000000..8ac252015 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.extensions.xml @@ -0,0 +1,31 @@ + + +xep.extensions +boolean + + +xep.extensions +Enable XEP extensions? + + + + + + +Description + +If non-zero, +XEP +extensions will be used. XEP extensions consists of PDF bookmarks, +document information and better index processing. + + +This parameter can also affect which graphics file formats +are supported + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.index.item.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.index.item.properties.xml new file mode 100644 index 000000000..b1db1290a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xep.index.item.properties.xml @@ -0,0 +1,36 @@ + + +xep.index.item.properties +attribute set + + +xep.index.item.properties +Properties associated with XEP index-items + + + + + + true + true + + + + +Description + +Properties associated with XEP index-items, which generate +page numbers in an index processed by XEP. For more info see +the XEP documentation section "Indexes" in +http://www.renderx.com/reference.html#Indexes. + +This attribute-set also adds by default any properties from the +index.page.number.properties +attribute-set. + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-page.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-page.separator.xml new file mode 100644 index 000000000..355fc4a48 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-page.separator.xml @@ -0,0 +1,38 @@ + + +xref.label-page.separator +string + + +xref.label-page.separator +Punctuation or space separating label from page number in xref + + + + + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both label and page +but no title, +then the value of this parameter is inserted between +label and page number in the output. +If a title is included, then other separators are used. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-title.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-title.separator.xml new file mode 100644 index 000000000..3d6e22274 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.label-title.separator.xml @@ -0,0 +1,36 @@ + + +xref.label-title.separator +string + + +xref.label-title.separator +Punctuation or space separating label from title in xref + + + +: + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both label and title, +then the value of this parameter is inserted between +label and title in the output. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.properties.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.properties.xml new file mode 100644 index 000000000..6438f6c87 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.properties.xml @@ -0,0 +1,29 @@ + + +xref.properties +attribute set + + +xref.properties +Properties associated with cross-reference text + + + + + + + + + +Description + +This attribute set is used to set properties +on cross reference text. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.title-page.separator.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.title-page.separator.xml new file mode 100644 index 000000000..32ef9f149 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.title-page.separator.xml @@ -0,0 +1,36 @@ + + +xref.title-page.separator +string + + +xref.title-page.separator +Punctuation or space separating title from page number in xref + + + + + + +Description + + +This parameter allows you to control the punctuation of certain +types of generated cross reference text. +When cross reference text is generated for an +xref or +olink element +using an xrefstyle attribute +that makes use of the select: feature, +and the selected components include both title and page number, +then the value of this parameter is inserted between +title and page number in the output. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.with.number.and.title.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.with.number.and.title.xml new file mode 100644 index 000000000..06fcc7e63 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/params/xref.with.number.and.title.xml @@ -0,0 +1,30 @@ + + +xref.with.number.and.title +boolean + + +xref.with.number.and.title +Use number and title in cross references + + + + + + + + +Description + +A cross reference may include the number (for example, the number of +an example or figure) and the title which is a required child of some +targets. This parameter inserts both the relevant number as well as +the title into the link. + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile-mode.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile-mode.xsl new file mode 100644 index 000000000..c02132a94 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile-mode.xsl @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile.xsl new file mode 100644 index 000000000..b188fbb2d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/profile.xsl @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 0 + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/strip-attributes.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/strip-attributes.xsl new file mode 100644 index 000000000..d6f55fb50 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/strip-attributes.xsl @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/xsl2profile.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/xsl2profile.xsl new file mode 100644 index 000000000..b6648aa4e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/profiling/xsl2profile.xsl @@ -0,0 +1,159 @@ + + + + + + + + + + + + + This file was created automatically by xsl2profile + from the DocBook XSL stylesheets. + + + + + + + dummy + dummy + dummy + + exslt + + + exslt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note: namesp. cut : stripped namespace before processing + + + + Note: namesp. cut : processing stripped document + + + + + + + + + + + + + + + + + + + + + + + + + + + $profiled-nodes + + + $profiled-nodes + + + + + + + + + + + + + + + + + + + key('id',$rootid) + $profiled-nodes//*[@id=$rootid] + + + + + + + + + + + + + + + + + $profiled-nodes/node() + + + + + + + + false() + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks-spec.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks-spec.xml new file mode 100644 index 000000000..d8ab00572 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks-spec.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.dtd b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.dtd new file mode 100644 index 000000000..4d1ea043c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.dtd @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.xsl new file mode 100644 index 000000000..e14999f75 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/blocks2dbk.xsl @@ -0,0 +1,1732 @@ + + +%ext; +]> + + + + + + + + + + + + + 0 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + style "" is not a valid list style + + + + + + + + + + list-wrong-level + list started at the wrong level + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + improper-blockquote-attribution + blockquote attribution must follow a blockquote title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + formalpara-notitle + formalpara used without a title + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bad-caption + caption does not follow table or figure + + + + + + + + + + + + + + unknown-style + unknown paragraph style "" encountered + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + imagedata-metadata missing value for attribute " + + " + + + + + + + + + + + + 1 + 0 + + + + + + + + + + + + + + imagedata-metadata unknown attribute " + + " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bold + + + + + + + + underline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + unknown-style + unknown character span style "" encountered + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bad-metadata + style "" must not be metadata for parent "" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bad-author-orgname-combo + character span "" not allowed in an author paragraph combined with orgname + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bad-titleabbrev + titleabbrev style "" mismatches parent "" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bad-title + title style "" mismatches parent "" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bad-subtitle + subtitle style "" mismatches parent "" + + + + + + + + + + bad-publisher-address + publisher-address must follow publisher + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bad-author-inline + character span "" not allowed in an author paragraph + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + metadata-bad-inline + character span "" not allowed in author metadata + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR "": + + + + + + + + + + + + + + + + WARNING "": + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2ooo.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2ooo.xsl new file mode 100644 index 000000000..dc7303fc1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2ooo.xsl @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2pages.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2pages.xsl new file mode 100644 index 000000000..f47355500 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2pages.xsl @@ -0,0 +1,441 @@ + + + + + + + + + + + + + + + + + + + + + + + + + Please specify the template document with the "pages.template" parameter + + + Unable to open template document "" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DocBookRoundtrip-1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + email + + + + + + + + + + + + + + + + + + + + + + + + + SFTTableAttachment- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + attribute-name + + + + + + + + attribute-value + + + + + + + + + + + + + para + + + + + + + + unable to find paragraph style "" + + + + + + + + + unable to find character style "" + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wordml.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wordml.xsl new file mode 100644 index 000000000..07bd08d3f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wordml.xsl @@ -0,0 +1,401 @@ + + + + + + + + + + + + + + + + + + + + + Please specify the template document with the "wordml.template" parameter + + + Unable to open template document "" + + + + progid="Word.Document" + + + + + + + + preserve + + + + + + + + Unknown + + + + + + + + + + + Unknown + + + 1 + + + + 2004-01-01T07:07:00Z + 2004-01-01T08:08:00Z + + 1 + 1 + 1 + + + DocBook + + 1 + 1 + 1 + 11.6113 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + = + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wp.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wp.xsl new file mode 100644 index 000000000..671c58f6a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/dbk2wp.xsl @@ -0,0 +1,1375 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + section nested deeper than 5 levels + + sect5- + + + + sect + + - + + + + + - + + + + + - + + + + + + + + + + + + + + Metadata + + TODO: Handle all metadata elements, apart from titles. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + abstract + + + + + + + + + + + + + + + + + + + + + + + + + + + mailto: + + + + + + + + + Hyperlink + + + + + + + + + + + + + + + otheraddr + + + + + + otheraddr + + + + + + + + + otheraddr + + + + + + otheraddr + + + + + + + + + + Hyperlink + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + para + + + + + + + + + + + + + + + Normal + + + + + + + + + + + + + + Normal + + + + + + + + + + + + + + + + simpara + + + + + + + + + + 1 + 0 + + + + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Text Object + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Caption + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + ] + + encountered + + in + + + , but no template matches. + + + + + + + + + + + + + [ + + ] + + encountered + + in + + + , but no template matches. + + + + + + + + + + + + encountered + + in + + + , but no template matches. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WARNING: + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise-common.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise-common.xsl new file mode 100644 index 000000000..83a16b37c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise-common.xsl @@ -0,0 +1,39 @@ + + + + + + + + + + + + caption + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise2sections.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise2sections.xsl new file mode 100644 index 000000000..51bd9f56f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/normalise2sections.xsl @@ -0,0 +1,1270 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/pages2normalise.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/pages2normalise.xsl new file mode 100644 index 000000000..35250a0db --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/pages2normalise.xsl @@ -0,0 +1,351 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + cannot determine number of rows in table + cannot determine number of rows in table + + + cannot determine number of columns in table + cannot determine number of columns in table + + + + + + + all + + + topbot + + + sides + + + top + + + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WARNING: insufficient table cells + WARNING: insufficient table cells (num-rows , row ) + + + WARNING: excess table cells + WARNING: excess table cells (num-rows , row ) + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + element "" not handled + + + + + + + + + + + + + superscript + subscript + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xml new file mode 100644 index 000000000..ae1480019 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xml @@ -0,0 +1,105 @@ + + + + Roundtrip Parameter Reference + + $Id: param.xweb 7042 2007-07-17 04:28:48Z xmldoc $ + + + + Ball + Steve + + + + 2007 + 2006 + 2005 + 2004 + Steve Ball + + + This is reference documentation for all user-configurable + parameters in the DocBook “Roundtrip” Stylesheets (for + transforming DocBook to WordML, OpenDocument, and Apple Pages, + and for converting from those formats back to DocBook). + + + + Parameters + + +wordml.template +uri + + +wordml.template +Specify the template WordML document + + + + +<xsl:param name="wordml.template"></xsl:param> + + + +Description + +The wordml.template parameter specifies a WordML document to use as a template for the generated document. The template document is used to define the (extensive) headers for the generated document, in particular the paragraph and character styles that are used to format the various elements. Any content in the template document is ignored. + +A template document is used in order to allow maintenance of the paragraph and character styles to be done using Word itself, rather than these XSL stylesheets. + + + + + + +pages.template +uri + + +pages.template +Specify the template Pages document + + + + +<xsl:param name="pages.template"></xsl:param> + + + +Description + +The pages.template parameter specifies a Pages (the Apple word processing application) document to use as a template for the generated document. The template document is used to define the (extensive) headers for the generated document, in particular the paragraph and character styles that are used to format the various elements. Any content in the template document is ignored. + +A template document is used in order to allow maintenance of the paragraph and character styles to be done using Pages itself, rather than these XSL stylesheets. + + + + + + + The Stylesheet + The param.xsl stylesheet is just a + wrapper around all of these parameters. + +<xsl:stylesheet exclude-result-prefixes="src" version="1.0"> + +<!-- This file is generated from param.xweb --> + +<!-- ******************************************************************** + $Id: param.xweb 7042 2007-07-17 04:28:48Z xmldoc $ + ******************************************************************** + + This file is part of the XSL DocBook Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<src:fragref linkend="wordml.template.frag"></src:fragref> +<src:fragref linkend="pages.template.frag"></src:fragref> +</xsl:stylesheet> + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xsl new file mode 100644 index 000000000..6cd1b033e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/param.xsl @@ -0,0 +1,18 @@ + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections-spec.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections-spec.xml new file mode 100644 index 000000000..6c86d52a1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections-spec.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections2blocks.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections2blocks.xsl new file mode 100644 index 000000000..d0fe069a3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/sections2blocks.xsl @@ -0,0 +1,263 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/specifications.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/specifications.xml new file mode 100644 index 000000000..85db866e1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/specifications.xml @@ -0,0 +1,1420 @@ + +
    + + Round-Tripping Specifications + + Bob + Stayton + + Sagehill Enterprises + + + + Steve + Ball + + Explain + + + + + 1.8 + 2008-05-22 + SRB + Updated for current implementation. + + + 1.7 + 2008-02-22 + SRB + Added edition. + + + 1.6 + 2007-10-19 + SRB + Added keyword. + + + 1.5 + 2007-01-05 + SRB + Reduce emphasis on WordML, add support for OpenOffice. + + + 1.4 + 2005-11-11 + SRB + Added bibliography. + + + 1.3 + 2005-10-31 + SRB + Added mediaobjectco, imageobjectco, programlistingco, areaspec, area, calloutlist. + + + 1.2 + 2005-10-13 + SRB + Version prior to using revhistory. + + + + + This document specifies how DocBook elements are mapped to paragraph and character styles in a word processor. The specifications are used to write conversions between DocBook XML and word processor XML formats, such as Microsoft's WordProcessingML (WordML), OpenOffice's OpenDocument and Apple's Pages. + +
    + Introduction + Microsoft Word 2003 introduced WordProcessingML (WordML), an XML vocabulary for Word documents. Since then, other popular word processors have become available that use XML as their data representation, namely Apple's Pages and OpenOffice. By converting Word (or OpenOffice or Pages) to XML, it becomes possible to convert a word processing document to DocBook and vice versa using XSL transformations. Such conversions then enable the following. + + + DocBook content creators write in their familiar wordprocessing application, rather than learning a new XML editing application. + + + DocBook XML documents can be styled for output using the typesetting features of the word processor. + + + Word processors have a simple, flat data model; documents consist of paragraphs (and tables) and paragraphs contain text and character spans. All word processors allow styles to be associated with paragraphs and spans. + This specification describes how DocBook elements map to a set of paragraph and character styles. It defines a specific set of style names for which a Word style template can be created. The style names are also used in XSLT template match patterns for conversion. Although originally targetted to MS Word, the system has subsequently been extended to use other word processors, notably Apple's Pages and Open Office. +
    +
    + Project goals + The goal of this project is to enable a word processor, such as, but not limited to, Microsoft Word, to be used with DocBook files. The specific goals include: + + + Enable authoring of basic DocBook documents in the word processor. + + + Enable importing of basic DocBook XML documents into the word processor. + + + To meet these goals, the project provides a toolkit that can be immediately put to use. The kit includes: + + + Templates for Microsoft Word, Apple Pages and Open Office with formatting styles attached to the style names. + + + XSLT stylesheets that convert a word processing document that is authored with the corresponding template into a DocBook XML file. + + + XSLT stylesheets that convert a DocBook document into a word processing document that can be opened in a word processor. + + +
    + Why basic DocBook? + This project will never be able to support all DocBook elements and structure. Take, for example, the address element. This element can be used both as a block element for metadata. It can also be used as a phrase level element in a block parent, such as the affiliation element. To make matters worse, it can itself contain phrase level markup, such as personname. No word processor allows character styles to be nested. + The project will initially focus on a basic set of commonly used DocBook elements in order to create a useful editing environment that utilises a word processor with DocBook. + One problem facing this conversion project is the sheer number of DocBook elements, over 400 in DocBook 5.0. To support DocBook structural models, several of the elements require more than one paragraph or character style. This would lead to very long and unwieldy list of styles in the word processor interface. That would make authoring less efficient and discourage users. + Accordingly, this project assumes that authors who need the full set of DocBook elements and structures will use an XML authoring tool that better supports them. This project is focused on authors who wish to write basic DocBook documents using a word processor. Because Microsoft Word is so widespread, it is hoped that this project will help a lot of new DocBook users get started with familiar tools. They can then graduate to more advanced tools as their needs develop. +
    +
    +
    + Project Non-Goals + The following goals are not in the scope of this project: + + + Support of versions of Word that do not feature reading/writing WordML (XML). That is, all versions prior to Word 11 (Office 2003). + + + Support of arbitrarily defined styles. This system may expect certain styles to be defined in a particular fashion (in particular, those defining the title of components and divisions). + + +
    +
    + Mapping elements to styles + Although WordML, OpenDocument and DocBook are all XML, there several challenges when trying to convert between them. + The basic problem in mapping paragraph/character styles to DocBook elements is that word processor documents support far less structure than DocBook. DocBook permits nesting of elements within other elements, providing multiple levels of context for each element. + Word's only structural feature is the outlining mode. In Word outlining, certain paragraph styles are assigned outline levels. When a user applies those styles, they effectively create logical structure in the Word document. Unfortunately, Word itself attempts to automatically determine which paragraphs are headings, rendering this method is unreliable. + Instead of relying on Word's built-in outlining mode, this system uses only the names of paragraph styles to determine document structure. Certain heuristics are applied to build the DocBook element structure from the (relatively flat) word processing structure. Titles and other features are used to mark the beginning of a structure and all paragraphs following that are included in that structure until the beginning of the next structure is found. That is, the beginning of one structure marks the end of the previous structure. + Problems may arise when a structure should end, but there is no word processor feature that marks the endpoint. To mark the end of a feature an empty paragraph is used. + Nesting of block elements is another commonly used feature of DocBook. It is not possible to use Word's outline mode for blocks if it is being used for components and sections. So in this specification, nesting of block elements is indicated by adding a number suffix to a style. So a paragraph with style orderedlist2 is considered to be contained within a preceding paragraph with style orderedlist1 or itemizedlist1. Where appropriate in the word processor, paragraph indent levels are used to visually indicate nesting of blocks. + Nesting of inline DocBook elements is particularly difficult to support because word processors do not nest character styles. That means a nested inline would require a separate character style to indicate the parent-child relationship. Given the large number of combinations possible, a prohibitively large number of character styles would have to be created. In this project, nesting of character styles is not supported. Nested inlines being imported from DocBook will be converted to a sequence of single-name character styles, where possible, or rejected. + In many cases, DocBook structure can be derived from the flat sequence of paragraphs based on sibling relationships. For example, when a paragraph styled as para is followed by a paragraph styled as itemizedlist1, the conversion to DocBook will output a para element and then start an itemizedlist element, with the second paragraph as its first listitem. All itemizedlist1 paragraphs that follow without interruption are inserted into the same itemizedlist element. + Some combinations of elements cannot be supported (at least not with the techniques as described in this document). An example is informalexample and its permitted content; there is no title to mark the beginning of the element and no marker for the end of the element, also there are too many parent-child combinations to reasonably define style names. + The design principles used in this project for selecting paragraph/character style names are as follows: + + + Where Word (or OpenOffice or Pages), by default, has a style or feature that corresponds directly to a DocBook element then that style or feature will be used (and documented in this document). For example, the Normal paragraph style maps to a DocBook para element, and a Word table (w:tbl) maps to a DocBook tableIn some cases Word may posess a feature, but it doesn't function in an acceptable manner. For example, lists. In these cases the feature is to be avoided, and a workaround provided.. + + + Paragraph and character style names will match DocBook element names as much as possible. This will enable authors to learn DocBook element names and help debug problems with conversion. + + + A style may indicate a parent-child relationship, but the paragraph for such an element may only occur after a paragraph that denotes the beginning of the parent structure. In this case the element name is used as the style name. For example, a personblurb paragraph may only occur after an author, editor or othercontrib paragraph. If a paragraph occurs without the appropriate preceding paragraph, then an error is signalled. + + + Some styles may also indicate a parent-child relationship, but either the parent structure is ambiguous or the paragraph starts the parent structure. For example, chapter-title indicates that the paragraph is a title element whose DocBook parent is a chapter element. + + + Some style names are simplified to make them easier to use in the word processor. For example, a paragraph in an orderedlist requires three elements in DocBook: orderedlist, listitem, and para. The paragraph style name in Word is shortened from orderedlist-listitem-para to just orderedlist1 (for a first level list). In the case of lists (see below), the list level is appended, which is why this example becomes orderedlist1. + + + Style names with a number suffix indicate a nesting level, as described above. + + + Style names with continue indicate that the paragraph is part of the preceding element. For example, a para paragraph is used for a single paragraph para element. This causes any preceding list to be closed. If a list item in the preceding list is to contain more than one paragraph, then the subsequent paragraphs in the word processor documentmust use the para-continue style. + + + Character styles map to elements that are children of the element for the paragraph, hence there is no need to encode parent-child relationships. For example, a surname character style in an author paragraph becomes a surname child element of the author element. + + + Empty paragraph and character styles are ignored. This can be useful to end structures. + + + The first paragraph style in the word processor document is used to define the root element of the DocBook document. For example, if the document starts with book-title, then the DocBook document will have book element as its root element. All the rest of the document content will be contained in that root element. + + + Sequential structures are coalesced into a single parent element. For example, a sequence of itemizedlist1 paragraphs becomes a single itemizedlist element with several listitem element children. + + DocBook to Paragraph/Character Styles + + + + + + + + DocBook element + + + Style(s) + + + Comments + + + + + + + + Components and sections + + + + + + book/info/title + + + book-title + + + + + + + + book/info/subtitle + + + book-subtitle + + + + + + + + book/info/titleabbrev + + + book-titleabbrev + + + + + + + + chapter/info/title + + + chapter-title + + + Assigned Word outline level 1. + + + + + chapter/info/subtitle + + + chapter-subtitle + + + + + + + + chapter/info/titleabbrev + + + chapter-titleabbrev + + + + + + + + appendix/info/title + + + appendix-title + + + Assigned Word outline level 1. + + + + + preface/info/title + + + preface-title + + + Assigned Word outline level 1. + + + + + article/info/title + + + article-title + + + Assigned Word outline level 1. + + + + + article/info/subtitle + + + article-subtitle + + + + + + + + article/info/titleabbrev + + + article-titleabbrev + + + + + + + + bibliography/info/title + + + bibliography-title + + + Assigned Word outline level 1. + + + + + bibliography/bibliodiv/info/title + + + bibliodiv-title + + + + + + + + biblioentry/title + + + biblioentry-title + + + Metadata elements after the biblioentry-title paragraph become part of the biblioentry. + + + + + glossary/info/title + + + glossary-title + + + Assigned Word outline level 1. + + + + + index/info/title + + + index-title + + + Assigned Word outline level 1. + + + + + part/info/title + + + part-title + + + + + + + + section + + + + + + Unnumbered section elements are translated into their equivalent numbered paragraph style. Sections 6 levels and deeper are reported as an error. + + + + + sect1/info/title + + + sect1-title + + + Assigned Word outline level 2. + + + + + sect1/info/subtitle + + + sect1-subtitle + + + + + + + + sect2/info/title + + + sect2-title + + + Assigned Word outline level 3. + + + + + sect2/info/subtitle + + + sect2-subtitle + + + + + + + + sect3/info/title + + + sect3-title + + + Assigned Word outline level 4. + + + + + sect3/info/subtitle + + + sect3-subtitle + + + + + + + + sect4/info/title + + + sect4-title + + + Assigned Word outline level 5. + + + + + sect4/info/subtitle + + + sect4-subtitle + + + + + + + + sect5/info/title + + + sect5-title + + + Assigned Word outline level 6. + + + + + sect5/info/subtitle + + + sect5-subtitle + + + + + + + + simplesect/info/title + + + simplesect-title + + + + + + + + simplesect/info/subtitle + + + simplesect-subtitle + + + + + + + + bridgehead + + + bridgehead + + + + + + + + + Metadata elements + + + + + + abstract/title + + + abstract-title + + . + + + + abstract/para + + + abstract + + + + + + + + affiliation + + + affiliation + + + + + + + + address + + + address + + + + + + + + author + + + author + + + + + + + + date + + + date + + + + + + + + edition + + + edition + + + + + + + + legalnotice + + + legalnotice + + + + + + + + pubdate + + + pubdate + + + + + + + + publisher/pubishername + + + publisher + + + + + + + + publisher/address + + + publisher-address + + + + + + + + revhistory/revision + + + revision + + + + + + + + + Block-level elements + + + + + + para + + + para, Normal + + + Any Word paragraph with style Normal will also be converted to a para element. + + + + + formalpara/title + + + formalpara-title + + + + + + + + formalpara/para + + + formalpara + + + + + + + + simpara + + + simpara + + + + + + + + note/title + + + note-title + + + + + + + + note/para + + + note + + + Consecutive paragraphs with style note after the first note are to be treated as part of the same note element. That is, consecutive notes are coalesced. The note may or may not have a title. + + + + + caution/title + + + caution-title + + + + + + + + caution/para + + + caution + + + Consecutive cautions are coalesced. + + + + + warning/title + + + warning-title + + + + + + + + warning/para + + + warning + + + Consecutive warnings are coalesced. + + + + + important/title + + + important-title + + + + + + + + important/para + + + important + + + Consecutive importants are coalesced. + + + + + tip/title + + + tip-title + + + + + + + + tip/para + + + tip + + + Consecutive tips are coalesced. + + + + + itemizedlist/listitem/para + + + + itemizedlist1 +itemizedlist2 +itemizedlist3 +itemizedlist4 + + + + A number suffix indicates a nesting level within other lists. + + + + + orderedlist/listitem/para + + + + orderedlist1 +orderedlist2 +orderedlist3 +orderedlist4 + + + + + + + + + listitem/para[position() != 1] + + + para-continue + + + This paragraph is included in the immediately preceding listitem. + + + + + example/title + + + example-title + + + All content following the title is included in the example element. The end of the example content is marked by a caption paragraph or an empty paragraph if there is no caption. + + + + + figure/title + + + figure-title + + + All content following the title is included in the figure element. Metadata must immediately follow the title. The end of the figure content is marked by a caption paragraph or an empty paragraph if there is no caption. + + + + + informalfigure/mediaobject/imageobject/imagedata/@fileref + + + informalfigure-imagedata, caption + + + The content of the imageobject-imagedata paragraph is taken as the URI for the image. Metadata may immediately follow the paragraph. + + + + + mediaobject/imageobject/imagedata/@fileref + + + imageobject-imagedata, caption + + + The content of the imageobject-imagedata paragraph is taken as the URI for the image. May be followed by a caption style paragraph. Metadata may immediately follow the paragraph, before the caption, if any. + + + + + table + + + Word table, caption + + + + + + + + table/title + + + table-title, caption + + + Metadata may immediately follow the paragraph. + + + + + informaltable + + + Word table + + + A table with no title imediately preceding it. + + + + + caption + + + caption + + + + + + + + literallayout + + + literallayout + + + Inside a literallayout paragraph in Word, lines should be separated by line break (Shift-Enter) rather than paragraph break (Enter). + + + + + programlisting + + + programlisting + + + Inside a programlisting paragraph in Word, lines should be separated by line break (Shift-Enter) rather than paragraph break (Enter). Tabs are not supported. + + + + + blockquote/title + + + blockquote-title + + + Must immediately precede a blockquote paragraph in Word. + + + + + blockquote/para + + + blockquote + + + + + + + + blockquote/attribution + + + blockquote-attribution + + + Must immediately follow a blockquote paragraph in Word. + + + + + bibliomisc + + + bibliomisc + + + + + + + + + Non-DocBook elements + + + + + + xi:include + + + xinclude + + + The content of the paragraph becomes the value of the href attribute. + + + + + + Inline elements + + + + + + emphasis + + + emphasis + + + + + + + + emphasis/@role="bold" + + + emphasis-bold + + + + + + + + emphasis/@role="underline" + + + emphasis-underline + + + + + + + + footnote + + + Word footnote + + + + + + + + link + + + link + + + In Word, hyperlink properties identify the DocBook linkend. + + + + + releaseinfo + + + releaseinfo + + + + + + + + surname + + + surname + + + Character style. Must occur in an appropriate parent paragraph, such as author or editor. + + + + + firstname + + + firstname + + + Character style. Must occur in an appropriate parent paragraph, such as author or editor. + + + + + orgname + + + orgname + + + + + + + + keyword + + + keywordset/keyword + + + Paragraph style. Consecutive keyword elements are merged into a single keywordset parent element. Words (phrases) within a paragraph separated by commas become individual keyword elements. + + + + + citetitle + + + citetitle + + + + + + + + city + + + city + + + + + + + + contrib + + + contrib + + + + + + + + country + + + country + + + + + + + + email + + + email + + + + + + + + fax + + + fax + + + + + + + + honorific + + + honorific + + + + + + + + jobtitle + + + jobtitle + + + + + + + + lineage + + + lineage + + + + + + + + orgdiv + + + orgdiv + + + + + + + + otheraddr + + + otheraddr + + + + + + + + othername + + + othername + + + + + + + + phone + + + phone + + + + + + + + pob + + + pob + + + + + + + + postcode + + + postcode + + + + + + + + shortaffil + + + shortaffil + + + + + + + + state + + + state + + + + + + + +
    + + Proposed Additions - not yet implemented + + + + + + + + DocBook element + + + Style(s) + + + Comments + + + + + + + variablelist/varlistentry/term + + + + variablelist1-term +variablelist2-term +variablelist3-term +variablelist4-term + + + + A variablelist in Word should be a sequence of alternating paragraphs styled as variablelistN-term and variablelistN. + + + + + variablelist/varlistentry/listitem/para + + + + variablelist1 +variablelist2 +variablelist3 +variablelist4 + + + + Consecutive paragraphs are coalesced. + + + + +
    +
    + Attributes + Attributes are a feature of DocBook XML that have no direct counterpart in Word. + XML attributes are encoded in Word comments (annotations). Some dummy text (just a space, using a character style that includes the hidden property) anchors the comment. Within the comment text, character types are used to indicate attribute names and values (these must be paired). This approach keeps the attributes separate to the main body and allows multiple attributes to be encoded. + A disadvantage to this approach is that a paragraph may be related to more than one element, but the attributes are associated with only one element (by default the parent). For example, a section may have an attribute as well as the title child element, but only a single paragraph (with paragraph style sect1-title) represents both elements. Any attribute defined in a comment would be associated with the sect1 element. + Pages does not have annotations, so the character styles attribute-name and attribute-value are used. +
    +
    +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template-pages.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template-pages.xml new file mode 100644 index 000000000..cc6fc0374 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template-pages.xml @@ -0,0 +1,2 @@ + +Lorem ipsum dolor sit ametConsectetur adipiscing elitEset eiusmod tempor incidunt et labore et dolore magna aliquam. Ut enim ad minim veniam, quis nostrud exerc. Irure dolor in reprehend incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse molestaie cillum. Tia non ob ea soluad incommod quae egen ium improb fugiend. Officia deserunt mollit anim id est laborum Et harumd dereud facilis est er expedit distinct. Nam liber te conscient to factor tum poen legum odioque civiuda et tam. Neque pecun modut est neque nonor et imper ned libidig met, consectetur adipiscing elit, sed ut labore et dolore magna aliquam is nostrud exercitation ullam mmodo consequet.Duis aute in voluptate velit esseCillum dolore eu fugiat nulla pariatur. At vver eos et accusam dignissum qui blandit est praesent. Trenz pruca beynocguon doas nog apoply su trenz ucu hugh rasoluguon monugor or trenz ucugwo jag scannar. Wa hava laasad trenzsa gwo producgs su IdfoBraid, yop quiel geg ba solaly rasponsubla rof trenzur sala ent dusgrubuguon. Offoctivo immoriatoly, hawrgasi pwicos asi sirucor. Thas sirutciun applios tyu thuso itoms ghuso pwicos gosi sirucor in mixent gosi sirucor ic mixent ples cak ontisi sowios uf Zerm hawr rwivos. Unte af phen neige pheings atoot Prexs eis phat eit sakem eit vory gast te Plok peish ba useing phen roxas. Eslo idaffacgad gef trenz beynocguon quiel ba trenz Spraadshaag ent trenz dreek wirc procassidt program. Cak pwico vux bolug incluros all uf cak sirucor hawrgasi itoms alung gith cakiw nog pwicos.Plloaso mako nuto uf cakso dodtosKoop a cupy uf cak vux noaw yerw phuno. Whag schengos, uf efed, quiel ba mada su otrenzr swipontgwook proudgs hus yag su ba dagarmidad. Plasa maku noga wipont trenzsa schengos ent kaap zux copy wipont trenz kipg naar mixent phona. Cak pwico siructiun ruos nust apoply tyu cak UCU sisulutiun munityuw uw cak UCU-TGU jot scannow. Trens roxas eis ti Plokeing quert loppe eis yop prexs. Piy opher hawers, eit yaggles orn ti sumbloat alohe plok. Su havo loasor cakso tgu pwuructs tyu InfuBwain, ghu gill nug bo suloly sispunsiblo fuw cakiw salo anr ristwibutiun. Hei muk neme eis loppe. Treas em wankeing ont sime ploked peish rof phen sumbloat syug si phat phey gavet peish ta paat ein pheeir sumbloats. Aslu unaffoctor gef cak siructiun gill bo cak spiarshoot anet cak GurGanglo gur pwucossing pwutwam. Ghat dodtos, ig pany, gill bo maro tyu ucakw suftgasi pwuructs hod yot tyubo rotowminor. Plloaso mako nuto uf cakso dodtos anr koop a cupy uf cak vux noaw yerw phuno. Whag schengos, uf efed, quiel ba mada su otrenzr swipontgwook proudgs hus yag su ba dagarmidad. Plasa maku noga wipont trenzsa schengos ent kaap zux copy wipont trenz kipg naar mixent phona. Cak pwico siructiun ruos nust apoply tyu cak UCU sisulutiun munityuw uw cak UCU-TGU jot scannow. Trens roxas eis ti Plokeing quert loppe eis yop prexs. Piy opher hawers, eit yaggles orn ti sumbloat alohe plok. Su havo loasor cakso tgu pwuructs tyu.Document TemplateInsert content here. diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template.xml new file mode 100644 index 000000000..e36a7dfd8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/template.xml @@ -0,0 +1,3 @@ + + +This document left intentionally blankSteve BallSteve Ball15104702007-08-21T22:03:00Z2008-10-08T23:57:00Z1745Explain115111.0000Generic DocBook roundtrip template - 2008-10-09-01. \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/wordml2normalise.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/wordml2normalise.xsl new file mode 100644 index 000000000..ad22b194c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/roundtrip/wordml2normalise.xsl @@ -0,0 +1,445 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bold-italic + + + bold + + + italic + + + underline + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image + + .jpg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 0 + 1 + 0 + + + + + 1 + 0 + 1 + 0 + + + + + 1 + 0 + 1 + 0 + + + + + 1 + 0 + 1 + 0 + + + + + + + all + + + topbot + + + sides + + + top + + + bottom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + 1 + + + + + + + column- + + + + column- + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + 0 + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/CTOCWidget.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/CTOCWidget.js new file mode 100644 index 000000000..a411ea995 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/CTOCWidget.js @@ -0,0 +1,169 @@ +/* + * CTOCWidget.js + * $Revision: 1.3 $ $Date: 2003/07/14 06:02:50 $ + */ + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (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.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Netscape code. + * + * The Initial Developer of the Original Code is + * Netscape Corporation. + * Portions created by the Initial Developer are Copyright (C) 2003 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Bob Clary + * + * ***** END LICENSE BLOCK ***** */ + +function CTOCWidget(domTOCModel, target) +{ + if (domTOCModel.documentElement.nodeName != 'toc') + { + throw 'CTOCWidget called on non toc Document: ' + domTOCModel.nodeName; + } + + this.model = domTOCModel; + this.target = target; + this.view = document.createElement('div'); + this.view.setAttribute('class', CTOCWidget._classprefix + '_view'); + + var modelItems = domTOCModel.documentElement.childNodes; + for (var i = 0; i < modelItems.length; i++) + { + var modelItem = modelItems.item(i); + if (modelItem.nodeType == Node.ELEMENT_NODE) + { + var viewItem = CTOCWidget.createItemView(modelItem, target); + this.view.appendChild(viewItem); + } + } +} + +CTOCWidget._handleImages = { open: '/toolbox/examples/2003/CTOCWidget/minus.gif', closed: '/toolbox/examples/2003/CTOCWidget/plus.gif', height: '12px', width: '16px'}; +CTOCWidget._classprefix = 'CTOCWidget'; + +CTOCWidget.createItemView = function (modelItem, target) +{ + if (modelItem.nodeType != Node.ELEMENT_NODE) + { + throw 'CTOCWidget.createItemView called on non-Element: ' + modelItem.nodeName; + } + + var i; + + var viewItem = document.createElement('div'); + viewItem.setAttribute('class', CTOCWidget._classprefix + '_item'); + + var viewItemHandle = document.createElement('div'); + viewItemHandle.setAttribute('class', CTOCWidget._classprefix + '_itemhandle'); + viewItemHandle.style.cursor = 'pointer'; + + var viewItemHandleImg = document.createElement('img'); + viewItemHandleImg.style.height = CTOCWidget._handleImages.height; + viewItemHandleImg.style.width = CTOCWidget._handleImages.width; + viewItemHandleImg.addEventListener('click', CTOCWidget.toggleHandle, false); + + var viewItemHandleLink; + if (!modelItem.getAttribute('url')) + { + viewItemHandleLink = document.createElement('span'); + } + else + { + viewItemHandleLink = document.createElement('a'); + viewItemHandleLink.setAttribute('href', modelItem.getAttribute('url')); + viewItemHandleLink.setAttribute('target', target); + } + viewItemHandleLink.appendChild(document.createTextNode(modelItem.getAttribute('title'))); + + viewItemHandle.appendChild(viewItemHandleImg); + viewItemHandle.appendChild(viewItemHandleLink); + viewItem.appendChild(viewItemHandle); + + if (modelItem.childNodes.length == 0) + { + viewItemHandleImg.setAttribute('src', CTOCWidget._handleImages.open); + } + else + { + viewItemHandleImg.setAttribute('src', CTOCWidget._handleImages.closed); + + var viewItemChildren = document.createElement('div'); + viewItemChildren.setAttribute('class', CTOCWidget._classprefix + '_itemchildren'); + viewItemChildren.style.display = 'none'; + viewItemChildren.style.position = 'relative'; + viewItemChildren.style.left = '1em'; + + for (i = 0; i < modelItem.childNodes.length; i++) + { + var modelItemChild = modelItem.childNodes.item(i); + if (modelItemChild.nodeType == Node.ELEMENT_NODE) + { + viewItemChildren.appendChild(CTOCWidget.createItemView(modelItemChild, target)); + } + } + + viewItem.appendChild(viewItemChildren); + } + + return viewItem; +}; + +// fires on img part of the handle +CTOCWidget.toggleHandle = function(e) +{ + switch (e.eventPhase) + { + case Event.CAPTURING_PHASE: + case Event.BUBBLING_PHASE: + return true; + + case Event.AT_TARGET: + + e.preventBubble(); + + var domHandle = e.target.parentNode; + var domChildren = domHandle.nextSibling; + + if (!domChildren) + { + return true; + } + + switch(domChildren.style.display) + { + case '': + case 'block': + domChildren.style.display = 'none'; + e.target.setAttribute('src', CTOCWidget._handleImages.closed); + break; + case 'none': + domChildren.style.display = 'block'; + e.target.setAttribute('src', CTOCWidget._handleImages.open); + break; + default: + return false; + } + + return true; + + default: + dump('Unknown Event Phase ' + e.eventPhase); + break; + } + + return true; +} + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/overlay.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/overlay.js new file mode 100644 index 000000000..fc010fbe9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/overlay.js @@ -0,0 +1,142 @@ +// -*- Java -*- +// +// Overlay.js, adapted from Floating image II on dynamicdrive.com +/* Usage: + + + +...rest of head... + + +
    +...body of overlay... +
    +...rest of page... +*/ + +var overlayNS4 = document.layers ? 1 : 0; +var overlayIE = document.all ? 1 : 0; +var overlayNS6 = document.getElementById && !document.all ? 1 : 0; + +var overlayPadX = 15; +var overlayPadY = 15; +var overlayDelay = 60; + +var overlayCorner = 'ur'; // ul, ll, ur, lr, uc, lc, cl, cr + +function overlayRefresh() { + var overlayLx = 0; + var overlayLy = 0; + + var overlayX = 0; + var overlayY = 0; + var overlayW = 0; + var overlayH = 0; + var contentH = 0; + + var links = document.getElementsByTagName("body")[0]; + + if (overlayIE) { + overlayLx = document.body.clientWidth; + overlayLy = document.body.clientHeight; + + if (document.body.parentElement) { + // For IE6 + overlayLx = document.body.parentElement.clientWidth; + overlayLy = document.body.parentElement.clientHeight; + } + + overlayH = overlayDiv.offsetHeight; + overlayW = body.offsetWidth; // overlayDiv.offsetWidth; + contentH = body.offsetHeight; + } else if (overlayNS4) { + overlayLy = window.innerHeight; + overlayLx = window.innerWidth; + overlayH = document.overlayDiv.clip.height; + overlayW = body.clip.width; // document.overlayDiv.clip.width; + contentH = body.clip.height; + } else if (overlayNS6) { + var odiv = document.getElementById('overlayDiv'); + + overlayLy = window.innerHeight; + overlayLx = window.innerWidth; + overlayH = odiv.offsetHeight; + overlayW = odiv.offsetWidth; // body.offsetWidth; + contentH = odiv.offsetHeight; + } + + if (overlayCorner == 'ul') { + overlayX = overlayPadX; + overlayY = overlayPadY; + } else if (overlayCorner == 'cl') { + overlayX = overlayPadX; + overlayY = (overlayLy - overlayH) / 2; + } else if (overlayCorner == 'll') { + overlayX = overlayPadX; + overlayY = (overlayLy - overlayH) - overlayPadY; + } else if (overlayCorner == 'ur') { + overlayX = (overlayLx - overlayW) - overlayPadX; + overlayY = overlayPadY; + } else if (overlayCorner == 'cr') { + overlayX = (overlayLx - overlayW) - overlayPadX; + overlayY = (overlayLy - overlayH) / 2; + } else if (overlayCorner == 'lr') { + overlayX = (overlayLx - overlayW) - overlayPadX; + overlayY = (overlayLy - overlayH) - overlayPadY; + } else if (overlayCorner == 'uc') { + overlayX = (overlayLx - overlayW) / 2; + overlayY = overlayPadY; + } else { // overlayCorner == 'lc' + overlayX = (overlayLx - overlayW) / 2; + overlayY = (overlayLy - overlayH) - overlayPadY; + } + + if (overlayIE) { + overlayDiv.style.left=overlayX; + overlayDiv.style.top=overlayY+document.body.scrollTop; + + if (contentH > overlayLy) { + overlayDiv.style.visibility = "hidden"; + } + } else if (overlayNS4) { + document.overlayDiv.pageX=overlayX; + document.overlayDiv.pageY=overlayY+window.pageYOffset; + document.overlayDiv.visibility="visible"; + + if (contentH > overlayLy) { + document.overlayDiv.style.visibility = "hidden"; + } + } else if (overlayNS6) { + var div = document.getElementById("overlayDiv"); + var leftpx = overlayX; + var toppx = overlayY+window.pageYOffset; + var widthpx = overlayW; + + div.style.left = leftpx + "px"; + div.style.top = toppx + "px"; + div.style.width = widthpx + "px"; + + if (contentH > overlayLy) { + div.style.visibility = "hidden"; + } else { + div.style.visibility = "visible"; + } + } +} + +function onad() { + loopfunc(); +} + +function loopfunc() { + overlayRefresh(); + setTimeout('loopfunc()',overlayDelay); +} + +function overlaySetup(corner) { + overlayCorner = corner; + + if (overlayIE || overlayNS4 || overlayNS6) { + onad(); + } +} diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-default.css b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-default.css new file mode 100644 index 000000000..1022d6bc0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-default.css @@ -0,0 +1,9 @@ +@import url('slides.css'); + +.toclink { font-size: 10pt; + font-weight: normal; + } + +.toclink a { color: blue; } +.toclink a:link { color: blue; } +.toclink a:visited { color: blue; } diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-frames.css b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-frames.css new file mode 100644 index 000000000..698b6a3e2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-frames.css @@ -0,0 +1,73 @@ +@import url('slides.css'); + +.toc-body { margin-left: 2px; + margin-right: 2px; + } + +.foil-body { margin-left: 2px; + margin-right: 2px; + } + +h1.title { margin-top: 0px; + padding-top: 0px; + } + +.navhead { visibility: visible; + } + +.navfoot { visibility: visible; + } + +/* ====================================================================== */ + +.navfoot { border-top: 1px solid black; + margin-top: 10px; + padding-top: 4px; + } +/* ====================================================================== */ + +.toc { font-weight: bold; + font-size: 10pt; + } + +.toc a { text-decoration: none; } +.toc a:link { color: blue; } +.toc a:visited { color: blue; } + +.toc .toc-foilgroup a { color: red; } +.toc .toc-foilgroup a:link { color: red; } +.toc .toc-foilgroup a:visited { color: red; } + +.toc .toc-titlefoil a { color: black; } +.toc .toc-titlefoil a:link { color: black; } +.toc .toc-titlefoil a:visited { color: black; } + +.toc .toc-foil a { color: blue; } +.toc .toc-foil a:link { color: blue; } +.toc .toc-foil a:visited { color: blue; } + +.toc-slidesinfo { font-family: sans-serif; + font-weight: bold; + text-align: center; + } + +.toc-titlefoil { font-family: sans-serif; + font-weight: bold; + text-align: center; + } + +.toc-foilgroup { font-family: sans-serif; + margin-left: 0.25in; + text-indent: -0.25in; + font-weight: bold; + color: red; + } + +.toc-foil { font-family: sans-serif; + font-size: 10pt; + margin-left: 0.25in; + text-indent: -0.4in; + font-weight: bold; + color: blue; + } + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-plain.css b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-plain.css new file mode 100644 index 000000000..c22f2891c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-plain.css @@ -0,0 +1 @@ +@import url('slides.css'); diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-table.css b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-table.css new file mode 100644 index 000000000..1c195c9e5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-table.css @@ -0,0 +1,41 @@ +@import url('slides.css'); + +.toc-body { margin-left: 2px; + margin-right: 2px; + } + +.foil-body { margin-left: 2px; + margin-right: 2px; + } + +.foilgroup-body { margin-left: 2px; + margin-right: 2px; + } + +h1.title { + margin-top: 0px; + padding-top: 0px; + } + +/* ToC Stuff */ + +.ttoc { + font-size: 10pt; + color: white; + } + +.ttoc a { text-decoration: none; } +.ttoc a:link { color: white } +.ttoc a:visited { color: white } + +.ttoc-title { + font-size: 10pt; + } + +.ttoc-foilset { + font-size: 10pt; + } + +.ttoc-foil { + font-size: 10pt; + } diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-w3c.css b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-w3c.css new file mode 100644 index 000000000..c22f2891c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides-w3c.css @@ -0,0 +1 @@ +@import url('slides.css'); diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.css b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.css new file mode 100644 index 000000000..1007478e8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.css @@ -0,0 +1,119 @@ +/* General formatting */ + +body { font-family: sans-serif; + font-weight: bold; + } + +.copyright { color: #7F7F7F; + } + +/* Title page formatting */ + + +.slidesinfo { text-align: center; + font-size: 16pt; + } + +.slidesinfo h1.title { color: blue; + } +.slidesinfo h2.subtitle { color: blue; + } +.slidesinfo h1.author { color: green; + } + +.slidesinfo .copyright { color: black; + } + + +/* ToC page formatting */ + +.tocpage h1.title { color: blue; + text-align: center; + } + +.tocpage a { text-decoration: none; } +.tocpage a:link { color: blue; } +.tocpage a:visited { color: blue; } + +.toc-body { margin-left: 0.5in; + margin-right: 0.5in; + } + +/* Foil page formatting */ + +.foil { font-size: 16pt; + } +.foil h1.title { text-align: center; + color: blue; + padding-top: 0pt; + margin-top: 0pt; + } +.foil h2.subtitle { text-align: center; + color: blue; + padding-top: 0pt; + margin-top: 0pt; + } + +.foil pre { font-size: 16pt; + } + +.foil-body { margin-left: 0.5in; + margin-right: 0.5in; + } + +/* Foilgroup page formatting */ + +.foilgroup { font-size: 16pt; + } +.foilgroup h1.title { text-align: center; + color: red; + padding-top: 0pt; + margin-top: 0pt; + } +.foilgroup h2.subtitle { text-align: center; + color: blue; + padding-top: 0pt; + margin-top: 0pt; + } + +.foilgroup-body { margin-left: 0.5in; + margin-right: 0.5in; + } + +/* Navigation header formatting */ + +.navhead { border-bottom: 1px solid black; + margin-bottom: 10px; + padding-bottom: 4px; + } + +.navhead hr.top-nav-sep { display: none; } + +.navhead .slidestitle { font-weight: normal; + font-size: 10pt; + font-style: italic; + } + +/* Navigation footer formatting */ + +.navfoot { border-top: 1px solid black; + margin-top: 10px; + padding-top: 4px; + } + +.navfoot hr.bottom-nav-sep { display: none; } + +/* General navigation formatting */ + +.link-text { font-weight: bold; + font-size: 10pt; + } + + +.link-text a { text-decoration: none; } +.link-text a:link { color: blue; } +.link-text a:visited { color: blue; } + +.no-link-text { color: #7F7F7F; } + +/* EOF */ diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.js new file mode 100644 index 000000000..2e48a7ca3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/slides.js @@ -0,0 +1,120 @@ +// -*- Java -*- +// +// $Id: slides.js 4931 2005-06-21 15:45:53Z kosek $ +// +// Copyright (C) 2002 Norman Walsh +// +// You are free to use, modify and distribute this software without limitation. +// This software is provided "AS IS," without a warranty of any kind. +// +// This script assumes that the Netscape 'ua.js' module has also been loaded. + +function newPage(filename, overlay) { + divs = document.getElementsByTagName("div"); + + if (divs) { + var xdiv = divs[0]; + + if (xdiv) { + var xid = xdiv.getAttribute("id"); + + var mytoc = window.top.frames[0]; + if (mytoc.lastUnderlined) { + mytoc.lastUnderlined.style.textDecoration = "none"; + } + + var tdiv = xbGetElementById(xid, mytoc); + + if (tdiv) { + var ta = tdiv.getElementsByTagName("a").item(0); + ta.style.textDecoration = "underline"; + mytoc.lastUnderlined = ta; + } + } + } + + if (overlay != 0) { + overlaySetup('lc'); + } +} + + +function navigate (evt) { + var kc = -1; + + if (navigator.org == 'microsoft' || navigator.family == 'opera') { + kc = window.event.keyCode; + } else if (navigator.family == 'gecko') { + kc = evt.keyCode; + if(!kc) { + kc = evt.which; + } + } else { + kc = evt.which; + } + + var forward = (kc == 110) || (kc == 78) || (kc == 32) + || (kc == 10) || (kc == 13) || (kc == 34) + || (kc == 39); + /* n, N, SPACE, ENTER, RETURN, PAGE UP, RIGHT ARROW */ + var backward = (kc == 112) || (kc == 80) || (kc == 8) + || (kc == 33) || (kc == 37); + /* p, P, BACKSPACE, PAGE DOWN, LEFT ARROW */ + var up = (kc == 117) || (kc == 85) || (kc == 38); + /* u, U, UP ARROW */ + var home = (kc == 104) || (kc == 72) || (kc == 36); + /* h, H, HOME */ + var toc = (kc == 116) || (kc == 84); + /* t, T */ + /* previously included META (kc == 244) */ + + var links = document.getElementsByTagName("link"); + + var count = 0; + var target = ""; + + for (count = 0; count < links.length; count++) { + if (home && (links[count].getAttribute("rel") == 'top')) { + target = links[count].getAttribute("href"); + } + if (toc && (links[count].getAttribute("rel") == 'contents')) { + target = links[count].getAttribute("href"); + } + if (up && (links[count].getAttribute("rel") == 'up')) { + target = links[count].getAttribute("href"); + } + if (forward && (links[count].getAttribute("rel") == 'next')) { + target = links[count].getAttribute("href"); + } + if (backward && (links[count].getAttribute("rel") == 'previous')) { + target = links[count].getAttribute("href"); + } + } + + if (target != "") { + if (window.top.frames[1]) { + window.top.frames[1].location = target; + } else { + window.location = target; + } + } + + return false; +} + +function toggletoc (img, width, hidegraphic, showgraphic) { + var fsc = top.GetElementsByTagName('frameset'); + if (fsc) { + var fs = fsc[0]; + if (fs) { + if (fs.cols == "0,*") { + fs.cols = width + ",*"; + img.src = hidegraphic; + } else { + fs.cols = "0,*"; + img.src = showgraphic; + } + } + } +} + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/ua.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/ua.js new file mode 100644 index 000000000..898765980 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/ua.js @@ -0,0 +1,135 @@ +/* + * ua.js + * $Revision: 1.2 $ $Date: 2003/02/07 16:04:17 $ + */ + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (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.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Netscape code. + * + * The Initial Developer of the Original Code is + * Netscape Corporation. + * Portions created by the Initial Developer are Copyright (C) 2001 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Bob Clary + * + * ***** END LICENSE BLOCK ***** */ + +function xbDetectBrowser() +{ + var oldOnError = window.onerror; + var element = null; + + window.onerror = null; + + // work around bug in xpcdom Mozilla 0.9.1 + window.saveNavigator = window.navigator; + + navigator.OS = ''; + navigator.version = parseFloat(navigator.appVersion); + navigator.org = ''; + navigator.family = ''; + + var platform; + if (typeof(window.navigator.platform) != 'undefined') + { + platform = window.navigator.platform.toLowerCase(); + if (platform.indexOf('win') != -1) + navigator.OS = 'win'; + else if (platform.indexOf('mac') != -1) + navigator.OS = 'mac'; + else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1) + navigator.OS = 'nix'; + } + + var i = 0; + var ua = window.navigator.userAgent.toLowerCase(); + + if (ua.indexOf('opera') != -1) + { + i = ua.indexOf('opera'); + navigator.family = 'opera'; + navigator.org = 'opera'; + navigator.version = parseFloat('0' + ua.substr(i+6), 10); + } + else if ((i = ua.indexOf('msie')) != -1) + { + navigator.org = 'microsoft'; + navigator.version = parseFloat('0' + ua.substr(i+5), 10); + + if (navigator.version < 4) + navigator.family = 'ie3'; + else + navigator.family = 'ie4' + } + else if (ua.indexOf('gecko') != -1) + { + navigator.family = 'gecko'; + var rvStart = ua.indexOf('rv:'); + var rvEnd = ua.indexOf(')', rvStart); + var rv = ua.substring(rvStart+3, rvEnd); + var rvParts = rv.split('.'); + var rvValue = 0; + var exp = 1; + + for (var i = 0; i < rvParts.length; i++) + { + var val = parseInt(rvParts[i]); + rvValue += val / exp; + exp *= 100; + } + navigator.version = rvValue; + + if (ua.indexOf('netscape') != -1) + navigator.org = 'netscape'; + else if (ua.indexOf('compuserve') != -1) + navigator.org = 'compuserve'; + else + navigator.org = 'mozilla'; + } + else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1)) + { + var is_major = parseFloat(navigator.appVersion); + + if (is_major < 4) + navigator.version = is_major; + else + { + i = ua.lastIndexOf('/') + navigator.version = parseFloat('0' + ua.substr(i+1), 10); + } + navigator.org = 'netscape'; + navigator.family = 'nn' + parseInt(navigator.appVersion); + } + else if ((i = ua.indexOf('aol')) != -1 ) + { + // aol + navigator.family = 'aol'; + navigator.org = 'aol'; + navigator.version = parseFloat('0' + ua.substr(i+4), 10); + } + else if ((i = ua.indexOf('hotjava')) != -1 ) + { + // hotjava + navigator.family = 'hotjava'; + navigator.org = 'sun'; + navigator.version = parseFloat(navigator.appVersion); + } + + window.onerror = oldOnError; +} + +xbDetectBrowser(); + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbCollapsibleLists.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbCollapsibleLists.js new file mode 100644 index 000000000..6a4f93c17 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbCollapsibleLists.js @@ -0,0 +1,537 @@ +/* +xbCollapsibleLists.js 2001-02-26 + +Contributor(s): Michael Bostock, Netscape Communications, Copyright 1997 + Bob Clary, Netscape Communications, Copyright 2001 + Seth Dillingham, Macrobyte Resources, Copyright 2001 + Mark Filanowicz, Amdahl IT Services, Copyright 2002 + +Netscape grants you a royalty free license to use, modify or +distribute this software provided that this copyright notice +appears on all copies. This software is provided "AS IS," +without a warranty of any kind. + +See xbCollapsibleLists.js.changelog.html for details of changes. +*/ + + +var xbcl__id = 0; +var xbcl_item_id = 0; +var xbcl_mLists = new Array(); +var xbcl_parentElement = null; + +document.lists = xbcl_mLists; + +function List(visible, width, height, bgColor, collapsedImageURL, expandedImageURL) +{ + this.lists = new Array(); // sublists + this.items = new Array(); // layers + this.types = new Array(); // type + this.strs = new Array(); // content + this.visible = visible; + this.id = xbcl__id; + this.width = width || 350; + this.height = height || 22; + + this.collapsedImageURL = collapsedImageURL || 'false.gif'; + this.expandedImageURL = expandedImageURL || 'true.gif'; + + if (bgColor) + this.bgColor = bgColor; + + xbcl_mLists[xbcl__id++] = this; +} + +function xbcl_SetFont(i,j) +{ + this.fontIntro = i; + this.fontOutro = j; +} + +function xbcl_GetFont() +{ + return [this.fontIntro, this.fontOutro]; +} + +function xbcl_setIndent(indent) +{ + this.i = indent; + if (this.i < 0) + { + this.i = 0; + this.space = false; + } + else + this.space = true; +} + +function xbcl_getIndent(indent) +{ + return this.i; +} + +function xbcl_writeItemDOMHTML( obj, s, flList, listObj ) +{ + var styleObj; + var outerDiv, innerLeft, innerRight; + var str; + var leftEdge = 0; + + styleObj = new xbStyle(obj); + styleObj.setVisibility('hidden'); + outerDiv = document.createElement( "DIV" ); + outerDiv.id = "DIV_" + obj.id; + styleObj = new xbStyle( outerDiv ); + styleObj.setWidth( this.width ); + + if ( flList ) + { + innerLeft = document.createElement( "DIV" ); + innerLeft.style.position = "absolute"; + innerLeft.style.valign = "middle"; + leftEdge = 15; + + styleObj = new xbStyle( innerLeft ); + styleObj.setWidth( 15 ); + styleObj.setBackgroundColor( "transparent" ); + + if ( listObj.visible ) + str = ''; + else + str = ''; + + innerLeft.innerHTML = str; + outerDiv.appendChild( innerLeft ); + } + else if ( this.space ) + leftEdge = 15; + + innerRight = document.createElement( "DIV" ); + innerRight.noWrap = true; + innerRight.style.position = "absolute"; + + styleObj = new xbStyle( innerRight ); + styleObj.setLeft( leftEdge + ( this.l * this.i ) ); + styleObj.setWidth( this.width - 15 - this.l * this.i ); + styleObj.setBackgroundColor( "transparent" ); + + // start of change by Mark Filanowicz 02-22-2002 + if ( flList ) + { + s = this.fontIntro + '' + s + this.fontOutro; + } + else + { + s = this.fontIntro + s + this.fontOutro; + } + // end of change by Mark Filanowicz 02-22-2002 + + + innerRight.innerHTML = s; + outerDiv.appendChild( innerRight ); + + obj.appendChild( outerDiv ); + + return; +} + +function xbcl_writeItem( obj, s, flList, listObj ) +{ + var cellStyle = ''; + var str = ''; + var styleObj = new xbStyle( obj ); + + styleObj.setVisibility( 'hidden' ); + + if ( document.body && document.body.style ) + cellStyle = ' style="background-color: transparent;"'; + + str += ''; + + if ( flList ) + { + str += ''; + } + else if (this.space) + str += ''; + + if (this.l>0 && this.i>0) + str += ''; + + str += '
    '; + str += ''; + + if ( listObj.visible ) + str += ''; + else + str += ''; + + str += '  '; + + // start of change by Mark Filanowicz 02-22-2002 + if ( flList ) + { + str += this.fontIntro + '' + s + this.fontOutro; + } + else + { + str += this.fontIntro + s + this.fontOutro; + } + // end of change by Mark Filanowicz 02-22-2002 + + str += '
    '; + + styleObj.setInnerHTML( str ); + + return; +} + +function xbcl_writeList() +{ + var item; + var i; + var flList; + + for ( i = 0; i < this.types.length; i++ ) + { + item = this.items[ i ]; + flList = ( this.types[ i ] == 'list' ); + + this._writeItem( item, this.strs[ i ], flList, this.lists[ i ] ); + + if ( flList && this.lists[ i ].visible ) + this.lists[ i ]._writeList(); + } + + this.built = true; + this.needsRewrite = false; + self.status = ''; +} + +function xbcl_showList() +{ + var item; + var styleObj; + var i; + + for (i = 0; i < this.types.length; i++) + { + item = this.items[i]; + styleObj = new xbStyle(item); + styleObj.setClipLeft(0); + styleObj.setClipRight(this.width); + styleObj.setClipTop(0); + if (item.height) + { + styleObj.setClipBottom(item.height); + styleObj.setHeight(item.height); + } + else + { + styleObj.setClipBottom(this.height); + styleObj.setHeight(this.height); + } + + if ( this.visible ) + styleObj.setVisibility( 'visible' ); + + var bg = item.oBgColor || this.bgColor; + if ((bg == null) || (bg == 'null')) + bg = ''; + + styleObj.setBackgroundColor(bg); + + if (this.types[i] == 'list' && this.lists[i].visible) + this.lists[i]._showList(); + } + this.shown = true; + this.needsUpdate = false; +} + +function xbcl_setImage(list, item, file) +{ + var id = '_img' + list.id; + var img = null; + + // for DOMHTML or IE4 use cross browser getElementById from xbStyle + // can't use it for NN4 since it only works for layers in NN4 + if (document.layers) + img = item.document.images[0]; + else + img = xbGetElementById(id); + + if (img) + img.src = file; +} + +function xbcl_getHeight() +{ + var totalHeight = 0; + var i; + + if (!this.visible) + return 0; + + for (i = 0; i < this.types.length; i++) + { + if (this.items[i].height) + totalHeight += this.items[i].height; + else + totalHeight += this.height; + + if ((this.types[i] == 'list') && this.lists[i].visible) + { + totalHeight += this.lists[i].getHeight(); + } + } + + return totalHeight; +} + +function xbcl_updateList(pVis, x, y) +{ + var currTop = y; + var item; + var styleObj; + var i; + + for (i = 0; i < this.types.length; i++) + { + item = this.items[i]; + styleObj = new xbStyle(item); + + if (this.visible && pVis) + { + styleObj.moveTo(x, currTop); + if (item.height) // allow custom heights for each item + currTop += item.height; + else + currTop += this.height; + + styleObj.setVisibility('visible'); + } + else + { + styleObj.setVisibility('hidden'); + } + + if (this.types[i] == 'list') + { + if (this.lists[i].visible) + { + if (!this.lists[i].built || this.lists[i].needsRewrite) + this.lists[i]._writeList(); + + if (!this.lists[i].shown || this.lists[i].needsUpdate) + this.lists[i]._showList(); + + xbcl_setImage(this.lists[i], item, this.expandedImageURL ); + } + else + xbcl_setImage(this.lists[i], item, this.collapsedImageURL ); + + if (this.lists[i].built) + currTop = this.lists[i]._updateList(this.visible && pVis, x, currTop); + } + } + return currTop; +} + +function xbcl_updateParent( pid, l ) +{ + var i; + + if ( !l ) + l = 0; + + this.pid = pid; + this.l = l; + + for ( i = 0; i < this.types.length; i++ ) + { + if ( this.types[ i ] == 'list' ) + { + this.lists[ i ]._updateParent( pid, l + 1 ); + } + } +} + +function xbcl_expand(i) +{ + xbcl_mLists[i].visible = !xbcl_mLists[i].visible; + + if (xbcl_mLists[i].onexpand != null) + xbcl_mLists[i].onexpand(xbcl_mLists[i].id); + + xbcl_mLists[xbcl_mLists[i].pid].rebuild(); + + if (xbcl_mLists[i].postexpand != null) + xbcl_mLists[i].postexpand(xbcl_mLists[i].id); +} + +function xbcl_build(x, y) +{ + this._updateParent(this.id); + this._writeList(); + this._showList(); + this._updateList(true, x, y); + this.x = x; + this.y = y; +} + +function xbcl_rebuild() +{ + this._updateList(true, this.x, this.y); +} + +function xbcl_getNewItem() +{ + var newItem = null; + + newItem = xbGetElementById('lItem' + xbcl_item_id); + + if (!newItem) + { + if (document.all && !document.getElementById) + { + var parentElement = this.parentElement; + if (!parentElement) + parentElement = document.body; + + parentElement.insertAdjacentHTML('beforeEnd', '
    '); + newItem = xbGetElementById('lItem' + xbcl_item_id); + } + else if (document.layers) + { + if (this.parentElement) + newItem = new Layer(this.width, this.parentElement); + else + newItem = new Layer(this.width); + } + else if (document.createElement) + { + newItem = document.createElement('div'); + newItem.id= 'lItem' + xbcl_item_id; + newItem.style.position = 'absolute'; + + if (this.parentElement) + this.parentElement.appendChild(newItem); + else + document.body.appendChild(newItem); + } + } + + return newItem; +} + +function xbcl_addItem(str, bgColor, item) +{ + if (!item) + item = this._getNewItem(); + + if (!item) + return; + + if (bgColor) + item.oBgColor = bgColor; + + this.items[this.items.length] = item; + this.types[this.types.length] = 'item'; + this.strs[this.strs.length] = str; + ++xbcl_item_id; + + if ( this.built ) + { + this._writeItem( item, str, false ); + xbcl_mLists[this.pid].rebuild(); + if ( this.visible ) + this._showList(); + else + this.needsUpdate = true; + } + + return item; +} + +function xbcl_addList(list, str, bgColor, item) +{ + if (!item) + item = this._getNewItem(); + + if (!item) + return; + + if (bgColor) + item.oBgColor = bgColor; + + this.lists[this.items.length] = list; + this.items[this.items.length] = item; + this.types[this.types.length] = 'list'; + this.strs[this.strs.length] = str; + ++xbcl_item_id; + + list.parentList = this; + + list.pid = this.pid; + list.l = this.l + 1; + + if ( this.built ) + { + this._writeItem( item, str, true, list ); + xbcl_mLists[ this.pid ].rebuild(); + if ( this.visible ) + this._showList(); + else + this.needsUpdate = true; + } + + return item; +} + +List.prototype.setIndent = xbcl_setIndent; +List.prototype.getIndent = xbcl_getIndent; +List.prototype.addItem = xbcl_addItem; +List.prototype.addList = xbcl_addList; +List.prototype.build = xbcl_build; +List.prototype.rebuild = xbcl_rebuild; +List.prototype.setFont = xbcl_SetFont; +List.prototype.getFont = xbcl_GetFont; +List.prototype.getHeight = xbcl_getHeight; + +List.prototype._writeList = xbcl_writeList; +List.prototype._getNewItem = xbcl_getNewItem; + +if ( document.getElementById && document.createElement ) + List.prototype._writeItem = xbcl_writeItemDOMHTML; +else + List.prototype._writeItem = xbcl_writeItem; + +List.prototype._showList = xbcl_showList; +List.prototype._updateList = xbcl_updateList; +List.prototype._updateParent = xbcl_updateParent; + +List.prototype.onexpand = null; +List.prototype.postexpand = null; +List.prototype.lists = null; // sublists +List.prototype.items = null; // layers +List.prototype.types = null; // type +List.prototype.strs = null; // content +List.prototype.x = 0; +List.prototype.y = 0; +List.prototype.visible = false; +List.prototype.id = -1; +List.prototype.i = 18; +List.prototype.space = true; +List.prototype.pid = 0; +List.prototype.fontIntro = ''; +List.prototype.fontOutro = ''; +List.prototype.width = 350; +List.prototype.height = 22; +List.prototype.built = false; +List.prototype.shown = false; +List.prototype.needsUpdate = false; +List.prototype.needsRewrite = false; +List.prototype.l = 0; +List.prototype.bgColor = null; +List.prototype.parentList = null; +List.prototype.parentElement = null; diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDOM.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDOM.js new file mode 100644 index 000000000..39cc8bf01 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDOM.js @@ -0,0 +1,374 @@ +/* + * xbDOM.js + * $Revision: 1.2 $ $Date: 2003/02/07 16:04:18 $ + */ + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (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.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Netscape code. + * + * The Initial Developer of the Original Code is + * Netscape Corporation. + * Portions created by the Initial Developer are Copyright (C) 2001 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Bob Clary + * + * ***** END LICENSE BLOCK ***** */ + +function xbToInt(s) +{ + var i = parseInt(s, 10); + if (isNaN(i)) + i = 0; + + return i; +} + +function xbGetWindowWidth(windowRef) +{ + var width = 0; + + if (!windowRef) + { + windowRef = window; + } + + if (typeof(windowRef.innerWidth) == 'number') + { + width = windowRef.innerWidth; + } + else if (windowRef.document.body && typeof(windowRef.document.body.clientWidth) == 'number') + { + width = windowRef.document.body.clientWidth; + } + + return width; +} + +function xbGetWindowHeight(windowRef) +{ + var height = 0; + + if (!windowRef) + { + windowRef = window; + } + + if (typeof(windowRef.innerWidth) == 'number') + { + height = windowRef.innerHeight; + } + else if (windowRef.document.body && typeof(windowRef.document.body.clientWidth) == 'number') + { + height = windowRef.document.body.clientHeight; + } + return height; +} + +function xbGetElementsByNameAndType(name, type, windowRef) +{ + if (!windowRef) + windowRef = window; + + var elmlist = new Array(); + + xbFindElementsByNameAndType(windowRef.document, name, type, elmlist); + + return elmlist; +} + +function xbFindElementsByNameAndType(doc, name, type, elmlist) +{ + var i; + var subdoc; + + for (i = 0; i < doc[type].length; ++i) + { + if (doc[type][i].name && name == doc[type][i].name) + { + elmlist[elmlist.length] = doc[type][i]; + } + } + + if (doc.layers) + { + for (i = 0; i < doc.layers.length; ++i) + { + subdoc = doc.layers[i].document; + xbFindElementsByNameAndType(subdoc, name, type, elmlist); + } + } +} + +if (document.layers) +{ + nav4FindLayer = + function (doc, id) + { + var i; + var subdoc; + var obj; + + for (i = 0; i < doc.layers.length; ++i) + { + if (doc.layers[i].id && id == doc.layers[i].id) + return doc.layers[i]; + + subdoc = doc.layers[i].document; + obj = nav4FindLayer(subdoc, id); + if (obj != null) + return obj; + } + return null; + } + + nav4FindElementsByName = + function (doc, name, elmlist) + { + var i; + var j; + var subdoc; + + for (i = 0; i < doc.images.length; ++i) + { + if (doc.images[i].name && name == doc.images[i].name) + { + elmlist[elmlist.length] = doc.images[i]; + } + } + + for (i = 0; i < doc.forms.length; ++i) + { + for (j = 0; j < doc.forms[i].elements.length; j++) + { + if (doc.forms[i].elements[j].name && name == doc.forms[i].elements[j].name) + { + elmlist[elmlist.length] = doc.forms[i].elements[j]; + } + } + + if (doc.forms[i].name && name == doc.forms[i].name) + { + elmlist[elmlist.length] = doc.forms[i]; + } + } + + for (i = 0; i < doc.anchors.length; ++i) + { + if (doc.anchors[i].name && name == doc.anchors[i].name) + { + elmlist[elmlist.length] = doc.anchors[i]; + } + } + + for (i = 0; i < doc.links.length; ++i) + { + if (doc.links[i].name && name == doc.links[i].name) + { + elmlist[elmlist.length] = doc.links[i]; + } + } + + for (i = 0; i < doc.applets.length; ++i) + { + if (doc.applets[i].name && name == doc.applets[i].name) + { + elmlist[elmlist.length] = doc.applets[i]; + } + } + + for (i = 0; i < doc.embeds.length; ++i) + { + if (doc.embeds[i].name && name == doc.embeds[i].name) + { + elmlist[elmlist.length] = doc.embeds[i]; + } + } + + for (i = 0; i < doc.layers.length; ++i) + { + if (doc.layers[i].name && name == doc.layers[i].name) + { + elmlist[elmlist.length] = doc.layers[i]; + } + + subdoc = doc.layers[i].document; + nav4FindElementsByName(subdoc, name, elmlist); + } + } + + xbGetElementById = function (id, windowRef) + { + if (!windowRef) + windowRef = window; + + return nav4FindLayer(windowRef.document, id); + }; + + xbGetElementsByName = function (name, windowRef) + { + if (!windowRef) + windowRef = window; + + var elmlist = new Array(); + + nav4FindElementsByName(windowRef.document, name, elmlist); + + return elmlist; + }; + +} +else if (document.all) +{ + xbGetElementById = + function (id, windowRef) + { + if (!windowRef) + { + windowRef = window; + } + var elm = windowRef.document.all[id]; + if (!elm) + { + elm = null; + } + return elm; + }; + + xbGetElementsByName = function (name, windowRef) + { + if (!windowRef) + windowRef = window; + + var i; + var idnamelist = windowRef.document.all[name]; + var elmlist = new Array(); + + if (!idnamelist.length || idnamelist.name == name) + { + if (idnamelist) + elmlist[elmlist.length] = idnamelist; + } + else + { + for (i = 0; i < idnamelist.length; i++) + { + if (idnamelist[i].name == name) + elmlist[elmlist.length] = idnamelist[i]; + } + } + + return elmlist; + } + +} +else if (document.getElementById) +{ + xbGetElementById = + function (id, windowRef) + { + if (!windowRef) + { + windowRef = window; + } + return windowRef.document.getElementById(id); + }; + + xbGetElementsByName = + function (name, windowRef) + { + if (!windowRef) + { + windowRef = window; + } + return windowRef.document.getElementsByName(name); + }; +} +else +{ + xbGetElementById = + function (id, windowRef) + { + return null; + }; + + xbGetElementsByName = + function (name, windowRef) + { + return new Array(); + }; +} + +function xbGetPageScrollX(windowRef) +{ + if (!windowRef) + { + windowRef = window; + } + + if (typeof(windowRef.pageXOffset) == 'number') + { + return windowRef.pageXOffset; + } + + if (typeof(windowRef.document.body && windowRef.document.body.scrollLeft) == 'number') + { + return windowRef.document.body.scrollLeft; + } + + return 0; +} + +function xbGetPageScrollY(windowRef) +{ + if (!windowRef) + { + windowRef = window; + } + + if (typeof(windowRef.pageYOffset) == 'number') + { + return windowRef.pageYOffset; + } + + if (typeof(windowRef.document.body && windowRef.document.body.scrollTop) == 'number') + { + return windowRef.document.body.scrollTop; + } + + return 0; +} + +if (document.layers) +{ + xbSetInnerHTML = + function (element, str) + { + element.document.write(str); + element.document.close(); + }; +} +else +{ + xbSetInnerHTML = function (element, str) + { + if (typeof(element.innerHTML) != 'undefined') + { + element.innerHTML = str; + } + }; +} + +// eof: xbDOM.js diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDebug.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDebug.js new file mode 100644 index 000000000..48fd010cb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbDebug.js @@ -0,0 +1,311 @@ +/* + * xbDebug.js + * $Revision: 1.2 $ $Date: 2003/02/07 16:04:19 $ + */ + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (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.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Netscape code. + * + * The Initial Developer of the Original Code is + * Netscape Corporation. + * Portions created by the Initial Developer are Copyright (C) 2001 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Bob Clary + * + * ***** END LICENSE BLOCK ***** */ + +/* +ChangeLog: + +2002-02-25: bclary - modified xbDebugTraceOject to make sure + that original versions of wrapped functions were not + rewrapped. This had caused an infinite loop in IE. + +2002-02-07: bclary - modified xbDebug.prototype.close to not null + the debug window reference. This can cause problems with + Internet Explorer if the page is refreshed. These issues will + be addressed at a later date. +*/ + +function xbDebug() +{ + this.on = false; + this.stack = new Array(); + this.debugwindow = null; + this.execprofile = new Object(); +} + +xbDebug.prototype.push = function () +{ + this.stack[this.stack.length] = this.on; + this.on = true; +} + +xbDebug.prototype.pop = function () +{ + this.on = this.stack[this.stack.length - 1]; + --this.stack.length; +} + +xbDebug.prototype.open = function () +{ + if (this.debugwindow && !this.debugwindow.closed) + this.close(); + + this.debugwindow = window.open('about:blank', 'DEBUGWINDOW', 'height=400,width=600,resizable=yes,scrollbars=yes'); + this.debugwindow.moveTo(0,0); + window.focus(); + + this.debugwindow.document.write('xbDebug Window

    Javascript Debug Window

    '); +} + +xbDebug.prototype.close = function () +{ + if (!this.debugwindow) + return; + + if (!this.debugwindow.closed) + this.debugwindow.close(); + + // bc 2002-02-07, other windows may still hold a reference to this: this.debugwindow = null; +} + +xbDebug.prototype.dump = function (msg) +{ + if (!this.on) + return; + + if (!this.debugwindow || this.debugwindow.closed) + this.open(); + + this.debugwindow.document.write(msg + '
    '); + + return; +} + +var xbDEBUG = new xbDebug(); + +window.onunload = function () { xbDEBUG.close(); } + +function xbDebugGetFunctionName(funcref) +{ + + if (!funcref) + { + return ''; + } + + if (funcref.name) + return funcref.name; + + var name = funcref + ''; + name = name.substring(name.indexOf(' ') + 1, name.indexOf('(')); + funcref.name = name; + + if (!name) alert('name not defined'); + return name; +} + + +// emulate functionref.apply for IE mac and IE win < 5.5 +function xbDebugApplyFunction(funcname, funcref, thisref, argumentsref) +{ + var rv; + + if (!funcref) + { + alert('xbDebugApplyFunction: funcref is null'); + } + + if (typeof(funcref.apply) != 'undefined') + return funcref.apply(thisref, argumentsref); + + var applyexpr = 'thisref.xbDebug_orig_' + funcname + '('; + var i; + + for (i = 0; i < argumentsref.length; i++) + { + applyexpr += 'argumentsref[' + i + '],'; + } + + if (argumentsref.length > 0) + { + applyexpr = applyexpr.substring(0, applyexpr.length - 1); + } + + applyexpr += ')'; + + return eval(applyexpr); +} + +function xbDebugCreateFunctionWrapper(scopename, funcname, precall, postcall) +{ + var wrappedfunc; + var scopeobject = eval(scopename); + var funcref = scopeobject[funcname]; + + scopeobject['xbDebug_orig_' + funcname] = funcref; + + wrappedfunc = function () + { + var rv; + + precall(scopename, funcname, arguments); + rv = xbDebugApplyFunction(funcname, funcref, scopeobject, arguments); + postcall(scopename, funcname, arguments, rv); + return rv; + }; + + if (typeof(funcref.constructor) != 'undefined') + wrappedfunc.constructor = funcref.constuctor; + + if (typeof(funcref.prototype) != 'undefined') + wrappedfunc.prototype = funcref.prototype; + + scopeobject[funcname] = wrappedfunc; +} + +function xbDebugCreateMethodWrapper(contextname, classname, methodname, precall, postcall) +{ + var context = eval(contextname); + var methodref = context[classname].prototype[methodname]; + + context[classname].prototype['xbDebug_orig_' + methodname] = methodref; + + var wrappedmethod = function () + { + var rv; + // eval 'this' at method run time to pick up reference to the object's instance + var thisref = eval('this'); + // eval 'arguments' at method run time to pick up method's arguments + var argsref = arguments; + + precall(contextname + '.' + classname, methodname, argsref); + rv = xbDebugApplyFunction(methodname, methodref, thisref, argsref); + postcall(contextname + '.' + classname, methodname, argsref, rv); + return rv; + }; + + return wrappedmethod; +} + +function xbDebugPersistToString(obj) +{ + var s = ''; + + if (obj == null) + return 'null'; + + switch(typeof(obj)) + { + case 'number': + return obj; + case 'string': + return '"' + obj + '"'; + case 'undefined': + return 'undefined'; + case 'boolean': + return obj + ''; + } + + if (obj.constructor) + return '[' + xbDebugGetFunctionName(obj.constructor) + ']'; + + return null; +} + +function xbDebugTraceBefore(scopename, funcname, funcarguments) +{ + var i; + var s = ''; + var execprofile = xbDEBUG.execprofile[scopename + '.' + funcname]; + if (!execprofile) + execprofile = xbDEBUG.execprofile[scopename + '.' + funcname] = { started: 0, time: 0, count: 0 }; + + for (i = 0; i < funcarguments.length; i++) + { + s += xbDebugPersistToString(funcarguments[i]); + if (i < funcarguments.length - 1) + s += ', '; + } + + xbDEBUG.dump('enter ' + scopename + '.' + funcname + '(' + s + ')'); + execprofile.started = (new Date()).getTime(); +} + +function xbDebugTraceAfter(scopename, funcname, funcarguments, rv) +{ + var i; + var s = ''; + var execprofile = xbDEBUG.execprofile[scopename + '.' + funcname]; + if (!execprofile) + xbDEBUG.dump('xbDebugTraceAfter: execprofile not created for ' + scopename + '.' + funcname); + else if (execprofile.started == 0) + xbDEBUG.dump('xbDebugTraceAfter: execprofile.started == 0 for ' + scopename + '.' + funcname); + else + { + execprofile.time += (new Date()).getTime() - execprofile.started; + execprofile.count++; + execprofile.started = 0; + } + + for (i = 0; i < funcarguments.length; i++) + { + s += xbDebugPersistToString(funcarguments[i]); + if (i < funcarguments.length - 1) + s += ', '; + } + + xbDEBUG.dump('exit ' + scopename + '.' + funcname + '(' + s + ')==' + xbDebugPersistToString(rv)); +} + +function xbDebugTraceFunction(scopename, funcname) +{ + xbDebugCreateFunctionWrapper(scopename, funcname, xbDebugTraceBefore, xbDebugTraceAfter); +} + +function xbDebugTraceObject(contextname, classname) +{ + var classref = eval(contextname + '.' + classname); + var p; + var sp; + + if (!classref || !classref.prototype) + return; + + for (p in classref.prototype) + { + sp = p + ''; + if (typeof(classref.prototype[sp]) == 'function' && (sp).indexOf('xbDebug_orig') == -1) + { + classref.prototype[sp] = xbDebugCreateMethodWrapper(contextname, classname, sp, xbDebugTraceBefore, xbDebugTraceAfter); + } + } +} + +function xbDebugDumpProfile() +{ + var p; + var execprofile; + var avg; + + for (p in xbDEBUG.execprofile) + { + execprofile = xbDEBUG.execprofile[p]; + avg = Math.round ( 100 * execprofile.time/execprofile.count) /100; + xbDEBUG.dump('Execution profile ' + p + ' called ' + execprofile.count + ' times. Total time=' + execprofile.time + 'ms. Avg Time=' + avg + 'ms.'); + } +} diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbLibrary.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbLibrary.js new file mode 100644 index 000000000..9bbfd6b14 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/browser/xbLibrary.js @@ -0,0 +1,80 @@ +/* + * xbLibrary.js + * $Revision: 1.3 $ $Date: 2003/03/17 03:44:20 $ + */ + +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (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.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Bob Clary code. + * + * The Initial Developer of the Original Code is + * Bob Clary. + * Portions created by the Initial Developer are Copyright (C) 2000 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): Bob Clary + * + * ***** END LICENSE BLOCK ***** */ + +if (!document.getElementById || navigator.userAgent.indexOf('Opera') != -1) +{ + // assign error handler for downlevel browsers + // Note until Opera improves it's overall support + // for JavaScript and the DOM, it must be considered downlevel + + window.onerror = defaultOnError; + + function defaultOnError(msg, url, line) + { + // handle bug in NS6.1, N6.2 + // where an Event is passed to error handlers + if (typeof(msg) != 'string') + { + msg = 'unknown error'; + } + if (typeof(url) != 'string') + { + url = document.location; + } + + alert('An error has occurred at ' + url + ', line ' + line + ': ' + msg); + } +} + +function xbLibrary(path) +{ + if (path.charAt(path.length-1) == '/') + { + path = path.substr(0, path.length-1) + } + this.path = path; +} + +// dynamically loaded scripts +// +// it is an error to reference anything from the dynamically loaded file inside the +// same script block. This means that a file can not check its dependencies and +// load the files for it's own use. someone else must do this. + +xbLibrary.prototype.loadScript = +function (scriptName) +{ + document.write(' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + overlaySetup('ll'); + + + + + + init( + + ); + + overlaySetup('ll'); + + + + + + +
    + +
    +
    + +
    + + + + +
    + logo +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + javascript:body.focus() + + + + + + + + + <body class="frameset"> + <xsl:call-template name="body.attributes"/> + <p> + <xsl:text>Your browser doesn't support frames.</xsl:text> + </p> + </body> + + + + + + + + + + + + + + + + + + Navigation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Body + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Navigation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + newPage(' + + ', + + ); + + + + + overlaySetup('lc'); + + + + + + + this.focus() + + + navigate(event) + + + +
    + +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + foilgroup + + + + + + + javascript:body.focus() + + + + + + <body class="frameset"> + <xsl:call-template name="body.attributes"/> + <p> + <xsl:text>Your browser doesn't support frames.</xsl:text> + </p> + </body> + + + + + + + foilgroup + + + + + + + + + + + + + + + + Navigation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + foilgroup + + + + + + + + + + + Body + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + foilgroup + + + + + + + + + + + + + + + + Navigation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + newPage(' + + ', + + ); + + + + + overlaySetup('lc'); + + + + + + + + navigate(event) + + + +
    + + + + + + + + + +
    + + + + + + +
    + + +
    + + + position:absolute;visibility:visible; + + + + + + + + +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + javascript:body.focus() + + + + + + + + + <body class="frameset"> + <xsl:call-template name="body.attributes"/> + <p> + <xsl:text>Your browser doesn't support frames.</xsl:text> + </p> + </body> + + + + + + + + + + + + + + + + + + + + + Navigation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Body + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Navigation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + newPage(' + + ', + + ); + + + + + overlaySetup('lc'); + + + + + + + navigate(event) + + + +
    + + + + + + + + + +
    + +
    + + +
    + + + position:absolute;visibility:visible; + + + + + + + + +
    +
    +
    + + + +
    + + + + + + + +
    + + + + + + + foilgroup + + + + +
    + - + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    + - + + + + + + + + + + + + + + +
    +
    + + + + + + + + + myList.addItem(' + + <div id=" + + " class="toc-slidesinfo"> + + <a href=" + + " target="foil"> + + + + + + + + + + + + + ' + \' + + + <\/a><\/div> + '); + + + + + + + + subList = new List(false, width, height, " + +"); + subList.setIndent(12); + + + myList.addList(subList, ' + + <div id=" + + " class="toc-foilgroup"> + + <a href=" + + " target="foil"> + + + + + + + + + + + + + ' + \' + + + <\/a><\/div> + '); + + + + + + + + subList.addItem(' + + + myList.addItem(' + + + + <div id=" + + " class="toc-foil"> + + <img alt="-" src=" + + "><\/img> + + <a href=" + + " target="foil"> + + + + + + + + + + + + + ' + \' + + + <\/a><\/div> + '); + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/graphics.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/graphics.xsl new file mode 100644 index 000000000..b682acdfb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/graphics.xsl @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + / + + + + / + + + http://docbook.sourceforge.net/release/slides/graphics/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/jscript.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/jscript.xsl new file mode 100644 index 000000000..ae4ef9fdf --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/jscript.xsl @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + / + + + + / + + + http://docbook.sourceforge.net/release/slides/browser/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xml new file mode 100644 index 000000000..84cf19693 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xml @@ -0,0 +1,1376 @@ + + + +Slides HTML Parameter Reference + +$Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $ + + + + Walsh + Norman + + + + 2002 + Norman Walsh + + + This is reference documentation for all user-configurable + parameters in the DocBook XSL Slides HTML stylesheet (for + generating HTML slide presentations). Note that the Slides + stylesheet for HTML output is a customization layer of the + DocBook XSL HTML stylesheet. Therefore, in addition to the + slides-specific parameters listed in this section, you can + also use a number of HTML + stylesheet parameters to control Slides HTML + output. + + + +HTML: General Parameters + + +keyboard.nav +boolean + + +keyboard.nav +Enable keyboard navigation? + + + + +<xsl:param name="keyboard.nav" select="1"></xsl:param> + + + +Description + +If non-zero, JavaScript is added to the slides to enable keyboard +navigation. Pressing 'n', space, or return moves forward; pressing 'p' moves +backward. + + + + + + +css.stylesheet +uri + + +css.stylesheet +CSS stylesheet for slides + + + + +<xsl:param name="css.stylesheet">slides.css</xsl:param> + + + +Description + +Identifies the CSS stylesheet used by all the slides. This parameter +can be set in the source document with the <?dbhtml?> pseudo-attribute +css-stylesheet. + + + + + + +css.stylesheet.dir +uri + + +css.stylesheet.dir +Default directory for CSS stylesheets + + + + +<xsl:param name="css.stylesheet.dir"></xsl:param> + + + +Description + +Identifies the default directory for the CSS stylesheet +generated on all the slides. This parameter can be set in the source +document with the <?dbhtml?> pseudo-attribute +css-stylesheet-dir. + +If non-empty, this value is prepended to each of the stylesheets. + + + + + + + +titlefoil.html +filename + + +titlefoil.html +Name of title foil HTML file + + + + +<xsl:param name="titlefoil.html" select="concat('index', $html.ext)"></xsl:param> + + + +Description + +Sets the filename used for the slides titlepage. + + + + + + +toc.html +filename + + +toc.html +Name of ToC HTML file + + + + +<xsl:param name="toc.html" select="concat('toc', $html.ext)"></xsl:param> + + + +Description + +Sets the filename used for the table of contents page. + + + + + + +foilgroup.toc +boolean + + +foilgroup.toc +Put ToC on foilgroup pages? + + + + +<xsl:param name="foilgroup.toc" select="1"></xsl:param> + + + +Description + +If non-zero, a ToC will be placed on foilgroup pages (after any +other content). + + + + + + + +output.indent +list +no +yes + + +output.indent +Indent output? + + + + +<xsl:param name="output.indent">no</xsl:param> + + + +Description + +Specifies the setting of the indent +parameter on the HTML slides. For more information, see the discussion +of the xsl:output element in the XSLT specification. +Select from yes or no. + + + + + + +overlay +boolean + + +overlay +Overlay footer navigation? + + + + +<xsl:param name="overlay" select="0"></xsl:param> + + + +Description + +If non-zero, JavaScript is added to the slides to make the +bottom navigation appear at the bottom of each page. This option and +multiframe are mutually exclusive. + +If this parameter is zero, the bottom navigation simply appears +below the content of each slide. + + + + + + +show.foil.number +boolean + + +show.foil.number +Show foil number on each foil? + + + + +<xsl:param name="show.foil.number" select="0"></xsl:param> + + + +Description + +If non-zero, on each slide there will be its number. Currently +not supported in all output formats. + + + + + + +HTML: Frames Parameters + + +nav.separator +boolean + + +nav.separator +Output separator between navigation and body? + + + + +<xsl:param name="nav.separator" select="1"></xsl:param> + + + +Description + +If non-zero, a separator (<HR>) is +added between the navigation links and the content of each slide. + + + + + + +toc.row.height +length + + +toc.row.height +Height of ToC rows in dynamic ToCs + + + + +<xsl:param name="toc.row.height">22</xsl:param> + + + +Description + +This parameter specifies the height of each row in the table of +contents. This is only applicable if a dynamic ToC is used. You may want to +adjust this parameter for optimal appearance with the font and image +sizes selected by your CSS +stylesheet. + + + + + + + +toc.bg.color +color + + +toc.bg.color +Background color for ToC frame + + + + +<xsl:param name="toc.bg.color">#FFFFFF</xsl:param> + + + +Description + +Specifies the background color used in the ToC frame. + + + + + + +body.bg.color +color + + +body.bg.color +Background color for body frame + + + + +<xsl:param name="body.bg.color">#FFFFFF</xsl:param> + + + +Description + +Specifies the background color used in the body column of +tabular slides. + + + + + + +toc.width +length + + +toc.width +Width of ToC frame + + + + +<xsl:param name="toc.width">250</xsl:param> +<!-- Presumably in pixels? --> + + + +Description + +Specifies the width of the ToC frame in pixels. + + + + + + +toc.hide.show +boolean + + +toc.hide.show +Enable hide/show button for ToC frame + + + + +<xsl:param name="toc.hide.show" select="0"></xsl:param> + + + +Description + +If non-zero, JavaScript (and an additional icon, see +hidetoc.image and +showtoc.image) is added to each slide +to allow the ToC panel to be toggled on each panel. + +There is a bug in Mozilla 1.0 (at least as of CR3) that causes +the browser to reload the titlepage when this feature is used. + + + + + + +dynamic.toc +boolean + + +dynamic.toc +Dynamic ToCs? + + + + +<xsl:param name="dynamic.toc" select="0"></xsl:param> + + + +Description + +If non-zero, JavaScript is used to make the ToC panel dynamic. +In a dynamic ToC, each section in the ToC can be expanded and collapsed by +clicking on the appropriate image. + + + + + + +active.toc +boolean + + +active.toc +Active ToCs? + + + + +<xsl:param name="active.toc" select="0"></xsl:param> + + + +Description + +If non-zero, JavaScript is used to keep the ToC and the current slide +in sync. That is, each time the slide changes, the corresponding +ToC entry will be underlined. + + + + + + +overlay.logo +uri + + +overlay.logo +Logo to overlay on ToC frame + + + + +<xsl:param name="overlay.logo">http://docbook.sourceforge.net/release/buttons/slides-1.png</xsl:param> + + + +Description + +If this URI is non-empty, JavaScript is used to overlay the +specified image on the ToC frame. + + + + + + +multiframe +boolean + + +multiframe +Use multiple frames for slide bodies? + + + + +<xsl:param name="multiframe" select="0"></xsl:param> + + + +Description + +If non-zero, multiple frames are used for the body of each +slide. This is one way of forcing the slide navigation elements to +appear in constant locations. The other way is with overlays. The overlay and +multiframe parameters are mutually +exclusive. + + + + + + +multiframe.top.bgcolor +color + + +multiframe.top.bgcolor +Background color for top navigation frame + + + + +<xsl:param name="multiframe.top.bgcolor">white</xsl:param> + + + +Description + +Specifies the background color of the top navigation frame when +multiframe is enabled. + + + + + + +multiframe.bottom.bgcolor +color + + +multiframe.bottom.bgcolor +Background color for bottom navigation frame + + + + +<xsl:param name="multiframe.bottom.bgcolor">white</xsl:param> + + + +Description + +Specifies the background color of the bottom navigation frame when +multiframe is enabled. + + + + + + +multiframe.navigation.height +length + + +multiframe.navigation.height +Height of navigation frames + + + + +<xsl:param name="multiframe.navigation.height">40</xsl:param> + + + +Description + +Specifies the height of the navigation frames in pixels when +multiframe is enabled. + + + + + + +HTML: Graphics Parameters + + +graphics.dir +uri + + +graphics.dir +Graphics directory + + + + +<xsl:param name="graphics.dir"></xsl:param> + + + +Description + +Identifies the graphics directory for the navigation components +generated on all the slides. This parameter can be set in the source +document with the <?dbhtml?> pseudo-attribute +graphics-dir. + +If non-empty, this value is prepended to each of the graphic +image paths. + + + + + + +bullet.image +filename + + +bullet.image +Bullet image + + + + +<xsl:param name="bullet.image">toc/bullet.png</xsl:param> + + + +Description + +Specifies the filename of the bullet image used for foils in the +framed ToC. + + + + + + +next.image +filename + + +next.image +Right-arrow image + + + + +<xsl:param name="next.image">active/nav-next.png</xsl:param> + + + +Description + +Specifies the filename of the right-pointing navigation arrow. + + + + + + +prev.image +filename + + +prev.image +Left-arrow image + + + + +<xsl:param name="prev.image">active/nav-prev.png</xsl:param> + + + +Description + +Specifies the filename of the left-pointing navigation arrow. + + + + + + +up.image +filename + + +up.image +Up-arrow image + + + + +<xsl:param name="up.image">active/nav-up.png</xsl:param> + + + +Description + +Specifies the filename of the upward-pointing navigation arrow. + + + + + + +home.image +filename + + +home.image +Home image + + + + +<xsl:param name="home.image">active/nav-home.png</xsl:param> + + + +Description + +Specifies the filename of the home navigation icon. + + + + + + +toc.image +filename + + +toc.image +ToC image + + + + +<xsl:param name="toc.image">active/nav-toc.png</xsl:param> + + + +Description + +Specifies the filename of the ToC navigation icon. + + + + + + + +no.next.image +filename + + +no.next.image +Inactive right-arrow image + + + + +<xsl:param name="no.next.image">inactive/nav-next.png</xsl:param> + + + +Description + +Specifies the filename of the inactive right-pointing navigation arrow. + + + + + + +no.prev.image +filename + + +no.prev.image +Inactive left-arrow image + + + + +<xsl:param name="no.prev.image">inactive/nav-prev.png</xsl:param> + + + +Description + +Specifies the filename of the inactive left-pointing navigation arrow. + + + + + + +no.up.image +filename + + +no.up.image +Inactive up-arrow image + + + + +<xsl:param name="no.up.image">inactive/nav-up.png</xsl:param> + + + +Description + +Specifies the filename of the inactive upward-pointing navigation arrow. + + + + + + +no.home.image +filename + + +no.home.image +Inactive home image + + + + +<xsl:param name="no.home.image">inactive/nav-home.png</xsl:param> + + + +Description + +Specifies the filename of the inactive home navigation icon. + + + + + + +no.toc.image +filename + + +no.toc.image +Inactive ToC image + + + + +<xsl:param name="no.toc.image">inactive/nav-toc.png</xsl:param> + + + +Description + +Specifies the filename of the inactive ToC navigation icon. + + + + + + + +plus.image +filename + + +plus.image +Plus image + + + + +<xsl:param name="plus.image">toc/closed.png</xsl:param> + + + +Description + +Specifies the filename of the plus image; the image used in a +dynamic ToC to indicate that a section +can be expanded. + + + + + + +minus.image +filename + + +minus.image +Minus image + + + + +<xsl:param name="minus.image">toc/open.png</xsl:param> + + + +Description + +Specifies the filename of the minus image; the image used in a +dynamic ToC to indicate that a section +can be collapsed. + + + + + + +hidetoc.image +filename + + +hidetoc.image +Hide ToC image + + + + +<xsl:param name="hidetoc.image">hidetoc.gif</xsl:param> + + + +Description + +Specifies the filename of the hide ToC image. This is used +when the ToC hide/show parameter is +enabled. + + + + + + +showtoc.image +filename + + +showtoc.image +Show ToC image + + + + +<xsl:param name="showtoc.image">showtoc.gif</xsl:param> + + + +Description + +Specifies the filename of the show ToC image. This is used +when the ToC hide/show parameter is +enabled. + + + + + + +HTML: JavaScript Parameters + + +script.dir +uri + + +script.dir +Script directory + + + + +<xsl:param name="script.dir"></xsl:param> + + + +Description + +Identifies the JavaScript source directory for the slides. +This parameter can be set in the source +document with the <?dbhtml?> pseudo-attribute +script-dir. + +If non-empty, this value is prepended to each of the JavaScript files. + + + + + + + +ua.js +filename + + +ua.js +UA JavaScript file + + + + +<xsl:param name="ua.js">ua.js</xsl:param> + + + +Description + +Specifies the filename of the UA JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + + + + +xbDOM.js +filename + + +xbDOM.js +xbDOM JavaScript file + + + + +<xsl:param name="xbDOM.js">xbDOM.js</xsl:param> + + + +Description + +Specifies the filename of the xbDOM JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + + + + +xbStyle.js +filename + + +xbStyle.js +xbStyle JavaScript file + + + + +<xsl:param name="xbStyle.js">xbStyle.js</xsl:param> + + + +Description + +Specifies the filename of the xbStyle JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + + + + +xbLibrary.js +filename + + +xbLibrary.js +xbLibrary JavaScript file + + + + +<xsl:param name="xbLibrary.js">xbLibrary.js</xsl:param> + + + +Description + +Specifies the filename of the xbLibrary JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + + + + +xbCollapsibleLists.js +filename + + +xbCollapsibleLists.js +xbCollapsibleLists JavaScript file + + + + +<xsl:param name="xbCollapsibleLists.js">xbCollapsibleLists.js</xsl:param> + + + +Description + +Specifies the filename of the xbCollapsibleLists JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + + + + +overlay.js +filename + + +overlay.js +Overlay JavaScript file + + + + +<xsl:param name="overlay.js">overlay.js</xsl:param> + + + +Description + +Specifies the filename of the overlay JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + + + + +slides.js +filename + + +slides.js +Slides overlay file + + + + +<xsl:param name="slides.js">slides.js</xsl:param> + + + +Description + +Specifies the filename of the slides JavaScript file. It's unlikely +that you will ever need to change this parameter. + + + + + + +HTML: Localization Parameters + + +text.home +string + + +text.home +Home + + + + +<xsl:param name="text.home">Home</xsl:param> + + + +Description + +FIXME: + + + + + + +text.toc +string + + +text.toc +FIXME: + + + + +<xsl:param name="text.toc">ToC</xsl:param> + + + +Description + +FIXME: + + + + + + +text.prev +string + + +text.prev +FIXME: + + + + +<xsl:param name="text.prev">Prev</xsl:param> + + + +Description + +FIXME: + + + + + + +text.up +string + + +text.up +FIXME: + + + + +<xsl:param name="text.up">Up</xsl:param> + + + +Description + +FIXME: + + + + + + +text.next +string + + +text.next +FIXME: + + + + +<xsl:param name="text.next">Next</xsl:param> + + + +Description + +FIXME: + + + + + + + +The Stylesheet + +The param.xsl stylesheet is just a wrapper +around all these parameters. + + + +<!-- This file is generated from param.xweb --> + +<xsl:stylesheet exclude-result-prefixes="src" version="1.0"> + +<!-- ******************************************************************** + $Id: param.xweb 6633 2007-02-21 18:33:33Z xmldoc $ + ******************************************************************** + + This file is part of the DocBook Slides Stylesheet distribution. + See ../README or http://docbook.sf.net/release/xsl/current/ for + copyright and other information. + + ******************************************************************** --> + +<src:fragref linkend="active.toc.frag"></src:fragref> +<src:fragref linkend="body.bg.color.frag"></src:fragref> +<src:fragref linkend="bullet.image.frag"></src:fragref> +<src:fragref linkend="css.stylesheet.frag"></src:fragref> +<src:fragref linkend="css.stylesheet.dir.frag"></src:fragref> +<src:fragref linkend="dynamic.toc.frag"></src:fragref> +<src:fragref linkend="foilgroup.toc.frag"></src:fragref> +<src:fragref linkend="graphics.dir.frag"></src:fragref> +<src:fragref linkend="hidetoc.image.frag"></src:fragref> +<src:fragref linkend="home.image.frag"></src:fragref> +<src:fragref linkend="keyboard.nav.frag"></src:fragref> +<src:fragref linkend="minus.image.frag"></src:fragref> +<src:fragref linkend="multiframe.bottom.bgcolor.frag"></src:fragref> +<src:fragref linkend="multiframe.frag"></src:fragref> +<src:fragref linkend="multiframe.navigation.height.frag"></src:fragref> +<src:fragref linkend="multiframe.top.bgcolor.frag"></src:fragref> +<src:fragref linkend="nav.separator.frag"></src:fragref> +<src:fragref linkend="next.image.frag"></src:fragref> +<src:fragref linkend="no.home.image.frag"></src:fragref> +<src:fragref linkend="no.next.image.frag"></src:fragref> +<src:fragref linkend="no.prev.image.frag"></src:fragref> +<src:fragref linkend="no.toc.image.frag"></src:fragref> +<src:fragref linkend="no.up.image.frag"></src:fragref> +<src:fragref linkend="output.indent.frag"></src:fragref> +<src:fragref linkend="overlay.frag"></src:fragref> +<src:fragref linkend="overlay.js.frag"></src:fragref> +<src:fragref linkend="overlay.logo.frag"></src:fragref> +<src:fragref linkend="plus.image.frag"></src:fragref> +<src:fragref linkend="prev.image.frag"></src:fragref> +<src:fragref linkend="script.dir.frag"></src:fragref> +<src:fragref linkend="show.foil.number.frag"></src:fragref> +<src:fragref linkend="showtoc.image.frag"></src:fragref> +<src:fragref linkend="slides.js.frag"></src:fragref> +<src:fragref linkend="text.home.frag"></src:fragref> +<src:fragref linkend="text.next.frag"></src:fragref> +<src:fragref linkend="text.prev.frag"></src:fragref> +<src:fragref linkend="text.toc.frag"></src:fragref> +<src:fragref linkend="text.up.frag"></src:fragref> +<src:fragref linkend="titlefoil.html.frag"></src:fragref> +<src:fragref linkend="toc.bg.color.frag"></src:fragref> +<src:fragref linkend="toc.hide.show.frag"></src:fragref> +<src:fragref linkend="toc.html.frag"></src:fragref> +<src:fragref linkend="toc.image.frag"></src:fragref> +<src:fragref linkend="toc.row.height.frag"></src:fragref> +<src:fragref linkend="toc.width.frag"></src:fragref> +<src:fragref linkend="ua.js.frag"></src:fragref> +<src:fragref linkend="up.image.frag"></src:fragref> +<src:fragref linkend="xbCollapsibleLists.js.frag"></src:fragref> +<src:fragref linkend="xbDOM.js.frag"></src:fragref> +<src:fragref linkend="xbStyle.js.frag"></src:fragref> +<src:fragref linkend="xbLibrary.js.frag"></src:fragref> + +</xsl:stylesheet> + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xsl new file mode 100644 index 000000000..7dad0bc33 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/param.xsl @@ -0,0 +1,68 @@ + + + + + + + +#FFFFFF +toc/bullet.png +slides.css + + + + +hidetoc.gif +active/nav-home.png + +toc/open.png +white + +40 +white + +active/nav-next.png +inactive/nav-home.png +inactive/nav-next.png +inactive/nav-prev.png +inactive/nav-toc.png +inactive/nav-up.png +no + +overlay.js +http://docbook.sourceforge.net/release/buttons/slides-1.png +toc/closed.png +active/nav-prev.png + + +showtoc.gif +slides.js +Home +Next +Prev +ToC +Up + +#FFFFFF + + +active/nav-toc.png +22 +250 + +ua.js +active/nav-up.png +xbCollapsibleLists.js +xbDOM.js +xbStyle.js +xbLibrary.js + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/plain.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/plain.xsl new file mode 100644 index 000000000..47224da36 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/plain.xsl @@ -0,0 +1,472 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/slides-common.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/slides-common.xsl new file mode 100644 index 000000000..985416406 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/slides-common.xsl @@ -0,0 +1,1541 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + titlepage + + - + + + + + + + + overlaySetup('lc') + + + + + navigate(event) + + + +
    + + + + + +
    + +
    + +
    + + + + + +
    +
    + + +
    +
    +
    + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +
    + + + + + + +

    +
    + + +

    +
    + + +

    +
    + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="slidesinfo/title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + overlaySetup('lc') + + + + + navigate(event) + + + +
    + + + + + + + +
    + +
    + +
    + + + + + + + +
    +
    + + +
    +
    +
    + + +

    + + + +

    + +

    + + + TableofContents + + +

    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + . + + + + + + +
    + +
    +
    + +
    +
    +
    +
    + + +
    + + . + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + overlaySetup('lc') + + + + + navigate(event) + + + +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + + + + +
    +
    + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + overlaySetup('lc') + + + + + navigate(event) + + + +
    + + + + + + + + + +
    + + + + + + +
    + +
    + + + + + + + +
    +
    + + + + +
    +
    + + +
    + + +

    +
    + + + + + + + + + + + +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + position: absolute; visibility: visible; + + + + padding-top: 2in; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + foil + + + + + + foilgroup + + + + + + + + + + + + </span> + + + <span + + class="green" + class="blue" + class="orange" + class="red" + class="brown" + class="violet" + class="black" + class="bold" + + > + + + + + + + + +
    + +
    +
    +
    + + + + + + + + + copyright + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + + +
    + + +
    +
    + + + + + + + + + + + + + + + + 1 + 1 + 1 + 0 + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + + + + + + foil + + + + + + + + + + + foilgroup + + + + + + chunk-filename-error- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + +   + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/tables.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/tables.xsl new file mode 100644 index 000000000..046252854 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/tables.xsl @@ -0,0 +1,336 @@ + + + + + + + + +#6A719C +220 + + + + + + + + + + + + +
    + + + + + +
    + +
    +
      + + + + + +
    + +
    + + +
    + +
    +
    +
    +
    + + + + + + + + +
    + + + + + +
    + +
    +
      + + + + + +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + +
    + + + +  + + + + + + +  + + + + + + + + + + + + + + + +
    +
    +
    +
    + +  + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + + + + + + + +  + + + + + + + + + + + + + + +
    + + + +  + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + +  + + + + + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/vslides.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/vslides.xsl new file mode 100644 index 000000000..f4900995e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/vslides.xsl @@ -0,0 +1,667 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="slidesinfo/title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + navigate(event) + + + + + + + + + + + + + + + + + + +
     
    + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + +
    +
     
    + + +
    +
    + + +
    + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + navigate(event) + + + + + + + + + + + + + + + + + + +
     
    + + + + + + + + + + + + + + + + + + +
    + +
    +
     
    + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + navigate(event) + + + + + + + + + + + + + + + + + + +
     
    + + + + + + + + + + + + + + + + + + + +
    + +
    +
     
    + + +
    +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + navigate(event) + + + + + + + + + + + + + + + + + + +
     
    + + + + + + + + + + + + + + + + + + + +
    + +
    +
     
    + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + First + + + + + + + + + + First + + + + + + + + +
    + + + + + + + Previous + + + + + + + + + + Previous + + + + + + + + +
    + + + + + + + Last + + + + + + + + + + Last + + + + + + + + +
    + + + + + + + Next + + + + + + + + + + Next + + + + + + + + + +
    +
    + + + + + ToC + + + + + + + + + + ToC + + + + + + + + +
    +
    + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/w3c.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/w3c.xsl new file mode 100644 index 000000000..5a5b42025 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/html/w3c.xsl @@ -0,0 +1,376 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {$logo.title} + + + + + + + + + + position: absolute; visibility: visible; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/htmlhelp/htmlhelp.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/htmlhelp/htmlhelp.xsl new file mode 100644 index 000000000..4a6b370df --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/htmlhelp/htmlhelp.xsl @@ -0,0 +1,89 @@ + + '> +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • &lf; + &lf; + + + + + +
  • &lf; +
    + +
      &lf; + +
    &lf; +
    +
    + + + + + + + + + + + + + + + +
  • &lf; + &lf; + + + + + +
  • &lf; +
    +
    + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/default.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/default.xsl new file mode 100644 index 000000000..7ff90b11f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/default.xsl @@ -0,0 +1,600 @@ + + + + + + + + + Keynote Slides + + + Steve + Ball + + Zveno +
    + + zveno.com + +
    +
    +
    + + $Id: default.xsl 3991 2004-11-10 06:51:55Z balls $ + + + 2004 + 2003 + Steve Ball, Zveno Pty Ltd + + + + Zveno Pty Ltd makes this software and associated documentation available free of charge for any purpose. You may make copies of the software but you must include all of this notice on any copy. + Zveno Pty Ltd does not warrant that this software is error free or fit for any purpose. Zveno Pty Ltd disclaims any liability for all claims, expenses, losses, damages and costs any user may incur as a result of using, copying or modifying the software. + +
    +
    + + + + + + + + + + + + + + + + You must specify your slides document using the "slides" parameter + + + + + + + + + + + + + + + + + + + </drawables> + <transition-style type='inherited'/> + <thumbnails> + <thumbnail file='thumbs/st0.tiff' byte-size='6520' size='60 45'/> + </thumbnails> + <bullets> + <bullet marker-type='inherited' level='0'> + <content tab-stops='L 96' font-size='84' font-color='g1' font-name='GillSans' paragraph-alignment='center'> + <xsl:apply-templates select='slidesinfo/title/node()'/> + </content> + </bullet> + <xsl:choose> + <xsl:when test='slidesinfo/subtitle'> + <bullet marker-type='inherited' level='1'> + <content tab-stops='L 96' font-size='36' font-color='g1' font-name='GillSans' paragraph-alignment='center'> + <xsl:apply-templates select='slidesinfo/subtitle/node()' mode='slides'/> + </content> + </bullet> + </xsl:when> + <xsl:when test='slidesinfo/corpauthor'> + <bullet marker-type='inherited' level='1'> + <content tab-stops='L 96' font-size='36' font-color='g1' font-name='GillSans' paragraph-alignment='center'> + <xsl:apply-templates select='slidesinfo/corpauthor/node()' mode='slides'/> + </content> + </bullet> + </xsl:when> + <xsl:when test='slidesinfo/author'> + <bullet marker-type='inherited' level='1'> + <content tab-stops='L 96' font-size='36' font-color='g1' font-name='GillSans' paragraph-alignment='center'> + <xsl:apply-templates select='slidesinfo/author' mode='slides'/> + </content> + </bullet> + </xsl:when> + </xsl:choose> + </bullets> + <notes font-size='18' font-name='LucidaGrande'> + <xsl:apply-templates select='slidesinfo/*[not(self::title|self::subtitle|self::corpauthor|self::author)]' mode='slides'/> + </notes> + </slide> + + <xsl:if test='foilgroup'> + <xsl:call-template name='overview'/> + </xsl:if> + + <xsl:apply-templates select='foilgroup|foil' mode='slides'/> + </xsl:template> + + <xsl:template name='overview'> + <xsl:param name='current' select='/'/> + + <slide id='overview-{generate-id()}' master-slide-id="{$masters/apxl:master-slide[@name=$overview-master]/@id}"> + <drawables> + <body visibility='tracks-master' vertical-alignment='tracks-master'/> + <title visibility='tracks-master' vertical-alignment='tracks-master'/> + + <xsl:for-each select='ancestor-or-self::slides/foilgroup'> + <textbox id='textbox-{position()}' grow-horizontally='true' transformation='1 0 0 1 {100 + floor((position() - 1) div 10) * 400} {200 + floor((position() - 1) mod 10) * 50}' size='200 50'> + <content tab-stops='L 84' font-size='36' paragraph-alignment='left'> + <xsl:attribute name='font-color'> + <xsl:choose> + <xsl:when test='generate-id() = generate-id($current)'> + <xsl:text>1 0.5 0</xsl:text> + </xsl:when> + <xsl:otherwise>g1</xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <xsl:apply-templates select='title' mode='slides'/> + </content> + </textbox> + </xsl:for-each> + + </drawables> + <transition-style type='inherited'/> + <thumbnails> + <thumbnail file='thumbs/st0.tiff' byte-size='6520' size='60 45'/> + </thumbnails> + <bullets> + <bullet marker-type='inherited' level='0'> + <content tab-stops='L 96' font-size='84' font-color='g1' font-name='GillSans' paragraph-alignment='center'>Overview</content> + </bullet> + </bullets> + </slide> + </xsl:template> + + <xsl:template match='author' mode='slides'> + <xsl:apply-templates select='firstname/node()' mode='slides'/> + <xsl:text> </xsl:text> + <xsl:apply-templates select='surname/node()' mode='slides'/> + </xsl:template> + <xsl:template match='copyright' mode='slides'> + <xsl:text>Copyright (c) </xsl:text> + <xsl:value-of select='year'/> + <xsl:text> </xsl:text> + <xsl:apply-templates select='holder' mode='slides'/> + <xsl:text>. </xsl:text> + </xsl:template> + + <xsl:template match='foilgroup' mode='slides'> + <xsl:variable name='number' select='count(preceding-sibling::foilgroup) + count(preceding::foil) + 1'/> + + <xsl:call-template name='overview'> + <xsl:with-param name='current' select='.'/> + </xsl:call-template> + + <slide id='foilgroup-{generate-id()}'> + <xsl:attribute name='master-slide-id'> + <xsl:choose> + <xsl:when test='*[not(self::foil|self::foilgroupinfo|self::speakernotes)]'> + <xsl:value-of select='$masters/apxl:master-slide[@name=$title-only-master]/@id'/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select='$masters/apxl:master-slide[@name=$foilgroup-master]/@id'/> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + + <drawables> + <title visibility='tracks-master' vertical-alignment='tracks-master'/> + <body visibility='hidden' vertical-alignment='tracks-master'/> + <xsl:call-template name='drawables'/> + </drawables> + <transition-style type='inherited'/> + <thumbnails> + <thumbnail file='thumbs/st0.tiff' byte-size='6520' size='60 45'/> + </thumbnails> + <bullets> + <bullet marker-type='inherited' level='0'> + <content tab-stops='L 96' font-size='84' font-color='g1' font-name='GillSans' paragraph-alignment='center'> + <xsl:apply-templates select='title' mode='slides'/> + </content> + </bullet> + + <xsl:apply-templates select='itemizedlist/listitem' mode='slides'/> + </bullets> + <xsl:if test='speakernotes'> + <notes font-size='18' font-name='LucidaGrande'> + <xsl:apply-templates select='speakernotes/para[1]/node()' mode='slides'/> + <xsl:for-each select='speakernotes/para[position() != 1]'> + <xsl:text>; </xsl:text> + <xsl:apply-templates select='node()' mode='slides'/> + </xsl:for-each> + </notes> + </xsl:if> + </slide> + + <xsl:apply-templates select='foil' mode='slides'/> + + </xsl:template> + + <xsl:template match='foil' mode='slides'> + <xsl:variable name='number' select='count(preceding::foilgroup) + count(preceding::foil) + count(preceding-sibling::foil) + 1'/> + + <slide id='foil-{generate-id()}'> + <xsl:attribute name='master-slide-id'> + <xsl:choose> + <xsl:when test='imageobject'> + <xsl:value-of select='$masters/apxl:master-slide[@name=$title-only-master]/@id'/> + </xsl:when> + <xsl:when test='itemizedlist[.//imageobject]'> + <xsl:value-of select='$masters/apxl:master-slide[@name=$bullet-and-image-master]/@id'/> + </xsl:when> + <xsl:when test='itemizedlist'> + <xsl:value-of select='$masters/apxl:master-slide[@name=$bullet-master]/@id'/> + </xsl:when> + <xsl:when test='example|informalexample'> + <xsl:value-of select='$masters/apxl:master-slide[@name=$title-only-master]/@id'/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select='$masters/apxl:master-slide[@name=$bullet-master]/@id'/> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <drawables> + <body visibility='tracks-master' vertical-alignment='tracks-master'/> + <title visibility='tracks-master' vertical-alignment='tracks-master'/> + <xsl:call-template name='drawables'/> + </drawables> + <transition-style type='inherited'/> + <thumbnails> + <thumbnail file='thumbs/st0.tiff' byte-size='6520' size='60 45'/> + </thumbnails> + <bullets> + <bullet marker-type='inherited' level='0'> + <content tab-stops='L 96' font-size='64' font-color='g1' font-name='GillSans' paragraph-alignment='inherited'> + <!-- + <xsl:apply-templates select='../title' mode='slides'/> + <xsl:text>: </xsl:text> +--> + <xsl:apply-templates select='title' mode='slides'/> + </content> + </bullet> + <xsl:apply-templates select='itemizedlist/listitem' mode='slides'/> + </bullets> + <xsl:if test='speakernotes'> + <notes font-size='18' font-name='LucidaGrande'> + <xsl:apply-templates select='speakernotes/para[1]/node()' mode='slides'/> + <xsl:for-each select='speakernotes/para[position() != 1]'> + <xsl:text>; </xsl:text> + <xsl:apply-templates select='node()' mode='slides'/> + </xsl:for-each> + </notes> + </xsl:if> + </slide> + </xsl:template> + + <doc:template xmlns=''> + <title>drawables Template + + This template adds objects to the drawables section of a foil. These include images, as well as unadorned (non-bullet) text. + + A single image is placed centered on the foil. An image on a foil that contains other text is placed on the right-hand-side. + + + + + + + + + 1.0 + video/quicktime + + + + + + + + + + + + + + + + + + {800, 400} + + + + + + + + + + + + + + + + + + + + {0, 300} + + + + + {150, 300} + + + + + {0, 200} + + + + + {150, 200} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]]> + + + + ]]> + + + + + + + + + + + + + + + + + + + + <![CDATA[ + + + + + + + + + + + + + + + GillSans-Italic + GillSans + + + + + + + + + + + + + " + “ + + + + + + ]]> + ]] > + + + + + + + + + + + + + + + + < + < + + + + + + + ]]> + ]] > + + + + + + + + + + + + + + + + + + + 20 + 0 + + + + + + + + + + + + + + + + + + + + + + + + AmericanTypewriter-CondensedBoldItalic + + + GillSans-BoldItalic + + + AmericanTypewriter-CondensedItalic + + + GillSans-Italic + + + AmericanTypewriter-CondensedBold + + + GillSans-Bold + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/cmp.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/cmp.xsl new file mode 100644 index 000000000..6e2866d66 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/cmp.xsl @@ -0,0 +1,348 @@ + + + + + + + + $Id: cmp.xsl 6297 2006-09-14 01:32:27Z xmldoc $ + + + Hummel + Mark + + + 2003 + Mark Hummel + + + + XML Compare + + +
    + Introduction + + This module provides a template for comparing two xml documents. + +
    +
    + +
    + + + + Find differences + + + Compare two xml documents and display differences. Two xml documents are defined to be the same if: They have the matching elements and attributes, and that the data in the elements also match. The comparison is order sensitive. + + The element names from the documents at the current depth are compared, followed by their values, then any attribute names and values are compared. The process is applied then to the subtrees of the documents. + + Notes: If there are leaf nodes in one nodeset which don't exist in the other, the value of those 'extra' elements won't appear as a difference. + + + + + + + ns1 + ns2 + + The two nodesets which are to be compared. + + + + + + + Returns the difference between the documents. + + The format of the output is an xml document. A node is added to the result tree for every difference. The node contains the type of difference (e.g element name difference, attribute value difference, etc), the value in the first nodeset and the value in the second nodeset, and the parent node. The indentation level is the depth at which the difference was found relative to the first document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + node[]: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Compare + + + Recursively compare two xml nodesets, stop when a difference is found and return false. Otherwise return true if the document is identical. + + The element names from the documents at the current depth are compared, followed by their values, then any attribute names and values are compared. The process is applied then to the subtrees of the documents. + + Notes: If there are leaf nodes in one nodeset which don't exist in the other, the value of those 'extra' elements won't appear as a difference. + + + + + + + ns1 + ns2 + + The two nodesets which are to be compared. + + + + + + + False when the nodesets are not identical, empty otherwise. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/date-time.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/date-time.xsl new file mode 100644 index 000000000..671260d0a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/date-time.xsl @@ -0,0 +1,1524 @@ + + + + + + + $Id: date-time.xsl 3991 2004-11-10 06:51:55Z balls $ + + + Diamond + Jason + + + 2004 + Steve Ball + + + 2001 + Jason Diamond + + + + Date/Time Processing + + +
    + Introduction + + This module provides templates for formatting and parsing date/time strings. + + See http://www.tondering.dk/claus/calendar.html for more information on calendars and the calculations this library performs. + +
    +
    + +
    + + + Returns a string with a formatted date/time. + + + The formatted date/time is determined by the format parameter. The default format is %Y-%m-%dT%H:%M:%S%z, the W3C format. + + + + + + + xsd-date-time + + The date-time value in XML Schemas (WXS) format. + If this value is specified, it takes priority over other parameters. + + + + + year + + Year, in either 2 or 4+ digit format.. + If the year is given as a two digit value, it will be converted to a four digit value using the fixed window method. Values between 00 and 49 will be prepended by "20". Values between 50 and 99 will be prepended by "19". + + + + + month + + Month (1 - 12; January = 1) + + + + + day + + Day of month (1 - 31) + + + + + hour + + Hours since midnight (0 - 23) + + + + + minute + + Minutes after hour (0 - 59) + + + + + second + + Seconds after minute (0 - 59) + + + + + time-zone + + Time zone string (e.g., 'Z' or '-08:00') + + + + + format + + The format specification. + + + + %a + + Abbreviated weekday name + + + + + %A + + Full weekday name + + + + + %b + + Abbreviated month name + + + + + %B + + Full month name + + + + + %c + + Date and time representation appropriate for locale + + + + + %d + + Day of month as decimal number (01 - 31) + + + + + %e + + Day of month as decimal number (1 - 31) + + + + + %H + + Hour in 24-hour format (00 - 23) + + + + + %I + + Hour in 12-hour format (01 - 12) + + + + + %i + + Hour in 12-hour format (1 - 12) + + + + + %j + + Day of year as decimal number (001 - 366) + + + + + %m + + Month as decimal number (01 - 12) + + + + + %n + + Month as decimal number (1 - 12) + + + + + %M + + Minute as decimal number (00 - 59) + + + + + %P + + Current locale's A.M./P.M. indicator for 12-hour clock, uppercase + + + + + %Q + + Current locale's A.M./P.M. indicator for 12-hour clock, uppercase with periods + + + + + %p + + Current locale's A.M./P.M. indicator for 12-hour clock, lowercase + + + + + %q + + Current locale's A.M./P.M. indicator for 12-hour clock, lowercase with periods + + + + + %S + + Second as decimal number (00 - 59) + + + + + %U + + Week of year as decimal number, with Sunday as first day of week (00 - 53) + + + + + %w + + Weekday as decimal number (0 - 6; Sunday is 0) + + + + + %W + + Week of year as decimal number, with Monday as first day of week (00 - 53) + + + + + %x + + Date representation for current locale + + + + + %X + + Time representation for current locale + + + + + %y + + Year without century, as decimal number (00 - 99) + + + + + %Y + + Year with century, as decimal number + + + + + %z + + Time-zone name or abbreviation; no characters if time zone is unknown + + + + + %% + + Percent sign + + + + + + + + + + + + Returns a formatted date/time string. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + % + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [not implemented] + + + + + 0 + + + + + + + + + + 0 + + + + + + + 12 + 0 + + 0 + + + + + + + 12 + + + + + + + + + + [not implemented] + + + + + 0 + + + + + + + + + + 0 + + + + + + + am + pm + + + + + + am + p.m. + + + + + + AM + PM + + + + + + AM + P.M. + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [not implemented] + + + + + [not implemented] + + + + + + invalid year value + + + 00 + + + + + + + + + + + invalid year value + + + + + + + + + invalid year value + + + + + + + + + + + % + + + + + + + + + + + + + + + + + + + + + + + Calculates the day of the week. + + + Given any Gregorian date, this calculates the day of the week. + + + + + + year + + Year + + + + month + + Month (1 - 12; January = 1) + + + + day + + Day of month (1 - 31) + + + + + + + Returns the day of the week (0 - 6; Sunday = 0). + + + + + + + + + + + + + + + + + + + Calculates the number of days for a specified month. + + + Given any Gregorian month, this calculates the last day of the month. + + + + + + year + + Year + + + + month + + Month (1 - 12; January = 1) + + + + + + + Returns the number of days in given month as a decimal number. + + + + + + + + + + + 29 + 28 + + + + + 30 + 31 + + + + + 30 + 31 + + + + + + + Gets the day of the week's full name. + + + Converts a numeric day of the week value into a string representing the day's full name. + + + + + + day-of-the-week + + Day of the week (0 - 6; Sunday = 0) + + + + + + + Returns a string. + + + + + + + + + Sunday + Monday + Tuesday + Wednesday + Thursday + Friday + Saturday + error: + + + + + + Gets the day of the week's abbreviation. + + + Converts a numeric day of the week value into a string representing the day's abbreviation. + + + + + + day-of-the-week + + Day of the week (0 - 6; Sunday = 0) + + + + + + + Returns a string. + + + + + + + + + Sun + Mon + Tue + Wed + Thu + Fri + Sat + error: + + + + + + Gets the month's full name. + + + Converts a numeric month value into a string representing the month's full name. + + + + + + month + + Month (1 - 12; Januaray = 1) + + + + + + + Returns a string. + + + + + + + + + January + February + March + April + May + June + July + August + September + October + November + December + error: + + + + + + Gets the month's abbreviation. + + + Converts a numeric month value into a string representing the month's abbreviation. + + + + + + month + + Month (1 - 12; Januaray = 1) + + + + + + + Returns a string. + + + + + + + + + Jan + Feb + Mar + Apr + May + Jun + Jul + Aug + Sep + Oct + Nov + Dec + error: + + + + + + Calculates the Julian Day for a specified date. + + + Given any Gregorian date, this calculates the Julian Day. + + + + + + year + + Year + + + + month + + Month (1 - 12; January = 1) + + + + day + + Day of month (1 - 31) + + + + + + + Returns the Julian Day as a decimal number. + + + + + + + + + + + + + + + + + + + Returns a string with a formatted date for a specified Julian Day. + + + Given any Julian Day, this returns a string according to the format specification. + + + + + + julian-day + + A Julian Day + + + + format + + The format specification. See dt:format-date-time for more details. + + + + + + + A string. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Calculates the week number for a specified date. + + + Assumes Monday is the first day of the week. + + + + + + year + + Year + + + + month + + Month (1 - 12; January = 1) + + + + day + + Day of month (1 - 31) + + + + + + + Returns the week number as a decimal number. + + + + + + + + + + + + + + + + + + + + + + + + + + + Take a month by name and return a number which can be used as input to the templates. + + + Input + + + + + + month + + Month as described either by full name or abbreviation. + + + + + + + Return a month as a decimal number. (Jan = 1) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Return year component of XSD DateTime value. + + + Extract component of XML Schemas DateTime value. + + + + + + xsd-date-time + + A value in XSD DateTime format. + + + + + + + Returns year component. + + + + + + + + + + + + + + + + + + + + + + + + + Return month component of XSD DateTime value. + + + Extract component of XML Schemas DateTime value. + + + + + + xsd-date-time + + A value in XSD DateTime format. + + + + + + + Returns month component. + + + + + + + + + + + + + + + + + + + + + + + + + Return day component of XSD DateTime value. + + + Extract component of XML Schemas DateTime value. + + + + + + xsd-date-time + + A value in XSD DateTime format. + + + + + + + Returns day component. + + + + + + + + + + + + + + + + + + + + + + + + + Return hour component of XSD DateTime value. + + + Extract component of XML Schemas DateTime value. + + + + + + xsd-date-time + + A value in XSD DateTime format. + + + + + + + Returns hour component. + + + + + + + + + + + + + + + + + + + + + + + + + + Return minute component of XSD DateTime value. + + + Extract component of XML Schemas DateTime value. + + + + + + xsd-date-time + + A value in XSD DateTime format. + + + + + + + Returns minute component. + + + + + + + + + + + + + + + + + + + + + + + + + + Return second component of XSD DateTime value. + + + Extract component of XML Schemas DateTime value. + + + + + + xsd-date-time + + A value in XSD DateTime format. + + + + + + + Returns second component. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Return timezone component of XSD DateTime value. + + + Extract component of XML Schemas DateTime value. + + + + + + xsd-date-time + + A value in XSD DateTime format. + + + + + + + Returns timezone component. + + + + + + + + Z + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + Return two digit year as four digit year value. + + + Prepend century to two digit year value. + Century value is calculated according to suggested solutions in RFC2626 (section 5). + Fixed window solution: 20 is prepended to year if the year is less than 50, otherwise 19 is prepended to year. + Sliding window solution: The year is considered in the future if the year is less than the current 2 digit year plus 'n' years (where 'n' is a param), otherwise it is considered in the past. + + + + + + year + + A year value in 2 digit format. + + + + method + + RFC2626 suggested solution ('fixed' or 'sliding'). Default is 'fixed'. + + + + n + + No. of years. Used in sliding windows solution. + + + + + + + Returns four digit year value. + + + + + + + + + invalid year value + + + 20 + 19 + + + + not yet implemented + invalid method + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/example.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/example.xsl new file mode 100644 index 000000000..349bab9e9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/example.xsl @@ -0,0 +1,90 @@ + + + + + + + + $Id: example.xsl 3991 2004-11-10 06:51:55Z balls $ + + + Ball + Steve + + + 2001 + Steve Ball + + + + Example Stylesheet + + +
    + Introduction + + This module provides a template for adding stylesheet modules to the XSLT Standard Library. + To add a new module to the library, follow these easy steps: + + + Copy this file and replace its contents with the new module templates and documentation. + + + Copy the corresponding test file in the test directory. Replace its contents with tests for the new module. + + + Add an include element in the stdlib.xsl stylesheet. + + + Add an entry in the test/test.xml file. + + + Add entries in the test/test.xsl stylesheet. + + + Add an entry in the doc/build.xml file. + + + + The example.xsl stylesheet provides a more extensive example. + +
    +
    + +
    + + + Template Example + + + Provides a template for writing templates. Replace this paragraph with a description of your template + + + + + + text + + The example string + + + + + + + Returns nothing. + + + + + + + +
    + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/markup.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/markup.xsl new file mode 100644 index 000000000..cff2485b7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/markup.xsl @@ -0,0 +1,789 @@ + + + + + + $Id: markup.xsl 3991 2004-11-10 06:51:55Z balls $ + + + Ball + Steve + + + 2003 + 2001 + Steve Ball + + + + XML Markup Templates + + +
    + Introduction + + This stylesheet module provides functions for generating literal XML markup. + +
    +
    + +
    + + + Create an XML Declaration + + + This template returns an XML Declaration. Although the XSLT standard provides control over the generation of the XML Declaration, this template may be useful in circumstances where the values must be computed at runtime. + + + + + + version + + Version number. + + + + standalone + + Standalone indication. Must be value "yes" or "no". + + + + encoding + + Character encoding. + + + + + + + Returns an XML Declaration as a string. + + + + + + + + + <?xml version=" + + " + + + + + standalone=" + + " + + + invalid value "" for standalone attribute + + + + + encoding=" + + " + + + ?> + + + + + Create a Document Type Declaration + + + This template returns a Document Type Declaration. Although the XSLT standard provides control over the generation of a Document Type Declaration, this template may be useful in circumstances where the values for the identifiers or the internal subset must be computed at runtime. + + + + + + docel + + The name of the document element. + + + + publicid + + The public identifier for the external DTD subset. + + + + systemid + + The system identifier for the external DTD subset. + + + + internaldtd + + The internal DTD subset. + + + + + + + Returns a Document Type Declaration as a string. + + + + + + + + + + + No document element specified + + + <!DOCTYPE + + + + + + + + + + [ + + ] + + + > + + + + + Create an Element Declaration + + + This template returns an element declaration.. + + + + + + type + + The element type. + + + + content-spec + + The content specification. + + + + + + + Returns an element declaration as a string. + + + + + + + + + element type must be specified + + + content specification must be specified + + + <!ELEMENT + + + + > + + + + Create an Attribute List Declaration + + + This template returns an attribute list declaration. + + + + + + type + + The element type. + + + + attr-defns + + Attribute definitions. + + + + + + + Returns an attribute list declaration as a string. + + + + + + + + + element type must be specified + + + <!ATTLIST + + + + > + + + + Create an Attribute Definition + + + This template returns an attribute definition. + + + + + + name + + The attribute name. + + + + type + + The attribute type. + + + + default + + The attribute default. + + + + + + + Returns an attribute definition as a string. + + + + + + + + + + attribute name must be specified + + + attribute type must be specified + + + attribute default must be specified + + + + + + + + + + + + Create an Entity Declaration + + + This template returns an entity declaration. + If the 'text' parameter is given a value, then an internal entity is created. If either the 'publicid' or 'systemid' parameters are given a value then an external entity is created. It is an error for the 'text' parameter to have value as well as the 'publicid', 'systemid' or 'notation' parameters. + + + + + + name + + The entity name. + + + + parameter + + Boolean value to determine whether a parameter entity is created. Default is 'false()'. + + + + text + + The replacement text. Must be a string. + + + + nodes + + The replacement text as a nodeset. The nodeset is formatted as XML using the as-xml template. If both text and nodes are specified then nodes takes precedence. + + + + publicid + + The public identifier for an external entity. + + + + systemid + + The system identifier for an external entity. + + + + notation + + The notation for an external entity. + + + + + + + Returns an entity declaration as a string. + + + + + + + + + + + + + + entity name must be specified + + + both replacement text and external identifier specified + + + <!ENTITY + + + + % + + + + + + + + + + + + + + + + + + + + + + + + + + + NDATA " + + " + + + > + + + + Quote an Attribute Value + + + This template returns a quoted value. + + + + + + value + + The value to quote. + + + + + + + Returns a quote value as a string. + + + + + + + + + + + + + + + + + < + + &lt; + + + + + + + + + + + + + + " + ' + + + + " + + + " + + &quot; + + + " + + + ' + + ' + + + " + + " + + + + + + Create an External Identifier + + + This template returns an external identifier. + + + + + + publicid + + The public identifier. + + + + systemid + + The system identifier. + + + + + + + Returns an external identifier as a string. + + + + + + + + + + + + + + PUBLIC " + + " + + " + + " + + + + + + + SYSTEM " + + " + + + + + + Create an Entity Reference + + + This template returns an entity reference. + + + + + + name + + The name of the entity. + + + + + + + Returns an entity reference as a string. + + + + + + + & + + ; + + + + + Create a Notation Declaration + + + This template returns a notation declaration. + + + + + + name + + The notation name. + + + + publicid + + The public identifier for the notation. + + + + systemid + + The system identifier for the notation. + + + + + + + Returns a notation declaration as a string. + + + + + + + + + + notation name must be specified + + + external identifier must be specified + + + <!NOTATION + + + + + + + + + > + + + + Create a CDATA Section + + + This template returns a CDATA Section. The XSLT specification provides a mechanism for instructing the XSL processor to output character data in a CDATA section for certain elements, but this template may be useful in those circumstances where not all instances of an element are to have their content placed in a CDATA section. + + + + + + text + + The content of the CDATA section. + + + + + + + Returns a CDATA section as a string. + + + + + + + + CDATA section contains "]]>" + + + <![CDATA[ + + ]]> + + + + Format Nodeset As XML Markup + + + This template returns XML markup. Each node in the given nodeset is converted to its equivalent XML markup. + + BUG: This version may not adequately handle XML Namespaces. + + + + + + nodes + + Nodeset to format as XML. + + + + + + + Returns XML markup. + + + + + + + + + + < + + + + + = + + + + + + + + > + + + + </ + + > + + + /> + + + + + + + + <!-- + + --> + + + <? + + + + ?> + + + + + + + + + + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/math.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/math.xsl new file mode 100644 index 000000000..e3e14dde2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/math.xsl @@ -0,0 +1,704 @@ + + + + + + + $Id: math.xsl 3991 2004-11-10 06:51:55Z balls $ + + + Ball + Steve + + + 2004 + 2002 + Steve Ball + + + + Math Module + + +
    + Introduction + + This module provides mathematical functions. +
    +
    + +
    + + + Power + + + Raises a number to a power. + + + + + + base + + The base number. Must be a number. + + + + power + + The power to raise the number to. Must be an integer. + + + + + + + Returns base multiplied by itself power times. If the base or power are not numbers or if the power is fractional then an empty string is returned. + + + + + + + + + + 1 + + + 1 + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Absolute Value + + + Absolute value of a number. + + + + + + number + + The number. Must be a number. + + + + + + + Returns the absolute value of the number. + + + + + + + + + + + + + + + + + + Conversion + + + Converts a hexidecimal value to a decimal value. + + + + + + value + + The hexidecimal number. Must be a number in hexidecimal format. + + + + + + + Returns the value as a decimal string. If the value is not a number then a NaN value is returned. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 10 + 11 + 12 + 13 + 14 + 15 + + + + + Conversion + + + Converts a decimal value to a hexidecimal value. + + + + + + value + + The decimal number. + + + + + + + Returns the value as a hexidecimal string (lowercase). If the value is not a number then a NaN value is returned. + + + + + + + + 0 + NaN + + + + + + + + + + a + b + c + d + e + f + + + + + + + + Ordinal number + + + Gives the ordinal number of a given counting number. For example, 1 becomes "1st". + + + + + + number + + An integer number. + + + + + + + Returns the number with an ordinal suffix. + + + + + + + + + + + + th + st + nd + rd + th + + + + + + + + Returns an ordinal number + + + This template returns the ordinal number for a given counting number as a word. For example "first" for 1. + Only handles numbers less than 10000000 (ten million). + + + + + + number + + The counting number. + + + + conjunctive + + Whether to add the word "and" to the result, for example "one hundred and first" rather than "one hundred first". Default is "yes". + + + + + + + Returns the ordinal number as a string. + + + + + + + + + + + zeroth + + + + + and + first + + + and + second + + + and + third + + + and + fourth + + + and + fifth + + + and + sixth + + + and + seventh + + + and + eighth + + + and + ninth + + + and + tenth + + + and + eleventh + + + and + twelveth + + + and + thirteenth + + + and + fourteenth + + + and + fifteenth + + + and + sixteenth + + + and + seventeenth + + + and + eighteenth + + + and + nineteenth + + + and + twentieth + + + and + thirtieth + + + and + fortieth + + + and + fiftieth + + + and + sixtieth + + + and + seventieth + + + and + eightieth + + + and + ninetieth + + + + + + + millionth + + + and + + + + thousandth + + + and + + + + hundredth + + + + + + and + + + + + + + + + + + + + + + + + + + + + + + + + + and + + + + + + + + + + + + + + + + + + + + + + + + + + + and + + + + + + + + + + + + + + + and + + + + + + + + + + + + + + + + + Returns a number as a word + + + This template returns the word for a given integer number, for example "one" for 1. + Only handles numbers less than 10000000 (ten million). + + + + + + number + + The counting number. + + + + conjunctive + + Adds the word "and" where appropriate, for example. + + + + + + + Returns the number as a string. + + + + + + + + + + zero + + + minus + + + + + + + + + + + + million + + + + + + million + + + + + + + + + thousand + + + + + + thousand + and + + + + + + + + + hundred + + + + + + hundred + and + + + + + + one + two + three + four + five + six + seven + eight + nine + ten + eleven + twelve + thirteen + fourteen + fifteen + sixteen + seventeen + eighteen + nineteen + twenty + thirty + forty + fifty + sixty + seventy + eighty + ninety + + + + + + + + + + + + +
    + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/node.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/node.xsl new file mode 100644 index 000000000..bf4fd7f8e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/node.xsl @@ -0,0 +1,229 @@ + + + + + + + + $Id: node.xsl 3991 2004-11-10 06:51:55Z balls $ + + + Ball + Steve + + + 2001 + Steve Ball + + + + Node Templates + + +
    + Introduction + + This stylesheet module provides functions for reporting on or manipulating nodes and nodesets. + +
    +
    + +
    + + + Returns an XPath location path + + + This template returns an XPath location path that uniquely identifies the given node within the document. + + + + + + node + + The node to create an XPath for. If this parameter is given as a nodeset, then the first node in the nodeset is used. + + + + + + + Returns an XPath location path as a string. + + + + + + + + + + + + / + [] + + + + + + /comment() + [] + + + + /processing-instruction() + [] + + + + /text() + [] + + + + / + + + + /namespace:: + + + + /@ + + + + + + + /.. + + + + + + + + Return node type + + + Returns the type of a node as a string. + + + + + + node + + The node to get the type for. If this parameter is given as a nodeset, then the first node in the nodeset is used. + + + + + + + Returns node type as a string. Values returned are: + + + Element + + element + + + + Text Node + + text + + + + Comment + + comment + + + + Processing Instruction + + processing instruction + + + + + + + + + + + + + element + + + text + + + comment + + + processing instruction + + + root + + + namespace + + + attribute + + + + + + Copy Nodes + + + Makes a copy of the given nodes, including attributes and descendants. + + + + + + nodes + + The nodes to copy. + + + + + + + Returns the copied nodes as a result tree fragment. + + + + + + + + + + + + + + + + + + +
    + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/stdlib.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/stdlib.xsl new file mode 100644 index 000000000..c014f13c4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/stdlib.xsl @@ -0,0 +1,340 @@ + + +]> + + + + + + + + + + + + + + + + + + + + XSLT Standard Library + Version &version; + + + + Ball + Steve + + + 2004 + 2002 + Steve Ball + + + + + The XSLT Standard Library, xsltsl, provides the XSLT developer with a set of XSLT templates for commonly used functions. These are implemented purely in XSLT, that is they do not use any extensions. + xsltsl is a SourceForge project. + + + + + + SourceForge Logo + + + Goals of the xsltsl project include: + + + Provision of a high-quality library of XSLT templates, suitable for inclusion by vendors in XSLT processor software products. + + + Demonstration of best practice in XSLT stylesheet development and documentation. + + + Provide examples of various techniques used to develop XSLT stylesheets (ie. a working FAQ). + + + + + + Using The Library + + There are two ways of using the library: + + + Use a local copy of the library. + + + Download the distribution (see below). + + + Unpack the distribution, using either gunzip/tar or unzip. + + + In your stylesheet import or include either the main stylesheet, stdlib.xsl, or the stylesheet module you wish to use, such as string.xsl. This example assumes that the distribution has been extracted into the same directory as your own stylesheet: + + +]]> + + + + + + Import or include either the main stylesheet, or the stylesheet module you wish to use, directly from the library website; http://xsltsl.sourceforge.net/modules/. The modules directory always contains the latest stable release. For example: + + +]]> + + Older versions of the library are available in subdirectories. For example, to access version 1.1 of the library use: + + +]]> + + + + Next, add XML Namespace declarations for the modules you wish to use. For example, to use templates from the string module, your stylesheet should have the following declaration: + + + + +]]> + + Finally, use a template with the call-template element. Most templates require parameters, which are passed using the with-param element. For example: + + + + + a word + another word + + +]]> + + + + + Obtaining The Library + + The XSLT Standard Library is available for download as either: + + + Gzip'd tarball: http://prdownloads.sourceforge.net/xsltsl/xsltsl-&version;.tar.gz + + + Zip file: http://prdownloads.sourceforge.net/xsltsl/xsltsl-&version;.zip + + + + + + Getting Involved + + Contributions to the project are most welcome, and may be in the form of stylesheet modules, patches, bug reports or sample code. Any contributed code must use the LGPL license to be accepted into the library. + + See the SourceForge Project Page http://sourceforge.net/projects/xsltsl/ for information on the development of the project. Bug reports may be submitted here. + + See the project Web Page http://xsltsl.sourceforge.net/ for documentation. + + There are three mailing lists for the project: + + + xsltsl-users@lists.sourceforge.net + + Discussion of the use of xsltsl. + + + + xsltsl-devel@lists.sourceforge.net + + Discussion of the development of xsltsl. + + + + xsltsl-announce@lists.sourceforge.net + + Project announcements. + + + + + + + XML Namespaces + + Apart from the XSLT XML Namespace (http://www.w3.org/1999/XSL/Transform), xsltsl employs a number of XML Namespaces to allow inclusion of the library in developer stylesheets. In addition, documentation is defined in a separate namespace. + Each module is allocated a namespace URI by appending the module name to the URI for the project, http://xsltsl.org/. For example, the string module has the namespace URI http://xsltsl.org/string. + All documentation is written using an extension of DocBook designed for embedding DocBook into XSLT stylesheets. The namespace URI for DocBook embedded in stylesheets is http://xsltsl.org/xsl/documentation/1.0 + + + + Engineering Standards + + In order to maintain a high engineering standard, all modules and contributions to the xsltsl project must adhere to the following coding and documentation standards. Submissions which do not meet (or exceed) this standard will not be accepted. + + + All stylesheets must be indented, with each level indented by two spaces. NB. a simple stylesheet could be used to enforce/fix this. + + + Templates are named using a qualified name (QName). The namespace URI for the template's containing stylesheet is assigned as above. + + + Parameters for templates should use sensible names. Where possible (or if in doubt), follow these conventions: + + + A parameter containing a single node is named node. Where more than one parameter contains a single node, the suffix Node is appended to the parameter name, eg. referenceNode + + + A parameter which potentially contains multiple nodes is named nodes. Where more than one parameter potentially contains multiple nodes, the suffix Nodes is appended to the parameter name, eg. copyNodes + + + A parameter which contains a string value is named text. + + + + + All templates in each stylesheet must be documented. A template is documented as a DocBook RefEntry. + + + Every stylesheet must include a test suite. The test system is in the test subdirectory. See test/test.html for further details. + + + + An example stylesheet has been provided, which acts as a template for new stylesheet modules. + + + + + Related Work + + The EXSLT project is creating a library to standardise extension functions. The XSLT Standard Library is complementary to the EXSLT project. + + + + + Reference Documentation + + Reference documentation is available for each module. + +
    + String Processing + + + + string.xsl + + +
    + +
    + Nodes + + + + node.xsl + + +
    + +
    + Date/Time Processing + + + + date-time.xsl + + +
    + +
    + Mathematics + + + + math.xsl + + +
    + +
    + URI (Uniform Resource Identifier) Processing + + + + uri.xsl + + +
    + +
    + Comparing Nodesets + + + + cmp.xsl + + +
    + +
    + Generating XML Markup + + + + markup.xsl + + +
    + +
    + Presentation Media Support + + + + Scalable Vector Graphics: svg.xsl + + + +
    + +
    + Example + + + + + + example.xsl + + +
    +
    + +
    + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/string.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/string.xsl new file mode 100644 index 000000000..e7eef8bfe --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/string.xsl @@ -0,0 +1,1233 @@ + + + + + + + + $Id: string.xsl 3991 2004-11-10 06:51:55Z balls $ + + + Ball + Steve + + + 2002 + 2001 + Steve Ball + + + + String Processing + + +
    + Introduction + + This module provides templates for manipulating strings. + +
    +
    + +
    + + + + + + + + + + + + + Make string uppercase + + + Converts all lowercase letters to uppercase. + + + + + + text + + The string to be converted + + + + + + + Returns string with all uppercase letters. + + + + + + + + + + + + + + ß + + + S + S + + + + + + + + + Make string lowercase + + + Converts all uppercase letters to lowercase. + + + + + + text + + The string to be converted + + + + + + + Returns string with all lowercase letters. + + + + + + + + + + + Capitalise string + + + Converts first character of string to an uppercase letter. All remaining characters are converted to lowercase. + + + + + + text + + The string to be capitalised + + + + all + + Boolean controlling whether all words in the string are capitalised. + Default is true. + + + + + + + Returns string with first character uppcase and all remaining characters lowercase. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Convert a string to one camelcase word + + + Converts a string to one lowerCamelCase or UpperCamelCase + word, depending on the setting of the "upper" + parameter. UpperCamelCase is also called MixedCase while + lowerCamelCase is also called just camelCase. The template + removes any spaces, tabs and slashes, but doesn't deal with + other punctuation. It's purpose is to convert strings like + "hollow timber flush door" to a term suitable as identifier or + XML tag like "HollowTimberFlushDoor". + + + + + + + text + + The string to be capitalised + + + + upper + + Boolean controlling whether the string becomes an + UpperCamelCase word or a lowerCamelCase word. + Default is true. + + + + + + + Returns string with first character uppcase and all remaining characters lowercase. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + String extraction + + + Extracts the portion of string 'text' which occurs before any of the characters in string 'chars'. + + + + + + text + + The string from which to extract a substring. + + + + chars + + The string containing characters to find. + + + + + + + Returns string. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + String extraction + + + Extracts the portion of string 'text' which occurs after the last of the character in string 'chars'. + + + + + + text + + The string from which to extract a substring. + + + + chars + + The string containing characters to find. + + + + + + + Returns string. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + String extraction + + + Extracts the portion of string 'text' which occurs before the first character of the last occurance of string 'chars'. + + + + + + text + + The string from which to extract a substring. + + + + chars + + The string containing characters to find. + + + + + + + Returns string. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + String substitution + + + Substitute 'replace' for 'with' in string 'text'. + + + + + + text + + The string upon which to perform substitution. + + + + replace + + The string to substitute. + + + + with + + The string to be substituted. + + + + disable-output-escaping + + A value of yes indicates that the result should have output escaping disabled. Any other value allows normal escaping of text values. The default is to enable output escaping. + + + + + + + Returns string. + + + + + + + + no + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Count Substrings + + + Counts the number of times a substring occurs in a string. This can also counts the number of times a character occurs in a string, since a character is simply a string of length 1. + + + + Counting Lines + + + + +]]> + + + + + + text + + The source string. + + + + chars + + The substring to count. + + + + + + + Returns a non-negative integer value. + + + + + + + + + + 0 + + + + + + + + + + + + 0 + + + + + + String extraction + + Extracts the portion of a 'char' delimited 'text' string "array" at a given 'position'. + + + + + text + + The string from which to extract a substring. + + + + chars + + delimiters + + + + position + + position of the elements + + + + all + + If true all of the remaining string is returned, otherwise only the element at the given position is returned. Default: false(). + + + + + + Returns string. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + String extraction + + Extracts the portion of a 'char' delimited 'text' string "array" at a given 'position' + + + + + text + + The string from which to extract a substring. + + + + chars + + delimiters + + + + position + + position of the elements + + + + + + Returns string. + + + + + + + + + + + + + + + + + + + + + + + + + + + String insertion + + Insert 'chars' into "text' at any given "position' + + + + + text + + The string upon which to perform insertion + + + + position + + the position where insertion will be performed + + + + with + + The string to be inserted + + + + + + Returns string. + + + + + + + + + + + + + + + + + String reversal + + + Reverse the content of a given string + + + + + + text + + The string to be reversed + + + + + + + Returns string. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Format a string + + + Inserts newlines and spaces into a string to format it as a block of text. + + + + + + text + + String to be formatted. + + + + max + + Maximum line length. + + + + indent + + Number of spaces to insert at the beginning of each line. + + + + justify + + Justify left, right or both. Not currently implemented (fixed at "left"). + + + + + + + Formatted block of text. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Find first occurring character in a string + + + Finds which of the given characters occurs first in a string. + + + + + + text + + The source string. + + + + chars + + The characters to search for. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Match A String To A Pattern + + + Performs globbing-style pattern matching on a string. + + + + Match Pattern + + + + +]]> + + + + + + text + + The source string. + + + + pattern + + The pattern to match against. Certain characters have special meaning: + + + * + + Matches zero or more characters. + + + + ? + + Matches a single character. + + + + \ + + Character escape. The next character is taken as a literal character. + + + + + + + + + + Returns "1" if the string matches the pattern, "0" otherwise. + + + + + + + + + + + 1 + + + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + 0 + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + 1 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + Create A Repeating Sequence of Characters + + + Repeats a string a given number of times. + + + + + + text + + The string to repeat. + + + + count + + The number of times to repeat the string. + + + + + + + + + + + + + + + + + + + + + + +
    + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/svg.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/svg.xsl new file mode 100644 index 000000000..1254ab929 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/svg.xsl @@ -0,0 +1,177 @@ + + + + + + + + + $Id: svg.xsl 3991 2004-11-10 06:51:55Z balls $ + + + Ball + Steve + + + 2002 + Steve Ball + + + + SVG Stylesheet + + +
    + Introduction + + This module provides templates for creating SVG images. +
    +
    +
    + + + Aqua-style Button + + + Part of the mechanism to create an Aqua-style button. Include a call to this template in your SVG document's defs element. This template only needs to be included once. Use this in conjunction with svg:aqua-button. + + The default values for color1, color2 and color3 result in a grey button. + + + + + + prefix + + A prefix to append to the identifiers used, so that they don't clash with other identifiers. Default: "aqua-". + + + + color1 + + The base colour of the button. Default: "#d9d9d9". + + + + color2 + + A "background" colour for the button. Should be a darker colour than color1. Default: "#a9a9a9". + + + + color3 + + A highlight colour for the button. Should be a lighter colour than color1. Default: "#f9f9f9". + + + + + + + Returns SVG result-tree-fragment. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Aqua-style Button + + + Part of the mechanism to create an Aqua-style button. Include a call to this template in your SVG document where you want a button to appear. This template can be used many times in a single SVG document. Use this in conjunction with svg:aqua-button-defs. + + + + + + prefix + + A prefix to append to the identifiers used, so that they don't clash with other identifiers. Default: "aqua-". + + + + + + + Returns SVG result-tree-fragment. + + + + + + + + + + + + + + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl new file mode 100644 index 000000000..df1f738da --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/keynote/xsltsl/uri.xsl @@ -0,0 +1,580 @@ + + + + + + + + $Id: uri.xsl 3991 2004-11-10 06:51:55Z balls $ + + + Diamond + Jason + + + 2001 + Jason Diamond + + + + URI (Uniform Resource Identifier) Processing + + +
    + Introduction + This module provides templates for processing URIs (Uniform Resource Identifers). +
    +
    + +
    + + + Determines if a URI is absolute or relative. + + + Absolute URIs start with a scheme (like "http:" or "mailto:"). + + + + + + uri + + An absolute or relative URI. + + + + + + + Returns 'true' if the URI is absolute or '' if it's not. + + + + + + + + + + + + + + Gets the scheme part of a URI. + + + The ':' is not part of the scheme. + + + + + + uri + + An absolute or relative URI. + + + + + + + Returns the scheme (without the ':') or '' if the URI is relative. + + + + + + + + + + + + Gets the authority part of a URI. + + + The authority usually specifies the host machine for a resource. It always follows '//' in a typical URI. + + + + + + uri + + An absolute or relative URI. + + + + + + + Returns the authority (without the '//') or '' if the URI has no authority. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets the path part of a URI. + + + The path usually comes after the '/' in a URI. + + + + + + uri + + An absolute or relative URI. + + + + + + + Returns the path (with any leading '/') or '' if the URI has no path. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Gets the query part of a URI. + + + The query comes after the '?' in a URI. + + + + + + uri + + An absolute or relative URI. + + + + + + + Returns the query (without the '?') or '' if the URI has no query. + + + + + + + + + + + + + + + + + + + Gets the fragment part of a URI. + + + The fragment comes after the '#' in a URI. + + + + + + uri + + An absolute or relative URI. + + + + + + + Returns the fragment (without the '#') or '' if the URI has no fragment. + + + + + + + + + + + + Resolves a URI reference against a base URI. + + + This template follows the guidelines specified by RFC 2396. + + + + + + reference + + A (potentially relative) URI reference. + + + + base + + The base URI. + + + + document + + The URI of the current document. This defaults to the value of the base URI if not specified. + + + + + + + The "combined" URI. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/svg/default.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/svg/default.xsl new file mode 100644 index 000000000..86ea1338c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/svg/default.xsl @@ -0,0 +1,686 @@ + + + + + + + SVG Slides + + + Steve + Ball + + Zveno +
    + + zveno.com + +
    +
    +
    + + $Id: default.xsl 6567 2007-01-30 06:43:18Z xmldoc $ + + + 2002 + Steve Ball, Zveno Pty Ltd + + + + Zveno Pty Ltd makes this software and associated documentation available free of charge for any purpose. You may make copies of the software but you must include all of this notice on any copy. + Zveno Pty Ltd does not warrant that this software is error free or fit for any purpose. Zveno Pty Ltd disclaims any liability for all claims, expenses, losses, damages and costs any user may incur as a result of using, copying or modifying the software. + +
    +
    + + + + + + + + + slides.css + graphics + + white + + Arial + white + black + + + + + + + + preserve + 100% + + font-family: ; font-size: 18pt; fill: ; stroke: ; background-color: + + + + font-size: 24pt; font-weight: bold + + + font-size: 18pt + + + font-size: 18pt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + href=" + + " type="text/css" + + + + + + + + + + + + + + + + title + + + + + + + + + + + + + title.click + + + foil1-previous-button.click; + + + + + + + + + + + + + + toc + + + + + + + + + + title.click + + + + + + toc.click; toc-content.click + + + + + + + + + + + + + + 50 + + 75 + + + + + + title.click + + + + + + toc.click; toc-content.click + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + index-foilgroup- + + + + + + #ff8000 + #ff8000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + toc + + + + + + + + + + + + index-foilgroup-1.click; toc.click; toc-content.click + + + index-foilgroup- + + .click; foil + + .click + + + + + + + + + + + + + + + 50 + + 75 + + + + + + + + index-foilgroup-1.click; toc.click; toc-content.click + + + index-foilgroup- + + .click; foil + + .click + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + TOC + + + + + + + + + + + + + Previous + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + title.click + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + font-weight: bold + + + font-style: italic + + + font-style: italic + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/css.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/css.xsl new file mode 100644 index 000000000..d0b47c6fb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/css.xsl @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + / + + + + / + + + http://docbook.sourceforge.net/release/slides/browser/ + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/default.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/default.xsl new file mode 100644 index 000000000..86f2cb39f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/default.xsl @@ -0,0 +1,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hide/Show TOC + + + + + toggletoc(this, + + ,' + + ',' + + '); + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/flat.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/flat.xsl new file mode 100644 index 000000000..e0c57e92f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/flat.xsl @@ -0,0 +1,71 @@ + + + + + + + + + + + <xsl:value-of select="/slides/slidesinfo/title"/> + + + + + + + + + + + + +
    +
    + +
    +
    +
    + + + + + + + + + + +
    +
    + +
    + +
    +
    + + + + + + +
    +
    + +
    + +
    + + +
    + + +
    +

    + + +
    +
    + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/frames.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/frames.xsl new file mode 100644 index 000000000..aea4172e6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/frames.xsl @@ -0,0 +1,1982 @@ + + + + + + + + + + + + + + + + + + + + + -//W3C//DTD HTML 4.01 Frameset//EN + + + + + + + + + + -//W3C//DTD XHTML 1.0 Frameset//EN + + + -//W3C//DTD XHTML 1.0 Transitional//EN + + + + + + + + + + + + + + http://www.w3.org/TR/html4/loose.dtd + + + + + + + + + + http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd + + + http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd + + + + + + + + + + + + + + + + + + + + + + + + + Multiframe and overlay are mutually exclusive. + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="$title"/> + + + + + + <body class="frameset"> + <xsl:call-template name="body.attributes"/> + <a href="{concat('titleframe', $html.ext)}"> + <xsl:text>Your browser doesn't support frames.</xsl:text> + </a> + </body> + + + + + + + + + + + + + TOC - <xsl:value-of select="$title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + overlaySetup('ll'); + + + + + + init( + + ); + + overlaySetup('ll'); + + + + + + +
    + +
    +
    + +
    + + + + +
    + logo +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + javascript:body.focus() + + + + + + + + + <body class="frameset"> + <xsl:call-template name="body.attributes"/> + <p> + <xsl:text>Your browser doesn't support frames.</xsl:text> + </p> + </body> + + + + + + + + + + + + + + + + + + Navigation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Body + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Navigation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + newPage(' + + ', + + ); + + + + + overlaySetup('lc'); + + + + + + + this.focus() + + + navigate(event) + + + +
    + +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + foilgroup + + + + + + + javascript:body.focus() + + + + + + <body class="frameset"> + <xsl:call-template name="body.attributes"/> + <p> + <xsl:text>Your browser doesn't support frames.</xsl:text> + </p> + </body> + + + + + + + foilgroup + + + + + + + + + + + + + + + + Navigation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + foilgroup + + + + + + + + + + + Body + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + foilgroup + + + + + + + + + + + + + + + + Navigation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + newPage(' + + ', + + ); + + + + + overlaySetup('lc'); + + + + + + + + navigate(event) + + + +
    + + + + + + + + + +
    + + + + + + +
    + + +
    + + + position:absolute;visibility:visible; + + + + + + + + +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + javascript:body.focus() + + + + + + + + + <body class="frameset"> + <xsl:call-template name="body.attributes"/> + <p> + <xsl:text>Your browser doesn't support frames.</xsl:text> + </p> + </body> + + + + + + + + + + + + + + + + + + + + + Navigation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Body + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Navigation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + newPage(' + + ', + + ); + + + + + overlaySetup('lc'); + + + + + + + navigate(event) + + + +
    + + + + + + + + + +
    + +
    + + +
    + + + position:absolute;visibility:visible; + + + + + + + + +
    +
    +
    + + + +
    + + + + + + + + + + + + + + + foilgroup + + + + +
    + - + + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    + - + + + + + + + + + + + + + + +
    +
    + + + + + + + + + myList.addItem(' + + <div id=" + + " class="toc-slidesinfo"> + + <a href=" + + " target="foil"> + + + + + + + + + + + + + ' + \' + + + <\/a><\/div> + '); + + + + + + + + + subList = new List(false, width, height, " + +"); + + subList.setIndent(12); + + + + myList.addList(subList, ' + + <div id=" + + " class="toc-foilgroup"> + + <a href=" + + " target="foil"> + + + + + + + + + + + + + ' + \' + + + <\/a><\/div> + '); + + + + + + + + + subList.addItem(' + + + myList.addItem(' + + + + <div id=" + + " class="toc-foil"> + + <img alt="-" src=" + + "><\/img> + + <a href=" + + " target="foil"> + + + + + + + + + + + + + ' + \' + + + <\/a><\/div> + '); + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/graphics.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/graphics.xsl new file mode 100644 index 000000000..6317a4bc9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/graphics.xsl @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + + + / + + + + / + + + http://docbook.sourceforge.net/release/slides/graphics/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/jscript.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/jscript.xsl new file mode 100644 index 000000000..b3047ee23 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/jscript.xsl @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + / + + + + / + + + http://docbook.sourceforge.net/release/slides/browser/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/param.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/param.xsl new file mode 100644 index 000000000..c3ec806cd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/param.xsl @@ -0,0 +1,70 @@ + + + + + + + + + +#FFFFFF +toc/bullet.png +slides.css + + + + +hidetoc.gif +active/nav-home.png + +toc/open.png +white + +40 +white + +active/nav-next.png +inactive/nav-home.png +inactive/nav-next.png +inactive/nav-prev.png +inactive/nav-toc.png +inactive/nav-up.png +no + +overlay.js +http://docbook.sourceforge.net/release/buttons/slides-1.png +toc/closed.png +active/nav-prev.png + + +showtoc.gif +slides.js +Home +Next +Prev +ToC +Up + +#FFFFFF + + +active/nav-toc.png +22 +250 + +ua.js +active/nav-up.png +xbCollapsibleLists.js +xbDOM.js +xbStyle.js +xbLibrary.js + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/plain.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/plain.xsl new file mode 100644 index 000000000..29d43fc0d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/plain.xsl @@ -0,0 +1,470 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/slides-common.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/slides-common.xsl new file mode 100644 index 000000000..65d3b7a91 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/slides-common.xsl @@ -0,0 +1,1534 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + titlepage + + - + + + + + + + + overlaySetup('lc') + + + + + navigate(event) + + + +
    + + + + + +
    + +
    + +
    + + + + + +
    +
    + + +
    +
    +
    + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +
    + + + + + + +

    +
    + + +

    +
    + + +

    +
    + + + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="slidesinfo/title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + overlaySetup('lc') + + + + + navigate(event) + + + +
    + + + + + + + +
    + +
    + +
    + + + + + + + +
    +
    + + +
    +
    +
    + + +

    + + + +

    + +

    + + + TableofContents + + +

    +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + . + + + + + + +
    + +
    +
    + +
    +
    +
    +
    + + +
    + + . + + + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + overlaySetup('lc') + + + + + navigate(event) + + + +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + + + + +
    +
    + + + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + overlaySetup('lc') + + + + + navigate(event) + + + +
    + + + + + + + + + +
    + + + + + + +
    + +
    + + + + + + + +
    +
    + + + + +
    +
    + + +
    + + +

    +
    + + + + + + + + + + + +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + position: absolute; visibility: visible; + + + + padding-top: 2in; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + foil + + + + + + foilgroup + + + + + + + + + + + + </span> + + + <span + + class="green" + class="blue" + class="orange" + class="red" + class="brown" + class="violet" + class="black" + class="bold" + + > + + + + + + + + +
    + +
    +
    +
    + + + + + + + + + copyright + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    + +

    +
    + + +
    + + +
    +
    + + + + + + + + + + + + + + + + 1 + 1 + 1 + 0 + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + + + + + + foil + + + + + + + + + + + foilgroup + + + + + + chunk-filename-error- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + +   + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/tables.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/tables.xsl new file mode 100644 index 000000000..7d5ec6b09 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/tables.xsl @@ -0,0 +1,334 @@ + + + + + + + + + + +#6A719C +220 + + + + + + + + + + + + +
    + + + + + +
    + +
    +
      + + + + + +
    + +
    + + +
    + +
    +
    +
    +
    + + + + + + + + +
    + + + + + +
    + +
    +
      + + + + + +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + +
    + + + +  + + + + + + +  + + + + + + + + + + + + + + + +
    +
    +
    +
    + +  + + + + + + + + + + + + + + +
    +
    +
    +
    +
    + + + + + + + +  + + + + + + + + + + + + + + +
    + + + +  + + + + + + + + + + + + + + + + + + + +  + + + + + + + + + + + + + + + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + +  + + + + + + + + + + + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/vslides.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/vslides.xsl new file mode 100644 index 000000000..26e996104 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/vslides.xsl @@ -0,0 +1,652 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="slidesinfo/title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + navigate(event) + + + + + + + + + + + + + + + + + + +
     
    + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + +
    +
     
    + + +
    +
    + + +
    + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + navigate(event) + + + + + + + + + + + + + + + + + + +
     
    + + + + + + + + + + + + + + + + + + +
    + +
    +
     
    + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + navigate(event) + + + + + + + + + + + + + + + + + + +
     
    + + + + + + + + + + + + + + + + + + + +
    + +
    +
     
    + + +
    +
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + navigate(event) + + + + + + + + + + + + + + + + + + +
     
    + + + + + + + + + + + + + + + + + + + +
    + +
    +
     
    + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + First + + + + + + + + + + First + + + + + + + + +
    + + + + + + + Previous + + + + + + + + + + Previous + + + + + + + + +
    + + + + + + + Last + + + + + + + + + + Last + + + + + + + + +
    + + + + + + + Next + + + + + + + + + + Next + + + + + + + + + +
    +
    + + + + + ToC + + + + + + + + + + ToC + + + + + + + + +
    +
    + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/w3c.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/w3c.xsl new file mode 100644 index 000000000..d361a3358 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/slides/xhtml/w3c.xsl @@ -0,0 +1,358 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {$logo.title} + + + + + + + + + + position: absolute; visibility: visible; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xml new file mode 100644 index 000000000..f1e1e3cde --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xml @@ -0,0 +1,478 @@ + + + + + + + Titlepage Template Stylesheet Reference + + $Id: titlepage.xsl 7058 2007-07-17 13:59:29Z xmldoc $ + + + + Introduction + +This is technical reference documentation for the + “titlepage†templates in the DocBook XSL Stylesheets. + + +This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + +t:templates +Construct a stylesheet for the templates provided + + +<xsl:template match="t:templates"/> + +Description + +The t:templates element is the root of a +set of templates. This template creates an appropriate +xsl:stylesheet for the templates. + + + +If the t:templates element has a +base-stylesheet attribute, an +xsl:import statement is constructed for it. + + + + + +xsl:* +Copy xsl: elements straight through + + +<xsl:template match="xsl:*"/> + +Description + +This template simply copies the xsl: elements +straight through into the result tree. + + + + + +t:titlepage +Create the templates necessary to construct a title page + + +<xsl:template match="t:titlepage"/> + +Description + +The t:titlepage element creates a set of +templates for processing the titlepage for an element. The +root of this template set is the template named +wrapper.titlepage. That is the +template that should be called to generate the title page. + + + + +The t:titlepage element has three attributes: + + + +element + +The name of the source document element for which +these templates apply. In other words, to make a title page for the +article element, set the +element attribute to +article. This attribute is required. + + + +wrapper + +The entire title page can be wrapped with an element. +This attribute identifies that element. + + + +class + +If the class attribute +is set, a class attribute with this +value will be added to the wrapper element that surrounds the entire +title page. + + + + + + + + + +Any other attributes are copied through literally to the +wrapper element. + + + +The content of a t:titlepage is one or +more t:titlepage-content, +t:titlepage-separator, and +t:titlepage-before elements. + + + +Each of these elements may be provided for the recto +and verso sides of the title page. + + + + + + +@* (in copy.literal.atts mode) +Copy t:titlepage attributes + + +<xsl:template match="@*" mode="copy.literal.atts"/> + +Description + +This template copies all of the other attributes +from a t:titlepage element onto the specified +wrapper. + + + + + +t:titlepage-content +Create templates for the content of one side of a title page + + +<xsl:template match="t:titlepage-content"/> + +Description + +The title page content, that is, the elements from the source +document that are rendered on the title page, can be controlled independently +for the recto and verso sides of the title page. + + + +The t:titlepage-content element has two attributes: + + + +side + +Identifies the side of the page to which this title +page content applies. The +side attribute is required and +must be set to either +recto or +verso. In addition, you must specify +exactly one t:titlepage-content for each side +within each t:titlepage. + + + +order + +Indicates how the order of the elements presented on +the title page is determined. If the +order is +document, the elements are presented +in document order. Otherwise (if the +order is +stylesheet), the elements are presented +in the order that they appear in the template (and consequently in +the stylesheet). + + + + + + + + + +The content of a t:titlepage-content element is +a list of element names. These names should be unqualified. They identify +the elements in the source document that should appear on the title page. + + + + +Each element may have a single attribute: +predicate. The value of this +attribute is used as a predicate for the expression that matches +the element on which it occurs. + + + +In other words, to put only the first three authors on the +recto-side of a title +page, you could specify: + + + <t:titlepage-contents side="recto"> + <!-- other titlepage elements --> + <author predicate="[count(previous-sibling::author)<2]"/> + <!-- other titlepage elements --> + </t:titlepage-contents> + + + + + +Usually, the elements so named are empty. But it is possible to +make one level of selection within them. Suppose that you want to +process authorgroup elements on the title page, but +you want to select only proper authors, editors, or corporate authors, +not collaborators or other credited authors. + + + +In that case, you can put a t:or group inside +the authorgroup element: + + + <t:titlepage-contents side="recto"> + <!-- other titlepage elements --> + <authorgroup> + <t:or> + <author/> + <editor/> + <corpauthor/> + </t:or> + </authorgroup> + <!-- other titlepage elements --> + </t:titlepage-contents> + + + + + +This will have the effect of automatically generating a template +for processing authorgroups in the title page mode, +selecting only the specified children. If you need more complex processing, +you'll have to construct the templates by hand. + + + + + + +t:titlepage-separator +Create templates for the separator + + +<xsl:template match="t:titlepage-separator"/> + +Description + +The title page is separated from the content which follows it by +the markup specified in the t:titlepage-separator +element. + + + + + +t:titlepage-before +Create templates for what precedes a title page + + +<xsl:template match="t:titlepage-before"/> + +Description + +Each side of the title page is preceded by the markup specified +in the t:titlepage-before element for that +side. + + + + + +* (in copy mode) +Copy elements + + +<xsl:template match="*" mode="copy"/> + +Description + +This template simply copies the elements that it applies to +straight through into the result tree. + + + + + +@* (in copy mode) +Copy attributes + + +<xsl:template match="@*" mode="copy"/> + +Description + +This template simply copies the attributes that it applies to +straight through into the result tree. + + + + + +* (in document.order mode) +Create rules to process titlepage elements in document order + + +<xsl:template match="*" mode="document.order"/> + +Description + +This template is called to process all of the children of the +t:titlepage-content element. It creates the hairy +select expression necessary to process each of those elements in +the title page. + + + +Note that this template automatically handles the case where +some DocBook elements, like title and subtitle, can occur both inside +the *info elements where metadata is usually stored and outside. + + + + +It also automatically calculates the name for the *info container +and handles elements that have historically had containers with different +names. + + + + + + +* (in document.order mode) +Create rules to process titlepage elements in stylesheet order + + +<xsl:template match="*" mode="document.order"/> + +Description + +This template is called to process all of the children of the +t:titlepage-content element. It creates the set +of xsl:apply-templates elements necessary +process each of those elements in the title page. + + + +Note that this template automatically handles the case where +some DocBook elements, like title and subtitle, can occur both inside +the *info elements where metadata is usually stored and outside. + + + + +It also automatically calculates the name for the *info container +and handles elements that have historically had containers with different +names. + + + + + + +* (in titlepage.specialrules mode) +Create templates for special rules + + +<xsl:template match="*" mode="titlepage.specialrules"/> + +Description + +This template is called to process all of the descendants of the +t:titlepage-content element that require special +processing. At present, that's just t:or elements. + + + + + + +* (in titlepage.subrules mode) +Create template for individual special rules + + +<xsl:template match="*" mode="titlepage.subrules"/> + +Description + +This template is called to process the children of special +template elements. + + + + + + +t:or +Process the t:or special rule + + +<xsl:template match="t:or"/><xsl:template match="t:or" mode="titlepage.subrules"/> + +Description + +This template processes t:or. + + + + + +t:or (in titlepage.subrules mode) +Process the t:or special rule in +titlepage.subrules mode + + +<xsl:template match="t:or" mode="titlepage.subrules"/> + +Description + +The titlepage.subrules mode doesn't apply to t:or, so just +reprocess this node in the normal mode. + + + + + +element-or-list +Construct the "or-list" used in the select attribute for +special rules. + + +<xsl:template name="element-or-list"> +<xsl:param name="elements" select="*"/> +<xsl:param name="element.count" select="count($elements)"/> +<xsl:param name="count" select="1"/> +<xsl:param name="orlist"/> + ... +</xsl:template> + +Description + +Walk through each of the children of t:or, producing the +text of the select attribute. + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xsl new file mode 100644 index 000000000..ce147e367 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/template/titlepage.xsl @@ -0,0 +1,1280 @@ + + + + + + + + + + + + + + + + + + Titlepage Template Stylesheet Reference + + $Id: titlepage.xsl 7058 2007-07-17 13:59:29Z xmldoc $ + + + + Introduction + This is technical reference documentation for the + “titlepage†templates in the DocBook XSL Stylesheets. + This is not intended to be user documentation. It is + provided for developers writing customization layers for the + stylesheets. + + + + + + + + + + + +Construct a stylesheet for the templates provided + + +The t:templates element is the root of a +set of templates. This template creates an appropriate +xsl:stylesheet for the templates. + +If the t:templates element has a +base-stylesheet attribute, an +xsl:import statement is constructed for it. + + + + + + + + + + + 1.0 + exsl + + + + This stylesheet was created by + template/titlepage.xsl + + + + + + + + + + + + + + + + + + + + +Copy xsl: elements straight through + + +This template simply copies the xsl: elements +straight through into the result tree. + + + + + + + + + + +Create the templates necessary to construct a title page + + +The t:titlepage element creates a set of +templates for processing the titlepage for an element. The +root of this template set is the template named +wrapper.titlepage. That is the +template that should be called to generate the title page. + + +The t:titlepage element has three attributes: + + +element +The name of the source document element for which +these templates apply. In other words, to make a title page for the +article element, set the +element attribute to +article. This attribute is required. + + +wrapper +The entire title page can be wrapped with an element. +This attribute identifies that element. + + +class +If the class attribute +is set, a class attribute with this +value will be added to the wrapper element that surrounds the entire +title page. + + + + + +Any other attributes are copied through literally to the +wrapper element. + +The content of a t:titlepage is one or +more t:titlepage-content, +t:titlepage-separator, and +t:titlepage-before elements. + +Each of these elements may be provided for the recto +and verso sides of the title page. + + + + + + + + + + + + + + .titlepage + + + + + + + recto.content + + + + + .titlepage.before.recto + + + + + + + .titlepage.recto + + + + + + + recto.elements.count + + + + + function-available('exsl:node-set') + + count(exsl:node-set($recto.content)/*) + + + + + contains(system-property('xsl:vendor'), 'Apache Software Foundation') + + Xalan quirk + + count(exsl:node-set($recto.content)/*) + + + + + 1 + + + + + + + + (normalize-space($recto.content) != '') or ($recto.elements.count > 0) + + + + + $recto.content + + + + + + + verso.content + + + + + .titlepage.before.verso + + + + + + + .titlepage.verso + + + + + + + verso.elements.count + + + + + function-available('exsl:node-set') + + count(exsl:node-set($verso.content)/*) + + + + + contains(system-property('xsl:vendor'), 'Apache Software Foundation') + + Xalan quirk + + count(exsl:node-set($verso.content)/*) + + + + + 1 + + + + + + + + (normalize-space($verso.content) != '') or ($verso.elements.count > 0) + + + + + $verso.content + + + + + + + + + .titlepage.separator + + + + + + + + + + + + + + * + + + .titlepage.recto.mode + + + if an element isn't found in this mode, + + try the generic titlepage.mode + + + . + titlepage.mode + + + + + + + + * + + + .titlepage.verso.mode + + + if an element isn't found in this mode, + + try the generic titlepage.mode + + + . + titlepage.mode + + + + + + + + + + + + + + + + + + + .titlepage. + + .auto.mode + + + + + + .titlepage. + + .style + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + . + + + .titlepage. + + .mode + + + + + + + + + + + + + + +Copy t:titlepage attributes + + +This template copies all of the other attributes +from a t:titlepage element onto the specified +wrapper. + + + + + + + + + + + + + + +Create templates for the content of one side of a title page + + +The title page content, that is, the elements from the source +document that are rendered on the title page, can be controlled independently +for the recto and verso sides of the title page. + +The t:titlepage-content element has two attributes: + + +side +Identifies the side of the page to which this title +page content applies. The +side attribute is required and +must be set to either +recto or +verso. In addition, you must specify +exactly one t:titlepage-content for each side +within each t:titlepage. + + +order +Indicates how the order of the elements presented on +the title page is determined. If the +order is +document, the elements are presented +in document order. Otherwise (if the +order is +stylesheet), the elements are presented +in the order that they appear in the template (and consequently in +the stylesheet). + + + + + +The content of a t:titlepage-content element is +a list of element names. These names should be unqualified. They identify +the elements in the source document that should appear on the title page. + + +Each element may have a single attribute: +predicate. The value of this +attribute is used as a predicate for the expression that matches +the element on which it occurs. + +In other words, to put only the first three authors on the +recto-side of a title +page, you could specify: + + + + + + +]]> + + +Usually, the elements so named are empty. But it is possible to +make one level of selection within them. Suppose that you want to +process authorgroup elements on the title page, but +you want to select only proper authors, editors, or corporate authors, +not collaborators or other credited authors. + +In that case, you can put a t:or group inside +the authorgroup element: + + + + + + + + + + + + +]]> + + +This will have the effect of automatically generating a template +for processing authorgroups in the title page mode, +selecting only the specified children. If you need more complex processing, +you'll have to construct the templates by hand. + + + + + + + + + + + + + Illegal value specified for @t:side + on t:titlepage-content: + + + + + + The @t:side attribute is required on + t:titlepage-content. + + + + + + + + .titlepage. + + .auto.mode + + + + + + + .titlepage. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Create templates for the separator + + +The title page is separated from the content which follows it by +the markup specified in the t:titlepage-separator +element. + + + + + + + + + .titlepage.separator + + + + + + + + + + +Create templates for what precedes a title page + + +Each side of the title page is preceded by the markup specified +in the t:titlepage-before element for that +side. + + + + + + + + + .titlepage.before. + + + + + + + + + + + +Copy elements + + +This template simply copies the elements that it applies to +straight through into the result tree. + + + + + + + + + + + + + +Copy attributes + + +This template simply copies the attributes that it applies to +straight through into the result tree. + + + + + + + + + + + + +Create rules to process titlepage elements in document order + + +This template is called to process all of the children of the +t:titlepage-content element. It creates the hairy +select expression necessary to process each of those elements in +the title page. + +Note that this template automatically handles the case where +some DocBook elements, like title and subtitle, can occur both inside +the *info elements where metadata is usually stored and outside. + + +It also automatically calculates the name for the *info container +and handles elements that have historically had containers with different +names. + + + + + + + + info + + + + + + artheader + + + blockinfo + + + + + + + + + + docinfo + + + + + + + + + + recto + + + + + + + .titlepage. + + .auto.mode + + + + | + + + + / + + + + + + + | + + / + + + + + + + + |info + / + + + + + + + | + + + + + + + + + + +Create rules to process titlepage elements in stylesheet order + + +This template is called to process all of the children of the +t:titlepage-content element. It creates the set +of xsl:apply-templates elements necessary +process each of those elements in the title page. + +Note that this template automatically handles the case where +some DocBook elements, like title and subtitle, can occur both inside +the *info elements where metadata is usually stored and outside. + + +It also automatically calculates the name for the *info container +and handles elements that have historically had containers with different +names. + + + + + + + + info + + + + + + artheader + + + blockinfo + + + + + + + + + + docinfo + + + + + + + + + recto + + + + + + .titlepage. + + .auto.mode + + + + + + + + + + + + .titlepage. + + .style + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Force can only be used with named-templates. + + + + + + + + + + + + + + + / + + + + + + + + + + / + + + + + + + + + + + + + + + / + + + + + + + + + + / + + + + + + + + + + + + + + + + / + + + + + + + + + + / + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + + + + + + + + + + + + / + + + + + + + + + + + + + + + + + / + + + + + + + + + + + + + + + +Create templates for special rules + + +This template is called to process all of the descendants of the +t:titlepage-content element that require special +processing. At present, that's just t:or elements. + + + + + + + + + + + recto + + + + + + .titlepage. + + .auto.mode + + + + + + + + + + + + + + + + + + + + + + + + + + + +Create template for individual special rules + + +This template is called to process the children of special +template elements. + + + + + + + + + + + recto + + + + + + .titlepage. + + .auto.mode + + + + + + + + + + + + + + + +Process the t:or special rule + + +This template processes t:or. + + + + + + + + + + recto + + + + + + .titlepage. + + .auto.mode + + + + + + + + + + + + + + + + +Process the t:or special rule in +titlepage.subrules mode + + +The titlepage.subrules mode doesn't apply to t:or, so just +reprocess this node in the normal mode. + + + + + + + + + + +Construct the "or-list" used in the select attribute for +special rules. + + +Walk through each of the children of t:or, producing the +text of the select attribute. + + + + + + + + + + + + + + + + + + + + + | + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.ns.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.ns.xml new file mode 100644 index 000000000..f66d6e0d3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.ns.xml @@ -0,0 +1,325 @@ + +Unit Test: refentry.007 + +$Id: refentry.007.xml 7282 2007-08-23 09:27:01Z xmldoc $ +NormanWalsh
    ndw@nwalsh.com
    +
    +Reference + + + + + NormanWalshndw@nwalsh.com + Wrote the original version of this document. + + Michael(tm)SmithAdded a bunch of test cases.smith@sideshowbarker.net + + + 2003 + Norman Walsh + + + 2006 + Michael(tm) Smith + + + This file is a product of the DocBook Project. + + + Share and share alike. + + + +FirstName +SecondName +Purpose for FirstName + + + +ThirdName +Purpose for ThirdName + + + + + + + #include <varargs.h> +#include <mouteyh.h> +#include <qlmppzj.h> + + float rand + + + + + int max + + + + + int idiv + int n + int m + + + + Another. + + + + void qsort + void *dataptr[] + int left + int right + int (*comp) + void *, void * + + + + + + int foo_frob_something + foo_sometype1 foo_frob_parm1 + foo_sometype1 foo_frob_parm2 + foo_sometype1 foo_frob_parm3 + int (* parm4 ) + int a, int b, int c + + foo_sometype1 foo_frob_parm5 + + + + int foo_frob_something + foo_sometype1 foo_frob_parm1 + foo_sometype1 foo_frob_parm2 + foo_sometype1 foo_frob_parm3 + int (* parm4 ) + int a, int b, int c + + foo_sometype1 foo_frob_parm5 + + + + +Description + +This is a minimal RefEntry. + +The following is a Variablelist with a title. +My variablelist + + + varlistentry term 1 + some listitem text + + + varlistentry term 2 + some more listitem text + + + +Subsection + +This is a minimal RefEntry. + +The following is a Variablelist with a title and a nested variablelist + + + + glossentry term 1 + some glossdef text + + + glossentry term 2 + + + + nested variablelist term 1 + some variablelist text + + + nested variablelist term 2 + some more variablelist text + + + + + + + +Sub-subsection + +This is a minimal RefEntry. + + + + +More Description + +This is a not-so minimal RefEntry. + +This is a screen [break here] +that starts with a line of space. [break here] +And it ends with a line of space. + + +normal paragraph here + +This is a screen [break here] +that does not start with a line of space. [break here] +And does not end with a line of space. + +This is a normal paragraph that contains a screen. +This is a screen within a normal paragraph [break here] +that does not start with a line of space. [break here] +And does not end with a line of space but is followed +by a line of space. + + +This is another normal paragraph that contains a screen. +This is a screen within a normal paragraph [break here] +that does not start with a line of space. [break here] +And does not end with a line of space and is not followed +by a line of space. + +This is another normal paragraph that contains a screen. + +This is a screen within a normal paragraph [break here] +that starts with a line of space. [break here] +And ends with a line of space but is not followed by a line of space. + + +This is another normal paragraph that contains a screen. + +This is a screen within a normal paragraph [break here] +that starts with a line of space. [break here] +And ends with a line of space and is followed by a line of space. + + + +This is another normal paragraph that contains a screen. + + +This is a screen within a normal paragraph [break here] +that starts with a 2 lines of space. [break here] +And ends with 3 lines of space and is followed by a line of space. + + + + + +This paragraph contains an itemizedlist with a title. The title +is “Mrignkwolmcngâ€. +Mrignkwolmcng + + + itemizedlist listitem 1 + + + itemizedlist listitem 2 + + + +This is some useless text that follows the “Mrignkwolmcng†orderedlist +in the same para. + +The following is a Variablelist with a title and with a nested itemizedlist. +My variablelist + + + varlistentry term 1 + + nested itemizedlist + + + itemizedlist listitem 1 + + + itemizedlist listitem 2 + + + + + + varlistentry term 2 + some more listitem text + + + + +The following is a Variablelist with a title and with a +nested Varlistentry that contains multiple Terms +My nested-multi-term-per-varlistentry variablelist + + + Varlistentry term 1 + + + + varlistentry term 1.1 + varlistentry term 1.2 + varlistentry term 1.3 + All 'bout terms 1.1, 1.2, and 1.3 + + + + + + + varlistentry term 2 + some more listitem text + + + + +Subsection + +This is a minimal RefEntry. + + + +Even More Description + +This is an even less minimal RefEntry. + +This is a paragraph. It contains the following segmentedlist, +titled “Gibbererishâ€, with several segtitle elements. + + + Floober + Buugler + Sstangooo + Borobinda + + Bamalalaboonda Bamalalaboonda Bamalalaboonda Bamalalaboonda Bamalalaboonda Bamalalaboonda + Mondorotoluafu + Ganafutralinga + Patagularamakundra + + + Cadraracondar + Hentirotomaambu + BdomentriolaiaBdomentriolaiaBdomentriolaia + Candamalaturuanio + + +This is some text that follows the segementedlist within the same +paragraph. The next part of this same paragraph is an +important admonition. + + It is very important that you read this. That’s why it stands + out the way that it does. + + + +This is a para with a footnote + Stuff here This is a program listing +that's two lines long. + and stuff after the +footnote + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.xml new file mode 100644 index 000000000..452137631 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tests/refentry.007.xml @@ -0,0 +1,340 @@ + + + + +Unit Test: refentry.007 +$Id: refentry.007.xml 7282 2007-08-23 09:27:01Z xmldoc $ +NormanWalsh +
    ndw@nwalsh.com
    +
    +
    + +Reference + + + + + NormanWalsh + ndw@nwalsh.com + + Wrote the original version of this document. + + + + Added a bunch of test cases. + Michael(tm)Smith + smith@sideshowbarker.net + + + + 2003 + Norman Walsh + + + 2006 + Michael(tm) Smith + + + This file is a product of the DocBook Project. + + + Share and share alike. + + + +FirstName +SecondName +Purpose for FirstName + + + +ThirdName +Purpose for ThirdName + + + + + + + #include <varargs.h> +#include <mouteyh.h> +#include <qlmppzj.h> + + float rand + + + + + int max + + + + + int idiv + int n + int m + + + + Another. + + + + void qsort + void *dataptr[] + int left + int right + int (*comp) + void *, void * + + + + + + int foo_frob_something + foo_sometype1 foo_frob_parm1 + foo_sometype1 foo_frob_parm2 + foo_sometype1 foo_frob_parm3 + int (* parm4 ) + int a, int b, int c + + foo_sometype1 foo_frob_parm5 + + + + int foo_frob_something + foo_sometype1 foo_frob_parm1 + foo_sometype1 foo_frob_parm2 + foo_sometype1 foo_frob_parm3 + int (* parm4 ) + int a, int b, int c + + foo_sometype1 foo_frob_parm5 + + + + + +Description +This is a minimal RefEntry. + +The following is a Variablelist with a title. + + My variablelist + + varlistentry term 1 + some listitem text + + + varlistentry term 2 + some more listitem text + + + + +Subsection +This is a minimal RefEntry. + +The following is a Variablelist with a title and a nested variablelist + + My glosslist + + glossentry term 1 + some glossdef text + + + glossentry term 2 + + + + nested variablelist term 1 + some variablelist text + + + nested variablelist term 2 + some more variablelist text + + + + + + + + +Sub-subsection +This is a minimal RefEntry. + + + + + +More Description +This is a not-so minimal RefEntry. + +This is a screen [break here] +that starts with a line of space. [break here] +And it ends with a line of space. + + +normal paragraph here + +This is a screen [break here] +that does not start with a line of space. [break here] +And does not end with a line of space. + +This is a normal paragraph that contains a screen. +This is a screen within a normal paragraph [break here] +that does not start with a line of space. [break here] +And does not end with a line of space but is followed +by a line of space. + + +This is another normal paragraph that contains a screen. +This is a screen within a normal paragraph [break here] +that does not start with a line of space. [break here] +And does not end with a line of space and is not followed +by a line of space. + +This is another normal paragraph that contains a screen. + +This is a screen within a normal paragraph [break here] +that starts with a line of space. [break here] +And ends with a line of space but is not followed by a line of space. + + +This is another normal paragraph that contains a screen. + +This is a screen within a normal paragraph [break here] +that starts with a line of space. [break here] +And ends with a line of space and is followed by a line of space. + + + +This is another normal paragraph that contains a screen. + + +This is a screen within a normal paragraph [break here] +that starts with a 2 lines of space. [break here] +And ends with 3 lines of space and is followed by a line of space. + + + + + +This paragraph contains an itemizedlist with a title. The title +is “Mrignkwolmcngâ€. + + Mrignkwolmcng + + itemizedlist listitem 1 + + + itemizedlist listitem 2 + + + +This is some useless text that follows the “Mrignkwolmcng†orderedlist +in the same para. + +The following is a Variablelist with a title and with a nested itemizedlist. + + My variablelist + + varlistentry term 1 + + + nested itemizedlist + + itemizedlist listitem 1 + + + itemizedlist listitem 2 + + + + + + varlistentry term 2 + some more listitem text + + + + +The following is a Variablelist with a title and with a +nested Varlistentry that contains multiple Terms + + My nested-multi-term-per-varlistentry variablelist + + Varlistentry term 1 + + + + varlistentry term 1.1 + varlistentry term 1.2 + varlistentry term 1.3 + All 'bout terms 1.1, 1.2, and 1.3 + + + + + + + varlistentry term 2 + some more listitem text + + + + + +Subsection +This is a minimal RefEntry. + + + + +Even More Description +This is an even less minimal RefEntry. + +This is a paragraph. It contains the following segmentedlist, +titled “Gibbererishâ€, with several segtitle elements. + + Gibbererish + Floober + Buugler + Sstangooo + Borobinda + + Bamalalaboonda Bamalalaboonda Bamalalaboonda Bamalalaboonda Bamalalaboonda Bamalalaboonda + Mondorotoluafu + Ganafutralinga + Patagularamakundra + + + Cadraracondar + Hentirotomaambu + BdomentriolaiaBdomentriolaiaBdomentriolaia + Candamalaturuanio + + +This is some text that follows the segementedlist within the same +paragraph. The next part of this same paragraph is an +important admonition. + + It is very important that you read this. That’s why it stands + out the way that it does. + + + +This is a para with a footnote + Stuff here This is a program listing +that's two lines long. + and stuff after the +footnote + + + + +
    diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/bin/docbook-xsl-update b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/bin/docbook-xsl-update new file mode 100644 index 000000000..0d44f5657 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/bin/docbook-xsl-update @@ -0,0 +1,53 @@ +#!/bin/bash +# vim: number + +# docbook-xsl-update - Update environment to latest docbook-xsl snapshot +# $Id: docbook-xsl-update 6565 2007-01-29 23:00:16Z xmldoc $ + +if [ -z $DOCBOOK_MIRROR ]; then + myhost=docbook.xml-doc.org:5873; +else + myhost=$DOCBOOK_MIRROR; +fi + +mydir=$(readlink -f $(dirname $0)) +mydocbook_xsl_base=$(readlink -f $(dirname $0)/../..) + +if [ ! -f $mydocbook_xsl_base/VERSION ]; then + cat <<- EOF +$(basename $0): error: not in snapshot directory. Stopping. + +The $(basename $0) script must be installed within its original +location in the tools/bin directory in the docbook-xsl distribution. +EOF + exit 1 +fi + +usage="Usage: + + $(basename $0) [-h HOST[:PORT]] + + -h HOST[:PORT] Specifies the rsync host and port number to use. + If not specified, uses the value of the + \$DOCBOOK_MIRROR environment variable. If that + environment variable is not specified, defaults + to a hard-coded value. + +" + +while getopts "h:" opt; do + case $opt in + h ) myhost=$OPTARG ;; + \? ) printf "$usage" + printf "$opts_admon" + exit 1 ;; + esac +done + +shift $(($OPTIND - 1)) + +if [ -z $myhost ]; then + myhost=$DOCBOOK_MIRROR +fi + +rsync -auv rsync://$myhost/xsl $mydocbook_xsl_base diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.DocBook b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.DocBook new file mode 100644 index 000000000..242066ec6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.DocBook @@ -0,0 +1,698 @@ +# $Source$ +# $Author: xmldoc $ +# $Date: 2008-03-03 01:20:29 -0800 (Mon, 03 Mar 2008) $ +# $Revision: 7787 $ +# vim: number +# +# ----------------------------------------------------------------- +# ** Makefile.DocBook -- generate output from DocBook sources ** +# ----------------------------------------------------------------- +# +# This file is part of the DocBook Project XSL Stylesheet +# distribution. +# +# See http://docbook.sourceforge.net/release/xsl/current/ +# for copyright and other information. + +# DOCBOOK_OUTPUT_FORMATS is the default set of targets (output +# formats) that get built when you type "make" without any targets +# explicitly specified. To generate a different set of output +# formats, change the value of DOCBOOK_OUTPUT_FORMATS here or set +# it in your environment; for example: +# +# set DOCBOOK_OUTPUT_FORMATS="html pdf"; export DOCBOOK_OUTPUT_FORMATS +# +# Of course by explicitly specifying particular targets when you +# invoke "make", you can always override generation of the default +# set of targets; for example: +# +# make html txt +# +# That would generate just HTML (unchunked) and plain-text output. +# +DOCBOOK_OUTPUT_FORMATS ?= xml man man-pdf chunk txt pdf + +# If you want XHTML output instead of HTML, set HTML_OR_XHTML to +# 'xhtml' or just specify 'xhtml" in DOCBOOK_OUTPUT_FORMATS. +ifeq ($(findstring xhtml,$(DOCBOOK_OUTPUT_FORMATS)),) +HTML_OR_XHTML ?= html +else +HTML_OR_XHTML ?= xhtml +endif + +# if your source is in asciidoc instead of DocBook, set +# ASCII_OR_DOCBOOK to "ascii" +ASCII_OR_DOCBOOK ?= docbook + +# ----------------------------------------------------------------- +# *** TOOLS and other DEPENDENCIES *** +# ----------------------------------------------------------------- +# we use rmdir(1) to remove dirs we create for chunked HTML output +RMDIR = rmdir +# "-p" causes empty parent dirs to be deleted as well +RMDIR_FLAGS = --ignore-fail-on-non-empty -p + +# possible values for PDF_MAKER are: +# dblatex|fop|xep|xmlroff|passivetex +PDF_MAKER = dblatex + +# possible values for TXT_MAKER are: +# links|lynx|w3m|w3mmee +TXT_MAKER = links +TXT_MAKER_FLAGS = -dump + +# xsl +XSLT = xsltproc +XSLT_FLAGS = --xinclude + +# http://dblatex.sourceforge.net/ +DBLATEX = dblatex +DBLATEX_FLAGS = -b pdftex + +FOP = fop +FOP_FLAGS = + +XEP = xep +XEP_FLAGS = + +# http://xmlroff.sourceforge.net/ +XMLROFF = xmlroff +XMLROFF_FLAGS = + +PDFTEX = pdftex +PDFTEX_FLAGS = + +# used by PassiveTeX +PDFXMLTEX = pdfxmltex + +# http://docbook2x.sourceforge.net/ +DB2X_XSLTPROC = db2x_xsltproc +DB2X_XSLTPROC_FLAGS = +DB2X_TEXIXML = db2x_texixml +DB2X_TEXIXML_FLAGS = + +# we call the man(1) command to generate "foo.N.pdf" and +# "foo.N.txt" output (see "man-pdf" & "man-txt" targets) +MAN = man +MAN_FLAGS = + +# The "ps2pdf" command is part of GhostSript (gs) distro. +# It is just a wrapper script around gs that does this: +# +# gs -dCompatibilityLevel=1.2 -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \ +# "-sOutputFile=$outfile" -dCompatibilityLevel=1.2 -c .setpdfwrite -f "$infile" +# +# Where, for example: $outfile = foo.pdf and $infile = foo.1 +PS2PDF = ps2pdf +PS2PDF_FLAGS = + +# asciidoc is used to generate DocBook XML from asciidoc source +ASCIIDOC=asciidoc +ASCIIDOCFLAGS= + +# asciidoc source seems to have DOS line endings, so we use +# DOS2UNIX to be able to grep them correctly +DOS2UNIX=dos2unix +DOS2UNIXFLAGS= + +# The "col" command is needed for stripping backspaces and +# underscores from man(1) output to get pure plain-text +COL = col +COL_FLAGS = + +# The "expand" command is needed for expanding tabs from files +# generated from "man foo.1 | col -b" output +# output to get pure plain-text +EXPAND = expand +EXPAND_FLAGS = + +# value of DOCBOOK_XSL should either be the canonical +# (docbook.sourceforge.net) URL for the DocBook Project XSL +# stylesheets OR it can be a local system path +DOCBOOK_XSL = http://docbook.sourceforge.net/release/xsl/current + +# ----------------------------------------------------------------- +# names of some DIRECTORIES and FILES we need +# ----------------------------------------------------------------- +# We create a tmp directory once per make invocation; it's needed +# for holding a temporary copy of the custom DBLaTeX stylesheet +# (because dblatex currently can't read a stylesheet from stdin) +TMP ?= /tmp +TMPNUM := $(shell echo $$$$) +DOCBOOK_TMP := $(TMP)/docbook-make-$(TMPNUM) + +# MAN_MANIFEST_EXT is file extension added to individual manifest +# files +MAN_MANIFEST_EXT = manifest_man + +# HTML_MANIFEST_EXT is file extension added to HTML manifest files +HTML_MANIFEST_EXT = manifest_html + +# BASEDIR_SUFFIX is a what you need to set if you want a suffix +# added to the end of each "base.dir" we create while generating +# chunked HTML output +#BASEDIR_SUFFIX = -html +#BASEDIR_SUFFIX = _html +BASEDIR_SUFFIX = + +# ----------------------------------------------------------------- +# assorted OPTIONS +# ----------------------------------------------------------------- +# HTML_STYLESHEET -> $html.stylesheet stylesheet param +# http://docbook.sourceforge.net/snapshots/xsl/doc/html/html.stylesheet.html +HTML_STYLESHEET = style.css +# HTML_IMAGES -> $admon.graphics.path +# http://docbook.sourceforge.net/snapshots/xsl/doc/html/admon.graphics.path.html +HTML_IMAGES = images/ +# HTML_IMAGES_EXT -> $admon.graphics.extension +# http://docbook.sourceforge.net/snapshots/xsl/doc/html/admon.graphics.extension.html +HTML_IMAGES_EXT = .png + +# use these to set params on the command-line +# format is, e.g., HTML_PARAMS="--stringparam variablelist.as.table 1..." +FO_PARAMS = +HTML_PARAMS = +MAN_PARAMS = + +# DBX_PARAMS is for dblatex(1); format uses "-p": +# DBX_PARAMS="-p doc.publisher.show 1 -p term.breakline 1... +DBX_PARAMS= + +# What file extension do you use for DocBook source files? +DOCBOOK_FILE_EXTENSION = .xml + +# ----------------------------------------------------------------- +# make(1) functions for building file lists +# ----------------------------------------------------------------- +# +# the values of the following are used for determing what needs +# to be built and/or cleaned up + +ifeq ($(ASCII_OR_DOCBOOK),docbook) +SOURCE_FILES_DBK = $(wildcard *$(DOCBOOK_FILE_EXTENSION)) +else +SOURCE_FILES_DBK = $(foreach base,$(basename $(wildcard *.txt)),$(base)$(DOCBOOK_FILE_EXTENSION)) +endif + +FILES_FO = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).fo) +FILES_TXT = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).out.txt) +FILES_PDF = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).pdf) +FILES_LOG = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).log) +FILES_OUT = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).out) +FILES_AUX = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).aux) +FILES_HTML = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).html) +FILES_INFO = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).info) +DIRS_CHUNK = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base)$(BASEDIR_SUFFIX)) +LISTS_HTML = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).$(HTML_MANIFEST_EXT)) +LISTS_MAN = $(foreach base,$(basename $(SOURCE_FILES_DBK)),$(base).$(MAN_MANIFEST_EXT)) +FILES_CHNK = $(shell for manifest in $(LISTS_HTML); do if [ -f "$$manifest" ]; then cat $$manifest; fi done) +FILES_MAN = $(shell for manifest in $(LISTS_MAN); do if [ -f "$$manifest" ]; then cat $$manifest; fi done) +FILES_MANP = $(foreach base,$(FILES_MAN),$(base).man.pdf) +FILES_MANT = $(foreach base,$(FILES_MAN),$(base).out.txt) +DIRS_MAN = $(shell for file in $(FILES_MAN); do dirname $$file; done | uniq) + +# ----------------------------------------------------------------- +# ** stylesheet for testing whether a file has a refentry +# ----------------------------------------------------------------- +REFENTRY_CHECK := \ + \ + \ + \ + true \ + \ + \ + + +# ----------------------------------------------------------------- +# ** Stylesheet Customization Layers ** +# ----------------------------------------------------------------- +# +# for DBLaTeX +DBX_CUSTOM := \ + 0 \ + 1 \ + 0 \ + 1 \ + 1 \ + left \ + 1 \ + \ + docbook \ + all \ + "" \ + WIDELABEL \ + 0 \ + [htbp] \ + 0 \ + 1 \ + \ + twoside \ + , \ + 1 \ + Synopsis \ + \ + ansi \ + 1 \ + 0 \ + java \ + 0 \ + + +# for FO output +FO_CUSTOM := \ + \ + 1 \ + A4 \ + \ + false \ + 1 \ + left \ + 1 \ + 0 \ + 1 \ + 1 \ + 1 \ + 1 \ + 1 \ + 1 \ + \ + blue \ + \ + \ + \#E0E0E0 \ + 4pt \ + 4pt \ + 4pt \ + 4pt \ + \ + \ + \ + \ + pt \ + \ + \ + \ + \ + \ + pt \ + \ + \ + \ + \ + \ + pt \ + \ + \ + \ + \ + \ + pt \ + \ + \ + \ + \ + \ + pt \ + \ + \ + \ + wrap \ + \ \ + \ + \ + pt \ + \ + \ + + +# for single-file (X)HTML outpout +HTML_CUSTOM := \ + \ + local.l10n.xml \ + \ + 1 \ + 0 \ + \ + 0 \ + $(HTML_STYLESHEET) \ + 0 \ + 1 \ + + +# for chunked (X)HTML output +CHNK_CUSTOM := \ + \ + 0 \ + 1 \ + 0 \ + $(HTML_STYLESHEET) \ + 1 \ + $(HTML_IMAGES) \ + $(HTML_IMAGES_EXT) \ + \ + 1 \ + 1 \ + yes \ + 1 \ + + +# for man-page output +MAN_CUSTOM := \ + \ + \ + \ + man/ \ + \ + + +# ----------------------------------------------------------------- +# ** TARGETS START HERE ** +# ----------------------------------------------------------------- +# prevents make from deleting, e.g. foo.1, after making foo.1.pdf +# and foo.1.txt from it. +.PRECIOUS: %.1 %.2 %.3 %.4 %.5 %.6 %.7 %.8 %.9 + +docbook: $(DOCBOOK_OUTPUT_FORMATS) + +xml: $(SOURCE_FILES_DBK) + +man: $(LISTS_MAN) + +# we can generate PDFs from man pages +man-pdf: man + $(MAKE) $(FILES_MANP) + +# we can generate plain text from man pages +man-txt: man + $(MAKE) $(FILES_MANT) + +html: $(FILES_HTML) + +chunk: $(LISTS_HTML) + +txt: $(FILES_TXT) + +pdf: $(FILES_PDF) + +info: $(FILES_INFO) + +# use the "debug" target to echo variables, etc., to +# test/troubleshoot changes you make to this makefile +debug: + echo $(wildcard *$(DOCBOOK_FILE_EXTENSION)) + echo $(ASCII_OR_DOCBOOK) + echo $(SOURCE_FILES_DBK) + +# ----------------------------------------------------------------- +# pattern rule to make DocBook refentry from asciidoc source +# ----------------------------------------------------------------- +%.1$(DOCBOOK_FILE_EXTENSION): %.1.txt + $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $< + +%.2$(DOCBOOK_FILE_EXTENSION): %.2.txt + $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $< + +%.3$(DOCBOOK_FILE_EXTENSION): %.3.txt + $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $< + +%.4$(DOCBOOK_FILE_EXTENSION): %.4.txt + $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $< + +%.5$(DOCBOOK_FILE_EXTENSION): %.5.txt + $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $< + +%.6$(DOCBOOK_FILE_EXTENSION): %.6.txt + $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $< + +%.7$(DOCBOOK_FILE_EXTENSION): %.7.txt + $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $< + +%.8$(DOCBOOK_FILE_EXTENSION): %.8.txt + $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $< + +%.9$(DOCBOOK_FILE_EXTENSION): %.9.txt + $(ASCIIDOC) $(ASCIIDOCFLAGS) -d manpage -b docbook $< + +# ----------------------------------------------------------------- +# pattern rule to make DocBook article from asciidoc source +# ----------------------------------------------------------------- +%$(DOCBOOK_FILE_EXTENSION): %.txt + export LINECOUNT1=$$(cat $< | $(DOS2UNIX) $(DOS2UNIXFLAGS) | egrep "^=+$$" | wc -l); \ + export LINECOUNT2=$$(cat $< | $(DOS2UNIX) $(DOS2UNIXFLAGS) | egrep "^= $$" | wc -l); \ + if [[ $$LINECOUNT1 > 1 || $$LINECOUNT2 > 1 ]]; then \ + $(ASCIIDOC) $(ASCIIDOCFLAGS) -d book -b docbook $<; \ + else \ + $(ASCIIDOC) $(ASCIIDOCFLAGS) -b docbook $<; \ + fi + +# ----------------------------------------------------------------- +# pattern rule for making (X)HTML and plain-text output +# ----------------------------------------------------------------- +%.html: %$(DOCBOOK_FILE_EXTENSION) + @echo '$(HTML_CUSTOM)' | $(XSLT) $(XSLT_FLAGS) $(HTML_PARAMS) - $< > $@ + +%.out.txt: %.html + $(TXT_MAKER) $(TXT_MAKER_FLAGS) ./$< \ + | sed "s/^\(\s\+[0-9]\+\. \)file:\/\/.\+$$/\\1(local)/g" \ + | egrep -v '^ file:///.+$$' \ + > $@ +# if DOCBOOK_OUTPUT_FORMATS does not contain "html", then we need +# to remove the "intermediate" HTML files we used for generating +# plain-text output +ifeq ($(findstring html,$(DOCBOOK_OUTPUT_FORMATS)),) + $(RM) $< +endif + +# ----------------------------------------------------------------- +# pattern rule for making chunked (X)HTML pages +# ----------------------------------------------------------------- +%.$(HTML_MANIFEST_EXT): %$(DOCBOOK_FILE_EXTENSION) + @echo '$(CHNK_CUSTOM)' | $(XSLT) $(XSLT_FLAGS) $(HTML_PARAMS) \ + --stringparam manifest $@ \ + --stringparam base.dir $(basename $@)$(BASEDIR_SUFFIX)/ \ + - $< + +# ----------------------------------------------------------------- +# pattern rules for making FO and PDF stuff +# ----------------------------------------------------------------- +%.fo: %$(DOCBOOK_FILE_EXTENSION) + @echo '$(FO_CUSTOM)' \ + | $(XSLT) $(XSLT_FLAGS) $(FO_PARAMS) - $< > $@ + +ifeq ($(PDF_MAKER),dblatex) +%.pdf: %$(DOCBOOK_FILE_EXTENSION) + mkdir -p $(DOCBOOK_TMP) + echo '$(DBX_CUSTOM)' > $(DOCBOOK_TMP)/dblatex.xsl + -$(DBLATEX) $(DBLATEX_FLAGS)\ + -p $(DOCBOOK_TMP)/dblatex.xsl \ + -o $@ \ + $< + $(RM) -r $(DOCBOOK_TMP) +endif + +%.pdf: %.fo +ifeq ($(PDF_MAKER),) + $(error No PDF_MAKER specified. Cannot make pdf) +else +ifeq ($(PDF_MAKER),xep) + $(XEP) $(XEP_FLAGS) $< $@ +else +ifeq ($(PDF_MAKER),fop) + $(FOP) $(FOP_FLAGS) $< $@ +else +ifeq ($(PDF_MAKER),xmlroff) + $(XMLROFF) $(XMLROFF_FLAGS) $< -o $@ +else +ifeq ($(PDF_MAKER),passivetex) + $(PDFTEX) $(PDFTEX_FLAGS) &$(PDFXMLTEX) $< + @if [ `egrep Rerun $(basename $@).log | wc -l` -gt 0 ]; then \ + $(PDFTEX) $(PDFTEX_FLAGS) &$(PDFXMLTEX) $< ; \ + fi + @if [ `egrep Rerun $(basename $@).log | wc -l` -gt 0 ]; then \ + $(PDFTEX) $(PDFTEX_FLAGS) &$(PDFXMLTEX) $< ; \ + fi + $(RM) $(basename $@).log + $(RM) $(basename $@).aux + $(RM) $(basename $@).out +else + $(error I do not know how to make a PDF using "$(PDF_MAKER)") +endif +endif +endif +endif +endif + +# ----------------------------------------------------------------- +# pattern rules for making TeXinfo stuff +# ----------------------------------------------------------------- +%.txml: %$(DOCBOOK_FILE_EXTENSION) + $(DB2X_XSLTPROC) $(DB2X_XSLTPROC_FLAGS) -s texi -o $@ $< + +%.texi: %.txml + $(DB2X_TEXIXML) $(DB2X_TEXIXML_FLAGS) $< + +# the following is actually a built-in rule, but it's redefined +# here just for the sake of clarity +%.info: %.texi + $(MAKEINFO) $(MAKEINFO_FLAGS) $< -o $@ + +# ----------------------------------------------------------------- +# pattern rule for making man pages +# ----------------------------------------------------------------- +%.$(MAN_MANIFEST_EXT): %$(DOCBOOK_FILE_EXTENSION) + @if [ "$(strip $(shell echo '$(REFENTRY_CHECK)' | $(XSLT) $(XSLT_FLAGS) - $<))" != "true" ]; then \ + touch $@; \ + else \ + echo '$(MAN_CUSTOM)' \ + | $(XSLT) $(XSLT_FLAGS) $(MAN_PARAMS) \ + --stringparam man.output.manifest.filename $@ \ + - $<; \ + fi + +# ----------------------------------------------------------------- +# pattern rule for enabling direct "make foo.1" to work +# ----------------------------------------------------------------- + +%.1 %.2 %.3 %.4 %.5 %.6 %.7: %.xml + $(MAKE) $(basename $<).$(MAN_MANIFEST_EXT) + +# ----------------------------------------------------------------- +# pattern rules for making Postscript/PDF output from man pages +# ----------------------------------------------------------------- +%.1.man.ps: %.1 + $(MAN) -l $(MAN_FLAGS) -Tps $< > $@ + +%.2.man.ps: %.2 + $(MAN) -l $(MAN_FLAGS) -Tps $< > $@ + +%.3.man.ps: %.3 + $(MAN) -l $(MAN_FLAGS) -Tps $< > $@ + +%.4.man.ps: %.4 + $(MAN) -l $(MAN_FLAGS) -Tps $< > $@ + +%.5.man.ps: %.5 + $(MAN) -l $(MAN_FLAGS) -Tps $< > $@ + +%.6.man.ps: %.6 + $(MAN) -l $(MAN_FLAGS) -Tps $< > $@ + +%.7.man.ps: %.7 + $(MAN) -l $(MAN_FLAGS) -Tps $< > $@ + +%.8.man.ps: %.8 + $(MAN) -l $(MAN_FLAGS) -Tps $< > $@ + +%.9.man.ps: %.9 + $(MAN) -l $(MAN_FLAGS) -Tps $< > $@ + +# ----------------------------------------------------------------- +# pattern rule for converting Postscript to PDF +# ----------------------------------------------------------------- +%.pdf: %.ps + $(PS2PDF) $(PS2PDF_FLAGS) $< + +# ----------------------------------------------------------------- +# pattern rules for making plain-text output from man pages +# ----------------------------------------------------------------- +%.1.out.txt: %.1 + $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@ + +%.2.out.txt: %.2 + $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@ + +%.3.out.txt: %.3 + $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@ + +%.4.out.txt: %.4 + $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@ + +%.5.out.txt: %.5 + $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@ + +%.6.out.txt: %.6 + $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@ + +%.7.out.txt: %.7 + $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@ + +%.8.out.txt: %.8 + $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@ + +%.9.out.txt: %.9 + $(MAN) -l $(MAN_FLAGS) -Tascii $< | $(COL) -b $(COL_FLAGS) | $(EXPAND) $(EXPAND_FLAGS) > $@ + +# ----------------------------------------------------------------- +# target(s) for cleaning up the mess +# ----------------------------------------------------------------- +clean: +ifneq ($(FILES_TXT),) + $(RM) $(FILES_TXT) +endif +ifneq ($(FILES_PDF),) + $(RM) $(FILES_PDF) +endif +ifneq ($(FILES_FO),) + $(RM) $(FILES_FO) +endif +ifneq ($(FILES_LOG),) + $(RM) $(FILES_LOG) +endif +ifneq ($(FILES_OUT),) + $(RM) $(FILES_OUT) +endif +ifneq ($(FILES_AUX),) + $(RM) $(FILES_AUX) +endif +ifneq ($(FILES_HTML),) + $(RM) $(FILES_HTML) +endif +ifneq ($(FILES_CHNK),) + $(RM) $(FILES_CHNK) +endif +ifneq ($(FILES_MAN),) + $(RM) $(FILES_MAN) +endif +ifneq ($(FILES_MANT),) + $(RM) $(FILES_MANT) +endif +ifneq ($(FILES_MANP),) + $(RM) $(FILES_MANP) +endif +ifneq ($(FILES_INFO),) + $(RM) $(FILES_INFO) +endif +ifneq ($(DIRS_CHUNK),) + for dir in $(DIRS_CHUNK); do \ + if [ -d "$$dir" ]; then \ + $(RMDIR) $(RMDIR_FLAGS) $$dir; \ + fi \ + done +endif +ifneq ($(DIRS_MAN),) +ifneq ($(DIRS_MAN),.) + for dir in $(DIRS_MAN); do \ + if [ -d "$$dir" ]; then \ + $(RMDIR) $(RMDIR_FLAGS) $$dir; \ + fi \ + done +endif +endif +ifneq ($(LISTS_MAN),) + $(RM) $(LISTS_MAN) +endif +ifneq ($(LISTS_HTML),) + $(RM) $(LISTS_HTML) +endif +ifneq ($(ASCII_OR_DOCBOOK),docbook) + $(RM) -i $(SOURCE_FILES_DBK) +endif diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.combine b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.combine new file mode 100644 index 000000000..28a5e1846 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.combine @@ -0,0 +1,182 @@ +# $Source$ +# $Author: xmldoc $ +# $Date: 2007-03-04 22:28:18 -0800 (Sun, 04 Mar 2007) $ +# $Revision: 6666 $ +# vim: number +# +# ----------------------------------------------------------------- +# ** Makefile.combine -- combine source files ** +# ----------------------------------------------------------------- +# +# This file is part of the DocBook Project XSL Stylesheet +# distribution. +# +# See http://docbook.sourceforge.net/release/xsl/current/ +# for copyright and other information. +# +# This makefile creates "wrapper" files that combine sets of +# individual DocBook source files. The purpose of combining the +# files is to speed up processing time. By default it puts 20 +# files into each wrapper. Use CHUNKSIZE to configure the number +# of files per wrapper. +# +# Currently, this makefile has only a "man" target and is mainly +# intended to speed up processing of large numbers of individual +# refentry instances. + +# What file extension do you use for DocBook source files? +DOCBOOK_FILE_EXTENSION = .xml +SOURCE_FILES_DBK = $(wildcard *$(DOCBOOK_FILE_EXTENSION)) + +MAKEFILE_DOCBOOK = Makefile.DocBook + +XSLTPROC=xsltproc +XSLTPROC_FLAGS= + +SED=sed +SED_FLAGS=-i + +CHUNKSIZE ?= 20 + +WRAPPER_ELEMENT = reference +WRAPPER_TITLE=Combined contents + +COMBINE_XSL = \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + <$(WRAPPER_ELEMENT)> \ + $(WRAPPER_TITLE) \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + + +all: man + +man: build/man + +build/Makefile: + if [ ! -d build ]; then mkdir build; fi + cp $(MAKEFILE_DOCBOOK) $@ + +combine.xsl: Makefile + @echo '$(COMBINE_XSL)' > $@ + $(SED) $(SED_FLAGS) "s/\^\^/'/g" $@ + +build/1.xml: combine.xsl + $(XSLTPROC) $(XSLTPROC_FLAGS) \ + --stringparam files "$(SOURCE_FILES_DBK)" \ + --stringparam chunk.size $(CHUNKSIZE) \ + $< $< + +build/man: build/Makefile build/1.xml + time $(MAKE) -C build man \ + MAN_PARAMS="--stringparam man.output.quietly 1 \ + --stringparam refentry.meta.get.quietly 1 \ + --stringparam man.charmap.enabled 0" + +debug: + +clean: + $(RM) -r build diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.docParam b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.docParam new file mode 100644 index 000000000..36d12cafc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/tools/make/Makefile.docParam @@ -0,0 +1,59 @@ +# $Source$ +# $Author: xmldoc $ +# $Date: 2007-03-23 14:57:22 -0700 (Fri, 23 Mar 2007) $ +# $Revision: 6759 $ +# vim: number +# +# ------------------------------------------------------------------ +# ** Makefile.paramDoc - create param.xsl files w/ embedded doc ** +# ------------------------------------------------------------------ + +PARAMFILES = $(wildcard ../../*/param.xsl) +PARAMFILESDOCD = $(foreach base,$(basename $(PARAMFILES)),$(base).docd.xsl) + +XSLT=xsltproc +XSLTFLAGS= + +COPYDOC := \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + \ + &\#x0a; \ + \ + \ + \ + &\#x0a; \ + \ + \ + + +all: $(PARAMFILESDOCD) + +%.docd.xsl: %.xsl + @echo '$(COPYDOC)' | $(XSLT) $(XSLTFLAGS) - $< > $@ + +debug: + @echo $(PARAMFILESDOCD) + +clean: + $(RM) $(PARAMFILESDOCD) diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/LICENSE b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/LICENSE new file mode 100644 index 000000000..63c2931f3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/LICENSE @@ -0,0 +1 @@ +See doc/content/index.html. \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/css/positioning.css b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/css/positioning.css new file mode 100644 index 000000000..3d30bc28b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/css/positioning.css @@ -0,0 +1,109 @@ +body { font: 12px Verdana, Geneva, sans-serif; } +p, ul, ol, li { font: 10pt Verdana, Geneva, sans-serif; } +h1 { font: bold 15pt Arial, Helvetica, geneva; } +h2 { font: bold 14pt Arial, Helvetica, geneva; } + +#header { + background: white url(../images/header-bg.gif) repeat-x; + position: fixed; + width: 100%; + height: 95px; + top: 0; + right: 0; + bottom: auto; + left: 0; + border-bottom: 2px solid #cccccc; + z-index: 2000; +} + +#leftnavigation { +/* background-color:#91e7b3;*/ + overflow: auto; + position: fixed; + height: auto; + top: 90px; + bottom: 0; + left: 0; + width: 280px; + z-index: 1500; + border-right:2px solid #CCCCCC; +} + +#content { + position: relative; + top: 90px; /* left: 240px;*/ + right: auto; /* bottom: 20px; */ + margin: 0px 0px 0px 280px; + width: auto; + height: inherit; + padding-left: 5px; + padding-right: 30px; + color: #000000; + /*border-left: 2px solid #cccccc; overflow :scroll;*/ + z-index: 1000; + + max-width: 70em; + min-width:800px; +} + +#navheader { + position: fixed; + top: 65px; + right:4px; +} + +#content h1, #content h2 { color: #cc0000; } +.navfooter { bottom: 2%; } +.highlight { background-color: #c5d3c3; } +.highlightButton{ font-size: 0; } + +/* Show Hide TOC tree */ +.pointLeft { + background: url("../images/showHideTreeIcons.png") 0 0 no-repeat; + height: 28px; + width: 15px; + display: block; + font-size: 0; + cursor: pointer; +} +.pointRight { + background: url("../images/showHideTreeIcons.png") -15px 0 no-repeat; + height: 28px; + display: block; + font-size: 0; + cursor: pointer; +} + +/* Search results Styling */ +.searchExpression { + color: #0050A0; + background-color: #EBEFF8; + font-size: 12pt; +} +.searchresult li a { + text-decoration: none; + color: #0050A0; +} +.searchresult li { + color: #0050A0; +} +.shortdesclink { + color: gray; + font-size: 9pt; +} +.searchText { + border: #BFCEE9 solid 1pt; + width: 11em +} +.searchButton { + margin-left: 3px; + background: #EBEFF8; + color: #0050A0; + border: #BFCEE9 solid 1pt; + font-weight: bold; + font-size: 10pt +} + +.title, div.toc>p{ + font-weight: bold; + } \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-1.4.2.min.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-1.4.2.min.js new file mode 100644 index 000000000..7c2430802 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-1.4.2.min.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
    a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

    ";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
    ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
    ","
    "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
    ").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
    "; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js new file mode 100644 index 000000000..fec53e8e0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/jquery-ui-1.8.2.custom.min.js @@ -0,0 +1,321 @@ +/*! + * jQuery UI 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +(function(c){c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.2",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Widget + */ +(function(b){var j=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add(this).each(function(){b(this).triggerHandler("remove")});return j.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend({},c.options);b[e][a].prototype= +b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==undefined){h=i;return false}}):this.each(function(){var g= +b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){this.element=b(c).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create(); +this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===undefined)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/*! + * jQuery UI Mouse 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&& +this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault(); +return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&& +this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX- +a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= +0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= +g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, +elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? +-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= +"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); +;/* + * jQuery UI Resizable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.resizable",d.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");d.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element, +_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&d.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(d('
    ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!d(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var e=0;e
    ');/sw|se|ne|nw/.test(g)&&f.css({zIndex:++a.zIndex});"se"==g&&f.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[g]=".ui-resizable-"+g;this.element.append(f)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=d(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=d(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}d(this.handles[i])}};this._renderAxis(this.element);this._handles=d(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();d(this.element).addClass("ui-resizable-autohide").hover(function(){d(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){d(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){d(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(d(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +e=this.element;this.resizing=true;this.documentScroll={top:d(document).scrollTop(),left:d(document).scrollLeft()};if(e.is(".ui-draggable")||/absolute/.test(e.css("position")))e.css({position:"absolute",top:c.top,left:c.left});d.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var g=m(this.helper.css("top"));if(a.containment){c+=d(a.containment).scrollLeft()||0;g+=d(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:g};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:c,top:g};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=d(".ui-resizable-"+this.axis).css("cursor");d("body").css("cursor",a=="auto"?this.axis+"-resize":a);e.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,e=this._change[this.axis];if(!e)return false;c=e.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var e=this._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName);e=g&&d.ui.hasScroll(e[0],"left")?0:c.sizeDiff.height; +g={width:c.size.width-(g?0:c.sizeDiff.width),height:c.size.height-e};e=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var f=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(d.extend(g,{top:f,left:e}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}d("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop", +b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,e=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(e=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(e=="nw"){b.top= +a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,e=k(b.width)&&a.maxWidth&&a.maxWidthb.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(f)b.width=a.minWidth;if(h)b.height=a.minHeight;if(e)b.width=a.maxWidth;if(g)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height, +l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(f&&l)b.left=i-a.minWidth;if(e&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(g&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=d.browser.msie&&d.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+ +a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return d.extend(this._change.n.apply(this, +arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return d.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){d.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});d.extend(d.ui.resizable, +{version:"1.8.2"});d.ui.plugin.add("resizable","alsoResize",{start:function(){var b=d(this).data("resizable").options,a=function(c){d(c).each(function(){d(this).data("resizable-alsoresize",{width:parseInt(d(this).width(),10),height:parseInt(d(this).height(),10),left:parseInt(d(this).css("left"),10),top:parseInt(d(this).css("top"),10)})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else d.each(b.alsoResize,function(c){a(c)}); +else a(b.alsoResize)},resize:function(){var b=d(this).data("resizable"),a=b.options,c=b.originalSize,e=b.originalPosition,g={height:b.size.height-c.height||0,width:b.size.width-c.width||0,top:b.position.top-e.top||0,left:b.position.left-e.left||0},f=function(h,i){d(h).each(function(){var j=d(this),l=d(this).data("resizable-alsoresize"),p={};d.each((i&&i.length?i:["width","height","top","left"])||["width","height","top","left"],function(n,o){if((n=(l[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(/relative/.test(j.css("position"))&& +d.browser.opera){b._revertToRelativePosition=true;j.css({position:"absolute",top:"auto",left:"auto"})}j.css(p)})};typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?d.each(a.alsoResize,function(h,i){f(h,i)}):f(a.alsoResize)},stop:function(){var b=d(this).data("resizable");if(b._revertToRelativePosition&&d.browser.opera){b._revertToRelativePosition=false;el.css({position:"relative"})}d(this).removeData("resizable-alsoresize-start")}});d.ui.plugin.add("resizable","animate",{stop:function(b){var a= +d(this).data("resizable"),c=a.options,e=a._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName),f=g&&d.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height;g={width:a.size.width-(g?0:a.sizeDiff.width),height:a.size.height-f};f=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(d.extend(g,h&&f?{top:h,left:f}:{}),{duration:c.animateDuration,easing:c.animateEasing, +step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&d(e[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});d.ui.plugin.add("resizable","containment",{start:function(){var b=d(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof d?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= +d(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:d(document),left:0,top:0,width:d(document).width(),height:d(document).height()||document.body.parentNode.scrollHeight}}else{var e=d(a),g=[];d(["Top","Right","Left","Bottom"]).each(function(i,j){g[i]=m(e.css("padding"+j))});b.containerOffset=e.offset();b.containerPosition=e.position();b.containerSize={height:e.innerHeight()-g[3],width:e.innerWidth()-g[1]};c=b.containerOffset; +var f=b.containerSize.height,h=b.containerSize.width;h=d.ui.hasScroll(a,"left")?a.scrollWidth:h;f=d.ui.hasScroll(a)?a.scrollHeight:f;b.parentData={element:a,left:c.left,top:c.top,width:h,height:f}}}},resize:function(b){var a=d(this).data("resizable"),c=a.options,e=a.containerOffset,g=a.position;b=a._aspectRatio||b.shiftKey;var f={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))f=e;if(g.left<(a._helper?e.left:0)){a.size.width+=a._helper?a.position.left-e.left: +a.position.left-f.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?e.left:0}if(g.top<(a._helper?e.top:0)){a.size.height+=a._helper?a.position.top-e.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?e.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-f.left:a.offset.left-f.left)+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-f.top:a.offset.top- +e.top)+a.sizeDiff.height);g=a.containerElement.get(0)==a.element.parent().get(0);f=/relative|absolute/.test(a.containerElement.css("position"));if(g&&f)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(e+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-e;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=d(this).data("resizable"),a=b.options,c=b.containerOffset,e=b.containerPosition, +g=b.containerElement,f=d(b.helper),h=f.offset(),i=f.outerWidth()-b.sizeDiff.width;f=f.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f});b._helper&&!a.animate&&/static/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f})}});d.ui.plugin.add("resizable","ghost",{start:function(){var b=d(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, +display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=d(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=d(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});d.ui.plugin.add("resizable","grid",{resize:function(){var b= +d(this).data("resizable"),a=b.options,c=b.size,e=b.originalSize,g=b.originalPosition,f=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-e.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-e.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a}else if(/^(ne)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}else{if(/^(sw)$/.test(f)){b.size.width=e.width+h;b.size.height= +e.height+a}else{b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}b.position.left=g.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +; +/* + * jQuery UI Selectable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
    ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom").addClass("ui-autocomplete").appendTo("body",c).mousedown(function(){setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(d,b){b=b.item.data("item.autocomplete"); +false!==a._trigger("focus",null,{item:b})&&/^key/.test(d.originalEvent.type)&&a.element.val(b.value)},selected:function(d,b){b=b.item.data("item.autocomplete");false!==a._trigger("select",d,{item:b})&&a.element.val(b.value);a.close(d);d=a.previous;if(a.element[0]!==c.activeElement){a.element.focus();a.previous=d}a.selectedItem=b},blur:function(){a.menu.element.is(":visible")&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()}, +destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();e.Widget.prototype.destroy.call(this)},_setOption:function(a){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource()},_initSource:function(){var a,c;if(e.isArray(this.options.source)){a=this.options.source;this.source=function(d,b){b(e.ui.autocomplete.filter(a,d.term))}}else if(typeof this.options.source=== +"string"){c=this.options.source;this.source=function(d,b){e.getJSON(c,d,b)}}else this.source=this.options.source},search:function(a,c){a=a!=null?a:this.element.val();if(a.length").data("item.autocomplete", +c).append(""+c.label+"").appendTo(a)},_move:function(a,c){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](c);else this.search(null,c)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")},filter:function(a,c){var d=new RegExp(e.ui.autocomplete.escapeRegex(c), +"i");return e.grep(a,function(b){return d.test(b.label||b.value||b)})}})})(jQuery); +(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(e(c.target).closest(".ui-menu-item a").length){c.preventDefault();a.select(c)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(c){a.activate(c,e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,b=this.element.attr("scrollTop"),f=this.element.height();if(d<0)this.element.attr("scrollTop",b+d);else d>f&&this.element.attr("scrollTop",b+d-f+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:c})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); +this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prev().length},last:function(){return this.active&&!this.active.next().length},move:function(a,c,d){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);a.length?this.activate(d,a):this.activate(d,this.element.children(c))}else this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active|| +this.last())this.activate(a,this.element.children(":first"));else{var c=this.active.offset().top,d=this.element.height(),b=this.element.children("li").filter(function(){var f=e(this).offset().top-c-d+e(this).height();return f<10&&f>-10});b.length||(b=this.element.children(":last"));this.activate(a,b)}else this.activate(a,this.element.children(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(":last")); +else{var c=this.active.offset().top,d=this.element.height();result=this.element.children("li").filter(function(){var b=e(this).offset().top-c+d-e(this).height();return b<10&&b>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":""));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");var a=this,b=a.options,d=b.title||a.originalTitle||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
    ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
    ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), +h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", +e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== +b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index", +c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== +f[0]&&e.shiftKey){g.focus(1);return false}}});c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false,e=c("
    ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a, +function(g,f){g=c('').text(g).click(function(){f.apply(b.element[0],arguments)}).appendTo(e);c.fn.button&&g.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging"); +b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,position:f.position,size:f.size}}a=a===undefined?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position"); +a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop", +f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0];a=a||c.ui.dialog.prototype.options.position;if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(e,g){if(+b[e]===b[e]){d[e]=b[e];b[e]= +g}})}else if(typeof a==="object"){if("left"in a){b[0]="left";d[0]=a.left}else if("right"in a){b[0]="right";d[0]=-a.right}if("top"in a){b[1]="top";d[1]=a.top}else if("bottom"in a){b[1]="bottom";d[1]=-a.bottom}}(a=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position({my:b.join(" "),at:b.join(" "),offset:d.join(" "),of:window,collision:"fit",using:function(e){var g=c(this).css(e).offset().top;g<0&&c(this).css("top",e.top-g)}});a||this.uiDialog.hide()},_setOption:function(a, +b){var d=this,e=d.uiDialog,g=e.is(":data(resizable)"),f=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");break;case "draggable":b?d._makeDraggable():e.draggable("destroy");break; +case "height":f=true;break;case "maxHeight":g&&e.resizable("option","maxHeight",b);f=true;break;case "maxWidth":g&&e.resizable("option","maxWidth",b);f=true;break;case "minHeight":g&&e.resizable("option","minHeight",b);f=true;break;case "minWidth":g&&e.resizable("option","minWidth",b);f=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title", +d.uiDialogTitlebar).html(""+(b||" "));break;case "width":f=true;break}c.Widget.prototype._setOption.apply(d,arguments);f&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height-b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight", +this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.2",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&& +c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
    ").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&& +b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight, +document.body.offsetHeight);return a",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:'
  • #{label}
  • '},_create:function(){this._tabify(true)},_setOption:function(c,e){if(c=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[c]=e;this._tabify()}},_tabId:function(c){return c.title&&c.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+s()},_sanitizeSelector:function(c){return c.replace(/:/g,"\\:")},_cookie:function(){var c=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+v());return d.cookie.apply(null,[c].concat(d.makeArray(arguments)))},_ui:function(c,e){return{tab:c,panel:e,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var c= +d(this);c.html(c.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function e(g,f){g.css({display:""});!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}this.list=this.element.find("ol,ul").eq(0);this.lis=d("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);var a=this,b=this.options,h=/^#.+/;this.anchors.each(function(g,f){var j=d(f).attr("href"),l=j.split("#")[0],p;if(l&&(l===location.toString().split("#")[0]|| +(p=d("base")[0])&&l===p.href)){j=f.hash;f.href=j}if(h.test(j))a.panels=a.panels.add(a._sanitizeSelector(j));else if(j!="#"){d.data(f,"href.tabs",j);d.data(f,"load.tabs",j.replace(/#.*$/,""));j=a._tabId(f);f.href="#"+j;f=d("#"+j);if(!f.length){f=d(b.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else b.disabled.push(g)});if(c){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(b.selected===undefined){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){b.selected=g;return false}});if(typeof b.selected!="number"&&b.cookie)b.selected=parseInt(a._cookie(),10);if(typeof b.selected!="number"&&this.lis.filter(".ui-tabs-selected").length)b.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));b.selected=b.selected||(this.lis.length?0:-1)}else if(b.selected===null)b.selected=-1;b.selected=b.selected>=0&&this.anchors[b.selected]||b.selected<0?b.selected:0;b.disabled=d.unique(b.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(b.selected,b.disabled)!=-1&&b.disabled.splice(d.inArray(b.selected,b.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(b.selected>=0&&this.anchors.length){this.panels.eq(b.selected).removeClass("ui-tabs-hide");this.lis.eq(b.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[b.selected],a.panels[b.selected]))});this.load(b.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else b.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[b.collapsible?"addClass": +"removeClass"]("ui-tabs-collapsible");b.cookie&&this._cookie(b.selected,b.cookie);c=0;for(var i;i=this.lis[c];c++)d(i)[d.inArray(c,b.disabled)!=-1&&!d(i).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");b.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(b.event!="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs", +function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(b.fx)if(d.isArray(b.fx)){m=b.fx[0];o=b.fx[1]}else m=o=b.fx;var q=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);a._trigger("show", +null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},r=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};this.anchors.bind(b.event+".tabs", +function(){var g=this,f=d(this).closest("li"),j=a.panels.filter(":not(.ui-tabs-hide)"),l=d(a._sanitizeSelector(this.hash));if(f.hasClass("ui-tabs-selected")&&!b.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}b.selected=a.anchors.index(this);a.abort();if(b.collapsible)if(f.hasClass("ui-tabs-selected")){b.selected=-1;b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){r(g, +j)}).dequeue("tabs");this.blur();return false}else if(!j.length){b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this));this.blur();return false}b.cookie&&a._cookie(b.selected,b.cookie);if(l.length){j.length&&a.element.queue("tabs",function(){r(g,j)});a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs", +function(){return false})},destroy:function(){var c=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(b,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this, +"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});c.cookie&&this._cookie(null,c.cookie);return this},add:function(c,e,a){if(a===undefined)a=this.anchors.length;var b=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,e));c=!c.indexOf("#")?c.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs", +true);var i=d("#"+c);i.length||(i=d(h.panelTemplate).attr("id",c).data("destroy.tabs",true));i.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);i.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);i.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");i.removeClass("ui-tabs-hide"); +this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(c){var e=this.options,a=this.lis.eq(c).remove(),b=this.panels.eq(c).remove();if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(c+(c+1=c?--h:h});this._tabify();this._trigger("remove", +null,this._ui(a.find("a")[0],b[0]));return this},enable:function(c){var e=this.options;if(d.inArray(c,e.disabled)!=-1){this.lis.eq(c).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=c});this._trigger("enable",null,this._ui(this.anchors[c],this.panels[c]));return this}},disable:function(c){var e=this.options;if(c!=e.selected){this.lis.eq(c).addClass("ui-state-disabled");e.disabled.push(c);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}return this}, +select:function(c){if(typeof c=="string")c=this.anchors.index(this.anchors.filter("[href$="+c+"]"));else if(c===null)c=-1;if(c==-1&&this.options.collapsible)c=this.options.selected;this.anchors.eq(c).trigger(this.options.event+".tabs");return this},load:function(c){var e=this,a=this.options,b=this.anchors.eq(c)[0],h=d.data(b,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(b,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(c).addClass("ui-state-processing"); +if(a.spinner){var i=d("span",b);i.data("label.tabs",i.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(b.hash)).html(k);e._cleanup();a.cache&&d.data(b,"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.error(k,n,c,b)}catch(m){}}}));e.element.dequeue("tabs");return this}}, +abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(c,e){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.2"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(c,e){var a=this,b=this.options,h=a._rotate||(a._rotate= +function(i){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=b.selected;a.select(++k").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"}); +c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=j.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c|| +typeof c=="number"||f.fx.speeds[c])return this._show.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c])return this._hide.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||typeof c=="boolean"||f.isFunction(c))return this.__toggle.apply(this, +arguments);else{var a=j.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+ +b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2, +10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)* +a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").attr("id", this.id || "").html("" + this.text + "").appendTo(parent); + if (this.classes) { + current.children("span").addClass(this.classes); + } + if (this.expanded) { + current.addClass("open"); + } + if (this.hasChildren || this.children && this.children.length) { + var branch = $("
      ").appendTo(current); + if (this.hasChildren) { + current.addClass("hasChildren"); + createNode.call({ + text:"placeholder", + id:"placeholder", + children:[] + }, branch); + } + if (this.children && this.children.length) { + $.each(this.children, createNode, [branch]) + } + } + } + $.each(response, createNode, [child]); + $(container).treeview({add: child}); + }); +} + +var proxied = $.fn.treeview; +$.fn.treeview = function(settings) { + if (!settings.url) { + return proxied.apply(this, arguments); + } + var container = this; + load(settings, "source", this, container); + var userToggle = settings.toggle; + return proxied.call(this, $.extend({}, settings, { + collapsed: true, + toggle: function() { + var $this = $(this); + if ($this.hasClass("hasChildren")) { + var childList = $this.removeClass("hasChildren").find("ul"); + childList.empty(); + load(settings, this.id, childList, container); + } + if (userToggle) { + userToggle.apply(this, arguments); + } + } + })); +}; + +})(jQuery); \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.css b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.css new file mode 100644 index 000000000..d7e2c002a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.css @@ -0,0 +1,85 @@ +.treeview, .treeview ul { + padding: 0; + margin: 0; + list-style: none; +} + +.treeview ul { + background-color: white; + margin-top: 4px; +} + +.treeview .hitarea { + background: url(images/treeview-default.gif) -64px -25px no-repeat; + height: 16px; + width: 16px; + margin-left: -16px; + float: left; + cursor: pointer; +} +/* fix for IE6 */ +* html .hitarea { + display: inline; + float:none; +} + +.treeview li { + margin: 0; + padding: 3px 0 3px 16px; +} + +.treeview a.selected { + background-color: #eee; +} + +#treecontrol { margin: 1em 0; display: none; } + +.treeview .hover { color: red; cursor: pointer; } + +.treeview li { background: url(images/treeview-default-line.gif) 0 0 no-repeat; } +.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; } + +.treeview .expandable-hitarea { background-position: -80px -3px; } + +.treeview li.last { background-position: 0 -1766px } +.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url(images/treeview-default.gif); } +.treeview li.lastCollapsable { background-position: 0 -111px } +.treeview li.lastExpandable { background-position: -32px -67px } + +.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; } + +.treeview-red li { background-image: url(images/treeview-red-line.gif); } +.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url(images/treeview-red.gif); } + +.treeview-black li { background-image: url(images/treeview-black-line.gif); } +.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url(images/treeview-black.gif); } + +.treeview-gray li { background-image: url(images/treeview-gray-line.gif); } +.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url(images/treeview-gray.gif); } + +.treeview-famfamfam li { background-image: url(images/treeview-famfamfam-line.gif); } +.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url(images/treeview-famfamfam.gif); } + + +.filetree li { padding: 3px 0 2px 16px; } +.filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; } +.filetree span.folder { background: url(images/folder.gif) 0 0 no-repeat; } +.filetree li.expandable span.folder { background: url(images/folder-closed.gif) 0 0 no-repeat; } +.filetree span.file { background: url(images/file.gif) 0 0 no-repeat; } + +html, body {height:100%; margin: 0; padding: 0; } + +/* +html>body { + font-size: 16px; + font-size: 68.75%; +} Reset Base Font Size */ + /* +body { + font-family: Verdana, helvetica, arial, sans-serif; + font-size: 68.75%; + background: #fff; + color: #333; +} */ + +a img { border: none; } \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.js new file mode 100644 index 000000000..248e725b3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.js @@ -0,0 +1,255 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * + */ + +;(function($) { + + $.extend($.fn, { + swapClass: function(c1, c2) { + var c1Elements = this.filter('.' + c1); + this.filter('.' + c2).removeClass(c2).addClass(c1); + c1Elements.removeClass(c1).addClass(c2); + return this; + }, + replaceClass: function(c1, c2) { + return this.filter('.' + c1).removeClass(c1).addClass(c2).end(); + }, + hoverClass: function(className) { + className = className || "hover"; + return this.hover(function() { + $(this).addClass(className); + }, function() { + $(this).removeClass(className); + }); + }, + heightToggle: function(animated, callback) { + animated ? + this.animate({ height: "toggle" }, animated, callback) : + this.each(function(){ + jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ](); + if(callback) + callback.apply(this, arguments); + }); + }, + heightHide: function(animated, callback) { + if (animated) { + this.animate({ height: "hide" }, animated, callback); + } else { + this.hide(); + if (callback) + this.each(callback); + } + }, + prepareBranches: function(settings) { + if (!settings.prerendered) { + // mark last tree items + this.filter(":last-child:not(ul)").addClass(CLASSES.last); + // collapse whole tree, or only those marked as closed, anyway except those marked as open + this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide(); + } + // return all items with sublists + return this.filter(":has(>ul)"); + }, + applyClasses: function(settings, toggler) { + this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) { + toggler.apply($(this).next()); + }).add( $("a", this) ).hoverClass(); + + if (!settings.prerendered) { + // handle closed ones first + this.filter(":has(>ul:hidden)") + .addClass(CLASSES.expandable) + .replaceClass(CLASSES.last, CLASSES.lastExpandable); + + // handle open ones + this.not(":has(>ul:hidden)") + .addClass(CLASSES.collapsable) + .replaceClass(CLASSES.last, CLASSES.lastCollapsable); + + // create hitarea + this.prepend("
      ").find("div." + CLASSES.hitarea).each(function() { + var classes = ""; + $.each($(this).parent().attr("class").split(" "), function() { + classes += this + "-hitarea "; + }); + $(this).addClass( classes ); + }); + } + + // apply event to hitarea + this.find("div." + CLASSES.hitarea).click( toggler ); + }, + treeview: function(settings) { + + if(typeof(window.treeCookieId) !== 'undefined' || window.treeCookieId === ""){ + treeCookieId = "treeview"; + } + + settings = $.extend({ + cookieId: treeCookieId + }, settings); + + if (settings.add) { + return this.trigger("add", [settings.add]); + } + + if ( settings.toggle ) { + var callback = settings.toggle; + settings.toggle = function() { + return callback.apply($(this).parent()[0], arguments); + }; + } + + // factory for treecontroller + function treeController(tree, control) { + // factory for click handlers + function handler(filter) { + return function() { + // reuse toggle event handler, applying the elements to toggle + // start searching for all hitareas + toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() { + // for plain toggle, no filter is provided, otherwise we need to check the parent element + return filter ? $(this).parent("." + filter).length : true; + }) ); + return false; + }; + } + // click on first element to collapse tree + $("a:eq(0)", control).click( handler(CLASSES.collapsable) ); + // click on second to expand tree + $("a:eq(1)", control).click( handler(CLASSES.expandable) ); + // click on third to toggle tree + $("a:eq(2)", control).click( handler() ); + } + + // handle toggle event + function toggler() { + $(this) + .parent() + // swap classes for hitarea + .find(">.hitarea") + .swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea ) + .swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea ) + .end() + // swap classes for parent li + .swapClass( CLASSES.collapsable, CLASSES.expandable ) + .swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable ) + // find child lists + .find( ">ul" ) + // toggle them + .heightToggle( settings.animated, settings.toggle ); + if ( settings.unique ) { + $(this).parent() + .siblings() + // swap classes for hitarea + .find(">.hitarea") + .replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea ) + .replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea ) + .end() + .replaceClass( CLASSES.collapsable, CLASSES.expandable ) + .replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable ) + .find( ">ul" ) + .heightHide( settings.animated, settings.toggle ); + } + } + //Cookie Persistence + function serialize() { + function binary(arg) { + return arg ? 1 : 0; + } + var data = []; + branches.each(function(i, e) { + data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0; + }); + $.cookie(settings.cookieId, data.join("") ); + } + + function deserialize() { + var stored = $.cookie(settings.cookieId); + if ( stored ) { + var data = stored.split(""); + branches.each(function(i, e) { + $(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ](); + }); + } + } + + // add treeview class to activate styles + this.addClass("treeview"); + + // prepare branches and find all tree items with child lists + var branches = this.find("li").prepareBranches(settings); + + switch(settings.persist) { + case "cookie": + var toggleCallback = settings.toggle; + settings.toggle = function() { + serialize(); + if (toggleCallback) { + toggleCallback.apply(this, arguments); + } + }; + deserialize(); + break; + case "location": + var current = this.find("a").filter(function() { return this.href.toLowerCase() == location.href.toLowerCase(); }); + if ( current.length ) { + current.addClass("selected").parents("ul, li").add( current.next() ).show(); + } + break; + } + + branches.applyClasses(settings, toggler); + + // if control option is set, create the treecontroller and show it + if ( settings.control ) { + treeController(this, settings.control); + $(settings.control).show(); + } + + return this.bind("add", function(event, branches) { + $(branches).prev() + .removeClass(CLASSES.last) + .removeClass(CLASSES.lastCollapsable) + .removeClass(CLASSES.lastExpandable) + .find(">.hitarea") + .removeClass(CLASSES.lastCollapsableHitarea) + .removeClass(CLASSES.lastExpandableHitarea); + $(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, toggler); + }); + } + }); + + // classes used by the plugin + // need to be styled via external stylesheet, see first example + var CLASSES = $.fn.treeview.classes = { + open: "open", + closed: "closed", + expandable: "expandable", + expandableHitarea: "expandable-hitarea", + lastExpandableHitarea: "lastExpandable-hitarea", + collapsable: "collapsable", + collapsableHitarea: "collapsable-hitarea", + lastCollapsableHitarea: "lastCollapsable-hitarea", + lastCollapsable: "lastCollapsable", + lastExpandable: "lastExpandable", + last: "last", + hitarea: "hitarea" + }; + + // provide backwards compability + $.fn.Treeview = $.fn.treeview; + +})(jQuery); \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js new file mode 100644 index 000000000..e693321dd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.min.js @@ -0,0 +1,16 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * kasunbg: changed the cookieid name + * + */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("
      ").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){if(typeof(window.treeCookieId) === 'undefined' || window.treeCookieId === ""){treeCookieId = "treeview";} settings=$.extend({cookieId: treeCookieId},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.pack.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.pack.js new file mode 100644 index 000000000..eddac491f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/jquery/treeview/jquery.treeview.pack.js @@ -0,0 +1,16 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * + */ +eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(4($){$.1l($.F,{E:4(b,c){l a=3.n(\'.\'+b);3.n(\'.\'+c).o(c).m(b);a.o(b).m(c);8 3},s:4(a,b){8 3.n(\'.\'+a).o(a).m(b).P()},1n:4(a){a=a||"1j";8 3.1j(4(){$(3).m(a)},4(){$(3).o(a)})},1h:4(b,a){b?3.1g({1e:"p"},b,a):3.x(4(){T(3)[T(3).1a(":U")?"H":"D"]();7(a)a.A(3,O)})},12:4(b,a){7(b){3.1g({1e:"D"},b,a)}1L{3.D();7(a)3.x(a)}},11:4(a){7(!a.1k){3.n(":r-1H:G(9)").m(k.r);3.n((a.1F?"":"."+k.X)+":G(."+k.W+")").6(">9").D()}8 3.n(":y(>9)")},S:4(b,c){3.n(":y(>9):G(:y(>a))").6(">1z").C(4(a){c.A($(3).19())}).w($("a",3)).1n();7(!b.1k){3.n(":y(>9:U)").m(k.q).s(k.r,k.t);3.G(":y(>9:U)").m(k.u).s(k.r,k.v);3.1r("").6("J."+k.5).x(4(){l a="";$.x($(3).B().1o("14").13(" "),4(){a+=3+"-5 "});$(3).m(a)})}3.6("J."+k.5).C(c)},z:4(g){g=$.1l({N:"z"},g);7(g.w){8 3.1K("w",[g.w])}7(g.p){l d=g.p;g.p=4(){8 d.A($(3).B()[0],O)}}4 1m(b,c){4 L(a){8 4(){K.A($("J."+k.5,b).n(4(){8 a?$(3).B("."+a).1i:1I}));8 1G}}$("a:10(0)",c).C(L(k.u));$("a:10(1)",c).C(L(k.q));$("a:10(2)",c).C(L())}4 K(){$(3).B().6(">.5").E(k.Z,k.Y).E(k.I,k.M).P().E(k.u,k.q).E(k.v,k.t).6(">9").1h(g.1f,g.p);7(g.1E){$(3).B().1D().6(">.5").s(k.Z,k.Y).s(k.I,k.M).P().s(k.u,k.q).s(k.v,k.t).6(">9").12(g.1f,g.p)}}4 1d(){4 1C(a){8 a?1:0}l b=[];j.x(4(i,e){b[i]=$(e).1a(":y(>9:1B)")?1:0});$.V(g.N,b.1A(""))}4 1c(){l b=$.V(g.N);7(b){l a=b.13("");j.x(4(i,e){$(e).6(">9")[1y(a[i])?"H":"D"]()})}}3.m("z");l j=3.6("Q").11(g);1x(g.1w){18"V":l h=g.p;g.p=4(){1d();7(h){h.A(3,O)}};1c();17;18"1b":l f=3.6("a").n(4(){8 3.16.15()==1b.16.15()});7(f.1i){f.m("1v").1u("9, Q").w(f.19()).H()}17}j.S(g,K);7(g.R){1m(3,g.R);$(g.R).H()}8 3.1t("w",4(a,b){$(b).1s().o(k.r).o(k.v).o(k.t).6(">.5").o(k.I).o(k.M);$(b).6("Q").1q().11(g).S(g,K)})}});l k=$.F.z.1J={W:"W",X:"X",q:"q",Y:"q-5",M:"t-5",u:"u",Z:"u-5",I:"v-5",v:"v",t:"t",r:"r",5:"5"};$.F.1p=$.F.z})(T);',62,110,'|||this|function|hitarea|find|if|return|ul||||||||||||var|addClass|filter|removeClass|toggle|expandable|last|replaceClass|lastExpandable|collapsable|lastCollapsable|add|each|has|treeview|apply|parent|click|hide|swapClass|fn|not|show|lastCollapsableHitarea|div|toggler|handler|lastExpandableHitarea|cookieId|arguments|end|li|control|applyClasses|jQuery|hidden|cookie|open|closed|expandableHitarea|collapsableHitarea|eq|prepareBranches|heightHide|split|class|toLowerCase|href|break|case|next|is|location|deserialize|serialize|height|animated|animate|heightToggle|length|hover|prerendered|extend|treeController|hoverClass|attr|Treeview|andSelf|prepend|prev|bind|parents|selected|persist|switch|parseInt|span|join|visible|binary|siblings|unique|collapsed|false|child|true|classes|trigger|else'.split('|'),0,{})) \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/main.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/main.js new file mode 100644 index 000000000..dee730360 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/common/main.js @@ -0,0 +1,161 @@ +/** + * Miscellaneous js functions for WebHelp + * Kasun Gajasinghe, http://kasunbg.blogspot.com + * David Cramer, http://www.thingbag.net + * + */ + +$(document).ready(function() { + // $("#showHideHighlight").button(); //add jquery button styling to 'Go' button + //Generate tabs in nav-pane with JQuery + $(function() { + $("#tabs").tabs({ + cookie: { + // store cookie for 2 days. + expires: 2 + } + }); + }); + + //Generate the tree + $("#ulTreeDiv").attr("style",""); + $("#tree").treeview({ + collapsed: true, + animated: "medium", + control: "#sidetreecontrol", + persist: "cookie" + }); + + //after toc fully styled, display it. Until loading, a 'loading' image will be displayed + $("#tocLoading").attr("style","display:none;"); +// $("#ulTreeDiv").attr("style","display:block;"); + + //.searchButton is the css class applied to 'Go' button + $(function() { + $("button", ".searchButton").button(); + + $("button", ".searchButton").click(function() { return false; }); + }); + + //'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('ui-tabs-1') === '1') { //search tab is visible + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('diaSearch_Form'); + searchHighlight($.cookie('textToSearch')); + $("#showHideHighlight").css("display","block"); + } + } + + syncToc(); //Synchronize the toc tree with the content pane, when loading the page. + //$("#doSearch").button(); //add jquery button styling to 'Go' button +}); + +/** + * Synchronize with the tableOfContents + */ +function syncToc(){ + var a = document.getElementById("webhelp-currentid"); + if (a != undefined) { + var b = a.getElementsByTagName("a")[0]; + + if (b != undefined) { + //Setting the background for selected node. + var style = a.getAttribute("style"); + if (style != null && !style.match(/background-color: Background;/)) { + a.setAttribute("style", "background-color: #6495ed; " + style); + b.setAttribute("style", "color: white;"); + } else if (style != null) { + a.setAttribute("style", "background-color: #6495ed; " + style); + b.setAttribute("style", "color: white;"); + } else { + a.setAttribute("style", "background-color: #6495ed; "); + b.setAttribute("style", "color: white;"); + } + } + + //shows the node related to current content. + //goes a recursive call from current node to ancestor nodes, displaying all of them. + while (a.parentNode && a.parentNode.nodeName) { + var parentNode = a.parentNode; + var nodeName = parentNode.nodeName; + + if (nodeName.toLowerCase() == "ul") { + parentNode.setAttribute("style", "display: block;"); + } else if (nodeName.toLocaleLowerCase() == "li") { + parentNode.setAttribute("class", "collapsable"); + parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea "); + } + a = parentNode; + } + } +} + +/** + * Code for Show/Hide TOC + * + */ +function showHideToc() { + var showHideButton = $("#showHideButton"); + var leftNavigation = $("#leftnavigation"); + var content = $("#content"); + + if (showHideButton != undefined && showHideButton.hasClass("pointLeft")) { + //Hide TOC + showHideButton.removeClass('pointLeft').addClass('pointRight'); + content.css("margin", "0 0 0 0"); + leftNavigation.css("display","none"); + showHideButton.attr("title", "Show the TOC tree"); + } else { + //Show the TOC + showHideButton.removeClass('pointRight').addClass('pointLeft'); + content.css("margin", "0 0 0 280px"); + leftNavigation.css("display","block"); + showHideButton.attr("title", "Hide the TOC Tree"); + } +} + +/** + * Code for searh highlighting + */ +var highlightOn = true; +function searchHighlight(searchText) { + highlightOn = true; + if (searchText != undefined) { + var wList; + var sList = new Array(); //stem list + //Highlight the search terms + searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, " + + + +Chapter 1. Introduction

      Chapter 1. Introduction

      Abstract

      Overview of the package.

      A common requirement for technical publications groups is to produce a Web-based help + format that includes a table of contents pane, a search feature, and an index similar to what + you get from the Microsoft HTML Help (.chm) format or Eclipse help. If the content is help for + a Web application that is not exposed to the Internet or requires that the user be logged in, + then it is impossible to use services like Google to add search. +

      Features

      • Full text search.

        • Stemming support for English, French, and German. Stemming support can be added + for other languages by implementing a stemmer.

        • Support for Chinese, Japanese, and Korean using code from the Lucene search + engine.

        • Search highlighting shows where the searched for term appears in the results. + Use the H button to toggle the highlighting off and on. +

        • Search results can include brief descriptions of the target.

      • Table of contents pane with collapsible toc tree.

      • Auto-synchronization of content pane and TOC.

      • TOC and search pane implemented without the use of a frameset.

      • An Ant build.xml file to generate output. You can use this + build file by importing it into your own or use it as a model for integrating this + output format into your own build system.

      +

      Possible future enhancements

      • Move webhelp-specific parameters and gentext strings into base DocBook stylesheets. +

      • Use tabindex attributes to control the tab + order in the output. The Contents and Search tabs should be first and second, then the + search box and button, then the table of contents items, and so on.

      • Add "Expand all" and "Collapse all" buttons to the table of contents.

      • Add other search options:

        • Add an option to use Lucene for server-side searches with table of contents + state persisted on the server.

        • Add a simple form that uses a Google site:my.domain.com based search.

      • Sort search results based on relevance

      • Support wild card characters in the search query.

      • Parameterize width of the TOC pane OR make the TOC pane resizeable by the + user.

      • Automate search results summary text:

        • Automatically use the first non-heading content as the summary in the search + results.

        • Automatically limit the size of the search description to something 140 + characters.

      • Support boolean operators in search.

      • Parameterize list of files to exclude from indexing. Currently it's hard coded that + we don't index index.html and ix01.html (the + legal notice and index topics). It should be smarter and automatically not index the + index file even if it's not named ix01.html.

      • Improve performance by moving the table of contents div out of each page and into a + separate JavaScript file which then adds it to the page.

      • Add to the indexer the ability to specify a list of files or file patterns not to + index. Currently it does not index index.html or + ix01.html, which is generally appropriate, but it should be up to + the user to decide.

      • Add an index tab populated by a separate JavaScript file. Include a param/property + that allows the content creator to disable the index.

      • Add functionality to the build.xml file so that when a property + is set, the build generates a pdf version of the document and includes a link to it from + the header.

      • Add breadcrumbs so the user will know what topics he's been to.

      • Consider using more advanced Lucene indexers for Chinese and Japanese than the + CJKAnalyzer

      diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02.html b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02.html new file mode 100644 index 000000000..d7f7def8b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02.html @@ -0,0 +1,32 @@ + + + + +Chapter 2. Using the package

      Chapter 2. Using the package

      The following sections describe how to install and + use the package on Windows.

      diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s01.html b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s01.html new file mode 100644 index 000000000..0b7c93078 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s01.html @@ -0,0 +1,117 @@ + + + + +Generating webhelp output

      Generating webhelp output

      Abstract

      Installation instructions

      Procedure 2.1. To install the package on Windows

      Note

      The examples in this procedure assume a Windows installation, + but the process is the same in other environments, + mutatis mutandis.

      1. If necessary, install Java 1.6 or + higher.

        1. Confirm that Java is installed and in your + PATH by typing the following at a command prompt: +

          java -version

          Note

          To build the indexer, you must have the JDK.

      2. If necessary, install Apache Ant 1.6.5 + or higher.

        1. Unzip the Ant binary distribution to a convenient location + on your system. For example: c:\Program + Files.

        2. Set the environment variable ANT_HOME to + the top-level Ant directory. For example: c:\Program + Files\apache-ant-1.7.1.

          Tip

          See How To Manage + Environment Variables in Windows XP for information + on setting environment variables.

        3. Add the Ant bin directory to your + PATH. For example: c:\Program + Files\apache-ant-1.7.1\bin

        4. Confirm that Ant is installed by typing the following at a + command prompt:

          ant -version

          Note

          If you see a message about the file + tools.jar being missing, you can safely + ignore it.

      3. Download Saxon + 6.5.x and unzip the distribution to a convenient location on your file system. + You will use the path to saxon.jar in Step 4 below.

        Note

        The build.xml has only been tested with Saxon 6.5, though + it could be adapted to work with other XSLT processors. However, when you generate + output, the Saxon jar must not be in your + CLASSPATH.

      4. In a text editor, edit the + build.properties file in the webhelp directory + and make the changes indicated by the comments:

        # The path (relative to the build.xml file) to your input document.
        +# To use your own input document, create a build.xml file of your own
        +# and import this build.xml.
        +input-xml=docsrc/readme.xml
        +
        +# The directory in which to put the output files. 
        +# This directory is created if it does not exist.
        +output-dir=docs
        +
        +# If you are using a customization layer that imports webhelp.xsl, use
        +# this property to point to it. 
        +stylesheet-path=${ant.file.dir}/xsl/webhelp.xsl
        +
        +# If your document has image directories that need to be copied
        +# to the output directory, you can list patterns here. 
        +# See the Ant documentation for fileset for documentation
        +# on patterns.
        +#input-images-dirs=images/**,figures/**,graphics/**
        +
        +# By default, the ant script assumes your images are stored
        +# in the same directory as the input-xml. If you store your
        +# image directories in another directory, specify it here.
        +# and uncomment this line.
        +#input-images-basedir=/path/to/image/location
        +
        +# Modify this so that it points to your copy of the Saxon 6.5 jar.
        +xslt-processor-classpath=/usr/share/java/saxon-6.5.5.jar
        +
        +# For non-ns version only, this validates the document 
        +# against a dtd.
        +validate-against-dtd=true
        +
        +# Set this to false if you don't need a search tab.
        +webhelp.include.search.tab=true
        +
        +# indexer-language is used to tell the search indexer which language
        +# the docbook is written.  This will be used to identify the correct
        +# stemmer, and punctuations that differs from language to language.
        +# see the documentation for details. en=English, fr=French, de=German,
        +# zh=Chinese, ja=Japanese etc.  
        +webhelp.indexer.language=en
      5. Test the package by running the command ant webhelp + -Doutput-dir=test-ouput at the command line in the webhelp directory. It should + generate a copy of this documentation in the doc + directory. Type start test-output\index.html to open the output in a + browser. Once you have confirmed that the process worked, you can delete the test-output directory.

        Important

        The Saxon 6.5 jar should not be in your + CLASSPATH when you generate the webhelp output. If you have any + problems, try running ant with an empty CLASSPATH.

      6. To process your own document, simply refer to this package + from another build.xml in arbitrary location on + your system:

        1. Create a new build.xml file that + defines the name of your source file, the desired output + directory, and imports the build.xml from + this package. For example:

          <project>
          +  <property name="input-xml" value="path-to/yourfile.xml"/>
          +  <property name="input-images-dirs" value="images/** figures/** graphics/**"/>
          +  <property name="output-dir" value="path-to/desired-output-dir"/>
          +  <import file="path-to/docbook-webhelp/build.xml"/>
          +</project>
        2. From the directory containing your newly created + build.xml file, type ant + webhelp to build your document.

          Important

          The Saxon 6.5 jar should not be in your + CLASSPATH when you generate the webhelp output. If you have any + problems, try running ant with an empty CLASSPATH.

      diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s02.html b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s02.html new file mode 100644 index 000000000..091e67c78 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s02.html @@ -0,0 +1,102 @@ + + + + +Using and customizing the output

      Using and customizing the output

      To deep link to a topic inside the help set, simply link directly + to the page. This help system uses no frameset, so nothing further is + necessary.

      Tip

      See Chunking into + multiple HTML files in Bob Stayton's DocBook XSL: The + Complete Guide for information on controlling output file + names and which files are chunked in DocBook.

      When you perform a search, the results can include brief + summaries. These are populated in one of two ways:

      • By adding role="summary" to a + para or phrase in the + chapter or section.

      • By adding an abstract to the + chapterinfo or sectioninfo + element.

      To customize the look and feel of the help, study the following + css files:

      • docs/common/css/positioning.css: This + handles the Positioning of DIVs in appropriate positions. For + example, it causes the leftnavigation div to appear + on the left, the header on top, and so on. Use this if you need to + change the relative positions or need to change the width/height + etc.

      • docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css: + This is the theming part which adds colors and stuff. This is a + default theme comes with jqueryui unchanged. You + can get any theme based your interest from this. (Themes are on + right navigation bar.) Then replace the css theme folder + (theme-redmond) with it, and change the xsl to point to the new + css.

      • docs/common/jquery/treeview/jquery.treeview.css: + This styles the toc Tree. Generally, you don't have to edit this + file.

      Recommended Apache configurations

      If you are serving a long document from an Apache web server, we + recommend you make the following additions or changes to your + httpd.conf or .htaccess + file. TODO: Explain what each thing + does.

      AddDefaultCharSet UTF-8 # 1
      +  
      +      # 480 weeks
      +      <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> # 2
      +      Header set Cache-Control "max-age=290304000, public"
      +      </FilesMatch>
      +      
      +      # 2 DAYS
      +      <FilesMatch "\.(xml|txt)$">
      +      Header set Cache-Control "max-age=172800, public, must-revalidate"
      +      </FilesMatch>
      +      
      +      # 2 HOURS
      +      <FilesMatch "\.(html|htm)$">
      +      Header set Cache-Control "max-age=7200, must-revalidate"
      +      </FilesMatch>
      +      
      +      # compress text, html, javascript, css, xml:
      +      AddOutputFilterByType DEFLATE text/plain # 3
      +      AddOutputFilterByType DEFLATE text/html
      +      AddOutputFilterByType DEFLATE text/xml
      +      AddOutputFilterByType DEFLATE text/css
      +      AddOutputFilterByType DEFLATE application/xml
      +      AddOutputFilterByType DEFLATE application/xhtml+xml
      +      AddOutputFilterByType DEFLATE application/rss+xml
      +      AddOutputFilterByType DEFLATE application/javascript
      +      AddOutputFilterByType DEFLATE application/x-javascript
      +      
      +      # Or, compress certain file types by extension:
      +      <Files *.html> 
      +      SetOutputFilter DEFLATE
      +      </Files>
      +      

      1

      See Odd + characters in HTML output in Bob Stayton's book + DocBook XSL: The Complete Guide for more + information about this setting.

      2

      These lines and those that follow cause the browser to + cache various resources such as bitmaps and JavaScript files. + Note that caching JavaScript files could cause your users to + have stale search indexes if you update your document since the + search index is stored in JavaScript files.

      3

      These lines cause the the server to compress html, css, + and JavaScript files and the brower to uncompress them to + improve download performance.

      diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s03.html b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s03.html new file mode 100644 index 000000000..4e0efdeb4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s03.html @@ -0,0 +1,36 @@ + + + + +Building the indexer

      Building the indexer

      To build the indexer, you must have installed the + JDK version 1.5 or higher and set the ANT_HOME + environment variable. Run ant build-indexer to recompile + nw-cms.jar

      diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s04.html b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s04.html new file mode 100644 index 000000000..d3ba7e838 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch02s04.html @@ -0,0 +1,42 @@ + + + + +Adding support for other (non-CJKV) languages

      Adding support for other (non-CJKV) languages

      To support stemming for a language, the search mechanism requires + a stemmer implemented in both Java and JavaScript. The Java version is + used by the indexer and the JavaScript verison is used to stem the + user's input on the search form. Currently the search mechanism supports + stemming for English and German. In addition, Java stemmers are included + for the following languages. Therefore, to support these languages, you + only need to implement the stemmer in JavaScript and add it to the + template. If you do undertake this task, please consider contributing + the JavaScript version back to this project and to Martin + Porter's project.

      • Danish

      • Dutch

      • Finnish

      • Hungarian

      • Italian

      • Norwegian

      • Portuguese

      • Romanian

      • Russian

      • Spanish

      • Swedish

      • Turkish

      diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03.html b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03.html new file mode 100644 index 000000000..0e608fdc5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03.html @@ -0,0 +1,37 @@ + + + + +Chapter 3. Developer Docs

      Chapter 3. Developer Docs

      This chapter provides an overview of how webhelp is implemented.

      The table of contents and search panes are implemented as divs and + rendered as if they were the left pane in a frameset. As a result, the + page must save the state of the table of contents and the search in + cookies when you navigate away from a page. When you load a new page, the + page reads these cookies and restores the state of the table of contents + tree and search. The result is that the help system behaves exactly as if + it were a frameset.

      diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s01.html b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s01.html new file mode 100644 index 000000000..f41f8019f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s01.html @@ -0,0 +1,62 @@ + + + + +Design

      Design

      An overview of webhelp page structure.

      DocBook WebHelp page structure is fully built on css-based design + abandoning frameset structure. Overall page structure can be divided in to three main sections +

      • Header: Header is a separate Div which include company logo, + navigation button(prev, next etc.), page title and heading of parent topic.

      • Content: This includes the content of the documentation. The processing of this part is + done by + DocBook XSL Chunking customization. Few further css-styling applied from + positioning.css. +

      • Left Navigation: This includes the table of contents and search tab. This + is customized using jquery-ui styling.

        • Tabbed Navigation: The navigation pane is organized in to two tabs. + Contents tab, and Search tab. Tabbed output is achieved using + JQuery Tabs plugin. +

        • Table of Contents (TOC) tree: When building the chunked html from the + docbook file, Table of Contents is generated as an Unordered List (a list + made from <ul> <li> tags). When page loads in the browser, + we apply styling to it to achieve the nice look that you see. Styling for TOC + tree is done by a JQuery UI plugin called + + TreeView. We can generate the tree easily by following javascript code: + +

          +//Generate the tree
          +$("#tree").treeview({
          +collapsed: true,
          +animated: "medium",
          +control: "#sidetreecontrol",
          +persist: "cookie"
          +});
          +

          +

        • Search Tab: This includes the search feature.

      +

      diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s02.html b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s02.html new file mode 100644 index 000000000..c4ba87291 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/ch03s02.html @@ -0,0 +1,124 @@ + + + + +Search

      Search

      Overview design of Search mechanism.

      + The searching is a fully client-side implementation of querying texts for + content searching, and no server is involved. That means when a user enters a query, + it is processed by JavaScript inside the browser, and displays the matching results by + comparing the query with a generated 'index', which too reside in the client-side web browser. + + Mainly the search mechanism has two parts. +

      • Indexing: First we need to traverse the content in the docs/content folder and index + the words in it. This is done by nw-cms.jar. You can invoke it by + ant index command from the root of webhelp of directory. You can recompile it + again and build the jar file by ant build-indexer. Indexer has some extensive + support for such as stemming of words. Indexer has extensive support for English, German, + French languages. By extensive support, what I meant is that those texts are stemmed + first, to get the root word and then indexes them. For CJK (Chinese, Japanese, Korean) + languages, it uses bi-gram tokenizing to break up the words. (CJK languages does not have + spaces between words.) +

        + When we run ant index, it generates five output files: +

        • htmlFileList.js - This contains an array named fl which stores details + all the files indexed by the indexer. +

        • htmlFileInfoList.js - This includes some meta data about the indexed files in an array + named fil. It includes details about file name, file (html) title, a summary + of the content.Format would look like, + fil["4"]= "ch03.html@@@Developer Docs@@@This chapter provides an overview of how webhelp is implemented."; +

        • index-*.js (Three index files) - These three files actually stores the index of the content. + Index is added to an array named w.

        + +

      • + Querying: Query processing happens totally in client side. Following JavaScript files handles them. +

        • nwSearchFnt.js - This handles the user query and returns the search results. It does query + word tokenizing, drop unnecessary punctuations and common words, do stemming if docbook language + supports it, etc.

        • {$indexer-language-code}_stemmer.js - This includes the stemming library. + nwSearchFnt.js file calls stemmer method in this file for stemming. + ex: var stem = stemmer(foobar); +

        +

      +

      New Stemmers

      Adding new Stemmers is very simple.

      Currently, only English, French, and German stemmers are integrated in to WebHelp. But the code is + extensible such that you can add new stemmers easily by few steps.

      What you need: +

      • You'll need two versions of the stemmer; One written in JavaScript, and another in Java. But fortunately, + Snowball contains Java stemmers for number of popular languages, and are already included with the package. + You can see the full list in Adding support for other (non-CJKV) languages. + If your language is listed there, + Then you have to find javascript version of the stemmer. Generally, new stemmers are getting added in to + Snowball Stemmers in other languages location. + If javascript stemmer for your language is available, then download it. Else, you can write a new stemmer in + JavaScript using SnowBall algorithm fairly easily. Algorithms are at + Snowball. +

      • Then, name the JS stemmer exactly like this: {$language-code}_stemmer.js. For example, + for Italian(it), name it as, it_stemmer.js. Then, copy it to the + docbook-webhelp/template/content/search/stemmers/ folder. (I assumed + docbook-webhelp is the root folder for webhelp.) +

        Note

        Make sure you changed the webhelp.indexer.language property in build.properties + to your language. +

        + +

      • Now two easy changes needed for the indexer.

        • Open docbook-webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java in + a text editor and add your language code to the supportedLanguages String Array.

          Example 3.1. Add new language to supportedLanguages array

          + change the Array from, +

          +private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko"}; 
          +    //currently extended support available for
          +    // English, German, French and CJK (Chinese, Japanese, Korean) languages only.
          +

          + To,

          +private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko", "it"}; 
          +  //currently extended support available for
          +  // English, German, French, CJK (Chinese, Japanese, Korean), and Italian languages only.
          +                    

        • + Now, open docbook-webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java and + add the following line to the code where it initializes the Stemmer (Search for + SnowballStemmer stemmer;). Then add code to initialize the stemmer Object in your language. + It's self understandable. See the example. The class names are at: + docbook-webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/. +

          Example 3.2. initialize correct stemmer based on the webhelp.indexer.language specified

          +      SnowballStemmer stemmer;
          +      if(indexerLanguage.equalsIgnoreCase("en")){
          +           stemmer = new EnglishStemmer();
          +      } else if (indexerLanguage.equalsIgnoreCase("de")){
          +          stemmer= new GermanStemmer();
          +      } else if (indexerLanguage.equalsIgnoreCase("fr")){
          +          stemmer= new FrenchStemmer();
          +      }
          +else if (indexerLanguage.equalsIgnoreCase("it")){ //If language code is "it" (Italian)
          +          stemmer= new italianStemmer();  //Initialize the stemmer to italianStemmer object.
          +      }       
          +      else {
          +          stemmer = null;
          +      }
          +

      +

      That's all. Now run ant build-indexer to compile and build the java code. + Then, run ant webhelp to generate the output from your docbook file. + For any questions, contact us or email to the docbook mailing list + . +

      diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/index.html b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/index.html new file mode 100644 index 000000000..54ae64254 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/index.html @@ -0,0 +1,71 @@ + + + + +README: Web-based Help from DocBook XML

      README: Web-based Help from DocBook XML

      Kasun Gajasinghe

      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.

      • Except as contained in this notice, the names of individuals + credited with contribution to this software shall not be used in + advertising or otherwise to promote the sale, use or other + dealings in this Software without prior written authorization from + the individuals in question.

      • Any stylesheet derived from this Software that is publicly + distributed will be identified with a different name and the + version strings in any derived Software will be changed so that no + possibility of confusion between the derived package and this + Software will exist.

      Warranty: 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 DAVID CRAMER, KASUN GAJASINGHE, OR ANY OTHER CONTRIBUTOR 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.

      This package is maintained by Kasun Gajasinghe, and David Cramer, .

      This package also includes the following software written and + copyrighted by others:

      • Files in template/common/jquery are + copyrighted by JQuery + under the MIT License. The file + jquery.cookie.js Copyright (c) 2006 Klaus + Hartl under the MIT license.

      • Some files in the template/content/search and indexer directories were originally + part of N. Quaine's htmlsearch DITA plugin. The htmlsearch DITA + plugin is available from the files + page of the DITA-users yahoogroup. The htmlsearch plugin + was released under a BSD-style license. See + indexer/license.txt for details.

      • Stemmers from the Snowball + project released under a BSD license.

      • Code from the Apache + Lucene search engine provides support for tokenizing + Chinese, Japanese, and Korean content released under the Apache + 2.0 license.

      + Webhelp for DocBook was developed as a Google Summer of Code project. +

      August 2010


      diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileInfoList.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileInfoList.js new file mode 100644 index 000000000..4517cb8c6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileInfoList.js @@ -0,0 +1,10 @@ +fil = new Array(); +fil["0"]= "ch01.html@@@Chapter 1. Introduction@@@Overview of the package."; +fil["1"]= "ch02.html@@@Chapter 2. Using the package@@@The following sections describe how to install and use the package on Windows."; +fil["2"]= "ch02s01.html@@@Generating webhelp output@@@Installation instructions"; +fil["3"]= "ch02s02.html@@@Using and customizing the output@@@null"; +fil["4"]= "ch02s03.html@@@Building the indexer@@@To build the indexer, you must have installed the JDK version 1.5 or higher and set the ANT_HOME environment variable. Run ant build-indexer to recompile nw-cms.jar"; +fil["5"]= "ch02s04.html@@@Adding support for other (non-CJKV) languages@@@null"; +fil["6"]= "ch03.html@@@Chapter 3. Developer Docs@@@This chapter provides an overview of how webhelp is implemented."; +fil["7"]= "ch03s01.html@@@Design@@@An overview of webhelp page structure."; +fil["8"]= "ch03s02.html@@@Search@@@Adding new Stemmers is very simple."; diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileList.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileList.js new file mode 100644 index 000000000..c09eccf40 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/htmlFileList.js @@ -0,0 +1,11 @@ +//List of files which are indexed. +fl = new Array(); +fl["0"]= "ch01.html"; +fl["1"]= "ch02.html"; +fl["2"]= "ch02s01.html"; +fl["3"]= "ch02s02.html"; +fl["4"]= "ch02s03.html"; +fl["5"]= "ch02s04.html"; +fl["6"]= "ch03.html"; +fl["7"]= "ch03s01.html"; +fl["8"]= "ch03s02.html"; diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-1.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-1.js new file mode 100644 index 000000000..8af5f1e15 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-1.js @@ -0,0 +1,224 @@ +var indexerLanguage="en"; +//Auto generated index for searching. +w["-"]="8"; +w["-doutput-dir"]="2"; +w["-version"]="2"; +w["1"]="0,2,4,8"; +w["140"]="0"; +w["172800"]="3"; +w["2"]="1,2,3,8"; +w["290304000"]="3"; +w["3"]="6,8"; +w["4"]="2,8"; +w["480"]="3"; +w["5"]="2,4"; +w["6"]="2"; +w["7"]="2"; +w["7200"]="3"; +w["8"]="3"; +w["_stemmer"]="8"; +w["abandon"]="7"; +w["abil"]="0"; +w["abstract"]="0,2,3"; +w["achiev"]="7"; +w["actual"]="8"; +w["ad"]="0,1,3,5,8"; +w["adapt"]="2"; +w["add"]="0,2,3,5,8"; +w["adddefaultcharset"]="3"; +w["addit"]="3,5"; +w["addoutputfilterbytyp"]="3"; +w["advanc"]="0"; +w["again"]="8"; +w["against"]="2"; +w["algorithm"]="8"; +w["all"]="0,8"; +w["allow"]="0"; +w["alreadi"]="8"; +w["and"]="0,1,2,3,4,5,6,7,8"; +w["ani"]="2,3,8"; +w["anim"]="7"; +w["anoth"]="2,8"; +w["ant"]="0,2,4,8"; +w["ant_hom"]="2,4"; +w["apach"]="1,2,3"; +w["apache-ant-1"]="2"; +w["appear"]="0,3"; +w["appli"]="7"; +w["applic"]="0,3"; +w["appropri"]="0,3"; +w["arbitrari"]="2"; +w["array"]="8"; +w["assum"]="2,8"; +w["attribut"]="0"; +w["auto-synchron"]="0"; +w["autom"]="0"; +w["automat"]="0"; +w["avail"]="8"; +w["away"]="6"; +w["back"]="5"; +w["bar"]="3"; +w["base"]="0,3,8"; +w["be"]="2"; +w["been"]="0,2"; +w["behav"]="6"; +w["below"]="2"; +w["between"]="8"; +w["bi-gram"]="8"; +w["bin"]="2"; +w["binari"]="2"; +w["bitmap"]="3"; +w["bob"]="3"; +w["book"]="3"; +w["boolean"]="0"; +w["both"]="5"; +w["box"]="0"; +w["breadcrumb"]="0"; +w["break"]="8"; +w["brief"]="0,3"; +w["brower"]="3"; +w["browser"]="2,3,7,8"; +w["build"]="0,1,2,4,7,8"; +w["build-index"]="4,8"; +w["built"]="7"; +w["but"]="0,2,8"; +w["button"]="0,7"; +w["c"]="2"; +w["cach"]="3"; +w["cache-control"]="3"; +w["call"]="7,8"; +w["can"]="0,2,3,7,8"; +w["card"]="0"; +w["caus"]="3"; +w["certain"]="3"; +w["ch03"]="8"; +w["chang"]="2,3,8"; +w["chapter"]="0,1,3,6,8"; +w["chapterinfo"]="3"; +w["charact"]="0,3"; +w["chines"]="0,2,8"; +w["chm"]="0"; +w["chunk"]="3,7"; +w["cjk"]="8"; +w["cjkanalyz"]="0"; +w["class"]="8"; +w["classpath"]="2"; +w["client"]="8"; +w["client-sid"]="8"; +w["cn"]="8"; +w["code"]="0,7,8"; +w["collaps"]="0,7"; +w["color"]="3"; +w["come"]="3"; +w["command"]="2,8"; +w["comment"]="2"; +w["common"]="0,3,8"; +w["compani"]="7"; +w["compar"]="8"; +w["compil"]="8"; +w["complet"]="3"; +w["compress"]="3"; +w["conf"]="3"; +w["configur"]="1,3"; +w["confirm"]="2"; +w["consid"]="0,5"; +w["contact"]="8"; +w["contain"]="2,8"; +w["content"]="0,1,6,7,8"; +w["contribut"]="5"; +w["control"]="0,3,7"; +w["conveni"]="2"; +w["cooki"]="6,7"; +w["copi"]="2,8"; +w["correct"]="2,8"; +w["could"]="2,3"; +w["creat"]="2"; +w["creator"]="0"; +w["css"]="3,7"; +w["css-base"]="7"; +w["css-style"]="7"; +w["current"]="0,5,8"; +w["custom"]="1,2,3,7"; +w["danish"]="5"; +w["data"]="8"; +w["day"]="3"; +w["decid"]="0"; +w["deep"]="3"; +w["default"]="2,3"; +w["defin"]="2"; +w["deflat"]="3"; +w["delet"]="2"; +w["describ"]="1"; +w["descript"]="0"; +w["design"]="6,7,8"; +w["desir"]="2"; +w["desired-output-dir"]="2"; +w["detail"]="2,8"; +w["develop"]="6"; +w["differ"]="2"; +w["dir"]="2"; +w["direct"]="3"; +w["directori"]="2,8"; +w["disabl"]="0"; +w["display"]="8"; +w["distribut"]="2"; +w["div"]="0,3,6,7"; +w["divid"]="7"; +w["do"]="5,8"; +w["doc"]="2,3,6,8"; +w["docbook"]="0,2,3,7,8"; +w["docbook-apps@list"]="8"; +w["docbook-webhelp"]="2,8"; +w["docs@@@"]="8"; +w["docsrc"]="2"; +w["document"]="0,2,3,7"; +w["doe"]="0,2,3,8"; +w["domain"]="0"; +w["don"]="0,2,3"; +w["done"]="7,8"; +w["download"]="2,3,8"; +w["drop"]="8"; +w["dtd"]="2"; +w["dutch"]="5"; +w["each"]="0,3"; +w["easi"]="8"; +w["easili"]="7,8"; +w["eclips"]="0"; +w["edit"]="2,3"; +w["editor"]="2,8"; +w["element"]="3"; +w["els"]="8"; +w["email"]="8"; +w["empti"]="2"; +w["engin"]="0"; +w["english"]="0,2,5,8"; +w["englishstemm"]="8"; +w["enhanc"]="0"; +w["enter"]="8"; +w["environ"]="2,4"; +w["equalsignorecas"]="8"; +w["etc"]="2,3,7,8"; +w["even"]="0"; +w["ex"]="8"; +w["exact"]="6,8"; +w["exampl"]="2,3,8"; +w["exclud"]="0"; +w["exist"]="2"; +w["expand"]="0"; +w["explain"]="3"; +w["expos"]="0"; +w["ext"]="8"; +w["extend"]="8"; +w["extens"]="3,8"; +w["fair"]="8"; +w["fals"]="2"; +w["featur"]="0,7"; +w["feel"]="3"; +w["few"]="7,8"; +w["figur"]="2"; +w["fil"]="8"; +w["file"]="0,2,3,7,8"; +w["fileset"]="2"; +w["filesmatch"]="3"; +w["find"]="8"; + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-2.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-2.js new file mode 100644 index 000000000..ebab2194f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-2.js @@ -0,0 +1,223 @@ +//Auto generated index for searching. +w["finnish"]="5"; +w["first"]="0,8"; +w["five"]="8"; +w["fl"]="8"; +w["flv"]="3"; +w["folder"]="3,8"; +w["follow"]="1,2,3,5,7,8"; +w["foobar"]="8"; +w["form"]="0,5"; +w["format"]="0,8"; +w["fortun"]="8"; +w["fr"]="2,8"; +w["frameset"]="0,3,6,7"; +w["french"]="0,2,8"; +w["frenchstemm"]="8"; +w["full"]="0,8"; +w["fulli"]="7,8"; +w["function"]="0"; +w["further"]="3,7"; +w["futur"]="0"; +w["general"]="0,3,8"; +w["generat"]="0,1,2,7,8"; +w["gentext"]="0"; +w["german"]="0,2,5,8"; +w["germanstemm"]="8"; +w["get"]="0,3,8"; +w["gif"]="3"; +w["googl"]="0"; +w["graphic"]="2"; +w["group"]="0"; +w["guid"]="3"; +w["h"]="0"; +w["handl"]="3,8"; +w["happen"]="8"; +w["hard"]="0"; +w["has"]="2,8"; +w["have"]="2,3,4,8"; +w["he"]="0"; +w["head"]="7"; +w["header"]="0,3,7"; +w["height"]="3"; +w["help"]="0,3,6"; +w["here"]="2"; +w["higher"]="2,4"; +w["highlight"]="0"; +w["hour"]="3"; +w["howev"]="2"; +w["htaccess"]="3"; +w["htm"]="3"; +w["html"]="0,2,3,7,8"; +w["html@@@develop"]="8"; +w["htmlfileinfolist"]="8"; +w["htmlfilelist"]="8"; +w["httpd"]="3"; +w["hungarian"]="5"; +w["ico"]="3"; +w["identifi"]="2"; +w["if"]="0,2,3,5,6,8"; +w["ignor"]="2"; +w["imag"]="2"; +w["implement"]="0,5,6,8"; +w["import"]="0,2"; +w["imposs"]="0"; +w["improv"]="0,3"; +w["includ"]="0,2,3,5,7,8"; +w["index"]="0,1,2,3,4,5,8"; +w["index-"]="8"; +w["indexer-languag"]="2"; +w["indexer-language-cod"]="8"; +w["indexerlanguag"]="8"; +w["indexertask"]="8"; +w["indic"]="2"; +w["inform"]="2,3"; +w["initi"]="8"; +w["input"]="2,5"; +w["input-images-basedir"]="2"; +w["input-images-dir"]="2"; +w["input-xml"]="2"; +w["insid"]="3,8"; +w["instal"]="1,2,4"; +w["instruct"]="2"; +w["integr"]="0,8"; +w["interest"]="3"; +w["internet"]="0"; +w["into"]="0,3"; +w["introduct"]="0"; +w["invok"]="8"; +w["involv"]="8"; +w["it_stemm"]="8"; +w["italian"]="5,8"; +w["italianstemm"]="8"; +w["item"]="0"; +w["ix01"]="0"; +w["ja"]="2,8"; +w["japanes"]="0,2,8"; +w["jar"]="2,4,8"; +w["java"]="2,5,8"; +w["javascript"]="0,3,5,7,8"; +w["jdk"]="2,4"; +w["jpeg"]="3"; +w["jpg"]="3"; +w["jqueri"]="3,7"; +w["jquery-ui"]="7"; +w["jquery-ui-1"]="3"; +w["jqueryui"]="3"; +w["js"]="3,8"; +w["know"]="0"; +w["ko"]="8"; +w["korean"]="0,8"; +w["languag"]="0,1,2,5,8"; +w["language-cod"]="8"; +w["layer"]="2"; +w["left"]="3,6,7"; +w["leftnavig"]="3"; +w["legal"]="0"; +w["li"]="7"; +w["librari"]="8"; +w["like"]="0,8"; +w["limit"]="0"; +w["line"]="2,3,8"; +w["link"]="0,3"; +w["list"]="0,2,7,8"; +w["ll"]="8"; +w["load"]="6,7"; +w["locat"]="2,8"; +w["log"]="0"; +w["logo"]="7"; +w["long"]="3"; +w["look"]="3,7,8"; +w["lucen"]="0"; +w["made"]="7"; +w["mail"]="8"; +w["main"]="7,8"; +w["make"]="0,2,3,8"; +w["manag"]="2"; +w["martin"]="5"; +w["match"]="8"; +w["max-ag"]="3"; +w["mean"]="8"; +w["meant"]="8"; +w["mechan"]="5,8"; +w["medium"]="7"; +w["messag"]="2"; +w["meta"]="8"; +w["method"]="8"; +w["microsoft"]="0"; +w["miss"]="2"; +w["model"]="0"; +w["modifi"]="2"; +w["more"]="0,3"; +w["move"]="0"; +w["multipl"]="3"; +w["must"]="2,4,6"; +w["must-revalid"]="3"; +w["mutandi"]="2"; +w["mutati"]="2"; +w["my"]="0"; +w["name"]="0,2,3,8"; +w["navig"]="3,6,7"; +w["necessari"]="2,3"; +w["need"]="2,3,5,8"; +w["new"]="2,3,6,8"; +w["newli"]="2"; +w["next"]="7"; +w["nexwav"]="8"; +w["nice"]="7"; +w["no"]="3,8"; +w["non-cjkv"]="1,5,8"; +w["non-head"]="0"; +w["non-n"]="2"; +w["norwegian"]="5"; +w["not"]="0,2,8"; +w["note"]="2,3,8"; +w["noth"]="3"; +w["notic"]="0"; +w["now"]="8"; +w["nquindex"]="8"; +w["null"]="8"; +w["number"]="8"; +w["nw-cms"]="4,8"; +w["nwsearchfnt"]="8"; +w["oasis-open"]="8"; +w["object"]="8"; +w["odd"]="3"; +w["off"]="0"; +w["onc"]="2"; +w["one"]="3,8"; +w["onli"]="2,5,8"; +w["open"]="2,8"; +w["oper"]="0"; +w["option"]="0"; +w["order"]="0"; +w["org"]="8"; +w["organ"]="7"; +w["other"]="0,1,2,5,8"; +w["out"]="0"; +w["output"]="0,1,2,3,7,8"; +w["output-dir"]="2"; +w["overal"]="7"; +w["overview"]="0,6,7,8"; +w["own"]="0,2"; +w["packag"]="0,1,2,8"; +w["page"]="0,3,6,7"; +w["pane"]="0,6,7"; +w["para"]="3"; +w["param"]="0"; +w["paramet"]="0"; +w["parameter"]="0"; +w["parent"]="7"; +w["part"]="3,7,8"; +w["path"]="2"; +w["path-"]="2"; +w["pattern"]="0,2"; +w["pdf"]="0,3"; +w["perform"]="0,3"; +w["persist"]="0,7"; +w["phrase"]="3"; +w["plain"]="3"; +w["pleas"]="5"; +w["plugin"]="7"; +w["png"]="3"; + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-3.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-3.js new file mode 100644 index 000000000..b71ffe67c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/index-3.js @@ -0,0 +1,221 @@ +//Auto generated index for searching. +w["point"]="2,3"; +w["popul"]="0,3"; +w["popular"]="8"; +w["porter"]="5"; +w["portugues"]="5"; +w["posit"]="3,7"; +w["possibl"]="0"; +w["prev"]="7"; +w["privat"]="8"; +w["problem"]="2"; +w["procedur"]="2"; +w["process"]="2,7,8"; +w["processor"]="2"; +w["produc"]="0"; +w["program"]="2"; +w["project"]="2,5"; +w["prompt"]="2"; +w["properti"]="0,2,8"; +w["provid"]="6,8"; +w["public"]="0,3"; +w["punctuat"]="2,8"; +w["put"]="2"; +w["queri"]="0,8"; +w["question"]="8"; +w["read"]="6"; +w["readm"]="2"; +w["recommend"]="1,3"; +w["recompil"]="4,8"; +w["refer"]="2"; +w["relat"]="2,3"; +w["relev"]="0"; +w["render"]="6"; +w["replac"]="3"; +w["requir"]="0,5"; +w["resid"]="8"; +w["resiz"]="0"; +w["resourc"]="3"; +w["restor"]="6"; +w["result"]="0,3,6,8"; +w["return"]="8"; +w["right"]="3"; +w["role"]="3"; +w["romanian"]="5"; +w["root"]="8"; +w["rss"]="3"; +w["run"]="2,4,8"; +w["russian"]="5"; +w["s"]="0,3,5,8"; +w["safe"]="2"; +w["same"]="2"; +w["save"]="6"; +w["saxhtmlindex"]="8"; +w["saxon"]="2"; +w["saxon-6"]="2"; +w["script"]="2"; +w["search"]="0,2,3,5,6,7,8"; +w["second"]="0"; +w["section"]="1,3,7"; +w["sectioninfo"]="3"; +w["see"]="2,3,7,8"; +w["self"]="8"; +w["separ"]="0,7"; +w["serv"]="3"; +w["server"]="0,3,8"; +w["server-sid"]="0"; +w["servic"]="0"; +w["set"]="0,2,3,4"; +w["setoutputfilt"]="3"; +w["share"]="2"; +w["should"]="0,2"; +w["show"]="0"; +w["side"]="8"; +w["sidetreecontrol"]="7"; +w["similar"]="0"; +w["simpl"]="0,8"; +w["simpli"]="2,3"; +w["sinc"]="3"; +w["site"]="0"; +w["size"]="0"; +w["smarter"]="0"; +w["snowbal"]="8"; +w["snowballstemm"]="8"; +w["so"]="0,2,3"; +w["some"]="8"; +w["someth"]="0"; +w["sort"]="0"; +w["sourc"]="2"; +w["space"]="8"; +w["spanish"]="5"; +w["specifi"]="0,2,8"; +w["src"]="8"; +w["stale"]="3"; +w["start"]="2"; +w["state"]="0,6"; +w["stayton"]="3"; +w["stem"]="0,5,8"; +w["stemmer"]="0,2,5,6,8"; +w["step"]="2,8"; +w["store"]="2,3,8"; +w["string"]="0,8"; +w["structur"]="7"; +w["studi"]="3"; +w["stuff"]="3"; +w["style"]="3,7"; +w["stylesheet"]="0"; +w["stylesheet-path"]="2"; +w["such"]="3,8"; +w["summari"]="0,3,8"; +w["support"]="0,1,5,8"; +w["supportedlanguag"]="8"; +w["sure"]="8"; +w["swedish"]="5"; +w["swf"]="3"; +w["system"]="0,2,3,6"; +w["t"]="0,2,3"; +w["tab"]="0,2,7"; +w["tabindex"]="0"; +w["tabl"]="0,6,7"; +w["tag"]="7"; +w["target"]="0"; +w["task"]="5"; +w["technic"]="0"; +w["tell"]="2"; +w["templat"]="5,8"; +w["term"]="0"; +w["test"]="2"; +w["test-ouput"]="2"; +w["test-output"]="2"; +w["text"]="0,2,3,8"; +w["than"]="0"; +w["them"]="3,8"; +w["theme"]="3"; +w["theme-redmond"]="3"; +w["then"]="0,3,8"; +w["there"]="8"; +w["therefor"]="5"; +w["these"]="3,5,6,8"; +w["they"]="6"; +w["thing"]="3"; +w["those"]="3,8"; +w["though"]="2"; +w["three"]="7,8"; +w["tip"]="2,3"; +w["titl"]="7,8"; +w["toc"]="0,3,7"; +w["todo"]="3"; +w["toggl"]="0"; +w["token"]="8"; +w["too"]="8"; +w["tool"]="2"; +w["top"]="3"; +w["top-level"]="2"; +w["topic"]="0,3,7"; +w["total"]="8"; +w["travers"]="8"; +w["tree"]="0,3,6,7"; +w["treeview"]="3,7"; +w["tri"]="2"; +w["true"]="2,7"; +w["turkish"]="5"; +w["two"]="3,7,8"; +w["txt"]="3"; +w["type"]="2,3"; +w["ui"]="7"; +w["ul"]="7"; +w["unchang"]="3"; +w["uncom"]="2"; +w["uncompress"]="3"; +w["understand"]="8"; +w["undertak"]="5"; +w["unnecessari"]="8"; +w["unord"]="7"; +w["unzip"]="2"; +w["up"]="0,2,3,4,5,7,8"; +w["updat"]="3"; +w["us"]="8"; +w["use"]="0,1,2,3,5,7,8"; +w["user"]="0,3,5,8"; +w["usr"]="2"; +w["utf-8"]="3"; +w["valid"]="2"; +w["validate-against-dtd"]="2"; +w["valu"]="2"; +w["var"]="8"; +w["variabl"]="2,4"; +w["various"]="3"; +w["veri"]="8"; +w["verison"]="5"; +w["version"]="0,2,4,5,8"; +w["w"]="8"; +w["way"]="3"; +w["we"]="0,3,7,8"; +w["web"]="0,3,8"; +w["web-bas"]="0"; +w["webhelp"]="1,2,6,7,8"; +w["webhelp-specif"]="0"; +w["week"]="3"; +w["were"]="6"; +w["which"]="0,2,3,7,8"; +w["width"]="0,3"; +w["wild"]="0"; +w["window"]="1,2"; +w["without"]="0"; +w["word"]="8"; +w["work"]="2"; +w["would"]="8"; +w["write"]="8"; +w["written"]="2,8"; +w["x"]="2"; +w["x-javascript"]="3"; +w["xhtml"]="3"; +w["xml"]="0,2,3"; +w["xp"]="2"; +w["xsl"]="2,3,7"; +w["xslt"]="2"; +w["xslt-processor-classpath"]="2"; +w["you"]="0,2,3,4,5,6,7,8"; +w["your"]="0,2,3,8"; +w["yourfil"]="2"; + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/nwSearchFnt.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/nwSearchFnt.js new file mode 100644 index 000000000..0c4336d76 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/nwSearchFnt.js @@ -0,0 +1,513 @@ +/*---------------------------------------------------------------------------- + * JavaScript for webhelp search + *---------------------------------------------------------------------------- + This file is part of the webhelpsearch plugin for DocBook WebHelp + Copyright (c) 2007-2008 NexWave Solutions All Rights Reserved. + www.nexwave.biz Nadege Quaine + http://kasunbg.blogspot.com/ Kasun Gajasinghe + */ + +//string initialization +var htmlfileList = "htmlFileList.js"; +var htmlfileinfoList = "htmlFileInfoList.js"; +var useCJKTokenizing = false; + +/* Cette fonction verifie la validite de la recherche entrre par l utilisateur */ +function Verifie(ditaSearch_Form) { + + // Check browser compatibitily + if (navigator.userAgent.indexOf("Konquerer") > -1) { + + alert(txt_browser_not_supported); + return; + } + + + var expressionInput = document.ditaSearch_Form.textToSearch.value; + //Set a cookie to store the searched keywords + $.cookie('textToSearch', expressionInput); + + + if (expressionInput.length < 1) { + + // expression is invalid + alert(txt_enter_at_least_1_char); + // reactive la fenetre de search (utile car cadres) + document.ditaSearch_Form.textToSearch.focus(); + } + else { + + // Effectuer la recherche + Effectuer_recherche(expressionInput); + + // reactive la fenetre de search (utile car cadres) + document.ditaSearch_Form.textToSearch.focus(); + } +} + +var stemQueryMap = new Array(); // A hashtable which maps stems to query words + +/* This function parses the search expression, loads the indices and displays the results*/ +function Effectuer_recherche(expressionInput) { + + /* Display a waiting message */ + //DisplayWaitingMessage(); + + /*data initialisation*/ + var searchFor = ""; // expression en lowercase et sans les caracte res speciaux + //w = new Object(); // hashtable, key=word, value = list of the index of the html files + scriptLetterTab = new Scriptfirstchar(); // Array containing the first letter of each word to look for + var wordsList = new Array(); // Array with the words to look for + var finalWordsList = new Array(); // Array with the words to look for after removing spaces + var linkTab = new Array(); + var fileAndWordList = new Array(); + var txt_wordsnotfound = ""; + + + /*nqu: expressionInput, la recherche est lower cased, plus remplacement des char speciaux*/ + searchFor = expressionInput.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "= 0; i--) { + if (fileAndWordList[i] != undefined) { + linkTab.push("

      " + txt_results_for + " " + "" + fileAndWordList[i][0].motslisteDisplay + "" + "

      "); + + linkTab.push("
        "); + for (t in fileAndWordList[i]) { + //DEBUG: alert(": "+ fileAndWordList[i][t].filenb+" " +fileAndWordList[i][t].motsliste); + //linkTab.push("
      • "+fl[fileAndWordList[i][t].filenb]+"
      • "); + var tempInfo = fil[fileAndWordList[i][t].filenb]; + var pos1 = tempInfo.indexOf("@@@"); + var pos2 = tempInfo.lastIndexOf("@@@"); + var tempPath = tempInfo.substring(0, pos1); + var tempTitle = tempInfo.substring(pos1 + 3, pos2); + var tempShortdesc = tempInfo.substring(pos2 + 3, tempInfo.length); + + //file:///home/kasun/docbook/WEBHELP/webhelp-draft-output-format-idea/src/main/resources/web/webhelp/installation.html + var linkString = "
      • " + tempTitle + ""; + // var linkString = "
      • " + tempTitle + ""; + if ((tempShortdesc != "null")) { + linkString += "\n
        " + tempShortdesc + "
        "; + } + linkString += "
      • "; + linkTab.push(linkString); + } + linkTab.push("
      "); + } + } + } + + var results = ""; + if (linkTab.length > 0) { + /*writeln ("

      " + txt_results_for + " " + "" + cleanwordsList + "" + "
      "+"

      ");*/ + results = "

      "; + //write("

        "); + for (t in linkTab) { + results += linkTab[t].toString(); + } + results += "

        "; + } else { + results = "

        " + "Your search returned no results for " + "" + txt_wordsnotfound + "" + "

        "; + } + //alert(results); + document.getElementById('searchResults').innerHTML = results; +} + +function tokenize(wordsList){ + var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces + var cleanwordsList = new Array(); // Array with the words to look for + for(var j in wordsList){ + var word = wordsList[j]; + if(typeof stemmer != "undefined" ){ + stemQueryMap[stemmer(word)] = word; + } else { + stemQueryMap[word] = word; + } + } + //stemmedWordsList is the stemmed list of words separated by spaces. + for (var t in wordsList) { + wordsList[t] = wordsList[t].replace(/(%22)|^-/g, ""); + if (wordsList[t] != "%20") { + scriptLetterTab.add(wordsList[t].charAt(0)); + cleanwordsList.push(wordsList[t]); + } + } + + if(typeof stemmer != "undefined" ){ + //Do the stemming using Porter's stemming algorithm + for (var i = 0; i < cleanwordsList.length; i++) { + var stemWord = stemmer(cleanwordsList[i]); + stemmedWordsList.push(stemWord); + } + } else { + stemmedWordsList = cleanwordsList; + } + return stemmedWordsList; +} + +//Invoker of CJKTokenizer class methods. +function cjkTokenize(wordsList){ + var allTokens= new Array(); + var notCJKTokens= new Array(); + var j=0; + for(j=0;j"; + return this.input.substring(this.offset,this.offset+2); + } + + function getAllTokens(){ + while(this.incrementToken()){ + var tmp = this.tokenize(); + this.tokens.push(tmp); + } + return this.unique(this.tokens); +// document.getElementById("content").innerHTML += tokens+" "; +// document.getElementById("content").innerHTML += "
        dada"+sortedTokens+" "; +// console.log(tokens.length+"dsdsds"); + /*for(i=0;i t2.length) { + return 1; + } else { + return -1; + } + //return t1.length - t2.length); +} \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/stemmers/en_stemmer.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/stemmers/en_stemmer.js new file mode 100644 index 000000000..f58012f2b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/content/search/stemmers/en_stemmer.js @@ -0,0 +1,187 @@ +// Porter stemmer in Javascript. Few comments, but it's easy to follow against the rules in the original +// paper, in +// +// Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14, +// no. 3, pp 130-137, +// +// see also http://www.tartarus.org/~martin/PorterStemmer + +// Release 1 be 'andargor', Jul 2004 +// Release 2 (substantially revised) by Christopher McKenzie, Aug 2009 + + +var stemmer = (function(){ + var step2list = { + "ational" : "ate", + "tional" : "tion", + "enci" : "ence", + "anci" : "ance", + "izer" : "ize", + "bli" : "ble", + "alli" : "al", + "entli" : "ent", + "eli" : "e", + "ousli" : "ous", + "ization" : "ize", + "ation" : "ate", + "ator" : "ate", + "alism" : "al", + "iveness" : "ive", + "fulness" : "ful", + "ousness" : "ous", + "aliti" : "al", + "iviti" : "ive", + "biliti" : "ble", + "logi" : "log" + }, + + step3list = { + "icate" : "ic", + "ative" : "", + "alize" : "al", + "iciti" : "ic", + "ical" : "ic", + "ful" : "", + "ness" : "" + }, + + c = "[^aeiou]", // consonant + v = "[aeiouy]", // vowel + C = c + "[^aeiouy]*", // consonant sequence + V = v + "[aeiou]*", // vowel sequence + + mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 + meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 + mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 + s_v = "^(" + C + ")?" + v; // vowel in stem + + return function (w) { + var stem, + suffix, + firstch, + re, + re2, + re3, + re4, + origword = w; + + if (w.length < 3) { return w; } + + firstch = w.substr(0,1); + if (firstch == "y") { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) { w = w.replace(re,"$1$2"); } + else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) { w = w + "e"; } + else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); } + else if (re4.test(w)) { w = w + "e"; } + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) { w = stem + "i"; } + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { + w = stem; + } + } + + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + + if (firstch == "y") { + w = firstch.toLowerCase() + w.substr(1); + } + + return w; + } +})(); \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/index.html b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/index.html new file mode 100644 index 000000000..a0271445c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docs/index.html @@ -0,0 +1,13 @@ + + + + + + + + README: Web-based Help from DocBook XML  + + + + If not automatically redirected, click here: content/ch01.html + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docsrc/readme.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docsrc/readme.xml new file mode 100644 index 000000000..4d191906e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/docsrc/readme.xml @@ -0,0 +1,928 @@ + + + + README: Web-based Help from DocBook XML + + + + 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. + + + + Except as contained in this notice, the names of individuals + credited with contribution to this software shall not be used in + advertising or otherwise to promote the sale, use or other + dealings in this Software without prior written authorization from + the individuals in question. + + + + Any stylesheet derived from this Software that is publicly + distributed will be identified with a different name and the + version strings in any derived Software will be changed so that no + possibility of confusion between the derived package and this + Software will exist. + + + + + Warranty: + + 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 DAVID CRAMER, KASUN GAJASINGHE, OR ANY OTHER CONTRIBUTOR 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. + + + This package is maintained by Kasun Gajasinghe, kasunbg AT + gmail DOT com and David Cramer, david AT thingbag DOT + net. + + This package also includes the following software written and + copyrighted by others: + + Files in template/common/jquery are + copyrighted by JQuery + under the MIT License. The file + jquery.cookie.js Copyright (c) 2006 Klaus + Hartl under the MIT license. + + + jquery + + + + + Some files in the template/content/search and indexer directories were originally + part of N. Quaine's htmlsearch DITA plugin. The htmlsearch DITA + plugin is available from the files + page of the DITA-users yahoogroup. The htmlsearch plugin + was released under a BSD-style license. See + indexer/license.txt for details. + htmlsearch + + DITA + + htmlsearch plugin + + + + + Stemmers from the Snowball + project released under a BSD license. + + + + Code from the Apache + Lucene search engine provides support for tokenizing + Chinese, Japanese, and Korean content released under the Apache + 2.0 license. + + + Webhelp for DocBook was developed as a Google Summer of Code project. + + + + + 2008-2010 + + Kasun Gajasinghe + + David Cramer + + + + David + + Cramer + + dcramer AT motive DOT com + + david AT thingbag DOT net + + + + Kasun + + Gajasinghe + + kasunbg AT gmail DOT com + + + August 2010 + + + + + + + + Overview of the package. + + + + Introduction + + A common requirement for technical publications groups is to produce a Web-based help + format that includes a table of contents pane, a search feature, and an index similar to what + you get from the Microsoft HTML Help (.chm) format or Eclipse help. If the content is help for + a Web application that is not exposed to the Internet or requires that the user be logged in, + then it is impossible to use services like Google to add search. + features + + + Features + + Full text search. + search + features + + + + Stemming support for English, French, and German. Stemming support can be added + for other languages by implementing a stemmer. + search + stemming + + + + Support for Chinese, Japanese, and Korean using code from the Lucene search + engine. + + + Search highlighting shows where the searched for term appears in the results. + Use the H button to toggle the highlighting off and on. + + search + highlighting + + + + Search results can include brief descriptions of the target. + search + descriptions + + + + + + Table of contents pane with collapsible toc tree. + + + Auto-synchronization of content pane and TOC. + + + TOC and search pane implemented without the use of a frameset. + + + An Ant build.xml file to generate output. You can use this + build file by importing it into your own or use it as a model for integrating this + output format into your own build system. + + + + Possible future enhancements + + Move webhelp-specific parameters and gentext strings into base DocBook stylesheets. + + + + Use tabindex attributes to control the tab + order in the output. The Contents and Search tabs should be first and second, then the + search box and button, then the table of contents items, and so on. + + + Add "Expand all" and "Collapse all" buttons to the table of contents. + + + Add other search options: + + + Add an option to use Lucene for server-side searches with table of contents + state persisted on the server. + + + Add a simple form that uses a Google site:my.domain.com based search. + + + + + Sort search results based on relevance + + + Support wild card characters in the search query. + + + Parameterize width of the TOC pane OR make the TOC pane resizeable by the + user. + + + Automate search results summary text: + + + Automatically use the first non-heading content as the summary in the search + results. + + + Automatically limit the size of the search description to something 140 + characters. + + + + + Support boolean operators in search. + + + Parameterize list of files to exclude from indexing. Currently it's hard coded that + we don't index index.html and ix01.html (the + legal notice and index topics). It should be smarter and automatically not index the + index file even if it's not named ix01.html. + + + Improve performance by moving the table of contents div out of each page and into a + separate JavaScript file which then adds it to the page. + + + Add to the indexer the ability to specify a list of files or file patterns not to + index. Currently it does not index index.html or + ix01.html, which is generally appropriate, but it should be up to + the user to decide. + + + Add an index tab populated by a separate JavaScript file. Include a param/property + that allows the content creator to disable the index. + + + Add functionality to the build.xml file so that when a property + is set, the build generates a pdf version of the document and includes a link to it from + the header. + + + Add breadcrumbs so the user will know what topics he's been to. + + + Consider using more advanced Lucene indexers for Chinese and Japanese than the + CJKAnalyzer + + + + + + Using the package + + The following sections describe how to install and + use the package on Windows. + +
        + + + Installation instructions + + + + Generating webhelp output + + + To install the package on Windows + + + The examples in this procedure assume a Windows installation, + but the process is the same in other environments, + mutatis mutandis. + + + + If necessary, install Java 1.6 or + higher. + + + + Confirm that Java is installed and in your + PATH by typing the following at a command prompt: + java -version + + To build the indexer, you must have the JDK. + + + + + + + If necessary, install Apache Ant 1.6.5 + or higher. + + + + Unzip the Ant binary distribution to a convenient location + on your system. For example: c:\Program + Files. + + + + Set the environment variable ANT_HOME to + the top-level Ant directory. For example: c:\Program + Files\apache-ant-1.7.1. + See How To Manage + Environment Variables in Windows XP for information + on setting environment variables. + + + + + Add the Ant bin directory to your + PATH. For example: c:\Program + Files\apache-ant-1.7.1\bin + + + + Confirm that Ant is installed by typing the following at a + command prompt: ant -version + + + If you see a message about the file + tools.jar being missing, you can safely + ignore it. + + + + + + + Download Saxon + 6.5.x and unzip the distribution to a convenient location on your file system. + You will use the path to saxon.jar in below. + The build.xml has only been tested with Saxon 6.5, though + it could be adapted to work with other XSLT processors. However, when you generate + output, the Saxon jar must not be in your + CLASSPATH. + + + + + In a text editor, edit the + build.properties file in the webhelp directory + and make the changes indicated by the comments:# The path (relative to the build.xml file) to your input document. +# To use your own input document, create a build.xml file of your own +# and import this build.xml. +input-xml=docsrc/readme.xml + +# The directory in which to put the output files. +# This directory is created if it does not exist. +output-dir=docs + +# If you are using a customization layer that imports webhelp.xsl, use +# this property to point to it. +stylesheet-path=${ant.file.dir}/xsl/webhelp.xsl + +# If your document has image directories that need to be copied +# to the output directory, you can list patterns here. +# See the Ant documentation for fileset for documentation +# on patterns. +#input-images-dirs=images/**,figures/**,graphics/** + +# By default, the ant script assumes your images are stored +# in the same directory as the input-xml. If you store your +# image directories in another directory, specify it here. +# and uncomment this line. +#input-images-basedir=/path/to/image/location + +# Modify this so that it points to your copy of the Saxon 6.5 jar. +xslt-processor-classpath=/usr/share/java/saxon-6.5.5.jar + +# For non-ns version only, this validates the document +# against a dtd. +validate-against-dtd=true + +# Set this to false if you don't need a search tab. +webhelp.include.search.tab=true + +# indexer-language is used to tell the search indexer which language +# the docbook is written. This will be used to identify the correct +# stemmer, and punctuations that differs from language to language. +# see the documentation for details. en=English, fr=French, de=German, +# zh=Chinese, ja=Japanese etc. +webhelp.indexer.language=en + + + + Test the package by running the command ant webhelp + -Doutput-dir=test-ouput at the command line in the webhelp directory. It should + generate a copy of this documentation in the doc + directory. Type start test-output\index.html to open the output in a + browser. Once you have confirmed that the process worked, you can delete the test-output directory. + The Saxon 6.5 jar should not be in your + CLASSPATH when you generate the webhelp output. If you have any + problems, try running ant with an empty CLASSPATH. + + + + + To process your own document, simply refer to this package + from another build.xml in arbitrary location on + your system: + + + + Create a new build.xml file that + defines the name of your source file, the desired output + directory, and imports the build.xml from + this package. For example: <project> + <property name="input-xml" value="path-to/yourfile.xml"/> + <property name="input-images-dirs" value="images/** figures/** graphics/**"/> + <property name="output-dir" value="path-to/desired-output-dir"/> + <import file="path-to/docbook-webhelp/build.xml"/> +</project> + + + + From the directory containing your newly created + build.xml file, type ant + webhelp to build your document. + + The Saxon 6.5 jar should not be in your + CLASSPATH when you generate the webhelp output. If you have any + problems, try running ant with an empty CLASSPATH. + + + + + +
        + +
        + Using and customizing the output + + To deep link to a topic inside the help set, simply link directly + to the page. This help system uses no frameset, so nothing further is + necessary. + See Chunking into + multiple HTML files in Bob Stayton's DocBook XSL: The + Complete Guide for information on controlling output file + names and which files are chunked in DocBook. + + + When you perform a search, the results can include brief + summaries. These are populated in one of two ways: + + By adding role="summary" to a + para or phrase in the + chapter or section. + + + + By adding an abstract to the + chapterinfo or sectioninfo + element. + + + + To customize the look and feel of the help, study the following + css files: + + docs/common/css/positioning.css: This + handles the Positioning of DIVs in appropriate positions. For + example, it causes the leftnavigation div to appear + on the left, the header on top, and so on. Use this if you need to + change the relative positions or need to change the width/height + etc. + + + + docs/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css: + This is the theming part which adds colors and stuff. This is a + default theme comes with jqueryui unchanged. You + can get any theme based your interest from this. (Themes are on + right navigation bar.) Then replace the css theme folder + (theme-redmond) with it, and change the xsl to point to the new + css. + + + + docs/common/jquery/treeview/jquery.treeview.css: + This styles the toc Tree. Generally, you don't have to edit this + file. + + + +
        + Recommended Apache configurations + + If you are serving a long document from an Apache web server, we + recommend you make the following additions or changes to your + httpd.conf or .htaccess + file. TODO: Explain what each thing + does.AddDefaultCharSet UTF-8 # + + # 480 weeks + <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> # + Header set Cache-Control "max-age=290304000, public" + </FilesMatch> + + # 2 DAYS + <FilesMatch "\.(xml|txt)$"> + Header set Cache-Control "max-age=172800, public, must-revalidate" + </FilesMatch> + + # 2 HOURS + <FilesMatch "\.(html|htm)$"> + Header set Cache-Control "max-age=7200, must-revalidate" + </FilesMatch> + + # compress text, html, javascript, css, xml: + AddOutputFilterByType DEFLATE text/plain # + AddOutputFilterByType DEFLATE text/html + AddOutputFilterByType DEFLATE text/xml + AddOutputFilterByType DEFLATE text/css + AddOutputFilterByType DEFLATE application/xml + AddOutputFilterByType DEFLATE application/xhtml+xml + AddOutputFilterByType DEFLATE application/rss+xml + AddOutputFilterByType DEFLATE application/javascript + AddOutputFilterByType DEFLATE application/x-javascript + + # Or, compress certain file types by extension: + <Files *.html> + SetOutputFilter DEFLATE + </Files> + + + See Odd + characters in HTML output in Bob Stayton's book + DocBook XSL: The Complete Guide for more + information about this setting. + + + + These lines and those that follow cause the browser to + cache various resources such as bitmaps and JavaScript files. + Note that caching JavaScript files could cause your users to + have stale search indexes if you update your document since the + search index is stored in JavaScript files. + + + + These lines cause the the server to compress html, css, + and JavaScript files and the brower to uncompress them to + improve download performance. + + +
        +
        + +
        + Building the indexer + + To build the indexer, you must have installed the + JDK version 1.5 or higher and set the ANT_HOME + environment variable. Run ant build-indexer to recompile + nw-cms.jar + + + ANT_HOME + + + + indexer + + building + +
        + +
        + Adding support for other (non-CJKV) languages + + To support stemming for a language, the search mechanism requires + a stemmer implemented in both Java and JavaScript. The Java version is + used by the indexer and the JavaScript verison is used to stem the + user's input on the search form. Currently the search mechanism supports + stemming for English and German. In addition, Java stemmers are included + for the following languages. Therefore, to support these languages, you + only need to implement the stemmer in JavaScript and add it to the + template. If you do undertake this task, please consider contributing + the JavaScript version back to this project and to Martin + Porter's project. + + Danish + + + + Dutch + + + + Finnish + + + + Hungarian + + + + Italian + + + + Norwegian + + + + Portuguese + + + + Romanian + + + + Russian + + + + Spanish + + + + Swedish + + + + Turkish + + +
        +
        + + + Developer Docs + + This chapter provides an overview of how webhelp is implemented. + + The table of contents and search panes are implemented as divs and + rendered as if they were the left pane in a frameset. As a result, the + page must save the state of the table of contents and the search in + cookies when you navigate away from a page. When you load a new page, the + page reads these cookies and restores the state of the table of contents + tree and search. The result is that the help system behaves exactly as if + it were a frameset. + +
        + Design + An overview of webhelp page structure. + DocBook WebHelp page structure is fully built on css-based design + abandoning frameset structure. Overall page structure can be divided in to three main sections + + + Header: Header is a separate Div which include company logo, + navigation button(prev, next etc.), page title and heading of parent topic. + + + + Content: This includes the content of the documentation. The processing of this part is + done by + DocBook XSL Chunking customization. Few further css-styling applied from + positioning.css. + + + + + Left Navigation: This includes the table of contents and search tab. This + is customized using jquery-ui styling. + + + Tabbed Navigation: The navigation pane is organized in to two tabs. + Contents tab, and Search tab. Tabbed output is achieved using + JQuery Tabs plugin. + + + + + Table of Contents (TOC) tree: When building the chunked html from the + docbook file, Table of Contents is generated as an Unordered List (a list + made from <ul> <li> tags). When page loads in the browser, + we apply styling to it to achieve the nice look that you see. Styling for TOC + tree is done by a JQuery UI plugin called + + TreeView. We can generate the tree easily by following javascript code: + + +//Generate the tree +$("#tree").treeview({ +collapsed: true, +animated: "medium", +control: "#sidetreecontrol", +persist: "cookie" +}); + + + + + + Search Tab: This includes the search feature. + + + + + + +
        + +
        + Search + Overview design of Search mechanism. + + The searching is a fully client-side implementation of querying texts for + content searching, and no server is involved. That means when a user enters a query, + it is processed by JavaScript inside the browser, and displays the matching results by + comparing the query with a generated 'index', which too reside in the client-side web browser. + + Mainly the search mechanism has two parts. + + + Indexing: First we need to traverse the content in the docs/content folder and index + the words in it. This is done by nw-cms.jar. You can invoke it by + ant index command from the root of webhelp of directory. You can recompile it + again and build the jar file by ant build-indexer. Indexer has some extensive + support for such as stemming of words. Indexer has extensive support for English, German, + French languages. By extensive support, what I meant is that those texts are stemmed + first, to get the root word and then indexes them. For CJK (Chinese, Japanese, Korean) + languages, it uses bi-gram tokenizing to break up the words. (CJK languages does not have + spaces between words.) + + + When we run ant index, it generates five output files: + + + htmlFileList.js - This contains an array named fl which stores details + all the files indexed by the indexer. + + + + htmlFileInfoList.js - This includes some meta data about the indexed files in an array + named fil. It includes details about file name, file (html) title, a summary + of the content.Format would look like, + fil["4"]= "ch03.html@@@Developer Docs@@@This chapter provides an overview of how webhelp is implemented."; + + + + + index-*.js (Three index files) - These three files actually stores the index of the content. + Index is added to an array named w. + + + + + + + + + Querying: Query processing happens totally in client side. Following JavaScript files handles them. + + + nwSearchFnt.js - This handles the user query and returns the search results. It does query + word tokenizing, drop unnecessary punctuations and common words, do stemming if docbook language + supports it, etc. + + + {$indexer-language-code}_stemmer.js - This includes the stemming library. + nwSearchFnt.js file calls stemmer method in this file for stemming. + ex: var stem = stemmer(foobar); + + + + + + + + +
        + New Stemmers + Adding new Stemmers is very simple. + Currently, only English, French, and German stemmers are integrated in to WebHelp. But the code is + extensible such that you can add new stemmers easily by few steps. + What you need: + + + You'll need two versions of the stemmer; One written in JavaScript, and another in Java. But fortunately, + Snowball contains Java stemmers for number of popular languages, and are already included with the package. + You can see the full list in Adding support for other (non-CJKV) languages. + If your language is listed there, + Then you have to find javascript version of the stemmer. Generally, new stemmers are getting added in to + Snowball Stemmers in other languages location. + If javascript stemmer for your language is available, then download it. Else, you can write a new stemmer in + JavaScript using SnowBall algorithm fairly easily. Algorithms are at + Snowball. + + + + Then, name the JS stemmer exactly like this: {$language-code}_stemmer.js. For example, + for Italian(it), name it as, it_stemmer.js. Then, copy it to the + docbook-webhelp/template/content/search/stemmers/ folder. (I assumed + docbook-webhelp is the root folder for webhelp.) + + Make sure you changed the webhelp.indexer.language property in build.properties + to your language. + + + + + + + + Now two easy changes needed for the indexer. + + + Open docbook-webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java in + a text editor and add your language code to the supportedLanguages String Array. + + Add new language to supportedLanguages array + + change the Array from, + +private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko"}; + //currently extended support available for + // English, German, French and CJK (Chinese, Japanese, Korean) languages only. + + To, + +private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko", "it"}; + //currently extended support available for + // English, German, French, CJK (Chinese, Japanese, Korean), and Italian languages only. + + + + + + + Now, open docbook-webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java and + add the following line to the code where it initializes the Stemmer (Search for + SnowballStemmer stemmer;). Then add code to initialize the stemmer Object in your language. + It's self understandable. See the example. The class names are at: + docbook-webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/. + + + initialize correct stemmer based on the <code>webhelp.indexer.language</code> specified + + SnowballStemmer stemmer; + if(indexerLanguage.equalsIgnoreCase("en")){ + stemmer = new EnglishStemmer(); + } else if (indexerLanguage.equalsIgnoreCase("de")){ + stemmer= new GermanStemmer(); + } else if (indexerLanguage.equalsIgnoreCase("fr")){ + stemmer= new FrenchStemmer(); + } +else if (indexerLanguage.equalsIgnoreCase("it")){ //If language code is "it" (Italian) + stemmer= new italianStemmer(); //Initialize the stemmer to italianStemmer object. + } + else { + stemmer = null; + } + + + + + + + + That's all. Now run ant build-indexer to compile and build the java code. + Then, run ant webhelp to generate the output from your docbook file. + For any questions, contact us or email to the docbook mailing list + docbook-apps@lists.oasis-open.org. + +
        +
        +
        +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/css/positioning.css b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/css/positioning.css new file mode 100644 index 000000000..3d30bc28b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/css/positioning.css @@ -0,0 +1,109 @@ +body { font: 12px Verdana, Geneva, sans-serif; } +p, ul, ol, li { font: 10pt Verdana, Geneva, sans-serif; } +h1 { font: bold 15pt Arial, Helvetica, geneva; } +h2 { font: bold 14pt Arial, Helvetica, geneva; } + +#header { + background: white url(../images/header-bg.gif) repeat-x; + position: fixed; + width: 100%; + height: 95px; + top: 0; + right: 0; + bottom: auto; + left: 0; + border-bottom: 2px solid #cccccc; + z-index: 2000; +} + +#leftnavigation { +/* background-color:#91e7b3;*/ + overflow: auto; + position: fixed; + height: auto; + top: 90px; + bottom: 0; + left: 0; + width: 280px; + z-index: 1500; + border-right:2px solid #CCCCCC; +} + +#content { + position: relative; + top: 90px; /* left: 240px;*/ + right: auto; /* bottom: 20px; */ + margin: 0px 0px 0px 280px; + width: auto; + height: inherit; + padding-left: 5px; + padding-right: 30px; + color: #000000; + /*border-left: 2px solid #cccccc; overflow :scroll;*/ + z-index: 1000; + + max-width: 70em; + min-width:800px; +} + +#navheader { + position: fixed; + top: 65px; + right:4px; +} + +#content h1, #content h2 { color: #cc0000; } +.navfooter { bottom: 2%; } +.highlight { background-color: #c5d3c3; } +.highlightButton{ font-size: 0; } + +/* Show Hide TOC tree */ +.pointLeft { + background: url("../images/showHideTreeIcons.png") 0 0 no-repeat; + height: 28px; + width: 15px; + display: block; + font-size: 0; + cursor: pointer; +} +.pointRight { + background: url("../images/showHideTreeIcons.png") -15px 0 no-repeat; + height: 28px; + display: block; + font-size: 0; + cursor: pointer; +} + +/* Search results Styling */ +.searchExpression { + color: #0050A0; + background-color: #EBEFF8; + font-size: 12pt; +} +.searchresult li a { + text-decoration: none; + color: #0050A0; +} +.searchresult li { + color: #0050A0; +} +.shortdesclink { + color: gray; + font-size: 9pt; +} +.searchText { + border: #BFCEE9 solid 1pt; + width: 11em +} +.searchButton { + margin-left: 3px; + background: #EBEFF8; + color: #0050A0; + border: #BFCEE9 solid 1pt; + font-weight: bold; + font-size: 10pt +} + +.title, div.toc>p{ + font-weight: bold; + } \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-1.4.2.min.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-1.4.2.min.js new file mode 100644 index 000000000..7c2430802 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-1.4.2.min.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
        a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

        ";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
        ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
        ","
        "],thead:[1,"","
        "],tr:[2,"","
        "],td:[3,"","
        "],col:[2,"","
        "],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
        ","
        "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
        ").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
        "; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js new file mode 100644 index 000000000..fec53e8e0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/jquery-ui-1.8.2.custom.min.js @@ -0,0 +1,321 @@ +/*! + * jQuery UI 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +(function(c){c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.2",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Widget + */ +(function(b){var j=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add(this).each(function(){b(this).triggerHandler("remove")});return j.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend({},c.options);b[e][a].prototype= +b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==undefined){h=i;return false}}):this.each(function(){var g= +b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){this.element=b(c).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create(); +this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===undefined)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/*! + * jQuery UI Mouse 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&& +this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault(); +return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&& +this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX- +a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= +0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= +g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, +elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? +-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= +"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); +;/* + * jQuery UI Resizable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.resizable",d.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");d.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element, +_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&d.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(d('
        ').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!d(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var e=0;e
      ');/sw|se|ne|nw/.test(g)&&f.css({zIndex:++a.zIndex});"se"==g&&f.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[g]=".ui-resizable-"+g;this.element.append(f)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=d(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=d(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}d(this.handles[i])}};this._renderAxis(this.element);this._handles=d(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();d(this.element).addClass("ui-resizable-autohide").hover(function(){d(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){d(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){d(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(d(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +e=this.element;this.resizing=true;this.documentScroll={top:d(document).scrollTop(),left:d(document).scrollLeft()};if(e.is(".ui-draggable")||/absolute/.test(e.css("position")))e.css({position:"absolute",top:c.top,left:c.left});d.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var g=m(this.helper.css("top"));if(a.containment){c+=d(a.containment).scrollLeft()||0;g+=d(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:g};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:c,top:g};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=d(".ui-resizable-"+this.axis).css("cursor");d("body").css("cursor",a=="auto"?this.axis+"-resize":a);e.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,e=this._change[this.axis];if(!e)return false;c=e.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var e=this._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName);e=g&&d.ui.hasScroll(e[0],"left")?0:c.sizeDiff.height; +g={width:c.size.width-(g?0:c.sizeDiff.width),height:c.size.height-e};e=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var f=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(d.extend(g,{top:f,left:e}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}d("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop", +b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,e=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(e=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(e=="nw"){b.top= +a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,e=k(b.width)&&a.maxWidth&&a.maxWidthb.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(f)b.width=a.minWidth;if(h)b.height=a.minHeight;if(e)b.width=a.maxWidth;if(g)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height, +l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(f&&l)b.left=i-a.minWidth;if(e&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(g&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a
      ');var a=d.browser.msie&&d.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+ +a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return d.extend(this._change.n.apply(this, +arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return d.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){d.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});d.extend(d.ui.resizable, +{version:"1.8.2"});d.ui.plugin.add("resizable","alsoResize",{start:function(){var b=d(this).data("resizable").options,a=function(c){d(c).each(function(){d(this).data("resizable-alsoresize",{width:parseInt(d(this).width(),10),height:parseInt(d(this).height(),10),left:parseInt(d(this).css("left"),10),top:parseInt(d(this).css("top"),10)})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else d.each(b.alsoResize,function(c){a(c)}); +else a(b.alsoResize)},resize:function(){var b=d(this).data("resizable"),a=b.options,c=b.originalSize,e=b.originalPosition,g={height:b.size.height-c.height||0,width:b.size.width-c.width||0,top:b.position.top-e.top||0,left:b.position.left-e.left||0},f=function(h,i){d(h).each(function(){var j=d(this),l=d(this).data("resizable-alsoresize"),p={};d.each((i&&i.length?i:["width","height","top","left"])||["width","height","top","left"],function(n,o){if((n=(l[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(/relative/.test(j.css("position"))&& +d.browser.opera){b._revertToRelativePosition=true;j.css({position:"absolute",top:"auto",left:"auto"})}j.css(p)})};typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?d.each(a.alsoResize,function(h,i){f(h,i)}):f(a.alsoResize)},stop:function(){var b=d(this).data("resizable");if(b._revertToRelativePosition&&d.browser.opera){b._revertToRelativePosition=false;el.css({position:"relative"})}d(this).removeData("resizable-alsoresize-start")}});d.ui.plugin.add("resizable","animate",{stop:function(b){var a= +d(this).data("resizable"),c=a.options,e=a._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName),f=g&&d.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height;g={width:a.size.width-(g?0:a.sizeDiff.width),height:a.size.height-f};f=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(d.extend(g,h&&f?{top:h,left:f}:{}),{duration:c.animateDuration,easing:c.animateEasing, +step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&d(e[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});d.ui.plugin.add("resizable","containment",{start:function(){var b=d(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof d?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= +d(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:d(document),left:0,top:0,width:d(document).width(),height:d(document).height()||document.body.parentNode.scrollHeight}}else{var e=d(a),g=[];d(["Top","Right","Left","Bottom"]).each(function(i,j){g[i]=m(e.css("padding"+j))});b.containerOffset=e.offset();b.containerPosition=e.position();b.containerSize={height:e.innerHeight()-g[3],width:e.innerWidth()-g[1]};c=b.containerOffset; +var f=b.containerSize.height,h=b.containerSize.width;h=d.ui.hasScroll(a,"left")?a.scrollWidth:h;f=d.ui.hasScroll(a)?a.scrollHeight:f;b.parentData={element:a,left:c.left,top:c.top,width:h,height:f}}}},resize:function(b){var a=d(this).data("resizable"),c=a.options,e=a.containerOffset,g=a.position;b=a._aspectRatio||b.shiftKey;var f={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))f=e;if(g.left<(a._helper?e.left:0)){a.size.width+=a._helper?a.position.left-e.left: +a.position.left-f.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?e.left:0}if(g.top<(a._helper?e.top:0)){a.size.height+=a._helper?a.position.top-e.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?e.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-f.left:a.offset.left-f.left)+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-f.top:a.offset.top- +e.top)+a.sizeDiff.height);g=a.containerElement.get(0)==a.element.parent().get(0);f=/relative|absolute/.test(a.containerElement.css("position"));if(g&&f)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(e+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-e;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=d(this).data("resizable"),a=b.options,c=b.containerOffset,e=b.containerPosition, +g=b.containerElement,f=d(b.helper),h=f.offset(),i=f.outerWidth()-b.sizeDiff.width;f=f.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f});b._helper&&!a.animate&&/static/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f})}});d.ui.plugin.add("resizable","ghost",{start:function(){var b=d(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, +display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=d(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=d(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});d.ui.plugin.add("resizable","grid",{resize:function(){var b= +d(this).data("resizable"),a=b.options,c=b.size,e=b.originalSize,g=b.originalPosition,f=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-e.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-e.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a}else if(/^(ne)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}else{if(/^(sw)$/.test(f)){b.size.width=e.width+h;b.size.height= +e.height+a}else{b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}b.position.left=g.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +; +/* + * jQuery UI Selectable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
      ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom
    ").addClass("ui-autocomplete").appendTo("body",c).mousedown(function(){setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(d,b){b=b.item.data("item.autocomplete"); +false!==a._trigger("focus",null,{item:b})&&/^key/.test(d.originalEvent.type)&&a.element.val(b.value)},selected:function(d,b){b=b.item.data("item.autocomplete");false!==a._trigger("select",d,{item:b})&&a.element.val(b.value);a.close(d);d=a.previous;if(a.element[0]!==c.activeElement){a.element.focus();a.previous=d}a.selectedItem=b},blur:function(){a.menu.element.is(":visible")&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()}, +destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();e.Widget.prototype.destroy.call(this)},_setOption:function(a){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource()},_initSource:function(){var a,c;if(e.isArray(this.options.source)){a=this.options.source;this.source=function(d,b){b(e.ui.autocomplete.filter(a,d.term))}}else if(typeof this.options.source=== +"string"){c=this.options.source;this.source=function(d,b){e.getJSON(c,d,b)}}else this.source=this.options.source},search:function(a,c){a=a!=null?a:this.element.val();if(a.length").data("item.autocomplete", +c).append(""+c.label+"").appendTo(a)},_move:function(a,c){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](c);else this.search(null,c)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")},filter:function(a,c){var d=new RegExp(e.ui.autocomplete.escapeRegex(c), +"i");return e.grep(a,function(b){return d.test(b.label||b.value||b)})}})})(jQuery); +(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(e(c.target).closest(".ui-menu-item a").length){c.preventDefault();a.select(c)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(c){a.activate(c,e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,b=this.element.attr("scrollTop"),f=this.element.height();if(d<0)this.element.attr("scrollTop",b+d);else d>f&&this.element.attr("scrollTop",b+d-f+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:c})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); +this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prev().length},last:function(){return this.active&&!this.active.next().length},move:function(a,c,d){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);a.length?this.activate(d,a):this.activate(d,this.element.children(c))}else this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active|| +this.last())this.activate(a,this.element.children(":first"));else{var c=this.active.offset().top,d=this.element.height(),b=this.element.children("li").filter(function(){var f=e(this).offset().top-c-d+e(this).height();return f<10&&f>-10});b.length||(b=this.element.children(":last"));this.activate(a,b)}else this.activate(a,this.element.children(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(":last")); +else{var c=this.active.offset().top,d=this.element.height();result=this.element.children("li").filter(function(){var b=e(this).offset().top-c+d-e(this).height();return b<10&&b>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":""));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");var a=this,b=a.options,d=b.title||a.originalTitle||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
    ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
    ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), +h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", +e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== +b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index", +c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== +f[0]&&e.shiftKey){g.focus(1);return false}}});c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false,e=c("
    ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a, +function(g,f){g=c('').text(g).click(function(){f.apply(b.element[0],arguments)}).appendTo(e);c.fn.button&&g.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging"); +b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,position:f.position,size:f.size}}a=a===undefined?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position"); +a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop", +f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0];a=a||c.ui.dialog.prototype.options.position;if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(e,g){if(+b[e]===b[e]){d[e]=b[e];b[e]= +g}})}else if(typeof a==="object"){if("left"in a){b[0]="left";d[0]=a.left}else if("right"in a){b[0]="right";d[0]=-a.right}if("top"in a){b[1]="top";d[1]=a.top}else if("bottom"in a){b[1]="bottom";d[1]=-a.bottom}}(a=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position({my:b.join(" "),at:b.join(" "),offset:d.join(" "),of:window,collision:"fit",using:function(e){var g=c(this).css(e).offset().top;g<0&&c(this).css("top",e.top-g)}});a||this.uiDialog.hide()},_setOption:function(a, +b){var d=this,e=d.uiDialog,g=e.is(":data(resizable)"),f=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");break;case "draggable":b?d._makeDraggable():e.draggable("destroy");break; +case "height":f=true;break;case "maxHeight":g&&e.resizable("option","maxHeight",b);f=true;break;case "maxWidth":g&&e.resizable("option","maxWidth",b);f=true;break;case "minHeight":g&&e.resizable("option","minHeight",b);f=true;break;case "minWidth":g&&e.resizable("option","minWidth",b);f=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title", +d.uiDialogTitlebar).html(""+(b||" "));break;case "width":f=true;break}c.Widget.prototype._setOption.apply(d,arguments);f&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height-b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight", +this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.2",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&& +c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
    ").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&& +b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight, +document.body.offsetHeight);return a",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:'
  • #{label}
  • '},_create:function(){this._tabify(true)},_setOption:function(c,e){if(c=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[c]=e;this._tabify()}},_tabId:function(c){return c.title&&c.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+s()},_sanitizeSelector:function(c){return c.replace(/:/g,"\\:")},_cookie:function(){var c=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+v());return d.cookie.apply(null,[c].concat(d.makeArray(arguments)))},_ui:function(c,e){return{tab:c,panel:e,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var c= +d(this);c.html(c.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function e(g,f){g.css({display:""});!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}this.list=this.element.find("ol,ul").eq(0);this.lis=d("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);var a=this,b=this.options,h=/^#.+/;this.anchors.each(function(g,f){var j=d(f).attr("href"),l=j.split("#")[0],p;if(l&&(l===location.toString().split("#")[0]|| +(p=d("base")[0])&&l===p.href)){j=f.hash;f.href=j}if(h.test(j))a.panels=a.panels.add(a._sanitizeSelector(j));else if(j!="#"){d.data(f,"href.tabs",j);d.data(f,"load.tabs",j.replace(/#.*$/,""));j=a._tabId(f);f.href="#"+j;f=d("#"+j);if(!f.length){f=d(b.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else b.disabled.push(g)});if(c){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(b.selected===undefined){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){b.selected=g;return false}});if(typeof b.selected!="number"&&b.cookie)b.selected=parseInt(a._cookie(),10);if(typeof b.selected!="number"&&this.lis.filter(".ui-tabs-selected").length)b.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));b.selected=b.selected||(this.lis.length?0:-1)}else if(b.selected===null)b.selected=-1;b.selected=b.selected>=0&&this.anchors[b.selected]||b.selected<0?b.selected:0;b.disabled=d.unique(b.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(b.selected,b.disabled)!=-1&&b.disabled.splice(d.inArray(b.selected,b.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(b.selected>=0&&this.anchors.length){this.panels.eq(b.selected).removeClass("ui-tabs-hide");this.lis.eq(b.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[b.selected],a.panels[b.selected]))});this.load(b.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else b.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[b.collapsible?"addClass": +"removeClass"]("ui-tabs-collapsible");b.cookie&&this._cookie(b.selected,b.cookie);c=0;for(var i;i=this.lis[c];c++)d(i)[d.inArray(c,b.disabled)!=-1&&!d(i).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");b.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(b.event!="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs", +function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(b.fx)if(d.isArray(b.fx)){m=b.fx[0];o=b.fx[1]}else m=o=b.fx;var q=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);a._trigger("show", +null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},r=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};this.anchors.bind(b.event+".tabs", +function(){var g=this,f=d(this).closest("li"),j=a.panels.filter(":not(.ui-tabs-hide)"),l=d(a._sanitizeSelector(this.hash));if(f.hasClass("ui-tabs-selected")&&!b.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}b.selected=a.anchors.index(this);a.abort();if(b.collapsible)if(f.hasClass("ui-tabs-selected")){b.selected=-1;b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){r(g, +j)}).dequeue("tabs");this.blur();return false}else if(!j.length){b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this));this.blur();return false}b.cookie&&a._cookie(b.selected,b.cookie);if(l.length){j.length&&a.element.queue("tabs",function(){r(g,j)});a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs", +function(){return false})},destroy:function(){var c=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(b,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this, +"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});c.cookie&&this._cookie(null,c.cookie);return this},add:function(c,e,a){if(a===undefined)a=this.anchors.length;var b=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,e));c=!c.indexOf("#")?c.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs", +true);var i=d("#"+c);i.length||(i=d(h.panelTemplate).attr("id",c).data("destroy.tabs",true));i.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);i.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);i.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");i.removeClass("ui-tabs-hide"); +this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(c){var e=this.options,a=this.lis.eq(c).remove(),b=this.panels.eq(c).remove();if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(c+(c+1=c?--h:h});this._tabify();this._trigger("remove", +null,this._ui(a.find("a")[0],b[0]));return this},enable:function(c){var e=this.options;if(d.inArray(c,e.disabled)!=-1){this.lis.eq(c).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=c});this._trigger("enable",null,this._ui(this.anchors[c],this.panels[c]));return this}},disable:function(c){var e=this.options;if(c!=e.selected){this.lis.eq(c).addClass("ui-state-disabled");e.disabled.push(c);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}return this}, +select:function(c){if(typeof c=="string")c=this.anchors.index(this.anchors.filter("[href$="+c+"]"));else if(c===null)c=-1;if(c==-1&&this.options.collapsible)c=this.options.selected;this.anchors.eq(c).trigger(this.options.event+".tabs");return this},load:function(c){var e=this,a=this.options,b=this.anchors.eq(c)[0],h=d.data(b,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(b,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(c).addClass("ui-state-processing"); +if(a.spinner){var i=d("span",b);i.data("label.tabs",i.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(b.hash)).html(k);e._cleanup();a.cache&&d.data(b,"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.error(k,n,c,b)}catch(m){}}}));e.element.dequeue("tabs");return this}}, +abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(c,e){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.2"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(c,e){var a=this,b=this.options,h=a._rotate||(a._rotate= +function(i){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=b.selected;a.select(++k").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"}); +c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=j.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c|| +typeof c=="number"||f.fx.speeds[c])return this._show.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c])return this._hide.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||typeof c=="boolean"||f.isFunction(c))return this.__toggle.apply(this, +arguments);else{var a=j.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+ +b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2, +10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)* +a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").attr("id", this.id || "").html("" + this.text + "").appendTo(parent); + if (this.classes) { + current.children("span").addClass(this.classes); + } + if (this.expanded) { + current.addClass("open"); + } + if (this.hasChildren || this.children && this.children.length) { + var branch = $("
      ").appendTo(current); + if (this.hasChildren) { + current.addClass("hasChildren"); + createNode.call({ + text:"placeholder", + id:"placeholder", + children:[] + }, branch); + } + if (this.children && this.children.length) { + $.each(this.children, createNode, [branch]) + } + } + } + $.each(response, createNode, [child]); + $(container).treeview({add: child}); + }); +} + +var proxied = $.fn.treeview; +$.fn.treeview = function(settings) { + if (!settings.url) { + return proxied.apply(this, arguments); + } + var container = this; + load(settings, "source", this, container); + var userToggle = settings.toggle; + return proxied.call(this, $.extend({}, settings, { + collapsed: true, + toggle: function() { + var $this = $(this); + if ($this.hasClass("hasChildren")) { + var childList = $this.removeClass("hasChildren").find("ul"); + childList.empty(); + load(settings, this.id, childList, container); + } + if (userToggle) { + userToggle.apply(this, arguments); + } + } + })); +}; + +})(jQuery); \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.css b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.css new file mode 100644 index 000000000..d7e2c002a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.css @@ -0,0 +1,85 @@ +.treeview, .treeview ul { + padding: 0; + margin: 0; + list-style: none; +} + +.treeview ul { + background-color: white; + margin-top: 4px; +} + +.treeview .hitarea { + background: url(images/treeview-default.gif) -64px -25px no-repeat; + height: 16px; + width: 16px; + margin-left: -16px; + float: left; + cursor: pointer; +} +/* fix for IE6 */ +* html .hitarea { + display: inline; + float:none; +} + +.treeview li { + margin: 0; + padding: 3px 0 3px 16px; +} + +.treeview a.selected { + background-color: #eee; +} + +#treecontrol { margin: 1em 0; display: none; } + +.treeview .hover { color: red; cursor: pointer; } + +.treeview li { background: url(images/treeview-default-line.gif) 0 0 no-repeat; } +.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; } + +.treeview .expandable-hitarea { background-position: -80px -3px; } + +.treeview li.last { background-position: 0 -1766px } +.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url(images/treeview-default.gif); } +.treeview li.lastCollapsable { background-position: 0 -111px } +.treeview li.lastExpandable { background-position: -32px -67px } + +.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; } + +.treeview-red li { background-image: url(images/treeview-red-line.gif); } +.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url(images/treeview-red.gif); } + +.treeview-black li { background-image: url(images/treeview-black-line.gif); } +.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url(images/treeview-black.gif); } + +.treeview-gray li { background-image: url(images/treeview-gray-line.gif); } +.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url(images/treeview-gray.gif); } + +.treeview-famfamfam li { background-image: url(images/treeview-famfamfam-line.gif); } +.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url(images/treeview-famfamfam.gif); } + + +.filetree li { padding: 3px 0 2px 16px; } +.filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; } +.filetree span.folder { background: url(images/folder.gif) 0 0 no-repeat; } +.filetree li.expandable span.folder { background: url(images/folder-closed.gif) 0 0 no-repeat; } +.filetree span.file { background: url(images/file.gif) 0 0 no-repeat; } + +html, body {height:100%; margin: 0; padding: 0; } + +/* +html>body { + font-size: 16px; + font-size: 68.75%; +} Reset Base Font Size */ + /* +body { + font-family: Verdana, helvetica, arial, sans-serif; + font-size: 68.75%; + background: #fff; + color: #333; +} */ + +a img { border: none; } \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.js new file mode 100644 index 000000000..248e725b3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.js @@ -0,0 +1,255 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * + */ + +;(function($) { + + $.extend($.fn, { + swapClass: function(c1, c2) { + var c1Elements = this.filter('.' + c1); + this.filter('.' + c2).removeClass(c2).addClass(c1); + c1Elements.removeClass(c1).addClass(c2); + return this; + }, + replaceClass: function(c1, c2) { + return this.filter('.' + c1).removeClass(c1).addClass(c2).end(); + }, + hoverClass: function(className) { + className = className || "hover"; + return this.hover(function() { + $(this).addClass(className); + }, function() { + $(this).removeClass(className); + }); + }, + heightToggle: function(animated, callback) { + animated ? + this.animate({ height: "toggle" }, animated, callback) : + this.each(function(){ + jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ](); + if(callback) + callback.apply(this, arguments); + }); + }, + heightHide: function(animated, callback) { + if (animated) { + this.animate({ height: "hide" }, animated, callback); + } else { + this.hide(); + if (callback) + this.each(callback); + } + }, + prepareBranches: function(settings) { + if (!settings.prerendered) { + // mark last tree items + this.filter(":last-child:not(ul)").addClass(CLASSES.last); + // collapse whole tree, or only those marked as closed, anyway except those marked as open + this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide(); + } + // return all items with sublists + return this.filter(":has(>ul)"); + }, + applyClasses: function(settings, toggler) { + this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) { + toggler.apply($(this).next()); + }).add( $("a", this) ).hoverClass(); + + if (!settings.prerendered) { + // handle closed ones first + this.filter(":has(>ul:hidden)") + .addClass(CLASSES.expandable) + .replaceClass(CLASSES.last, CLASSES.lastExpandable); + + // handle open ones + this.not(":has(>ul:hidden)") + .addClass(CLASSES.collapsable) + .replaceClass(CLASSES.last, CLASSES.lastCollapsable); + + // create hitarea + this.prepend("
      ").find("div." + CLASSES.hitarea).each(function() { + var classes = ""; + $.each($(this).parent().attr("class").split(" "), function() { + classes += this + "-hitarea "; + }); + $(this).addClass( classes ); + }); + } + + // apply event to hitarea + this.find("div." + CLASSES.hitarea).click( toggler ); + }, + treeview: function(settings) { + + if(typeof(window.treeCookieId) !== 'undefined' || window.treeCookieId === ""){ + treeCookieId = "treeview"; + } + + settings = $.extend({ + cookieId: treeCookieId + }, settings); + + if (settings.add) { + return this.trigger("add", [settings.add]); + } + + if ( settings.toggle ) { + var callback = settings.toggle; + settings.toggle = function() { + return callback.apply($(this).parent()[0], arguments); + }; + } + + // factory for treecontroller + function treeController(tree, control) { + // factory for click handlers + function handler(filter) { + return function() { + // reuse toggle event handler, applying the elements to toggle + // start searching for all hitareas + toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() { + // for plain toggle, no filter is provided, otherwise we need to check the parent element + return filter ? $(this).parent("." + filter).length : true; + }) ); + return false; + }; + } + // click on first element to collapse tree + $("a:eq(0)", control).click( handler(CLASSES.collapsable) ); + // click on second to expand tree + $("a:eq(1)", control).click( handler(CLASSES.expandable) ); + // click on third to toggle tree + $("a:eq(2)", control).click( handler() ); + } + + // handle toggle event + function toggler() { + $(this) + .parent() + // swap classes for hitarea + .find(">.hitarea") + .swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea ) + .swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea ) + .end() + // swap classes for parent li + .swapClass( CLASSES.collapsable, CLASSES.expandable ) + .swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable ) + // find child lists + .find( ">ul" ) + // toggle them + .heightToggle( settings.animated, settings.toggle ); + if ( settings.unique ) { + $(this).parent() + .siblings() + // swap classes for hitarea + .find(">.hitarea") + .replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea ) + .replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea ) + .end() + .replaceClass( CLASSES.collapsable, CLASSES.expandable ) + .replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable ) + .find( ">ul" ) + .heightHide( settings.animated, settings.toggle ); + } + } + //Cookie Persistence + function serialize() { + function binary(arg) { + return arg ? 1 : 0; + } + var data = []; + branches.each(function(i, e) { + data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0; + }); + $.cookie(settings.cookieId, data.join("") ); + } + + function deserialize() { + var stored = $.cookie(settings.cookieId); + if ( stored ) { + var data = stored.split(""); + branches.each(function(i, e) { + $(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ](); + }); + } + } + + // add treeview class to activate styles + this.addClass("treeview"); + + // prepare branches and find all tree items with child lists + var branches = this.find("li").prepareBranches(settings); + + switch(settings.persist) { + case "cookie": + var toggleCallback = settings.toggle; + settings.toggle = function() { + serialize(); + if (toggleCallback) { + toggleCallback.apply(this, arguments); + } + }; + deserialize(); + break; + case "location": + var current = this.find("a").filter(function() { return this.href.toLowerCase() == location.href.toLowerCase(); }); + if ( current.length ) { + current.addClass("selected").parents("ul, li").add( current.next() ).show(); + } + break; + } + + branches.applyClasses(settings, toggler); + + // if control option is set, create the treecontroller and show it + if ( settings.control ) { + treeController(this, settings.control); + $(settings.control).show(); + } + + return this.bind("add", function(event, branches) { + $(branches).prev() + .removeClass(CLASSES.last) + .removeClass(CLASSES.lastCollapsable) + .removeClass(CLASSES.lastExpandable) + .find(">.hitarea") + .removeClass(CLASSES.lastCollapsableHitarea) + .removeClass(CLASSES.lastExpandableHitarea); + $(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, toggler); + }); + } + }); + + // classes used by the plugin + // need to be styled via external stylesheet, see first example + var CLASSES = $.fn.treeview.classes = { + open: "open", + closed: "closed", + expandable: "expandable", + expandableHitarea: "expandable-hitarea", + lastExpandableHitarea: "lastExpandable-hitarea", + collapsable: "collapsable", + collapsableHitarea: "collapsable-hitarea", + lastCollapsableHitarea: "lastCollapsable-hitarea", + lastCollapsable: "lastCollapsable", + lastExpandable: "lastExpandable", + last: "last", + hitarea: "hitarea" + }; + + // provide backwards compability + $.fn.Treeview = $.fn.treeview; + +})(jQuery); \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.min.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.min.js new file mode 100644 index 000000000..e693321dd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.min.js @@ -0,0 +1,16 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * kasunbg: changed the cookieid name + * + */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("
      ").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){if(typeof(window.treeCookieId) === 'undefined' || window.treeCookieId === ""){treeCookieId = "treeview";} settings=$.extend({cookieId: treeCookieId},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.pack.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.pack.js new file mode 100644 index 000000000..eddac491f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/jquery/treeview/jquery.treeview.pack.js @@ -0,0 +1,16 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * + */ +eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(4($){$.1l($.F,{E:4(b,c){l a=3.n(\'.\'+b);3.n(\'.\'+c).o(c).m(b);a.o(b).m(c);8 3},s:4(a,b){8 3.n(\'.\'+a).o(a).m(b).P()},1n:4(a){a=a||"1j";8 3.1j(4(){$(3).m(a)},4(){$(3).o(a)})},1h:4(b,a){b?3.1g({1e:"p"},b,a):3.x(4(){T(3)[T(3).1a(":U")?"H":"D"]();7(a)a.A(3,O)})},12:4(b,a){7(b){3.1g({1e:"D"},b,a)}1L{3.D();7(a)3.x(a)}},11:4(a){7(!a.1k){3.n(":r-1H:G(9)").m(k.r);3.n((a.1F?"":"."+k.X)+":G(."+k.W+")").6(">9").D()}8 3.n(":y(>9)")},S:4(b,c){3.n(":y(>9):G(:y(>a))").6(">1z").C(4(a){c.A($(3).19())}).w($("a",3)).1n();7(!b.1k){3.n(":y(>9:U)").m(k.q).s(k.r,k.t);3.G(":y(>9:U)").m(k.u).s(k.r,k.v);3.1r("").6("J."+k.5).x(4(){l a="";$.x($(3).B().1o("14").13(" "),4(){a+=3+"-5 "});$(3).m(a)})}3.6("J."+k.5).C(c)},z:4(g){g=$.1l({N:"z"},g);7(g.w){8 3.1K("w",[g.w])}7(g.p){l d=g.p;g.p=4(){8 d.A($(3).B()[0],O)}}4 1m(b,c){4 L(a){8 4(){K.A($("J."+k.5,b).n(4(){8 a?$(3).B("."+a).1i:1I}));8 1G}}$("a:10(0)",c).C(L(k.u));$("a:10(1)",c).C(L(k.q));$("a:10(2)",c).C(L())}4 K(){$(3).B().6(">.5").E(k.Z,k.Y).E(k.I,k.M).P().E(k.u,k.q).E(k.v,k.t).6(">9").1h(g.1f,g.p);7(g.1E){$(3).B().1D().6(">.5").s(k.Z,k.Y).s(k.I,k.M).P().s(k.u,k.q).s(k.v,k.t).6(">9").12(g.1f,g.p)}}4 1d(){4 1C(a){8 a?1:0}l b=[];j.x(4(i,e){b[i]=$(e).1a(":y(>9:1B)")?1:0});$.V(g.N,b.1A(""))}4 1c(){l b=$.V(g.N);7(b){l a=b.13("");j.x(4(i,e){$(e).6(">9")[1y(a[i])?"H":"D"]()})}}3.m("z");l j=3.6("Q").11(g);1x(g.1w){18"V":l h=g.p;g.p=4(){1d();7(h){h.A(3,O)}};1c();17;18"1b":l f=3.6("a").n(4(){8 3.16.15()==1b.16.15()});7(f.1i){f.m("1v").1u("9, Q").w(f.19()).H()}17}j.S(g,K);7(g.R){1m(3,g.R);$(g.R).H()}8 3.1t("w",4(a,b){$(b).1s().o(k.r).o(k.v).o(k.t).6(">.5").o(k.I).o(k.M);$(b).6("Q").1q().11(g).S(g,K)})}});l k=$.F.z.1J={W:"W",X:"X",q:"q",Y:"q-5",M:"t-5",u:"u",Z:"u-5",I:"v-5",v:"v",t:"t",r:"r",5:"5"};$.F.1p=$.F.z})(T);',62,110,'|||this|function|hitarea|find|if|return|ul||||||||||||var|addClass|filter|removeClass|toggle|expandable|last|replaceClass|lastExpandable|collapsable|lastCollapsable|add|each|has|treeview|apply|parent|click|hide|swapClass|fn|not|show|lastCollapsableHitarea|div|toggler|handler|lastExpandableHitarea|cookieId|arguments|end|li|control|applyClasses|jQuery|hidden|cookie|open|closed|expandableHitarea|collapsableHitarea|eq|prepareBranches|heightHide|split|class|toLowerCase|href|break|case|next|is|location|deserialize|serialize|height|animated|animate|heightToggle|length|hover|prerendered|extend|treeController|hoverClass|attr|Treeview|andSelf|prepend|prev|bind|parents|selected|persist|switch|parseInt|span|join|visible|binary|siblings|unique|collapsed|false|child|true|classes|trigger|else'.split('|'),0,{})) \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/main.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/main.js new file mode 100644 index 000000000..dee730360 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/common/main.js @@ -0,0 +1,161 @@ +/** + * Miscellaneous js functions for WebHelp + * Kasun Gajasinghe, http://kasunbg.blogspot.com + * David Cramer, http://www.thingbag.net + * + */ + +$(document).ready(function() { + // $("#showHideHighlight").button(); //add jquery button styling to 'Go' button + //Generate tabs in nav-pane with JQuery + $(function() { + $("#tabs").tabs({ + cookie: { + // store cookie for 2 days. + expires: 2 + } + }); + }); + + //Generate the tree + $("#ulTreeDiv").attr("style",""); + $("#tree").treeview({ + collapsed: true, + animated: "medium", + control: "#sidetreecontrol", + persist: "cookie" + }); + + //after toc fully styled, display it. Until loading, a 'loading' image will be displayed + $("#tocLoading").attr("style","display:none;"); +// $("#ulTreeDiv").attr("style","display:block;"); + + //.searchButton is the css class applied to 'Go' button + $(function() { + $("button", ".searchButton").button(); + + $("button", ".searchButton").click(function() { return false; }); + }); + + //'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('ui-tabs-1') === '1') { //search tab is visible + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('diaSearch_Form'); + searchHighlight($.cookie('textToSearch')); + $("#showHideHighlight").css("display","block"); + } + } + + syncToc(); //Synchronize the toc tree with the content pane, when loading the page. + //$("#doSearch").button(); //add jquery button styling to 'Go' button +}); + +/** + * Synchronize with the tableOfContents + */ +function syncToc(){ + var a = document.getElementById("webhelp-currentid"); + if (a != undefined) { + var b = a.getElementsByTagName("a")[0]; + + if (b != undefined) { + //Setting the background for selected node. + var style = a.getAttribute("style"); + if (style != null && !style.match(/background-color: Background;/)) { + a.setAttribute("style", "background-color: #6495ed; " + style); + b.setAttribute("style", "color: white;"); + } else if (style != null) { + a.setAttribute("style", "background-color: #6495ed; " + style); + b.setAttribute("style", "color: white;"); + } else { + a.setAttribute("style", "background-color: #6495ed; "); + b.setAttribute("style", "color: white;"); + } + } + + //shows the node related to current content. + //goes a recursive call from current node to ancestor nodes, displaying all of them. + while (a.parentNode && a.parentNode.nodeName) { + var parentNode = a.parentNode; + var nodeName = parentNode.nodeName; + + if (nodeName.toLowerCase() == "ul") { + parentNode.setAttribute("style", "display: block;"); + } else if (nodeName.toLocaleLowerCase() == "li") { + parentNode.setAttribute("class", "collapsable"); + parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea "); + } + a = parentNode; + } + } +} + +/** + * Code for Show/Hide TOC + * + */ +function showHideToc() { + var showHideButton = $("#showHideButton"); + var leftNavigation = $("#leftnavigation"); + var content = $("#content"); + + if (showHideButton != undefined && showHideButton.hasClass("pointLeft")) { + //Hide TOC + showHideButton.removeClass('pointLeft').addClass('pointRight'); + content.css("margin", "0 0 0 0"); + leftNavigation.css("display","none"); + showHideButton.attr("title", "Show the TOC tree"); + } else { + //Show the TOC + showHideButton.removeClass('pointRight').addClass('pointLeft'); + content.css("margin", "0 0 0 280px"); + leftNavigation.css("display","block"); + showHideButton.attr("title", "Hide the TOC Tree"); + } +} + +/** + * Code for searh highlighting + */ +var highlightOn = true; +function searchHighlight(searchText) { + highlightOn = true; + if (searchText != undefined) { + var wList; + var sList = new Array(); //stem list + //Highlight the search terms + searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, " -1) { + + alert(txt_browser_not_supported); + return; + } + + + var expressionInput = document.ditaSearch_Form.textToSearch.value; + //Set a cookie to store the searched keywords + $.cookie('textToSearch', expressionInput); + + + if (expressionInput.length < 1) { + + // expression is invalid + alert(txt_enter_at_least_1_char); + // reactive la fenetre de search (utile car cadres) + document.ditaSearch_Form.textToSearch.focus(); + } + else { + + // Effectuer la recherche + Effectuer_recherche(expressionInput); + + // reactive la fenetre de search (utile car cadres) + document.ditaSearch_Form.textToSearch.focus(); + } +} + +var stemQueryMap = new Array(); // A hashtable which maps stems to query words + +/* This function parses the search expression, loads the indices and displays the results*/ +function Effectuer_recherche(expressionInput) { + + /* Display a waiting message */ + //DisplayWaitingMessage(); + + /*data initialisation*/ + var searchFor = ""; // expression en lowercase et sans les caracte res speciaux + //w = new Object(); // hashtable, key=word, value = list of the index of the html files + scriptLetterTab = new Scriptfirstchar(); // Array containing the first letter of each word to look for + var wordsList = new Array(); // Array with the words to look for + var finalWordsList = new Array(); // Array with the words to look for after removing spaces + var linkTab = new Array(); + var fileAndWordList = new Array(); + var txt_wordsnotfound = ""; + + + /*nqu: expressionInput, la recherche est lower cased, plus remplacement des char speciaux*/ + searchFor = expressionInput.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "= 0; i--) { + if (fileAndWordList[i] != undefined) { + linkTab.push("

      " + txt_results_for + " " + "" + fileAndWordList[i][0].motslisteDisplay + "" + "

      "); + + linkTab.push("
        "); + for (t in fileAndWordList[i]) { + //DEBUG: alert(": "+ fileAndWordList[i][t].filenb+" " +fileAndWordList[i][t].motsliste); + //linkTab.push("
      • "+fl[fileAndWordList[i][t].filenb]+"
      • "); + var tempInfo = fil[fileAndWordList[i][t].filenb]; + var pos1 = tempInfo.indexOf("@@@"); + var pos2 = tempInfo.lastIndexOf("@@@"); + var tempPath = tempInfo.substring(0, pos1); + var tempTitle = tempInfo.substring(pos1 + 3, pos2); + var tempShortdesc = tempInfo.substring(pos2 + 3, tempInfo.length); + + //file:///home/kasun/docbook/WEBHELP/webhelp-draft-output-format-idea/src/main/resources/web/webhelp/installation.html + var linkString = "
      • " + tempTitle + ""; + // var linkString = "
      • " + tempTitle + ""; + if ((tempShortdesc != "null")) { + linkString += "\n
        " + tempShortdesc + "
        "; + } + linkString += "
      • "; + linkTab.push(linkString); + } + linkTab.push("
      "); + } + } + } + + var results = ""; + if (linkTab.length > 0) { + /*writeln ("

      " + txt_results_for + " " + "" + cleanwordsList + "" + "
      "+"

      ");*/ + results = "

      "; + //write("

        "); + for (t in linkTab) { + results += linkTab[t].toString(); + } + results += "

        "; + } else { + results = "

        " + "Your search returned no results for " + "" + txt_wordsnotfound + "" + "

        "; + } + //alert(results); + document.getElementById('searchResults').innerHTML = results; +} + +function tokenize(wordsList){ + var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces + var cleanwordsList = new Array(); // Array with the words to look for + for(var j in wordsList){ + var word = wordsList[j]; + if(typeof stemmer != "undefined" ){ + stemQueryMap[stemmer(word)] = word; + } else { + stemQueryMap[word] = word; + } + } + //stemmedWordsList is the stemmed list of words separated by spaces. + for (var t in wordsList) { + wordsList[t] = wordsList[t].replace(/(%22)|^-/g, ""); + if (wordsList[t] != "%20") { + scriptLetterTab.add(wordsList[t].charAt(0)); + cleanwordsList.push(wordsList[t]); + } + } + + if(typeof stemmer != "undefined" ){ + //Do the stemming using Porter's stemming algorithm + for (var i = 0; i < cleanwordsList.length; i++) { + var stemWord = stemmer(cleanwordsList[i]); + stemmedWordsList.push(stemWord); + } + } else { + stemmedWordsList = cleanwordsList; + } + return stemmedWordsList; +} + +//Invoker of CJKTokenizer class methods. +function cjkTokenize(wordsList){ + var allTokens= new Array(); + var notCJKTokens= new Array(); + var j=0; + for(j=0;j"; + return this.input.substring(this.offset,this.offset+2); + } + + function getAllTokens(){ + while(this.incrementToken()){ + var tmp = this.tokenize(); + this.tokens.push(tmp); + } + return this.unique(this.tokens); +// document.getElementById("content").innerHTML += tokens+" "; +// document.getElementById("content").innerHTML += "
        dada"+sortedTokens+" "; +// console.log(tokens.length+"dsdsds"); + /*for(i=0;i t2.length) { + return 1; + } else { + return -1; + } + //return t1.length - t2.length); +} \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/punctuation.props b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/punctuation.props new file mode 100644 index 000000000..edb341333 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/punctuation.props @@ -0,0 +1,31 @@ +Punct01=\\u3002 +Punct02=\\u3003 +Punct03=\\u300C +Punct04=\\u300D +Punct05=\\u300E +Punct06=\\u300F +Punct07=\\u301D +Punct08=\\u301E +Punct09=\\u301F +Punct10=\\u309B +Punct11=\\u2018 +Punct12=\\u2019 +Punct13=\\u201A +Punct14=\\u201C +Punct15=\\u201D +Punct16=\\u201E +Punct17=\\u2032 +Punct18=\\u2033 +Punct19=\\u2035 +Punct20=\\u2039 +Punct21=\\u203A +Punct22=\\u201E +Punct23=\\u00BB +Punct24=\\u00AB +Punct25=© +Punct26=’ +Punct27=\\u00A0 +Punct28=\\u2014 + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/de_stemmer.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/de_stemmer.js new file mode 100644 index 000000000..7ff3822a4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/de_stemmer.js @@ -0,0 +1,247 @@ +/* + * Author: Joder Illi + * + * Copyright (c) 2010, FormBlitz AG + * All rights reserved. + * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/german/stemmer.html + * Copyright of the algorithm is: Copyright (c) 2001, Dr Martin Porter and can be found at http://snowball.tartarus.org/license.php + * + * Redistribution and use in source and binary forms, with or without modification, is covered by the standard BSD license. + * + */ + +//var stemmer = function Stemmer() { + /* + German includes the following accented forms, + ä ö ü + and a special letter, ß, equivalent to double s. + The following letters are vowels: + a e i o u y ä ö ü + */ + + var stemmer = function(word) { + /* + Put u and y between vowels into upper case + */ + word = word.replace(/([aeiouyäöü])u([aeiouyäöü])/g, '$1U$2'); + word = word.replace(/([aeiouyäöü])y([aeiouyäöü])/g, '$1Y$2'); + + /* + and then do the following mappings, + (a) replace ß with ss, + (a) replace ae with ä, Not doing these, have trouble with diphtongs + (a) replace oe with ö, Not doing these, have trouble with diphtongs + (a) replace ue with ü unless preceded by q. Not doing these, have trouble with diphtongs + So in quelle, ue is not mapped to ü because it follows q, and in feuer it is not mapped because the first part of the rule changes it to feUer, so the u is not found. + */ + word = word.replace(/ß/g, 'ss'); + //word = word.replace(/ae/g, 'ä'); + //word = word.replace(/oe/g, 'ö'); + //word = word.replace(/([^q])ue/g, '$1ü'); + + /* + R1 and R2 are first set up in the standard way (see the note on R1 and R2), but then R1 is adjusted so that the region before it contains at least 3 letters. + R1 is the region after the first non-vowel following a vowel, or is the null region at the end of the word if there is no such non-vowel. + R2 is the region after the first non-vowel following a vowel in R1, or is the null region at the end of the word if there is no such non-vowel. + */ + + var r1Index = word.search(/[aeiouyäöü][^aeiouyäöü]/); + var r1 = ''; + if (r1Index != -1) { + r1Index += 2; + r1 = word.substring(r1Index); + } + + var r2Index = -1; + var r2 = ''; + + if (r1Index != -1) { + var r2Index = r1.search(/[aeiouyäöü][^aeiouyäöü]/); + if (r2Index != -1) { + r2Index += 2; + r2 = r1.substring(r2Index); + r2Index += r1Index; + } else { + r2 = ''; + } + } + + if (r1Index != -1 && r1Index < 3) { + r1Index = 3; + r1 = word.substring(r1Index); + } + + /* + Define a valid s-ending as one of b, d, f, g, h, k, l, m, n, r or t. + Define a valid st-ending as the same list, excluding letter r. + */ + + /* + Do each of steps 1, 2 and 3. + */ + + /* + Step 1: + Search for the longest among the following suffixes, + (a) em ern er + (b) e en es + (c) s (preceded by a valid s-ending) + */ + var a1Index = word.search(/(em|ern|er)$/g); + var b1Index = word.search(/(e|en|es)$/g); + var c1Index = word.search(/([bdfghklmnrt]s)$/g); + if (c1Index != -1) { + c1Index++; + } + var index1 = 10000; + var optionUsed1 = ''; + if (a1Index != -1 && a1Index < index1) { + optionUsed1 = 'a'; + index1 = a1Index; + } + if (b1Index != -1 && b1Index < index1) { + optionUsed1 = 'b'; + index1 = b1Index; + } + if (c1Index != -1 && c1Index < index1) { + optionUsed1 = 'c'; + index1 = c1Index; + } + + /* + and delete if in R1. (Of course the letter of the valid s-ending is not necessarily in R1.) If an ending of group (b) is deleted, and the ending is preceded by niss, delete the final s. + (For example, äckern -> äck, ackers -> acker, armes -> arm, bedürfnissen -> bedürfnis) + */ + + if (index1 != 10000 && r1Index != -1) { + if (index1 >= r1Index) { + word = word.substring(0, index1); + if (optionUsed1 == 'b') { + if (word.search(/niss$/) != -1) { + word = word.substring(0, word.length -1); + } + } + } + } + /* + Step 2: + Search for the longest among the following suffixes, + (a) en er est + (b) st (preceded by a valid st-ending, itself preceded by at least 3 letters) + */ + + var a2Index = word.search(/(en|er|est)$/g); + var b2Index = word.search(/(.{3}[bdfghklmnt]st)$/g); + if (b2Index != -1) { + b2Index += 4; + } + + var index2 = 10000; + var optionUsed2 = ''; + if (a2Index != -1 && a2Index < index2) { + optionUsed2 = 'a'; + index2 = a2Index; + } + if (b2Index != -1 && b2Index < index2) { + optionUsed2 = 'b'; + index2 = b2Index; + } + + /* + and delete if in R1. + (For example, derbsten -> derbst by step 1, and derbst -> derb by step 2, since b is a valid st-ending, and is preceded by just 3 letters) + */ + + if (index2 != 10000 && r1Index != -1) { + if (index2 >= r1Index) { + word = word.substring(0, index2); + } + } + + /* + Step 3: d-suffixes (*) + Search for the longest among the following suffixes, and perform the action indicated. + end ung + delete if in R2 + if preceded by ig, delete if in R2 and not preceded by e + ig ik isch + delete if in R2 and not preceded by e + lich heit + delete if in R2 + if preceded by er or en, delete if in R1 + keit + delete if in R2 + if preceded by lich or ig, delete if in R2 + */ + + var a3Index = word.search(/(end|ung)$/g); + var b3Index = word.search(/[^e](ig|ik|isch)$/g); + var c3Index = word.search(/(lich|heit)$/g); + var d3Index = word.search(/(keit)$/g); + if (b3Index != -1) { + b3Index ++; + } + + var index3 = 10000; + var optionUsed3 = ''; + if (a3Index != -1 && a3Index < index3) { + optionUsed3 = 'a'; + index3 = a3Index; + } + if (b3Index != -1 && b3Index < index3) { + optionUsed3 = 'b'; + index3 = b3Index; + } + if (c3Index != -1 && c3Index < index3) { + optionUsed3 = 'c'; + index3 = c3Index; + } + if (d3Index != -1 && d3Index < index3) { + optionUsed3 = 'd'; + index3 = d3Index; + } + + if (index3 != 10000 && r2Index != -1) { + if (index3 >= r2Index) { + word = word.substring(0, index3); + var optionIndex = -1; + var optionSubsrt = ''; + if (optionUsed3 == 'a') { + optionIndex = word.search(/[^e](ig)$/); + if (optionIndex != -1) { + optionIndex++; + if (optionIndex >= r2Index) { + word = word.substring(0, optionIndex); + } + } + } else if (optionUsed3 == 'c') { + optionIndex = word.search(/(er|en)$/); + if (optionIndex != -1) { + if (optionIndex >= r1Index) { + word = word.substring(0, optionIndex); + } + } + } else if (optionUsed3 == 'd') { + optionIndex = word.search(/(lich|ig)$/); + if (optionIndex != -1) { + if (optionIndex >= r2Index) { + word = word.substring(0, optionIndex); + } + } + } + } + } + + /* + Finally, + turn U and Y back into lower case, and remove the umlaut accent from a, o and u. + */ + word = word.replace(/U/g, 'u'); + word = word.replace(/Y/g, 'y'); + word = word.replace(/ä/g, 'a'); + word = word.replace(/ö/g, 'o'); + word = word.replace(/ü/g, 'u'); + + return word; + }; +//} \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/en_stemmer.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/en_stemmer.js new file mode 100644 index 000000000..f58012f2b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/en_stemmer.js @@ -0,0 +1,187 @@ +// Porter stemmer in Javascript. Few comments, but it's easy to follow against the rules in the original +// paper, in +// +// Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14, +// no. 3, pp 130-137, +// +// see also http://www.tartarus.org/~martin/PorterStemmer + +// Release 1 be 'andargor', Jul 2004 +// Release 2 (substantially revised) by Christopher McKenzie, Aug 2009 + + +var stemmer = (function(){ + var step2list = { + "ational" : "ate", + "tional" : "tion", + "enci" : "ence", + "anci" : "ance", + "izer" : "ize", + "bli" : "ble", + "alli" : "al", + "entli" : "ent", + "eli" : "e", + "ousli" : "ous", + "ization" : "ize", + "ation" : "ate", + "ator" : "ate", + "alism" : "al", + "iveness" : "ive", + "fulness" : "ful", + "ousness" : "ous", + "aliti" : "al", + "iviti" : "ive", + "biliti" : "ble", + "logi" : "log" + }, + + step3list = { + "icate" : "ic", + "ative" : "", + "alize" : "al", + "iciti" : "ic", + "ical" : "ic", + "ful" : "", + "ness" : "" + }, + + c = "[^aeiou]", // consonant + v = "[aeiouy]", // vowel + C = c + "[^aeiouy]*", // consonant sequence + V = v + "[aeiou]*", // vowel sequence + + mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 + meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 + mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 + s_v = "^(" + C + ")?" + v; // vowel in stem + + return function (w) { + var stem, + suffix, + firstch, + re, + re2, + re3, + re4, + origword = w; + + if (w.length < 3) { return w; } + + firstch = w.substr(0,1); + if (firstch == "y") { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) { w = w.replace(re,"$1$2"); } + else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) { w = w + "e"; } + else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); } + else if (re4.test(w)) { w = w + "e"; } + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) { w = stem + "i"; } + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { + w = stem; + } + } + + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + + if (firstch == "y") { + w = firstch.toLowerCase() + w.substr(1); + } + + return w; + } +})(); \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/fr_stemmer.js b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/fr_stemmer.js new file mode 100644 index 000000000..34f974313 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/webhelp/template/content/search/stemmers/fr_stemmer.js @@ -0,0 +1,299 @@ +/* + * Author: Kasun Gajasinghe + * E-Mail: kasunbg AT gmail DOT com + * Date: 09.08.2010 + * + * usage: stemmer(word); + * ex: var stem = stemmer(foobar); + * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/french/stemmer.html + * + * LICENSE: + * + * Copyright (c) 2010, Kasun Gajasinghe. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. 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. + * + * + * THIS SOFTWARE IS PROVIDED BY KASUN GAJASINGHE ''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 KASUN GAJASINGHE 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. + * + */ + +var stemmer = function(word){ +// Letters in French include the following accented forms, +// â à ç ë é ê è ï î ô û ù +// The following letters are vowels: +// a e i o u y â à ë é ê è ï î ô û ù + + word = word.toLowerCase(); + var oriWord = word; + word = word.replace(/qu/g, 'qU'); //have to perform first, as after the operation, capital U is not treated as a vowel + word = word.replace(/([aeiouyâàëéêèïîôûù])u([aeiouyâàëéêèïîôûù])/g, '$1U$2'); + word = word.replace(/([aeiouyâàëéêèïîôûù])i([aeiouyâàëéêèïîôûù])/g, '$1I$2'); + word = word.replace(/([aeiouyâàëéêèïîôûù])y/g, '$1Y'); + word = word.replace(/y([aeiouyâàëéêèïîôûù])/g, 'Y$1'); + + var rv=''; + var rvIndex = -1; + if(word.search(/^(par|col|tap)/) != -1 || word.search(/^[aeiouyâàëéêèïîôûù]{2}/) != -1){ + rv = word.substring(3); + rvIndex = 3; + } else { + rvIndex = word.substring(1).search(/[aeiouyâàëéêèïîôûù]/); + if(rvIndex != -1){ + rvIndex +=2; //+2 is to supplement the substring(1) used to find rvIndex + rv = word.substring(rvIndex); + } else { + rvIndex = word.length; + } + } + +// R1 is the region after the first non-vowel following a vowel, or the end of the word if there is no such non-vowel. +// R2 is the region after the first non-vowel following a vowel in R1, or the end of the word if there is no such non-vowel + var r1Index = word.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/); + var r1 = ''; + if (r1Index != -1) { + r1Index += 2; + r1 = word.substring(r1Index); + } else { + r1Index = word.length; + } + + var r2Index = -1; + var r2 = ''; + if (r1Index != -1) { + r2Index = r1.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/); + if (r2Index != -1) { + r2Index += 2; + r2 = r1.substring(r2Index); + r2Index += r1Index; + } else { + r2 = ''; + r2Index = word.length; + } + } + if (r1Index != -1 && r1Index < 3) { + r1Index = 3; + r1 = word.substring(r1Index); + } + + /* + Step 1: Standard suffix removal + */ + var a1Index = word.search(/(ance|iqUe|isme|able|iste|eux|ances|iqUes|ismes|ables|istes)$/); + var a2Index = word.search(/(atrice|ateur|ation|atrices|ateurs|ations)$/); + var a3Index = word.search(/(logie|logies)$/); + var a4Index = word.search(/(usion|ution|usions|utions)$/); + var a5Index = word.search(/(ence|ences)$/); + var a6Index = word.search(/(ement|ements)$/); + var a7Index = word.search(/(ité|ités)$/); + var a8Index = word.search(/(if|ive|ifs|ives)$/); + var a9Index = word.search(/(eaux)$/); + var a10Index = word.search(/(aux)$/); + var a11Index = word.search(/(euse|euses)$/); + var a12Index = word.search(/[^aeiouyâàëéêèïîôûù](issement|issements)$/); + var a13Index = word.search(/(amment)$/); + var a14Index = word.search(/(emment)$/); + var a15Index = word.search(/[aeiouyâàëéêèïîôûù](ment|ments)$/); + + if(a1Index != -1 && a1Index >= r2Index){ + word = word.substring(0,a1Index); + } else if(a2Index != -1 && a2Index >= r2Index){ + word = word.substring(0,a2Index); + var a2Index2 = word.search(/(ic)$/); + if(a2Index2 != -1 && a2Index2 >= r2Index){ + word = word.substring(0, a2Index2); //if preceded by ic, delete if in R2, + } else { //else replace by iqU + word = word.replace(/(ic)$/,'iqU'); + } + } else if(a3Index != -1 && a3Index >= r2Index){ + word = word.replace(/(logie|logies)$/,'log'); //replace with log if in R2 + } else if(a4Index != -1 && a4Index >= r2Index){ + word = word.replace(/(usion|ution|usions|utions)$/,'u'); //replace with u if in R2 + } else if(a5Index != -1 && a5Index >= r2Index){ + word = word.replace(/(ence|ences)$/,'ent'); //replace with ent if in R2 + } else if(a6Index != -1 && a6Index >= rvIndex){ + word = word.substring(0,a6Index); + if(word.search(/(iv)$/) >= r2Index){ + word = word.replace(/(iv)$/, ''); + if(word.search(/(at)$/) >= r2Index){ + word = word.replace(/(at)$/, ''); + } + } else if(word.search(/(eus)$/) != -1){ + var a6Index2 = word.search(/(eus)$/); + if(a6Index2 >=r2Index){ + word = word.substring(0, a6Index2); + } else if(a6Index2 >= r1Index){ + word = word.substring(0,a6Index2)+"eux"; + } + } else if(word.search(/(abl|iqU)$/) >= r2Index){ + word = word.replace(/(abl|iqU)$/,''); //if preceded by abl or iqU, delete if in R2, + } else if(word.search(/(ièr|Ièr)$/) >= rvIndex){ + word = word.replace(/(ièr|Ièr)$/,'i'); //if preceded by abl or iqU, delete if in R2, + } + } else if(a7Index != -1 && a7Index >= r2Index){ + word = word.substring(0,a7Index); //delete if in R2 + if(word.search(/(abil)$/) != -1){ //if preceded by abil, delete if in R2, else replace by abl, otherwise, + var a7Index2 = word.search(/(abil)$/); + if(a7Index2 >=r2Index){ + word = word.substring(0, a7Index2); + } else { + word = word.substring(0,a7Index2)+"abl"; + } + } else if(word.search(/(ic)$/) != -1){ + var a7Index3 = word.search(/(ic)$/); + if(a7Index3 != -1 && a7Index3 >= r2Index){ + word = word.substring(0, a7Index3); //if preceded by ic, delete if in R2, + } else { //else replace by iqU + word = word.replace(/(ic)$/,'iqU'); + } + } else if(word.search(/(iv)$/) != r2Index){ + word = word.replace(/(iv)$/,''); + } + } else if(a8Index != -1 && a8Index >= r2Index){ + word = word.substring(0,a8Index); + if(word.search(/(at)$/) >= r2Index){ + word = word.replace(/(at)$/, ''); + if(word.search(/(ic)$/) >= r2Index){ + word = word.replace(/(ic)$/, ''); + } else { word = word.replace(/(ic)$/, 'iqU'); } + } + } else if(a9Index != -1){ word = word.replace(/(eaux)/,'eau') + } else if(a10Index >= r1Index){ word = word.replace(/(aux)/,'al') + } else if(a11Index != -1 ){ + var a11Index2 = word.search(/(euse|euses)$/); + if(a11Index2 >=r2Index){ + word = word.substring(0, a11Index2); + } else if(a11Index2 >= r1Index){ + word = word.substring(0, a11Index2)+"eux"; + } + } else if(a12Index!=-1 && a12Index>=r1Index){ + word = word.substring(0,a12Index+1); //+1- amendment to non-vowel + } else if(a13Index!=-1 && a13Index>=rvIndex){ + word = word.replace(/(amment)$/,'ant'); + } else if(a14Index!=-1 && a14Index>=rvIndex){ + word = word.replace(/(emment)$/,'ent'); + } else if(a15Index!=-1 && a15Index>=rvIndex){ + word = word.substring(0,a15Index+1); + } + + /* Step 2a: Verb suffixes beginning i*/ + var wordStep1 = word; + var step2aDone = false; + if(oriWord == word.toLowerCase() || oriWord.search(/(amment|emment|ment|ments)$/) != -1){ + step2aDone = true; + var b1Regex = /([^aeiouyâàëéêèïîôûù])(îmes|ît|îtes|i|ie|ies|ir|ira|irai|iraIent|irais|irait|iras|irent|irez|iriez|irions|irons|iront|is|issaIent|issais|issait|issant|issante|issantes|issants|isse|issent|isses|issez|issiez|issions|issons|it)$/i; + if(word.search(b1Regex) >= rvIndex){ + word = word.replace(b1Regex,'$1'); + } + } + + /* Step 2b: Other verb suffixes*/ + if (step2aDone && wordStep1 == word) { + if (word.search(/(ions)$/) >= r2Index) { + word = word.replace(/(ions)$/, ''); + } else { + var b2Regex = /(é|ée|ées|és|èrent|er|era|erai|eraIent|erais|erait|eras|erez|eriez|erions|erons|eront|ez|iez)$/i; + if (word.search(b2Regex) >= rvIndex) { + word = word.replace(b2Regex, ''); + } else { + var b3Regex = /e(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i; + if (word.search(b3Regex) >= rvIndex) { + word = word.replace(b3Regex, ''); + } else { + var b3Regex2 = /(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i; + if (word.search(b3Regex2) >= rvIndex) { + word = word.replace(b3Regex2, ''); + } + } + } + } + } + + if(oriWord != word.toLowerCase()){ + /* Step 3 */ + var rep = ''; + if(word.search(/Y$/) != -1) { + word = word.replace(/Y$/, 'i'); + } else if(word.search(/ç$/) != -1){ + word = word.replace(/ç$/, 'c'); + } + } else { + /* Step 4 */ + //If the word ends s, not preceded by a, i, o, u, è or s, delete it. + if (word.search(/([^aiouès])s$/) >= rvIndex) { + word = word.replace(/([^aiouès])s$/, '$1'); + } + var e1Index = word.search(/ion$/); + if (e1Index >= r2Index && word.search(/[st]ion$/) >= rvIndex) { + word = word.substring(0, e1Index); + } else { + var e2Index = word.search(/(ier|ière|Ier|Ière)$/); + if (e2Index != -1 && e2Index >= rvIndex) { + word = word.substring(0, e2Index) + "i"; + } else { + if (word.search(/e$/) >= rvIndex) { + word = word.replace(/e$/, ''); //delete last e + } else if (word.search(/guë$/) >= rvIndex) { + word = word.replace(/guë$/, 'gu'); + } + } + } + } + + /* Step 5: Undouble */ + //word = word.replace(/(en|on|et|el|eil)(n|t|l)$/,'$1'); + word = word.replace(/(en|on)(n)$/,'$1'); + word = word.replace(/(ett)$/,'et'); + word = word.replace(/(el|eil)(l)$/,'$1'); + + /* Step 6: Un-accent */ + word = word.replace(/[éè]([^aeiouyâàëéêèïîôûù]+)$/,'e$1'); + word = word.toLowerCase(); + return word; +}; + +var eqOut = new Array(); +var noteqOut = new Array(); +var eqCount = 0; +/* +To test the stemming, create two arrays named "voc" and "COut" which are for vocabualary and the stemmed output. +Then add the vocabulary strings and output strings. This method will generate the stemmed output for "voc" and will +compare the output with COut. + (I used porter's voc and out files and did a regex to convert them to js objects. regex: /");\nvoc.push("/g . This + will add strings to voc array such that output would look like: voc.push("foobar"); ) drop me an email for any help. + */ +function testFr(){ + var start = new Date().getTime(); //execution time + eqCount = 0; + eqOut = new Array(); + noteqOut = new Array(); + for(var k=0;k + + + + + + + + true + index.html + docs + + en + + 0 + + + + no + 0 + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + language: + + + + + + + + + + + Note + + + namesp. cut + + + stripped namespace before processing + + + + + + + + Note + + + namesp. cut + + + processing stripped document + + + + + + + + Unable to strip the namespace from DB5 document, + cannot proceed. + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + +
        + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + +
        + loading table of contents... + + +
        + +
        + +
        +
        +
        +
        +
        + +
        +
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + webhelp-currentid + + + + + + + +
          + + + +
        +
        +
      • +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="//title[1]"/>  + + + + If not automatically redirected, click here: content/ch01.html + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/autolayout.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/autolayout.xsl new file mode 100644 index 000000000..461bfcea8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/autolayout.xsl @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + All toc entries must have a page attribute. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + All toc entries must have an href attribute. + + + + + + All href toc entries must have an id attribute. + + + + + off site: + + + + + + + + + + + + + + + + + + Off-site links must provide a title. + + + + + + + + + + + + + All toc entries must have a page attribute. + + + + + + + + + : missing ID. + + + + + + + + + + + + + + index.html + + + + + + + + + + + : missing filename. + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:apply-templates select="$page/*[1]/head/title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + + + + + / + + + + + + + / + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-common.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-common.xsl new file mode 100644 index 000000000..d750c058d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-common.xsl @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fail: tocentry has both page and href attributes. + + + + + + + + + index.html + + + + + + + + + + + + + + + + + + + + + does not exist. + + + + + + + + does not exist. + + + + + + + + + + + + + + + + + + / + + + + + + + + 0 + + + + 1 + + 0 + + + + + + 1 + + 0 + + + 1 + + + + + + + Update: + + : + + + + + + + + + + + + + + + + + + Up-to-date: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must specify a $website.database.document parameter when + $collect.xref.targets is set to 'yes' or 'only'. + The xref targets were not collected. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-tabular.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-tabular.xsl new file mode 100644 index 000000000..cdf97cfd4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-tabular.xsl @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-website.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-website.xsl new file mode 100644 index 000000000..a9179a08d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/chunk-website.xsl @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/head.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/head.xsl new file mode 100644 index 000000000..e3ac30804 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/website/head.xsl @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xsl:value-of select="."/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + JavaScript + + + + + + + + + text/javascript + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note + + + namesp. cut + + + stripped namespace before processing + + + + + + + + Note + + + namesp. cut + + + processing stripped document + + + + + + + + Unable to strip the namespace from DB5 document, + cannot proceed. + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/ebnf.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/ebnf.xsl new file mode 100644 index 000000000..85e33ee91 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/ebnf.xsl @@ -0,0 +1,328 @@ + + + + + + + + + + +$Id: ebnf.xsl 8178 2008-12-15 22:26:38Z bobstayton $ + +Walsh +Norman +19992000 +Norman Walsh + + +HTML EBNF Reference + + +
        Introduction + +This is technical reference documentation for the DocBook XSL +Stylesheets; it documents (some of) the parameters, templates, and +other elements of the stylesheets. + +This reference describes the templates and parameters relevant +to formatting EBNF markup. + +This is not intended to be user documentation. +It is provided for developers writing customization layers for the +stylesheets, and for anyone who's interested in how it +works. + +Although I am trying to be thorough, this documentation is known +to be incomplete. Don't forget to read the source, too :-) +
        +
        +
        + + + + + + + background-color: + + + + + 1 + + + + + + EBNF + + for + + + + + + + + + + + + +
        + + +
        + + + background-color: + + + + + + + EBNF productions + +
        +
        +
        + + + + + + + + + + [ + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + Error: no ID for productionrecap linkend: + + . + + + + + + Warning: multiple "IDs" for productionrecap linkend: + + . + + + + + + + + + + + + + + + + | +
        +
        +
        + + + + + + + + + + + + + + + production + + + + + + + + + Non-terminals with no content must point to + production elements in the current document. + + + Invalid xpointer for empty nt: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + + + + + + + + /*  + +  */ +
        +
        + + + + + + + + + constraintdef + + + + + + + + + + + + + + + + : + + + + + + + : + + + + + + + + + +  ] + +
        +
        +
        + + +
        + + + +
        +
        + + +

        +
        + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/footnote.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/footnote.xsl new file mode 100644 index 000000000..8da2720e3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/footnote.xsl @@ -0,0 +1,305 @@ + + + + + + + + + + + + + #ftn. + + + + + + + [ + + + + + ] + + + + + [ + + + + + ] + + + + + + + + + + + +ERROR: A footnoteref element has a linkend that points to an element that is not a footnote. +Typically this happens when an id attribute is accidentally applied to the child of a footnote element. +target element: +linkend/id: + + + + + + + + + + + + #ftn. + + + + + [ + + + + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ftn. + + + + + + # + + + + + + + + + + + + + + [ + + + + + ] + + + + + + + + + + + + ftn. + + + + + + # + + + + + + + [ + + + + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + +
        +
        + + +
        +
        +

        The following annotations are from this essay. You are seeing + them here because your browser doesn’t support the user-interface + techniques used to make them appear as ‘popups’ on modern browsers.

        +
        + + +
        +
        +
        + + + + + + + + +
        + + +
        +
        + + +
        + + + +
        +
        + + + + Warning: footnote number may not be generated + correctly; + + unexpected as first child of footnote. + +
        + + +
        +
        +
        +
        + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/formal.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/formal.xsl new file mode 100644 index 000000000..57c98f328 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/formal.xsl @@ -0,0 +1,411 @@ + + + + + + + +1 + + + + + + + + + + +
        + + + + + + + +
        + +
        + + + + + +

        + + +

        +

        + + + + + + + +
        +
        + +
        +
        +
        + + + + + + + + + -float + + + + + + + + + +
        + + + + + + + + + + + + + +
        + +
        +
        + +

        + + + +

        +
        +
        +
        + + + + + +
        +

        + + + + + + + + +

        +

        +
        + + + + + + + + + -float + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Broken table: tr descendent of CALS Table. + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + Broken table: row descendent of HTML table. + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + float: + + ; + + + +
        +
        + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/glossary.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/glossary.xsl new file mode 100644 index 000000000..d22b6c518 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/glossary.xsl @@ -0,0 +1,564 @@ + + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + +
        +
        + + + +
        + + + + +
        +
        + + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + +
        + + + + + +
        + + + + + + + + + + +
        +
        +
        + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + + +
        + + + +
        + + + + + + + + + + +
        +
        +
        + + +

        + + +

        +
        + + + + + + + + +
        + + + + 0 + 1 + + + + + + + + ( + + ) + + + + + +
        +
        + +
        + + + + 0 + 1 + + + + + + + + ( + + ) + +
        +
        + +
        + + + + 0 + 1 + + + + + +
        +
        +
        + + +
        + + + + , + + + + + , + + + + + , + + + + + + + + + + + +
        +

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glosssee @otherterm reference not found: + + + + + + + + + + + + + + +

        +
        +
        + + +
        + + +

        + + + + + + + + + + + + + +

        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glossseealso @otherterm reference not found: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + + + + + + + + Warning: processing automatic glossary + without a glossary.collection file. + + + + + + Warning: processing automatic glossary but unable to + open glossary.collection file ' + + ' + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + + + +
        +
        + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + +
        + + + +
        + + + + ! + + + + + + + + + + + + + + + +
        +
        +
        + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/graphics.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/graphics.xsl new file mode 100644 index 000000000..db05ad272 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/graphics.xsl @@ -0,0 +1,1436 @@ + + + + + + + + + + + + + + + + 1 + + + + + + 1 + + + + + +
        + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 0 + + 1 + 0 + + + + + + 1.0 + 1.0 + + + + 1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + px + + + + + + + + + + + px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + px + + + + + + + + + + + px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text-align: + + middle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: imagemaps not supported + on scaled images + + + + 0 + + + + + + + + + + + + + + + + + + text-align: + + middle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + height: + + px + + + + + + + + + + + +
        + + + + + background-color: + + + + + background-color: + + + + + + + text-align: + + + + + + + + + +
        +
        + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + calspair + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + , + + , + + + + + + + + + + + + Warning: only calspair or + otherunits='imagemap' supported + in imageobjectco + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text-align: + + middle + + + + + + + + + + + + + + + + + +
        + + text-align: + + + + + +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + Cannot insert + . Check use.extensions and textinsert.extension parameters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + text-align: + + + + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + Cannot insert + . Check use.extensions and textinsert.extension parameters. + + + + + + + + +
        + + + text-align: + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/highlight.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/highlight.xsl new file mode 100644 index 000000000..222a05599 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/highlight.xsl @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html-rtf.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html-rtf.xsl new file mode 100644 index 000000000..e079a738a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html-rtf.xsl @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + + + + + + + + + + +
        +
        +
        +
        + + + + + + + + + + + + + + +
        + +
        + + + + + + + + + + +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html.xsl new file mode 100644 index 000000000..154a64542 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/html.xsl @@ -0,0 +1,598 @@ + + + + + + + + + + + + left + right + left + + + + + + right + left + right + + + + + + ltr + rtl + ltr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + # + + + + + + + + + + + + + + + + + + + bullet + + + + + + + + + bullet + + + © + + + ® + (SM) +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID recommended on + + + : + + + + ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: no root element for CSS source file' + + '. + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: missing CSS input filename. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/htmltbl.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/htmltbl.xsl new file mode 100644 index 000000000..47c9a98e1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/htmltbl.xsl @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float: + + left + right + + + + + + + + + + + + + none + none + + ; + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/index.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/index.xsl new file mode 100644 index 000000000..2c39f4faa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/index.xsl @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        +
        +
        +
        + + + + + + + + + + +
        +
        +
        + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + + + + + + + + + + + +
        + + + + + + + + + +
        + +
        +
        +
        + + +

        + + +

        +
        + + + + + + + + + +
        + + + + + + + + + + + + +
        + +
        +
        + + + +
        +
        + + + + + + + + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        +
        +
        + + +
        + ( + + + + + + ) +
        +
        + + +
        + ( + + + + + + ) +
        +
        + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/info.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/info.xsl new file mode 100644 index 000000000..76285abb0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/info.xsl @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/inline.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/inline.xsl new file mode 100644 index 000000000..da7222617 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/inline.xsl @@ -0,0 +1,1451 @@ + + + + + + + + + + + + + + + + + + + + + + _blank + _top + + + + + + + + + + + + + + 1 + 0 + + + + + + + + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XLink to nonexistent id: + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + span + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + , + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + abbr + + + + + + acronym + + + + + + + + + + + + + + + + + + + + + + + + + + http://example.com/cgi-bin/man.cgi? + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SM + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glossary.collection specified, but there are + + automatic glossaries + + + + + + + + + + + + + + + + + + + + + + + + There's no entry for + + in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Error: no glossentry for glossterm: + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + element + + + + + + + + + + + + + + + + </ + + > + + + & + + ; + + + &# + + ; + + + % + + ; + + + <? + + > + + + <? + + ?> + + + < + + > + + + < + + /> + + + <!-- + + --> + + + + + + + + + + + + + + + + + + + + + + < + + + + + mailto: + + + + + + > + + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + + + + + + + + + + + + + + + + + + ] + + + [ + + ] + + + + + + + + + + + + + [ + + + + + + + + + + + + ] + + + [ + + ] + + + + + + + + + + + + +

        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/keywords.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/keywords.xsl new file mode 100644 index 000000000..5f6b4fb06 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/keywords.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + , + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/lists.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/lists.xsl new file mode 100644 index 000000000..967443fb3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/lists.xsl @@ -0,0 +1,1088 @@ + + + + + + + + + + +
        + + + + + + + + + +
          + + + + + + Compact spacing via @spacing attribute cannot be set in strict XHTML output for listitem: + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + circle + disc + square + + + + + + +
      • + + + + list-style-type: + + + + + + + + + + + +
        + +
        +
        + + + +
        +
      • +
        + + + + + + + + + + + + + 1 + a + i + A + I + + + + Unexpected numeration: + + + + + + + +
        + + + + + + + + + + + + + + + + + + +
        +
        + +
          + + Strict XHTML does not allow setting @start attribute for lists! + + + + Compact spacing via @spacing attribute cannot be set in strict XHTML output for listitem: + +
        +
        +
        +
        +
        + + + + + + +
      • + + @override attribute cannot be set in strict XHTML output for listitem: + + + + + + + + +
        + +
        +
        + + + +
        +
      • +
        + + + + + + + + + + + + + +
        + +
        +
        + + + +
        + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + +
        + +
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + +

        + + + + + + + + + + + + + +

        +
        +
        +
        + + +
        + + +
        +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + +

        + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        + + + + + +
        + + + + + + + + + + + + + + + + + + +
        +
        +
        +
        +
        +
        + + + + + + + + + +
        + +
        +
        + + + +
        +
        + + + + + + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + + + 1 + + + +
        +
        + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + + 1 + + + + + + + + +   + + + + + + + + + + + + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + 1 + + 1 + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + +
        + + + + + 0 + 1 + + + + + + + + + + + + +
          + + +
        +
        + +
          + + + +
        +
        +
        + + + + +
        +
        + + + + + +decimallower-alphalower-romanupper-alphaupper-romanWarning: unknown procedure.step.numeration value:
          list-style-type:
        + + +
      • + + + +
      • +
        + + + +
          + + +
        +
        + + +

        + + + + +

        +
        + + + + + + + + +
        + + + + + + + + + + + + + + + + + +
        +
        + + +
        + + + + + + + +
        +
        + + + + + + + + + +
        + + + +
        +
        + + + + + + + + +
        + + + + + : + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + +
        +
        + +
        + +
        +
        +
        +
        +
        + + + + + + + + + + + + + + + +

        + + + + +

        + + + + + +
        + +
        + + + + +
        +
        +
        +
        +
        + + + + + + + + + +

        + + + + + + + + + + + + + + + +

        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/maketoc.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/maketoc.xsl new file mode 100644 index 000000000..d1f710f8f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/maketoc.xsl @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + filename=" + + " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/manifest.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/manifest.xsl new file mode 100644 index 000000000..26b51d067 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/manifest.xsl @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/math.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/math.xsl new file mode 100644 index 000000000..b2cac2da2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/math.xsl @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unsupported TeX math notation: + + + + + + + + + + + + + \nopagenumbers + + + + + \bye + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $ + + + + $ + + + \vfill\eject + + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $$ + + + + $$ + + + \vfill\eject + + + + + + + + + + \documentclass{article} + + \pagestyle{empty} + + \begin{document} + + + + + \end{document} + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $ + + + + $ + + + \newpage + + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $$ + + + + $$ + + + \newpage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/oldchunker.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/oldchunker.xsl new file mode 100644 index 000000000..e727bf11d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/oldchunker.xsl @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + +Encoding used in generated HTML pages + +This encoding is used in files generated by chunking stylesheet. Currently +only Saxon is able to change output encoding. + + + + + + + + + +Saxon character representation used in generated HTML pages + +This character representation is used in files generated by chunking stylesheet. If +you want to suppress entity references for characters with direct representation +in default.encoding, set this parameter to value native. + + + + + + + + + + + + + + + + + + + + + + + + Chunking isn't supported with + + + + + + + + + + + + + + + Writing + + + for + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Can't make chunks with + + 's processor. + + + + + + + + + + + + + + + + Writing + + + for + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Can't make chunks with + + 's processor. + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/onechunk.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/onechunk.xsl new file mode 100644 index 000000000..15a04e1a0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/onechunk.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + +1 + + + + # + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/param.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/param.xsl new file mode 100644 index 000000000..e687d52ea --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/param.xsl @@ -0,0 +1,436 @@ + + + + + + + + + +.png + +images/ + + + + + + +/* ====================================================================== + Annotations +*/ + +div.annotation-list { visibility: hidden; + } + +div.annotation-nocss { position: absolute; + visibility: hidden; + } + +div.annotation-popup { position: absolute; + z-index: 4; + visibility: hidden; + padding: 0px; + margin: 2px; + border-style: solid; + border-width: 1px; + width: 200px; + background-color: white; + } + +div.annotation-title { padding: 1px; + font-weight: bold; + border-bottom-style: solid; + border-bottom-width: 1px; + color: white; + background-color: black; + } + +div.annotation-body { padding: 2px; + } + +div.annotation-body p { margin-top: 0px; + padding-top: 0px; + } + +div.annotation-close { position: absolute; + top: 2px; + right: 2px; + } + + +http://docbook.sourceforge.net/release/images/annot-close.png +http://docbook.sourceforge.net/release/images/annot-open.png + + +http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js + + +A + + +. + +. +http://docbook.sourceforge.net/release/bibliography/bibliography.xml + + +normal + + +60 +.png + + +15 + +images/callouts/ + + +10 +10102 + + + + + + + + + + + +no + +1 + + + + + + left + before + + + +all + + +docbook.css.xml +no +images/draft.png + +::= + + + + +#F5DCB3 + + +com.example.help +DocBook Online Help Sample +Example provider +1 + + + + + + 1 + 0 + + + + +1 + + + +figure before +example before +equation before +table before +procedure before +task before + + +kr + + + + + + + + + + +appendix toc,title +article/appendix nop +article toc,title +book toc,title,figure,table,example,equation +chapter toc,title +part toc,title +preface toc,title +qandadiv toc +qandaset toc +reference toc,title +sect1 toc +sect2 toc +sect3 toc +sect4 toc +sect5 toc +section toc +set toc,title + + + + +no + + + + + + + + + + + + + +.html + + +copyright + + + +text/css +alias.h + + + + + + + +User1 + + +User2 + + + + + + + + + +htmlhelp.chm + + +iso-8859-1 + + + + + +toc.hhc +5 + + +index.hhk +htmlhelp.hhp + +Main + +context.h + + + + + + + + + + + + + +basic + + + + + + + +no + +no +iso-8859-1 + + +en + + + + +5 + + +3 + + + + + + + HTML.manifest + + + + ++ +.gif + +images/ +1 + + +6in + + +no +fragid= + +.olink + + replace + +pubid + /cgi-bin/olink +sysid +0 + +I + +90 +10 + + + + + + + + + + + + + + + + +; + + + + + +. +number + + + + + + + + + + I +index + +. +.!?: + +8 + + + + + 0 + background-color: #E0E0E0 + + + + + + +0 + + + + + +solid +0.5pt +a + + + +solid +0.5pt + + olinkdb.xml +target.db + +tex-math-equations.tex + + + +dl +8 +2 + + + + + + + + + +0 +, + + + writing-mode + + + + + + + + +: + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/pi.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/pi.xsl new file mode 100644 index 000000000..28f9efec1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/pi.xsl @@ -0,0 +1,1203 @@ + + + + + + + +HTML Processing Instruction Reference + + $Id: pi.xsl 8394 2009-04-02 20:31:30Z mzjn $ + + + + Introduction + This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for HTML output. + + You add these PIs at particular points in a document to + cause specific “exceptions” to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + + Sets background color for an image + + Use the dbhtml background-color PI before or + after an image (graphic, inlinegraphic, + imagedata, or videodata element) as a + sibling to the element, to set a background color for the + image. + + + dbhtml background-color="color" + + + + background-color="color" + + An HTML color value + + + + + + Background color + + + + + + + + + + + + Sets background color on a CALS table row or table cell + + Use the dbhtml bgcolor PI as child of a CALS table row + or cell to set a background color for that table row or cell. + + + dbhtml bgcolor="color" + + + + bgcolor="color" + + An HTML color value + + + + + + Cell background color + + + + + + + + + + + + Specifies cellpadding in CALS table or qandaset output + + Use the dbhtml cellpadding PI as a child of a + CALS table or qandaset to specify the value + for the HTML cellpadding attribute in the + output HTML table. + + + dbhtml cellpadding="number" + + + + cellpadding="number" + + Specifies the cellpadding + + + + + + html.cellpadding + + + Cell spacing and cell padding, + Q and A formatting + + + + + + + + + + + + Specifies cellspacing in CALS table or qandaset output + + Use the dbhtml cellspacing PI as a child of a + CALS table or qandaset to specify the value + for the HTML cellspacing attribute in the + output HTML table. + + + dbhtml cellspacing="number" + + + + cellspacing="number" + + Specifies the cellspacing + + + + + + html.cellspacing + + + Cell spacing and cell padding, + Q and A formatting + + + + + + + + + + + + Set value of the class attribute for a CALS table row + + Use the dbhtml class PI as a child of a + row to specify a class + attribute and value in the HTML output for that row. + + + dbhtml class="name" + + + + class="name" + + Specifies the class name + + + + + + Table styles in HTML output + + + + + + + + + + + + Specifies a directory name in which to write files + + When chunking output, use the dbhtml dir PI + as a child of a chunk source to cause the output of that + chunk to be written to the specified directory; also, use it + as a child of a mediaobject to specify a + directory into which any long-description files for that + mediaobject will be written. + + + dbhtml dir="path" + + + + dir="path" + + Specifies the pathname for the directory + + + + + + base.dir + + + dbhtml dir processing instruction + + + + + + + + + + + + Specifies a filename for a chunk + + When chunking output, use the dbhtml filename + PI as a child of a chunk source to specify a filename for + the output file for that chunk. + + + dbhtml filename="filename" + + + + filename="path" + + Specifies the filename for the file + + + + + + use.id.as.filename + + + dbhtml filenames + + + + + + + + + + + + Specifies presentation style for a funcsynopsis + + Use the dbhtml funcsynopsis-style PI as a child of + a funcsynopsis or anywhere within a funcsynopsis + to control the presentation style for output of all + funcprototype instances within that funcsynopsis. + + + dbhtml funcsynopsis-style="kr"|"ansi" + + + + funcsynopsis-style="kr" + + Displays funcprototype output in K&R style + + + funcsynopsis-style="ansi" + + Displays funcprototype output in ANSI style + + + + + + funcsynopsis.style + + + + + + + + + + + + Specifies a path to the location of an image file + + Use the dbhtml img.src.path PI before or + after an image (graphic, + inlinegraphic, imagedata, or + videodata element) as a sibling to the element, + to specify a path to the location of the image; in HTML + output, the value specified for the + img.src.path attribute is prepended to the + filename. + + + dbhtml img.src.path="path" + + + + img.src.path="path" + + Specifies the pathname to prepend to the name of the image file + + + + + + img.src.path + + + Using fileref + + + + + + + + + + + + Specifies the label width for a qandaset + + Use the dbhtml label-width PI as a child of a + qandaset to specify the width of labels. + + + dbhtml label-width="width" + + + + label-width="width" + + Specifies the label width (including units) + + + + + + Q and A formatting + + + + + + + + + + + + Specifies interval for line numbers in verbatims + + Use the dbhtml linenumbering.everyNth PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the interval at which lines are numbered. + + + dbhtml linenumbering.everyNth="N" + + + + linenumbering.everyNth="N" + + Specifies numbering interval; a number is output + before every Nth line + + + + + + linenumbering.everyNth + + + Line numbering + + + + + + + + + + + + Specifies separator text for line numbers in verbatims + + Use the dbhtml linenumbering.separator PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the separator text output between the line numbers and content. + + + dbhtml linenumbering.separator="text" + + + + linenumbering.separator="text" + + Specifies the text (zero or more characters) + + + + + + linenumbering.separator + + + Line numbering + + + + + + + + + + + + Specifies width for line numbers in verbatims + + Use the dbhtml linenumbering.width PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the width set aside for line numbers. + + + dbhtml linenumbering.width="width" + + + + linenumbering.width="width" + + Specifies the width (inluding units) + + + + + + linenumbering.width + + + Line numbering + + + + + + + + + + + + Specifies presentation style for a variablelist or + segmentedlist + + Use the dbhtml list-presentation PI as a child of + a variablelist or segmentedlist to + control the presentation style for the list (to cause it, for + example, to be displayed as a table). + + + dbhtml list-presentation="list"|"table" + + + + list-presentation="list" + + Displays the list as a list + + + list-presentation="table" + + Displays the list as a table + + + + + + + + variablelist.as.table + + + segmentedlist.as.table + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the width of a variablelist or simplelist + + Use the dbhtml list-width PI as a child of a + variablelist or a simplelist presented + as a table, to specify the output width. + + + dbhtml list-width="width" + + + + list-width="width" + + Specifies the output width (including units) + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the height for a CALS table row + + Use the dbhtml row-height PI as a child of a + row to specify the height of the row. + + + dbhtml row-height="height" + + + + row-height="height" + + Specifies the row height (including units) + + + + + + Row height + + + + + + + + + + + + (obsolete) Sets the starting number on an ordered list + + This PI is obsolete. The intent of + this PI was to provide a means for setting a specific starting + number for an ordered list. Instead of this PI, set a value + for the override attribute on the first + listitem in the list; that will have the same + effect as what this PI was intended for. + + + dbhtml start="character" + + + + start="character" + + Specifies the character to use as the starting + number; use 0-9, a-z, A-Z, or lowercase or uppercase + Roman numerals + + + + + + List starting number + + + + + + + + + + + + Do not chunk any descendants of this element. + + When generating chunked HTML output, adding this PI as the child of an element that contains elements that would normally be generated on separate pages if generating chunked output causes chunking to stop at this point. No descendants of the current element will be split into new HTML pages: +<section> +<title>Configuring pencil</title> +<?dbhtml stop-chunking?> + +... + +</section> + + + + dbhtml stop-chunking + + + Chunking into multiple HTML files + + + + + + Specifies summary for CALS table, variablelist, segmentedlist, or qandaset output + + Use the dbhtml table-summary PI as a child of + a CALS table, variablelist, + segmentedlist, or qandaset to specify + the text for the HTML summary attribute + in the output HTML table. + + + dbhtml table-summary="text" + + + + table-summary="text" + + Specifies the summary text (zero or more characters) + + + + + + Variable list formatting in HTML, + Table summary text + + + + + + + + + + + + Specifies the width for a CALS table + + Use the dbhtml table-width PI as a child of a + CALS table to specify the width of the table in + output. + + + dbhtml table-width="width" + + + + table-width="width" + + Specifies the table width (including units or as a percentage) + + + + + + default.table.width + + + Table width + + + + + + + + + + + + Sets character formatting for terms in a variablelist + + Use the dbhtml term-presentation PI as a child + of a variablelist to set character formatting for + the term output of the list. + + + dbhtml term-presentation="bold"|"italic"|"bold-italic" + + + + term-presentation="bold" + + Specifies that terms are displayed in bold + + + term-presentation="italic" + + Specifies that terms are displayed in italic + + + term-presentation="bold-italic" + + Specifies that terms are displayed in bold-italic + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies separator text among terms in a varlistentry + + Use the dbhtml term-separator PI as a child + of a variablelist to specify the separator text + among term instances. + + + dbhtml term-separator="text" + + + + term-separator="text" + + Specifies the text (zero or more characters) + + + + + + variablelist.term.separator + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the term width for a variablelist + + Use the dbhtml term-width PI as a child of a + variablelist to specify the width for + term output. + + + dbhtml term-width="width" + + + + term-width="width" + + Specifies the term width (including units) + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies whether a TOC should be generated for a qandaset + + Use the dbhtml toc PI as a child of a + qandaset to specify whether a table of contents + (TOC) is generated for the qandaset. + + + dbhtml toc="0"|"1" + + + + toc="0" + + If zero, no TOC is generated + + + toc="1" + + If 1 (or any non-zero value), + a TOC is generated + + + + + + Q and A list of questions, + Q and A formatting + + + + + + + + + + + + Generates a hyperlinked list of commands + + Use the dbcmdlist PI as the child of any + element (for example, refsynopsisdiv) containing multiple + cmdsynopsis instances; a hyperlinked navigational + “command list” will be generated at the top of output for that + element, enabling users to quickly jump + to each command synopsis. + + + dbcmdlist + + + [No parameters] + + + + + + No cmdsynopsis elements matched dbcmdlist PI, perhaps it's nested too deep? + + +
        + + + +
        +
        + + + Generates a hyperlinked list of functions + + Use the dbfunclist PI as the child of any + element (for example, refsynopsisdiv) containing multiple + funcsynopsis instances; a hyperlinked + navigational “function list” will be generated at the top of + output for that element, enabling users to quickly + jump to to each function synopsis. + + + dbfunclist + + + [No parameters] + + + + + + No funcsynopsis elements matched dbfunclist PI, perhaps it's nested too deep? + + +
        + + + +
        +
        + + + Copies an external well-formed HTML/XML file into current doc + + Use the dbhtml-include href PI anywhere in a + document to cause the contents of the file referenced by the + href pseudo-attribute to be copied/inserted “as + is” into your HTML output at the point in document order + where the PI occurs in the source. + + The referenced file may contain plain text (as long as + it is “wrapped” in an html element — see the + note below) or markup in any arbitrary vocabulary, + including HTML — but it must conform to XML + well-formedness constraints (because the feature in XSLT + 1.0 for opening external files, the + document() function, can only handle + files that meet XML well-formedness constraints). + Among other things, XML well-formedness constraints + require a document to have a single root + element. So if the content you want to + include is plain text or is markup that does + not have a single root element, + wrap the content in an + html element. The stylesheets will + strip out that surrounding html “wrapper” when + they find it, leaving just the content you want to + insert. + + + + dbhtml-include href="URI" + + + + href="URI" + + Specifies the URI for the file to include; the URI + can be, for example, a remote http: + URI, or a local filesystem file: + URI + + + + + + textinsert.extension + + + Inserting external HTML code, + External code files + + + + + + + href + + + + + + + + + + + + + + + + + + + + ERROR: dbhtml-include processing instruction + href has no content. + + + + + + + ERROR: dbhtml-include processing instruction has + missing or empty href value. + + + + + + + + Sets topic name and topic id for context-sensitive HTML Help + + Use the dbhh PI as a child of components + that should be used as targets for context-sensitive help requests. + + + dbhh topicname="name" topicid="id" + + + + topicname="name" + + Specifies a unique string constant that identifies a help topic + + + topicid="id" + + Specifies a unique integer value for the topicname string + + + + + + Context-sensitive help + + + + + + + + + + filename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + # + + + + + + + + + + + + + + + + + + +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + + + +
        + + + # + + + + + + + + + + + + + + + + + + +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + / + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk-code.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk-code.xsl new file mode 100644 index 000000000..05c10c6e9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk-code.xsl @@ -0,0 +1,617 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bk + + + + + + + + + + + + + + + ar + + + + + + + + + + + + + + + pr + + + + + + + + + + + + + + + ch + + + + + + + + + + + + + + + ap + + + + + + + + + + + + + + + + + + + pt + + + + + + + + + + + + + + + + + + + rn + + + + + + + + + + + + + + + + + + + + + + + + re + + + + + + + + + + + + + + + + + + + co + + + + + + + + + + + s + + + + + + + + + + + + + + + + + + + bi + + + + + + + + + + + + + + + + + + + go + + + + + + + + + + + + + + + + + + + ix + + + + + + + + si + + + + + + + + chunk-filename-error- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Note: namesp. cut : stripped namespace before processingNote: namesp. cut : processing stripped document + + + + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk.xsl new file mode 100644 index 000000000..def7ffff0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-chunk.xsl @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-docbook.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-docbook.xsl new file mode 100644 index 000000000..7ac0219d3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-docbook.xsl @@ -0,0 +1,408 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Element + + in namespace ' + + ' encountered + + in + + + , but no template matches. + + + + < + + > + + </ + + > + + + + + + + + + + + + + + + + + + + <xsl:copy-of select="$title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Note: namesp. cut : stripped namespace before processingNote: namesp. cut : processing stripped document + + + + + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-onechunk.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-onechunk.xsl new file mode 100644 index 000000000..b84b3e97b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/profile-onechunk.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + +1 + + + + # + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/qandaset.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/qandaset.xsl new file mode 100644 index 000000000..4a61c8154 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/qandaset.xsl @@ -0,0 +1,420 @@ + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        + +

        +
        + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        + +

        +
        + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + +
        +
        + + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + +
        + + + + +
        + + + +
        + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1% + + + + + + + + +
        +
        + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/refentry.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/refentry.xsl new file mode 100644 index 000000000..dc2e57d81 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/refentry.xsl @@ -0,0 +1,299 @@ + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        + +

        +
        + + + + +
        + + + + +
        +
        +
        +
        + + + + + + +
        +
        + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + +
        + + + + + + + + + + +

        + + + +

        +
        + +

        + + + + + + + + +

        +
        +
        + +

        + +

        +
        +
        + + + + + + , + + + + + + + + + em-dash + + + + + + + + + + + + + + + + : + + + + + + + +
        + + + + +

        + + + + + + + + + + +

        + +
        +
        + + + + + + + + + + + +
        + + + + + + + + + +
        +
        + + + + + + 0 + 1 + + + + 6 + + + + + + + + + + + + +

        + +

        +
        + + + +

        + +

        +
        + + + +

        + +

        +
        + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/sections.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/sections.xsl new file mode 100644 index 000000000..aec647d54 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/sections.xsl @@ -0,0 +1,541 @@ + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + 1 + 2 + 3 + 4 + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + + + + + + + + + + clear: both + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + 1 + + + + + + + 2 + 3 + 4 + 5 + 6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/synop.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/synop.xsl new file mode 100644 index 000000000..85067078c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/synop.xsl @@ -0,0 +1,1513 @@ + + + + + + + + + + + + + + +
        + +

        + + + + + + + + + + + + +

        +
        +
        + + +
        + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + + + + ( + + ) + +   + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + +
        +    
        +    
        +  
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        + + +
        + +
        +

        +
        + + + + + + ( + + + + + + + fsfunc + + + + + + + + + ) + ; + + + + ... + ) + ; + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + +
        + + + + ; +
        + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + +
        + +
         
        + +
        + +
        +
        +
         
        +
        + + + + + + ( + + + + + + + fsfunc + + + + + + + + + + ) + ; + +   + + + + + ... + ) + ; + +   + + + + + + + + , + + + ) + ; + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + ; + + + + + + +

        + +

        +
        + + + + + + ( + + + + + + + fsfunc + + + + + + + + + void) + ; + + + + ... + ) + ; + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + +
        + +
         
        +
         
        +
        + + + + + + ( + + + + + + + fsfunc + + + + + + + + + + void) + ; + +   + + + + + ... + ) + ; + +   + + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + +java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unrecognized language on + + : + + + + + + + + + + + +
        +
        +
        + + + + + +
        +    
        +    
        +    
        +       extends
        +      
        +      
        +        
        +      +
        +
        + + implements + + +
        +      +
        +
        + + throws + + +  { +
        + + } +
        +
        + + + + + + + + + , + + + + + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + + + + + + + + + void  + + + + + + + + + + + + 0 + + , +
        + + +   + + + +
        + + + + +
        + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + ( + + + + ) + +
        +     throws  + +
        + + + + + ; +
        + +
        + + + + +
        +    
        +    
        +    
        +      : 
        +      
        +      
        +        
        +      +
        +
        + + implements + + +
        +      +
        +
        + + throws + + +  { +
        + + } +
        +
        + + + + + + + + , + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + ( + + ) + +
        +     throws  + +
        + + + + + ; +
        + +
        + + + + +
        +    
        +    interface 
        +    
        +    
        +      : 
        +      
        +      
        +        
        +      +
        +
        + + implements + + +
        +      +
        +
        + + throws + + +  { +
        + + } +
        +
        + + + + + + + + , + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + ( + + ) + +
        +     raises( + + ) +
        + + + + + ; +
        + +
        + + + + +
        +    
        +    package 
        +    
        +    ;
        +    
        + + + @ISA = ( + + ); +
        +
        + + +
        +
        + + + + + + + + , + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + sub + + + { ... }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/table.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/table.xsl new file mode 100644 index 000000000..3146c091c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/table.xsl @@ -0,0 +1,1168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + border- + + : + + + + + + ; + + + + + border- + + -width: + + ; + + + + border- + + -style: + + ; + + + + border- + + -color: + + ; + + + + + + + + + + + Error: CALS tables must specify the number of columns. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100% + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + border: none; + + + + + border-collapse: collapse; + + + + + + + 0 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + 100% + + + + + + + + + + + + + + + + + + + + + + + + No convertLength function available. + + + + + + + + + + + + + + + + + + + + + + + + + + No adjustColumnWidths function available. + + + + + + + + + + + + + + + + + + + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + text-align: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text-align: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: overlapped row contains content! + + + This row intentionally left blank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + background-color: + + + + + + + + + + + + + + + + + + + + + + text-align: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + th + th + + th + + td + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + background-color: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text-align: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + : + + + + + + + + 0: + + + + + + + + + + + + + + + 0 + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text-align: + + + + + + text-align: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/task.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/task.xsl new file mode 100644 index 000000000..0a380d2f0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/task.xsl @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + before + + + + + + + + +
        + + + + + + + + + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.templates.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.templates.xsl new file mode 100644 index 000000000..1f72e2301 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.templates.xsl @@ -0,0 +1,3817 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + + +
        + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + + +
        + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + + +
        + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + + +
        + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + + +
        + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + + +
        + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + + + +
        +
        + + +
        + +
        +
        + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.xsl new file mode 100644 index 000000000..c3f82178a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/titlepage.xsl @@ -0,0 +1,1030 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + +
        + + + + + + + + + + + +
        +
        + + + + + + + + + + + + + +
        + + + + + + + + +
        +
        + + +
        + + + + + + + + +
        +
        +
        +
        + + +
        + + +
        +
        + + + + + +
        +
        +
        + + + + + + +
        + + +

        +
        +

        + + + + + + + + + +

        + + + + + + + + + + + + + + + +
        +
        + + +
        + + +
        +
        + + +
        + + +

        Authors

        +
        + + + +
        +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + +
        +
        +
        + + + + + + + + + +
        + + +
        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + + + +   + + +
        + +

        +
        +
        +
        +
        + + + + +

        Copyright

        +
        + +

        + + + + + + + copyright + + + + + + + + + +

        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + +

        + + +

        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + +

        + + + + + + +

        +
        + + + + + + + + + + +
        +
        +
        + + + + + + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + +
        + + + +
        +
        +
        + +
        + + + +
        +
        +
        +
        + + +

        +
        + + + + + +
        +
        +
        + + + + + + + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + +
        + + +
        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + + 3 + 2 + + + + + + + + RevHistory + + + + +
        + + + + + + + + +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + +

        + + +

        +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + +

        + + + + + + + + + + + + + + +

        +
        + + + + + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/toc.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/toc.xsl new file mode 100644 index 000000000..92b7b14b8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/toc.xsl @@ -0,0 +1,330 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + +
        + + +
        +
        + +
        + + + + + + + + + +
        +
        +
        + + + + + + + + + + + + + + +
        + + +
        + + +
        +
        + +
        + + + + + + + + + +
        +
        +
        + + + + + + + + +
        + + + + + +
        +
        + + + + + + +
        +
        +
        + + + + + +
        + + +
        + +
        + +
      • + + + +
      • +
        +
        +
        + + + + +
        + + +
        +
        + +
      • + + +
      • +
        +
        +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + +
        + + +
        +
        + + +
        + + +
        +
        + + + + + + + + + + + + +
        + + +
        +
        + + + +
        +
        + + + + +
        + + + + +
        + + +
        + +
        + + + +
        +
        + + + + +
        + + +
        + +
        + + + +
        +
        + + + + + Warning: don't know what to generate for + lot that has no children. + + + + +
        + + +
        +
        + + +
        + + +
        +
        + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/verbatim.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/verbatim.xsl new file mode 100644 index 000000000..c0bc69d57 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/verbatim.xsl @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + + + + + + + + + + + div + pre + + + + + + The shade.verbatim parameter is deprecated. + Use CSS instead, + + + for example: pre. + + { background-color: #E0E0E0; } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The shade.verbatim parameter is deprecated. + Use CSS instead, + + + for example: pre. + + { background-color: #E0E0E0; } + + + + + + + +
        +            
        +            
        +              
        +            
        +          
        +
        + +
        + +

        + + + +

        +
        +
        +
        +
        + + + +
        +            
        +            
        +          
        +
        + +
        + +

        + + + +

        +
        +
        +
        +
        +
        +
        + + + + + + + + + + +
        + +

        + + + +

        +
        +
        + + +
        + +

        + + + +

        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unexpected verbatim environment: + + + + + + + + + + 1 + + + + + + + + + + + + + No numberLines function available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/xref.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/xref.xsl new file mode 100644 index 000000000..74c6f203e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml-1_1/xref.xsl @@ -0,0 +1,1316 @@ + + + + + + + + +http://docbook.org/xlink/role/olink + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Endterm points to nonexistent ID: + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: xref linking to + + has no generated link text. + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XRef to nonexistent id: + + + ??? + + + + + + + + + + + + + + + + Endterm points to nonexistent ID: + + + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + suppress anchor + + + + + + + + + + + removing + + + + + + + + + + + + + + + + + removing + + + + + + + + + + + + + + + + + + + + + + Don't know what gentext to create for xref to: " + + ", (" + + ") + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No bibliography entry: + + found in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + + + + + + + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Endterm points to nonexistent ID: + + + ??? + + + + + + + + + + + + + Link element has no content and no Endterm. + Nothing to show in the link to + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Olink debug: root element of target.database ' + + ' is ' + + '. + + + + + + + + + + + + + + + Error: unresolved olink: + targetdoc/targetptr = ' + + / + + '. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: olink linkmode pointer is wrong. + + + + # + + + + + + + + + + + + + ? + + + + + & + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/admon.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/admon.xsl new file mode 100644 index 000000000..6a0090ad7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/admon.xsl @@ -0,0 +1,135 @@ + + + + + + + + + + 25 + + + + + + + + + + + + + + + + + + note + warning + caution + tip + important + note + + + + + + + + Note + Warning + Caution + Tip + Important + Note + + + + + + + + + +
        + + + + + + + + + + + + : + + + + + + + + + + +
        + + + + [{$alt}] + + + + + + + + + +
        + +
        +
        +
        + + +
        + + + + + + + + + + +

        + + +

        +
        + + +
        +
        + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/annotations.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/annotations.xsl new file mode 100644 index 000000000..3e137e8d7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/annotations.xsl @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Note + + + namesp. cut + + + stripped namespace before processing + + + + + + + + Note + + + namesp. cut + + + processing stripped document + + + + + + + + Unable to strip the namespace from DB5 document, + cannot proceed. + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/ebnf.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/ebnf.xsl new file mode 100644 index 000000000..d228cfb6c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/ebnf.xsl @@ -0,0 +1,328 @@ + + + + + + + + + + +$Id: ebnf.xsl 8178 2008-12-15 22:26:38Z bobstayton $ + +Walsh +Norman +19992000 +Norman Walsh + + +HTML EBNF Reference + + +
        Introduction + +This is technical reference documentation for the DocBook XSL +Stylesheets; it documents (some of) the parameters, templates, and +other elements of the stylesheets. + +This reference describes the templates and parameters relevant +to formatting EBNF markup. + +This is not intended to be user documentation. +It is provided for developers writing customization layers for the +stylesheets, and for anyone who's interested in how it +works. + +Although I am trying to be thorough, this documentation is known +to be incomplete. Don't forget to read the source, too :-) +
        +
        +
        + + + + + + + + + + + + 1 + + + + + + EBNF + + for + + + + + + + + + + + + +
        + + +
        + + + + + + + + + + EBNF productions + +
        +
        +
        + + + + + + + + + + [ + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + Error: no ID for productionrecap linkend: + + . + + + + + + Warning: multiple "IDs" for productionrecap linkend: + + . + + + + + + + + + + + + + + + + | +
        +
        +
        + + + + + + + + + + + + + + + production + + + + + + + + + Non-terminals with no content must point to + production elements in the current document. + + + Invalid xpointer for empty nt: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + + + + + + + + /*  + +  */ +
        +
        + + + + + + + + + constraintdef + + + + + + + + + + + + + + + + : + + + + + + + : + + + + + + + + + +  ] + +
        +
        +
        + + +
        + + + +
        +
        + + +

        +
        + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/footnote.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/footnote.xsl new file mode 100644 index 000000000..6d81fa97a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/footnote.xsl @@ -0,0 +1,305 @@ + + + + + + + + + + + + + #ftn. + + + + + + + [ + + + + + ] + + + + + [ + + + + + ] + + + + + + + + + + + +ERROR: A footnoteref element has a linkend that points to an element that is not a footnote. +Typically this happens when an id attribute is accidentally applied to the child of a footnote element. +target element: +linkend/id: + + + + + + + + + + + + #ftn. + + + + + [ + + + + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ftn. + + + + + + # + + + + + + + + + + + + + + [ + + + + + ] + + + + + + + + + + + + ftn. + + + + + + # + + + + + + + [ + + + + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + +
        +
        + + +
        +
        +

        The following annotations are from this essay. You are seeing + them here because your browser doesn’t support the user-interface + techniques used to make them appear as ‘popups’ on modern browsers.

        +
        + + +
        +
        +
        + + + + + + + + +
        + + +
        +
        + + +
        + + + +
        +
        + + + + Warning: footnote number may not be generated + correctly; + + unexpected as first child of footnote. + +
        + + +
        +
        +
        +
        + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/formal.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/formal.xsl new file mode 100644 index 000000000..57c98f328 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/formal.xsl @@ -0,0 +1,411 @@ + + + + + + + +1 + + + + + + + + + + +
        + + + + + + + +
        + +
        + + + + + +

        + + +

        +

        + + + + + + + +
        +
        + +
        +
        +
        + + + + + + + + + -float + + + + + + + + + +
        + + + + + + + + + + + + + +
        + +
        +
        + +

        + + + +

        +
        +
        +
        + + + + + +
        +

        + + + + + + + + +

        +

        +
        + + + + + + + + + -float + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Broken table: tr descendent of CALS Table. + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + Broken table: row descendent of HTML table. + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + float: + + ; + + + +
        +
        + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/glossary.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/glossary.xsl new file mode 100644 index 000000000..d22b6c518 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/glossary.xsl @@ -0,0 +1,564 @@ + + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + +
        +
        + + + +
        + + + + +
        +
        + + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + +
        + + + + + +
        + + + + + + + + + + +
        +
        +
        + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + + +
        + + + +
        + + + + + + + + + + +
        +
        +
        + + +

        + + +

        +
        + + + + + + + + +
        + + + + 0 + 1 + + + + + + + + ( + + ) + + + + + +
        +
        + +
        + + + + 0 + 1 + + + + + + + + ( + + ) + +
        +
        + +
        + + + + 0 + 1 + + + + + +
        +
        +
        + + +
        + + + + , + + + + + , + + + + + , + + + + + + + + + + + +
        +

        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glosssee @otherterm reference not found: + + + + + + + + + + + + + + +

        +
        +
        + + +
        + + +

        + + + + + + + + + + + + + +

        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glossseealso @otherterm reference not found: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + + + + + + + + Warning: processing automatic glossary + without a glossary.collection file. + + + + + + Warning: processing automatic glossary but unable to + open glossary.collection file ' + + ' + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + + + +
        +
        + + + + + + + + + + + + + + + + + normalize.sort.input + + + + + + normalize.sort.output + + + + +
        + + + +
        + + + + ! + + + + + + + + + + + + + + + +
        +
        +
        + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/graphics.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/graphics.xsl new file mode 100644 index 000000000..d1c04fb63 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/graphics.xsl @@ -0,0 +1,1436 @@ + + + + + + + + + + + + + + + + 1 + + + + + + 1 + + + + + +
        + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 0 + + 1 + 0 + + + + + + 1.0 + 1.0 + + + + 1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + px + + + + + + + + + + + px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + px + + + + + + + + + + + px + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + middle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: imagemaps not supported + on scaled images + + + + 0 + + + + + + + + + + + + + + + + + + + + middle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + height: + + px + + + + + + + + + + + +
        + + + + + background-color: + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + calspair + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + , + + , + + + + + + + + + + + + Warning: only calspair or + otherunits='imagemap' supported + in imageobjectco + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + middle + + + + + + + + + + + + + + + + + +
        + + + + + + + +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + Cannot insert + . Check use.extensions and textinsert.extension parameters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No insertfile extension available. + + + + + + + Cannot insert + . Check use.extensions and textinsert.extension parameters. + + + + + + + + +
        + + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/highlight.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/highlight.xsl new file mode 100644 index 000000000..222a05599 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/highlight.xsl @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html-rtf.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html-rtf.xsl new file mode 100644 index 000000000..e079a738a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html-rtf.xsl @@ -0,0 +1,321 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + + + + + + + + + + +
        +
        +
        +
        + + + + + + + + + + + + + + +
        + +
        + + + + + + + + + + +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html.xsl new file mode 100644 index 000000000..154a64542 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/html.xsl @@ -0,0 +1,598 @@ + + + + + + + + + + + + left + right + left + + + + + + right + left + right + + + + + + ltr + rtl + ltr + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + # + + + + + + + + + + + + + + + + + + + bullet + + + + + + + + + bullet + + + © + + + ® + (SM) +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ID recommended on + + + : + + + + ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: no root element for CSS source file' + + '. + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: missing CSS input filename. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/htmltbl.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/htmltbl.xsl new file mode 100644 index 000000000..47c9a98e1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/htmltbl.xsl @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + float: + + left + right + + + + + + + + + + + + + none + none + + ; + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/index.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/index.xsl new file mode 100644 index 000000000..2c39f4faa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/index.xsl @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        +
        +
        +
        + + + + + + + + + + +
        +
        +
        + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + + + + + + + + + + + +
        + + + + + + + + + +
        + +
        +
        +
        + + +

        + + +

        +
        + + + + + + + + + +
        + + + + + + + + + + + + +
        + +
        +
        + + + +
        +
        + + + + + + + + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        +
        +
        + + +
        + ( + + + + + + ) +
        +
        + + +
        + ( + + + + + + ) +
        +
        + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/info.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/info.xsl new file mode 100644 index 000000000..76285abb0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/info.xsl @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/inline.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/inline.xsl new file mode 100644 index 000000000..da7222617 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/inline.xsl @@ -0,0 +1,1451 @@ + + + + + + + + + + + + + + + + + + + + + + _blank + _top + + + + + + + + + + + + + + 1 + 0 + + + + + + + + + 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XLink to nonexistent id: + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + span + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + , + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + abbr + + + + + + acronym + + + + + + + + + + + + + + + + + + + + + + + + + + http://example.com/cgi-bin/man.cgi? + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SM + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: glossary.collection specified, but there are + + automatic glossaries + + + + + + + + + + + + + + + + + + + + + + + + There's no entry for + + in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Error: no glossentry for glossterm: + + . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + element + + + + + + + + + + + + + + + + </ + + > + + + & + + ; + + + &# + + ; + + + % + + ; + + + <? + + > + + + <? + + ?> + + + < + + > + + + < + + /> + + + <!-- + + --> + + + + + + + + + + + + + + + + + + + + + + < + + + + + mailto: + + + + + + > + + + + + + + + + + + + + - + - + - + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + + + + + + + + + + + + + + + + + + ] + + + [ + + ] + + + + + + + + + + + + + [ + + + + + + + + + + + + ] + + + [ + + ] + + + + + + + + + + + + +

        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/keywords.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/keywords.xsl new file mode 100644 index 000000000..5f6b4fb06 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/keywords.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + , + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/lists.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/lists.xsl new file mode 100644 index 000000000..58916e57a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/lists.xsl @@ -0,0 +1,1121 @@ + + + + + + + + + + +
        + + + + + + + + + +
          + + + + + + + + + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + circle + disc + square + + + + + + +
      • + + + + list-style-type: + + + + + + + + + + + +
        + +
        +
        + + + +
        +
      • +
        + + + + + + + + + + + + + 1 + a + i + A + I + + + + Unexpected numeration: + + + + + + + +
        + + + + + + + + + + + + + + + + + + +
        +
        + +
          + + + + + + + + + + + + + + + + + +
        +
        +
        +
        +
        + + + + + + +
      • + + + + + + + + + + + + + + +
        + +
        +
        + + + +
        +
      • +
        + + + + + + + + + + + + + +
        + +
        +
        + + + +
        + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + +
        + +
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + +

        + + + + + + + + + + + + + +

        +
        +
        +
        + + +
        + + +
        +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + +

        + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        + + + + + +
        + + + + + + + + + + + + + + + + + + +
        +
        +
        +
        +
        +
        + + + + + + + + + +
        + +
        +
        + + + +
        +
        + + + + + + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + + + 1 + + + +
        +
        + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + + 1 + + + + + + + + +   + + + + + + + + + + + + + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + 1 + + 1 + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + before + + + + + + + + + +
        + + + + + 0 + 1 + + + + + + + + + + + + +
          + + +
        +
        + +
          + + + + + +
        +
        +
        + + + + +
        +
        + + + + + + + + + + + + +
          + + +
        +
        + + +
      • + + + +
      • +
        + + + +
          + + +
        +
        + + +

        + + + + +

        +
        + + + + + + + + +
        + + + + + + + + + + + + + + + + + +
        +
        + + +
        + + + + + + + +
        +
        + + + + + + + + + +
        + + + +
        +
        + + + + + + + + +
        + + + + + : + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + +
        +
        + +
        + +
        +
        +
        +
        +
        + + + + + + + + + + + + + + + +

        + + + + +

        + + + + + +
        + +
        + + + + +
        +
        +
        +
        +
        + + + + + + + + + +

        + + + + + + + + + + + + + + + +

        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ??? + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/maketoc.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/maketoc.xsl new file mode 100644 index 000000000..0ae805529 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/maketoc.xsl @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + filename=" + + " + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/manifest.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/manifest.xsl new file mode 100644 index 000000000..26b51d067 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/manifest.xsl @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/math.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/math.xsl new file mode 100644 index 000000000..b2cac2da2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/math.xsl @@ -0,0 +1,284 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unsupported TeX math notation: + + + + + + + + + + + + + \nopagenumbers + + + + + \bye + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $ + + + + $ + + + \vfill\eject + + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $$ + + + + $$ + + + \vfill\eject + + + + + + + + + + \documentclass{article} + + \pagestyle{empty} + + \begin{document} + + + + + \end{document} + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $ + + + + $ + + + \newpage + + + + + + + + + + + + + + + + + + + + + + + + + \special{dvi2bitmap outputfile + + } + + + $$ + + + + $$ + + + \newpage + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + 0 + 1 + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/oldchunker.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/oldchunker.xsl new file mode 100644 index 000000000..e727bf11d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/oldchunker.xsl @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + +Encoding used in generated HTML pages + +This encoding is used in files generated by chunking stylesheet. Currently +only Saxon is able to change output encoding. + + + + + + + + + +Saxon character representation used in generated HTML pages + +This character representation is used in files generated by chunking stylesheet. If +you want to suppress entity references for characters with direct representation +in default.encoding, set this parameter to value native. + + + + + + + + + + + + + + + + + + + + + + + + Chunking isn't supported with + + + + + + + + + + + + + + + Writing + + + for + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Can't make chunks with + + 's processor. + + + + + + + + + + + + + + + + Writing + + + for + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Can't make chunks with + + 's processor. + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/onechunk.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/onechunk.xsl new file mode 100644 index 000000000..15a04e1a0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/onechunk.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + +1 + + + + # + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/param.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/param.xsl new file mode 100644 index 000000000..bebab477a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/param.xsl @@ -0,0 +1,436 @@ + + + + + + + + + +.png + +images/ + + + + + + +/* ====================================================================== + Annotations +*/ + +div.annotation-list { visibility: hidden; + } + +div.annotation-nocss { position: absolute; + visibility: hidden; + } + +div.annotation-popup { position: absolute; + z-index: 4; + visibility: hidden; + padding: 0px; + margin: 2px; + border-style: solid; + border-width: 1px; + width: 200px; + background-color: white; + } + +div.annotation-title { padding: 1px; + font-weight: bold; + border-bottom-style: solid; + border-bottom-width: 1px; + color: white; + background-color: black; + } + +div.annotation-body { padding: 2px; + } + +div.annotation-body p { margin-top: 0px; + padding-top: 0px; + } + +div.annotation-close { position: absolute; + top: 2px; + right: 2px; + } + + +http://docbook.sourceforge.net/release/images/annot-close.png +http://docbook.sourceforge.net/release/images/annot-open.png + + +http://docbook.sourceforge.net/release/script/AnchorPosition.js http://docbook.sourceforge.net/release/script/PopupWindow.js + + +A + + +. + +. +http://docbook.sourceforge.net/release/bibliography/bibliography.xml + + +normal + + +60 +.png + + +15 + +images/callouts/ + + +10 +10102 + + + + + + + + + + + +no + +1 + + + + + + left + before + + + +all + + +docbook.css.xml +no +images/draft.png + +::= + + + + +#F5DCB3 + + +com.example.help +DocBook Online Help Sample +Example provider +1 + + + + + + 1 + 0 + + + + +1 + + + +figure before +example before +equation before +table before +procedure before +task before + + +kr + + + + + + + + + + +appendix toc,title +article/appendix nop +article toc,title +book toc,title,figure,table,example,equation +chapter toc,title +part toc,title +preface toc,title +qandadiv toc +qandaset toc +reference toc,title +sect1 toc +sect2 toc +sect3 toc +sect4 toc +sect5 toc +section toc +set toc,title + + + + +no + + + + + + + + + + + + + +.html + + +copyright + + + +text/css +alias.h + + + + + + + +User1 + + +User2 + + + + + + + + + +htmlhelp.chm + + +iso-8859-1 + + + + + +toc.hhc +5 + + +index.hhk +htmlhelp.hhp + +Main + +context.h + + + + + + + + + + + + + +basic + + + + + + + +no + +no +iso-8859-1 + + +en + + + + +5 + + +3 + + + + + + + HTML.manifest + + + + ++ +.gif + +images/ +1 + + +6in + + +no +fragid= + +.olink + + replace + +pubid + /cgi-bin/olink +sysid +0 + +I + +90 +10 + + + + + + + + + + + + + + + + +; + + + + + +. +number + + + + + + + + + + I +index + +. +.!?: + +8 + + + + + 0 + #E0E0E0 + + + + + + +0 + + + + + +solid +0.5pt +a + + + +solid +0.5pt + + olinkdb.xml +target.db + +tex-math-equations.tex + + + +dl +8 +2 +_top + + + + + + + + +0 +, + + + writing-mode + + + + + + + + +: + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/pi.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/pi.xsl new file mode 100644 index 000000000..28f9efec1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/pi.xsl @@ -0,0 +1,1203 @@ + + + + + + + +HTML Processing Instruction Reference + + $Id: pi.xsl 8394 2009-04-02 20:31:30Z mzjn $ + + + + Introduction + This is generated reference documentation for all + user-specifiable processing instructions (PIs) in the DocBook + XSL stylesheets for HTML output. + + You add these PIs at particular points in a document to + cause specific “exceptions” to formatting/output behavior. To + make global changes in formatting/output behavior across an + entire document, it’s better to do it by setting an + appropriate stylesheet parameter (if there is one). + + + + + + + + + Sets background color for an image + + Use the dbhtml background-color PI before or + after an image (graphic, inlinegraphic, + imagedata, or videodata element) as a + sibling to the element, to set a background color for the + image. + + + dbhtml background-color="color" + + + + background-color="color" + + An HTML color value + + + + + + Background color + + + + + + + + + + + + Sets background color on a CALS table row or table cell + + Use the dbhtml bgcolor PI as child of a CALS table row + or cell to set a background color for that table row or cell. + + + dbhtml bgcolor="color" + + + + bgcolor="color" + + An HTML color value + + + + + + Cell background color + + + + + + + + + + + + Specifies cellpadding in CALS table or qandaset output + + Use the dbhtml cellpadding PI as a child of a + CALS table or qandaset to specify the value + for the HTML cellpadding attribute in the + output HTML table. + + + dbhtml cellpadding="number" + + + + cellpadding="number" + + Specifies the cellpadding + + + + + + html.cellpadding + + + Cell spacing and cell padding, + Q and A formatting + + + + + + + + + + + + Specifies cellspacing in CALS table or qandaset output + + Use the dbhtml cellspacing PI as a child of a + CALS table or qandaset to specify the value + for the HTML cellspacing attribute in the + output HTML table. + + + dbhtml cellspacing="number" + + + + cellspacing="number" + + Specifies the cellspacing + + + + + + html.cellspacing + + + Cell spacing and cell padding, + Q and A formatting + + + + + + + + + + + + Set value of the class attribute for a CALS table row + + Use the dbhtml class PI as a child of a + row to specify a class + attribute and value in the HTML output for that row. + + + dbhtml class="name" + + + + class="name" + + Specifies the class name + + + + + + Table styles in HTML output + + + + + + + + + + + + Specifies a directory name in which to write files + + When chunking output, use the dbhtml dir PI + as a child of a chunk source to cause the output of that + chunk to be written to the specified directory; also, use it + as a child of a mediaobject to specify a + directory into which any long-description files for that + mediaobject will be written. + + + dbhtml dir="path" + + + + dir="path" + + Specifies the pathname for the directory + + + + + + base.dir + + + dbhtml dir processing instruction + + + + + + + + + + + + Specifies a filename for a chunk + + When chunking output, use the dbhtml filename + PI as a child of a chunk source to specify a filename for + the output file for that chunk. + + + dbhtml filename="filename" + + + + filename="path" + + Specifies the filename for the file + + + + + + use.id.as.filename + + + dbhtml filenames + + + + + + + + + + + + Specifies presentation style for a funcsynopsis + + Use the dbhtml funcsynopsis-style PI as a child of + a funcsynopsis or anywhere within a funcsynopsis + to control the presentation style for output of all + funcprototype instances within that funcsynopsis. + + + dbhtml funcsynopsis-style="kr"|"ansi" + + + + funcsynopsis-style="kr" + + Displays funcprototype output in K&R style + + + funcsynopsis-style="ansi" + + Displays funcprototype output in ANSI style + + + + + + funcsynopsis.style + + + + + + + + + + + + Specifies a path to the location of an image file + + Use the dbhtml img.src.path PI before or + after an image (graphic, + inlinegraphic, imagedata, or + videodata element) as a sibling to the element, + to specify a path to the location of the image; in HTML + output, the value specified for the + img.src.path attribute is prepended to the + filename. + + + dbhtml img.src.path="path" + + + + img.src.path="path" + + Specifies the pathname to prepend to the name of the image file + + + + + + img.src.path + + + Using fileref + + + + + + + + + + + + Specifies the label width for a qandaset + + Use the dbhtml label-width PI as a child of a + qandaset to specify the width of labels. + + + dbhtml label-width="width" + + + + label-width="width" + + Specifies the label width (including units) + + + + + + Q and A formatting + + + + + + + + + + + + Specifies interval for line numbers in verbatims + + Use the dbhtml linenumbering.everyNth PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the interval at which lines are numbered. + + + dbhtml linenumbering.everyNth="N" + + + + linenumbering.everyNth="N" + + Specifies numbering interval; a number is output + before every Nth line + + + + + + linenumbering.everyNth + + + Line numbering + + + + + + + + + + + + Specifies separator text for line numbers in verbatims + + Use the dbhtml linenumbering.separator PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the separator text output between the line numbers and content. + + + dbhtml linenumbering.separator="text" + + + + linenumbering.separator="text" + + Specifies the text (zero or more characters) + + + + + + linenumbering.separator + + + Line numbering + + + + + + + + + + + + Specifies width for line numbers in verbatims + + Use the dbhtml linenumbering.width PI as a child + of a “verbatim” element – programlisting, + screen, synopsis — to specify + the width set aside for line numbers. + + + dbhtml linenumbering.width="width" + + + + linenumbering.width="width" + + Specifies the width (inluding units) + + + + + + linenumbering.width + + + Line numbering + + + + + + + + + + + + Specifies presentation style for a variablelist or + segmentedlist + + Use the dbhtml list-presentation PI as a child of + a variablelist or segmentedlist to + control the presentation style for the list (to cause it, for + example, to be displayed as a table). + + + dbhtml list-presentation="list"|"table" + + + + list-presentation="list" + + Displays the list as a list + + + list-presentation="table" + + Displays the list as a table + + + + + + + + variablelist.as.table + + + segmentedlist.as.table + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the width of a variablelist or simplelist + + Use the dbhtml list-width PI as a child of a + variablelist or a simplelist presented + as a table, to specify the output width. + + + dbhtml list-width="width" + + + + list-width="width" + + Specifies the output width (including units) + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the height for a CALS table row + + Use the dbhtml row-height PI as a child of a + row to specify the height of the row. + + + dbhtml row-height="height" + + + + row-height="height" + + Specifies the row height (including units) + + + + + + Row height + + + + + + + + + + + + (obsolete) Sets the starting number on an ordered list + + This PI is obsolete. The intent of + this PI was to provide a means for setting a specific starting + number for an ordered list. Instead of this PI, set a value + for the override attribute on the first + listitem in the list; that will have the same + effect as what this PI was intended for. + + + dbhtml start="character" + + + + start="character" + + Specifies the character to use as the starting + number; use 0-9, a-z, A-Z, or lowercase or uppercase + Roman numerals + + + + + + List starting number + + + + + + + + + + + + Do not chunk any descendants of this element. + + When generating chunked HTML output, adding this PI as the child of an element that contains elements that would normally be generated on separate pages if generating chunked output causes chunking to stop at this point. No descendants of the current element will be split into new HTML pages: +<section> +<title>Configuring pencil</title> +<?dbhtml stop-chunking?> + +... + +</section> + + + + dbhtml stop-chunking + + + Chunking into multiple HTML files + + + + + + Specifies summary for CALS table, variablelist, segmentedlist, or qandaset output + + Use the dbhtml table-summary PI as a child of + a CALS table, variablelist, + segmentedlist, or qandaset to specify + the text for the HTML summary attribute + in the output HTML table. + + + dbhtml table-summary="text" + + + + table-summary="text" + + Specifies the summary text (zero or more characters) + + + + + + Variable list formatting in HTML, + Table summary text + + + + + + + + + + + + Specifies the width for a CALS table + + Use the dbhtml table-width PI as a child of a + CALS table to specify the width of the table in + output. + + + dbhtml table-width="width" + + + + table-width="width" + + Specifies the table width (including units or as a percentage) + + + + + + default.table.width + + + Table width + + + + + + + + + + + + Sets character formatting for terms in a variablelist + + Use the dbhtml term-presentation PI as a child + of a variablelist to set character formatting for + the term output of the list. + + + dbhtml term-presentation="bold"|"italic"|"bold-italic" + + + + term-presentation="bold" + + Specifies that terms are displayed in bold + + + term-presentation="italic" + + Specifies that terms are displayed in italic + + + term-presentation="bold-italic" + + Specifies that terms are displayed in bold-italic + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies separator text among terms in a varlistentry + + Use the dbhtml term-separator PI as a child + of a variablelist to specify the separator text + among term instances. + + + dbhtml term-separator="text" + + + + term-separator="text" + + Specifies the text (zero or more characters) + + + + + + variablelist.term.separator + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies the term width for a variablelist + + Use the dbhtml term-width PI as a child of a + variablelist to specify the width for + term output. + + + dbhtml term-width="width" + + + + term-width="width" + + Specifies the term width (including units) + + + + + + Variable list formatting in HTML + + + + + + + + + + + + Specifies whether a TOC should be generated for a qandaset + + Use the dbhtml toc PI as a child of a + qandaset to specify whether a table of contents + (TOC) is generated for the qandaset. + + + dbhtml toc="0"|"1" + + + + toc="0" + + If zero, no TOC is generated + + + toc="1" + + If 1 (or any non-zero value), + a TOC is generated + + + + + + Q and A list of questions, + Q and A formatting + + + + + + + + + + + + Generates a hyperlinked list of commands + + Use the dbcmdlist PI as the child of any + element (for example, refsynopsisdiv) containing multiple + cmdsynopsis instances; a hyperlinked navigational + “command list” will be generated at the top of output for that + element, enabling users to quickly jump + to each command synopsis. + + + dbcmdlist + + + [No parameters] + + + + + + No cmdsynopsis elements matched dbcmdlist PI, perhaps it's nested too deep? + + +
        + + + +
        +
        + + + Generates a hyperlinked list of functions + + Use the dbfunclist PI as the child of any + element (for example, refsynopsisdiv) containing multiple + funcsynopsis instances; a hyperlinked + navigational “function list” will be generated at the top of + output for that element, enabling users to quickly + jump to to each function synopsis. + + + dbfunclist + + + [No parameters] + + + + + + No funcsynopsis elements matched dbfunclist PI, perhaps it's nested too deep? + + +
        + + + +
        +
        + + + Copies an external well-formed HTML/XML file into current doc + + Use the dbhtml-include href PI anywhere in a + document to cause the contents of the file referenced by the + href pseudo-attribute to be copied/inserted “as + is” into your HTML output at the point in document order + where the PI occurs in the source. + + The referenced file may contain plain text (as long as + it is “wrapped” in an html element — see the + note below) or markup in any arbitrary vocabulary, + including HTML — but it must conform to XML + well-formedness constraints (because the feature in XSLT + 1.0 for opening external files, the + document() function, can only handle + files that meet XML well-formedness constraints). + Among other things, XML well-formedness constraints + require a document to have a single root + element. So if the content you want to + include is plain text or is markup that does + not have a single root element, + wrap the content in an + html element. The stylesheets will + strip out that surrounding html “wrapper” when + they find it, leaving just the content you want to + insert. + + + + dbhtml-include href="URI" + + + + href="URI" + + Specifies the URI for the file to include; the URI + can be, for example, a remote http: + URI, or a local filesystem file: + URI + + + + + + textinsert.extension + + + Inserting external HTML code, + External code files + + + + + + + href + + + + + + + + + + + + + + + + + + + + ERROR: dbhtml-include processing instruction + href has no content. + + + + + + + ERROR: dbhtml-include processing instruction has + missing or empty href value. + + + + + + + + Sets topic name and topic id for context-sensitive HTML Help + + Use the dbhh PI as a child of components + that should be used as targets for context-sensitive help requests. + + + dbhh topicname="name" topicid="id" + + + + topicname="name" + + Specifies a unique string constant that identifies a help topic + + + topicid="id" + + Specifies a unique integer value for the topicname string + + + + + + Context-sensitive help + + + + + + + + + + filename + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + # + + + + + + + + + + + + + + + + + + +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + + + +
        + + + # + + + + + + + + + + + + + + + + + + +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + / + + + + / + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk-code.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk-code.xsl new file mode 100644 index 000000000..05c10c6e9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk-code.xsl @@ -0,0 +1,617 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bk + + + + + + + + + + + + + + + ar + + + + + + + + + + + + + + + pr + + + + + + + + + + + + + + + ch + + + + + + + + + + + + + + + ap + + + + + + + + + + + + + + + + + + + pt + + + + + + + + + + + + + + + + + + + rn + + + + + + + + + + + + + + + + + + + + + + + + re + + + + + + + + + + + + + + + + + + + co + + + + + + + + + + + s + + + + + + + + + + + + + + + + + + + bi + + + + + + + + + + + + + + + + + + + go + + + + + + + + + + + + + + + + + + + ix + + + + + + + + si + + + + + + + + chunk-filename-error- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Note: namesp. cut : stripped namespace before processingNote: namesp. cut : processing stripped document + + + + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk.xsl new file mode 100644 index 000000000..def7ffff0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-chunk.xsl @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-docbook.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-docbook.xsl new file mode 100644 index 000000000..652fbb798 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-docbook.xsl @@ -0,0 +1,408 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Element + + in namespace ' + + ' encountered + + in + + + , but no template matches. + + + + < + + > + + </ + + > + + + + + + + +rtl + + + + + + + + + + + <xsl:copy-of select="$title"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Note: namesp. cut : stripped namespace before processingNote: namesp. cut : processing stripped document + + + + + + + + + + + + + + + + + + ID ' + + ' not found in document. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-onechunk.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-onechunk.xsl new file mode 100644 index 000000000..b84b3e97b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/profile-onechunk.xsl @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + +1 + + + + # + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/qandaset.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/qandaset.xsl new file mode 100644 index 000000000..4a61c8154 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/qandaset.xsl @@ -0,0 +1,420 @@ + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        + +

        +
        + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        + +

        +
        + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + +
        +
        + + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + +
        + + + + +
        + + + +
        + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1% + + + + + + + + +
        +
        + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/refentry.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/refentry.xsl new file mode 100644 index 000000000..dc2e57d81 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/refentry.xsl @@ -0,0 +1,299 @@ + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        + +

        +
        + + + + +
        + + + + +
        +
        +
        +
        + + + + + + +
        +
        + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + +
        + + + + + + + + + + +

        + + + +

        +
        + +

        + + + + + + + + +

        +
        +
        + +

        + +

        +
        +
        + + + + + + , + + + + + + + + + em-dash + + + + + + + + + + + + + + + + : + + + + + + + +
        + + + + +

        + + + + + + + + + + +

        + +
        +
        + + + + + + + + + + + +
        + + + + + + + + + +
        +
        + + + + + + 0 + 1 + + + + 6 + + + + + + + + + + + + +

        + +

        +
        + + + +

        + +

        +
        + + + +

        + +

        +
        + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/sections.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/sections.xsl new file mode 100644 index 000000000..aec647d54 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/sections.xsl @@ -0,0 +1,541 @@ + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + 1 + 2 + 3 + 4 + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + + + + + + + + + + clear: both + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + 1 + + + + + + + 2 + 3 + 4 + 5 + 6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/synop.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/synop.xsl new file mode 100644 index 000000000..85067078c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/synop.xsl @@ -0,0 +1,1513 @@ + + + + + + + + + + + + + + +
        + +

        + + + + + + + + + + + + +

        +
        +
        + + +
        + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + + + + ( + + ) + +   + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + + + + + + +
        +    
        +    
        +  
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        + + +
        + +
        +

        +
        + + + + + + ( + + + + + + + fsfunc + + + + + + + + + ) + ; + + + + ... + ) + ; + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + +
        + + + + ; +
        + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + +
        + +
         
        + +
        + +
        +
        +
         
        +
        + + + + + + ( + + + + + + + fsfunc + + + + + + + + + + ) + ; + +   + + + + + ... + ) + ; + +   + + + + + + + + , + + + ) + ; + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + ; + + + + + + + + + + + + + + + + + + + + + + + + ( + + ) + ; + + + + + + +

        + +

        +
        + + + + + + ( + + + + + + + fsfunc + + + + + + + + + void) + ; + + + + ... + ) + ; + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + + + + + + + + + + + + + + +
        + +
         
        +
         
        +
        + + + + + + ( + + + + + + + fsfunc + + + + + + + + + + void) + ; + +   + + + + + ... + ) + ; + +   + + + + + + + + , + + + ) + ; + + + + + + + + + + + + + + + + + + + + + + ( + + ) + + + + +java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unrecognized language on + + : + + + + + + + + + + + +
        +
        +
        + + + + + +
        +    
        +    
        +    
        +       extends
        +      
        +      
        +        
        +      +
        +
        + + implements + + +
        +      +
        +
        + + throws + + +  { +
        + + } +
        +
        + + + + + + + + + , + + + + + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + + + + + + + + + void  + + + + + + + + + + + + 0 + + , +
        + + +   + + + +
        + + + + +
        + + + + + + + + + + + + + + +    + + + + + + + + + + + + + + + ( + + + + ) + +
        +     throws  + +
        + + + + + ; +
        + +
        + + + + +
        +    
        +    
        +    
        +      : 
        +      
        +      
        +        
        +      +
        +
        + + implements + + +
        +      +
        +
        + + throws + + +  { +
        + + } +
        +
        + + + + + + + + , + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + ( + + ) + +
        +     throws  + +
        + + + + + ; +
        + +
        + + + + +
        +    
        +    interface 
        +    
        +    
        +      : 
        +      
        +      
        +        
        +      +
        +
        + + implements + + +
        +      +
        +
        + + throws + + +  { +
        + + } +
        +
        + + + + + + + + , + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + +    + + + + + + + + + + ( + + ) + +
        +     raises( + + ) +
        + + + + + ; +
        + +
        + + + + +
        +    
        +    package 
        +    
        +    ;
        +    
        + + + @ISA = ( + + ); +
        +
        + + +
        +
        + + + + + + + + , + + + + + + + + + + + + +   + + + + + + + , + + + + + + + + + + , + + + + + + + + + + , + + + + + + + + + + + +    + + + ; + + + + + + + + +   + + + + + + + +   + + + + + + + + + + + + + + + void  + + + + + + + + + + + + + , + + + + + + + + + + + + + + + + + + + + + + sub + + + { ... }; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/table.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/table.xsl new file mode 100644 index 000000000..42fe25912 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/table.xsl @@ -0,0 +1,1168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + border- + + : + + + + + + ; + + + + + border- + + -width: + + ; + + + + border- + + -style: + + ; + + + + border- + + -color: + + ; + + + + + + + + + + + Error: CALS tables must specify the number of columns. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 100% + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + border-collapse: collapse; + + + + + + + + + + + + + + + + + border: none; + + + + + border-collapse: collapse; + + + + + + + 0 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + 100% + + + + + + + + + + + + + + + + + + + + + + + + No convertLength function available. + + + + + + + + + + + + + + + + + + + + + + + + + + No adjustColumnWidths function available. + + + + + + + + + + + + + + + + + + + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: overlapped row contains content! + + + This row intentionally left blank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + th + th + + th + + td + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + : + + + + + + + + 0: + + + + + + + + + + + + + + + 0 + + : + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + 1 + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/task.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/task.xsl new file mode 100644 index 000000000..0a380d2f0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/task.xsl @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + before + + + + + + + + +
        + + + + + + + + + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.templates.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.templates.xsl new file mode 100644 index 000000000..1f72e2301 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.templates.xsl @@ -0,0 +1,3817 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + + +
        + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + + +
        + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + +
        +
        + + +
        + + +
        + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + + +
        + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + + +
        + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + +
        + + +
        + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + 1 + + + +
        +
        + + + + + + + + + + 1 + + + +
        +
        + +
        +
        + + + + + + + + + + + + + + +
        + + + +
        +
        + + +
        + +
        +
        + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.xsl new file mode 100644 index 000000000..c3f82178a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/titlepage.xsl @@ -0,0 +1,1030 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + +
        + + + + + + + + + + + +
        +
        + + + + + + + + + + + + + +
        + + + + + + + + +
        +
        + + +
        + + + + + + + + +
        +
        +
        +
        + + +
        + + +
        +
        + + + + + +
        +
        +
        + + + + + + +
        + + +

        +
        +

        + + + + + + + + + +

        + + + + + + + + + + + + + + + +
        +
        + + +
        + + +
        +
        + + +
        + + +

        Authors

        +
        + + + +
        +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + +
        +
        +
        + + + + + + + + + +
        + + +
        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + + + +   + + +
        + +

        +
        +
        +
        +
        + + + + +

        Copyright

        +
        + +

        + + + + + + + copyright + + + + + + + + + +

        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + +

        + + +

        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + +

        + + + + + + +

        +
        + + + + + + + + + + +
        +
        +
        + + + + + + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + +
        + + + +
        +
        +
        + +
        + + + +
        +
        +
        +
        + + +

        +
        + + + + + +
        +
        +
        + + + + + + + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + : + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + +
        + + +
        +
        + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + + 3 + 2 + + + + + + + + RevHistory + + + + +
        + + + + + + + + +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + + + +   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + + + + +
        +
        +
        + + + + + +

        + + +

        +
        + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + +

        + + + + + + + + + + + + + + +

        +
        + + + + + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/toc.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/toc.xsl new file mode 100644 index 000000000..92b7b14b8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/toc.xsl @@ -0,0 +1,330 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + + +
        + + +
        +
        + +
        + + + + + + + + + +
        +
        +
        + + + + + + + + + + + + + + +
        + + +
        + + +
        +
        + +
        + + + + + + + + + +
        +
        +
        + + + + + + + + +
        + + + + + +
        +
        + + + + + + +
        +
        +
        + + + + + +
        + + +
        + +
        + +
      • + + + +
      • +
        +
        +
        + + + + +
        + + +
        +
        + +
      • + + +
      • +
        +
        +
        + + + + + + + + + + + + + + +
        + + + + + + + + + + + + + + + +
        + + +
        +
        + + +
        + + +
        +
        + + + + + + + + + + + + +
        + + +
        +
        + + + +
        +
        + + + + +
        + + + + +
        + + +
        + +
        + + + +
        +
        + + + + +
        + + +
        + +
        + + + +
        +
        + + + + + Warning: don't know what to generate for + lot that has no children. + + + + +
        + + +
        +
        + + +
        + + +
        +
        + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/verbatim.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/verbatim.xsl new file mode 100644 index 000000000..c0bc69d57 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/verbatim.xsl @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + + + + + + + + + + + div + pre + + + + + + The shade.verbatim parameter is deprecated. + Use CSS instead, + + + for example: pre. + + { background-color: #E0E0E0; } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The shade.verbatim parameter is deprecated. + Use CSS instead, + + + for example: pre. + + { background-color: #E0E0E0; } + + + + + + + +
        +            
        +            
        +              
        +            
        +          
        +
        + +
        + +

        + + + +

        +
        +
        +
        +
        + + + +
        +            
        +            
        +          
        +
        + +
        + +

        + + + +

        +
        +
        +
        +
        +
        +
        + + + + + + + + + + +
        + +

        + + + +

        +
        +
        + + +
        + +

        + + + +

        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Unexpected verbatim environment: + + + + + + + + + + 1 + + + + + + + + + + + + + No numberLines function available. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/xref.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/xref.xsl new file mode 100644 index 000000000..74c6f203e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook-xsl-1.76.1/xhtml/xref.xsl @@ -0,0 +1,1316 @@ + + + + + + + + +http://docbook.org/xlink/role/olink + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Endterm points to nonexistent ID: + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ERROR: xref linking to + + has no generated link text. + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + XRef to nonexistent id: + + + ??? + + + + + + + + + + + + + + + + Endterm points to nonexistent ID: + + + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + suppress anchor + + + + + + + + + + + removing + + + + + + + + + + + + + + + + + removing + + + + + + + + + + + + + + + + + + + + + + Don't know what gentext to create for xref to: " + + ", (" + + ") + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No bibliography entry: + + found in + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [ + + + + + + + + + ] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Endterm points to nonexistent ID: + + + ??? + + + + + + + + + + + + + Link element has no content and no Endterm. + Nothing to show in the link to + + + ??? + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Olink debug: root element of target.database ' + + ' is ' + + '. + + + + + + + + + + + + + + + Error: unresolved olink: + targetdoc/targetptr = ' + + / + + '. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Warning: olink linkmode pointer is wrong. + + + + # + + + + + + + + + + + + + ? + + + + + & + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook.xml new file mode 100644 index 000000000..b0de8594d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docbook.xml @@ -0,0 +1,609 @@ + + + + +%scons; + +%builders-mod; + +%functions-mod; + +%tools-mod; + +%variables-mod; +]> + + + + + +This tool tries to make working with Docbook in SCons a little easier. +It provides several toolchains for creating different output formats, +like HTML or PDF. Contained in the package is +a distribution of the Docbook XSL stylesheets as of version 1.76.1. +As long as you don't specify your own stylesheets for customization, +these official versions are picked as default...which should reduce +the inevitable setup hassles for you. + +Implicit dependencies to images and XIncludes are detected automatically +if you meet the HTML requirements. The additional +stylesheet utils/xmldepend.xsl by Paul DuBois is used for this purpose. + +Note, that there is no support for XML catalog resolving offered! This tool calls +the XSLT processors and PDF renderers with the stylesheets you specified, that's it. +The rest lies in your hands and you still have to know what you're doing when +resolving names via a catalog. + +For activating the tool "docbook", you have to add its name to the Environment constructor, +like this + +env = Environment(tools=['docbook']) + +On its startup, the &t-docbook; tool tries to find a required xsltproc processor, and +a PDF renderer, e.g. fop. So make sure that these are added to your system's environment +PATH and can be called directly without specifying their full path. + +For the most basic processing of Docbook to HTML, you need to have installed + +the Python lxml +binding to libxml2, or + +a standalone XSLT processor, currently detected are xsltproc, saxon, saxon-xslt +and xalan. + + + +Rendering to PDF requires you to have one of the applications +fop or xep installed. + + +Creating a HTML or PDF document is very simple and straightforward. Say + +env = Environment(tools=['docbook']) +env.DocbookHtml('manual.html', 'manual.xml') +env.DocbookPdf('manual.pdf', 'manual.xml') + +to get both outputs from your XML source manual.xml. As a shortcut, you can +give the stem of the filenames alone, like this: + +env = Environment(tools=['docbook']) +env.DocbookHtml('manual') +env.DocbookPdf('manual') + +and get the same result. Target and source lists are also supported: + +env = Environment(tools=['docbook']) +env.DocbookHtml(['manual.html','reference.html'], ['manual.xml','reference.xml']) + +or even + +env = Environment(tools=['docbook']) +env.DocbookHtml(['manual','reference']) + +Whenever you leave out the list of sources, you may not specify a file extension! The +Tool uses the given names as file stems, and adds the suffixes for target and source files +accordingly. + + +The rules given above are valid for the Builders &b-link-DocbookHtml;, +&b-link-DocbookPdf;, &b-link-DocbookEpub;, &b-link-DocbookSlidesPdf; and &b-link-DocbookXInclude;. For the +&b-link-DocbookMan; transformation you +can specify a target name, but the actual output names are automatically +set from the refname entries in your XML source. + + +The Builders &b-link-DocbookHtmlChunked;, &b-link-DocbookHtmlhelp; and +&b-link-DocbookSlidesHtml; are special, in that: + +they create a large set of files, where the exact names and their number depend +on the content of the source file, and + + +the main target is always named index.html, i.e. the output name for the +XSL transformation is not picked up by the stylesheets. + + + +As a result, there is simply no use in specifying a target HTML name. +So the basic syntax for these builders is always: + +env = Environment(tools=['docbook']) +env.DocbookHtmlhelp('manual') + + +If you want to use a specific XSL file, you can set the +additional xsl parameter to your +Builder call as follows: + +env.DocbookHtml('other.html', 'manual.xml', xsl='html.xsl') + +Since this may get tedious if you always use the same local naming for your customized XSL files, +e.g. html.xsl for HTML and pdf.xsl for PDF output, a set of +variables for setting the default XSL name is provided. These are: + +DOCBOOK_DEFAULT_XSL_HTML +DOCBOOK_DEFAULT_XSL_HTMLCHUNKED +DOCBOOK_DEFAULT_XSL_HTMLHELP +DOCBOOK_DEFAULT_XSL_PDF +DOCBOOK_DEFAULT_XSL_EPUB +DOCBOOK_DEFAULT_XSL_MAN +DOCBOOK_DEFAULT_XSL_SLIDESPDF +DOCBOOK_DEFAULT_XSL_SLIDESHTML + +and you can set them when constructing your environment: + + +env = Environment( + tools=['docbook'], + DOCBOOK_DEFAULT_XSL_HTML='html.xsl', + DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl', +) +env.DocbookHtml('manual') # now uses html.xsl + + + +DOCBOOK_DEFAULT_XSL_HTML +DOCBOOK_DEFAULT_XSL_HTMLCHUNKED +DOCBOOK_DEFAULT_XSL_HTMLHELP +DOCBOOK_DEFAULT_XSL_PDF +DOCBOOK_DEFAULT_XSL_EPUB +DOCBOOK_DEFAULT_XSL_MAN +DOCBOOK_DEFAULT_XSL_SLIDESPDF +DOCBOOK_DEFAULT_XSL_SLIDESHTML +DOCBOOK_XSLTPROC +DOCBOOK_XMLLINT +DOCBOOK_FOP +DOCBOOK_XSLTPROCFLAGS +DOCBOOK_XMLLINTFLAGS +DOCBOOK_FOPFLAGS +DOCBOOK_XSLTPROCPARAMS +DOCBOOK_XSLTPROCCOM +DOCBOOK_XMLLINTCOM +DOCBOOK_FOPCOM + + +DOCBOOK_XSLTPROCCOMSTR +DOCBOOK_XMLLINTCOMSTR +DOCBOOK_FOPCOMSTR + + + + + + + +The default XSLT file for the &b-link-DocbookHtml; builder within the +current environment, if no other XSLT gets specified via keyword. + + + + + + + + +The default XSLT file for the &b-link-DocbookHtmlChunked; builder within the +current environment, if no other XSLT gets specified via keyword. + + + + + + + +The default XSLT file for the &b-link-DocbookHtmlhelp; builder within the +current environment, if no other XSLT gets specified via keyword. + + + + + + + +The default XSLT file for the &b-link-DocbookPdf; builder within the +current environment, if no other XSLT gets specified via keyword. + + + + + + + +The default XSLT file for the &b-link-DocbookEpub; builder within the +current environment, if no other XSLT gets specified via keyword. + + + + + + + +The default XSLT file for the &b-link-DocbookMan; builder within the +current environment, if no other XSLT gets specified via keyword. + + + + + + + +The default XSLT file for the &b-link-DocbookSlidesPdf; builder within the +current environment, if no other XSLT gets specified via keyword. + + + + + + + +The default XSLT file for the &b-link-DocbookSlidesHtml; builder within the +current environment, if no other XSLT gets specified via keyword. + + + + + + + +The path to the external executable xsltproc +(or saxon, xalan), if one of them +is installed. +Note, that this is only used as last fallback for XSL transformations, if +no lxml Python binding can be imported in the current system. + + + + + + + +The path to the external executable xmllint, if it's installed. +Note, that this is only used as last fallback for resolving +XIncludes, if no lxml Python binding can be imported +in the current system. + + + + + + + +The path to the PDF renderer fop or xep, +if one of them is installed (fop gets checked first). + + + + + + + +Additonal command-line flags for the external executable +xsltproc (or saxon, +xalan). + + + + + + + +Additonal command-line flags for the external executable +xmllint. + + + + + + + +Additonal command-line flags for the +PDF renderer fop or xep. + + + + + + + +Additonal parameters that are not intended for the XSLT processor executable, but +the XSL processing itself. By default, they get appended at the end of the command line +for saxon and saxon-xslt, respectively. + + + + + + + +The full command-line for the external executable +xsltproc (or saxon, +xalan). + + + + + + + +The full command-line for the external executable +xmllint. + + + + + + + +The full command-line for the +PDF renderer fop or xep. + + + + + + + +The string displayed when xsltproc is used to transform +an XML file via a given XSLT stylesheet. + + + + + + + +The string displayed when xmllint is used to resolve +XIncludes for a given XML file. + + + + + + + +The string displayed when a renderer like fop or +xep is used to create PDF output from an XML file. + + + + + + + +A pseudo-Builder, providing a Docbook toolchain for HTML output. + +env = Environment(tools=['docbook']) +env.DocbookHtml('manual.html', 'manual.xml') + + +or simply + +env = Environment(tools=['docbook']) +env.DocbookHtml('manual') + + + + + + + +A pseudo-Builder providing a Docbook toolchain for chunked HTML output. +It supports the base.dir parameter. The +chunkfast.xsl file (requires "EXSLT") is used as the +default stylesheet. Basic syntax: + + +env = Environment(tools=['docbook']) +env.DocbookHtmlChunked('manual') + + +where manual.xml is the input file. + +If you use the root.filename +parameter in your own stylesheets you have to specify the new target name. +This ensures that the dependencies get correct, especially for the cleanup via scons -c: + +env = Environment(tools=['docbook']) +env.DocbookHtmlChunked('mymanual.html', 'manual', xsl='htmlchunk.xsl') + +Some basic support for the base.dir parameter +is provided. You can add the base_dir keyword to +your Builder call, and the given prefix gets prepended to all the +created filenames: + +env = Environment(tools=['docbook']) +env.DocbookHtmlChunked('manual', xsl='htmlchunk.xsl', base_dir='output/') + +Make sure that you don't forget the trailing slash for the base folder, else +your files get renamed only! + + + + + + + +A pseudo-Builder, providing a Docbook toolchain for HTMLHELP output. +Its basic syntax is: + + +env = Environment(tools=['docbook']) +env.DocbookHtmlhelp('manual') + + +where manual.xml is the input file. + + +If you use the root.filename +parameter in your own stylesheets you have to specify the new target name. +This ensures that the dependencies get correct, especially for the cleanup via scons -c: + +env = Environment(tools=['docbook']) +env.DocbookHtmlhelp('mymanual.html', 'manual', xsl='htmlhelp.xsl') + +Some basic support for the base.dir parameter +is provided. You can add the base_dir keyword to +your Builder call, and the given prefix gets prepended to all the +created filenames: + +env = Environment(tools=['docbook']) +env.DocbookHtmlhelp('manual', xsl='htmlhelp.xsl', base_dir='output/') + +Make sure that you don't forget the trailing slash for the base folder, else +your files get renamed only! + + + + + + + + +A pseudo-Builder, providing a Docbook toolchain for PDF output. + + +env = Environment(tools=['docbook']) +env.DocbookPdf('manual.pdf', 'manual.xml') + + + +or simply + + +env = Environment(tools=['docbook']) +env.DocbookPdf('manual') + + + + + + + + +A pseudo-Builder, providing a Docbook toolchain for EPUB output. + + +env = Environment(tools=['docbook']) +env.DocbookEpub('manual.epub', 'manual.xml') + + + +or simply + + +env = Environment(tools=['docbook']) +env.DocbookEpub('manual') + + + + + + + + +A pseudo-Builder, providing a Docbook toolchain for Man page output. +Its basic syntax is: + + +env = Environment(tools=['docbook']) +env.DocbookMan('manual') + + +where manual.xml is the input file. Note, that +you can specify a target name, but the actual output names are automatically +set from the refname entries in your XML source. + + + + + + + +A pseudo-Builder, providing a Docbook toolchain for PDF slides output. + + +env = Environment(tools=['docbook']) +env.DocbookSlidesPdf('manual.pdf', 'manual.xml') + + + +or simply + + +env = Environment(tools=['docbook']) +env.DocbookSlidesPdf('manual') + + + + + + + +A pseudo-Builder, providing a Docbook toolchain for HTML slides output. + + +env = Environment(tools=['docbook']) +env.DocbookSlidesHtml('manual') + + +If you use the titlefoil.html parameter in +your own stylesheets you have to give the new target name. This ensures +that the dependencies get correct, especially for the cleanup via +scons -c: + +env = Environment(tools=['docbook']) +env.DocbookSlidesHtml('mymanual.html','manual', xsl='slideshtml.xsl') + + +Some basic support for the base.dir parameter +is provided. You +can add the base_dir keyword to your Builder +call, and the given prefix gets prepended to all the created filenames: + +env = Environment(tools=['docbook']) +env.DocbookSlidesHtml('manual', xsl='slideshtml.xsl', base_dir='output/') + +Make sure that you don't forget the trailing slash for the base folder, else +your files get renamed only! + + + + + + + + +A pseudo-Builder, for resolving XIncludes in a separate processing step. + + +env = Environment(tools=['docbook']) +env.DocbookXInclude('manual_xincluded.xml', 'manual.xml') + + + + + + + +A pseudo-Builder, applying a given XSL transformation to the input file. + + +env = Environment(tools=['docbook']) +env.DocbookXslt('manual_transformed.xml', 'manual.xml', xsl='transform.xslt') + + +Note, that this builder requires the xsl parameter +to be set. + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docs/SConstruct b/scons/scons-local-4.5.1/SCons/Tool/docbook/docs/SConstruct new file mode 100644 index 000000000..4c048d532 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docs/SConstruct @@ -0,0 +1,34 @@ +# +# Copyright (c) 2001-2010 The SCons Foundation +# +# 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. + + +import os + +env = Environment(ENV = os.environ, + tools = ['docbook']) + +env.DocbookPdf('manual', xsl='pdf.xsl') +#env.DocbookPdf('reference', xsl='pdf.xsl') + +env.DocbookHtml('manual', xsl='html.xsl') +#env.DocbookHtml('reference', xsl='html.xsl') + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docs/html.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docs/html.xsl new file mode 100644 index 000000000..407e18daf --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docs/html.xsl @@ -0,0 +1,55 @@ + + + + + + + + + + +/appendix toc,title +article/appendix nop +/article toc,title +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docs/manual.xml b/scons/scons-local-4.5.1/SCons/Tool/docbook/docs/manual.xml new file mode 100644 index 000000000..64ee9257c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docs/manual.xml @@ -0,0 +1,270 @@ + + + +
        + The SCons Docbook tool + + + Dirk Baechle + + 2010-12-30 + +
        Basics +This tool tries to make working with Docbook in SCons a little easier. +It provides several toolchains for creating different output formats, +like HTML or PDF. Contained in the package is +a distribution of the Docbook XSL stylesheets as of version 1.76.1. +As long as you don't specify your own stylesheets for customization (see Selecting stylesheet), +these official versions are picked as default...which should reduce +the inevitable setup hassles for you. + +Implicit dependencies to images and XIncludes are detected automatically +if you meet the HTML requirements (see Requirements). The additional +stylesheet utils/xmldepend.xsl by Paul DuBois is used for this purpose. + +Note, that there is no support for XML catalog resolving offered! This tool calls +the XSLT processors and PDF renderers with the stylesheets you specified, that's it. +The rest lies in your hands and you still have to know what you're doing when +resolving names via a catalog. + +
        Install +Installing it, requires you to copy (or, even better: checkout) the contents of the +package's docbook folder to + +/path_to_your_project/site_scons/site_tools/docbook, if you need the Docbook Tool in one project only, or + + +~/.scons/site_scons/site_tools/docbook, for a system-wide installation under your current login. + + + +For more infos about this, please refer to + +the SCons User's Guide, chap. 19.7 "Where to put your custom Builders and Tools" and + + +the SCons Tools Wiki page at http://github.com/SCons/scons/wiki/ToolsIndex. + + + +
        +
        How to activate +For activating the tool "docbook", you have to add its name to the Environment constructor, +like this + +env = Environment(tools=['docbook']) + +On its startup, the Docbook tool tries to find a required xsltproc processor, and +a PDF renderer, e.g. fop. So make sure that these are added to your system's environment +PATH and can be called directly, without specifying their full path. + +
        +
        Requirements +For the most basic processing of Docbook to HTML, you need to have installed + +the Python lxml binding to libxml2, or + + +the direct Python bindings for libxml2/libxslt, or + + +a standalone XSLT processor, currently detected are xsltproc, saxon, saxon-xslt +and xalan. + + + +Rendering to PDF requires you to have one of the applications fop, xep or jw +installed. + +
        +
        +
        Processing documents +Creating a HTML or PDF document is very simple and straightforward. Say + +env = Environment(tools=['docbook']) +env.DocbookHtml('manual.html', 'manual.xml') +env.DocbookPdf('manual.pdf', 'manual.xml') + +to get both outputs from your XML source manual.xml. As a shortcut, you can +give the stem of the filenames alone, like this: + +env = Environment(tools=['docbook']) +env.DocbookHtml('manual') +env.DocbookPdf('manual') + +and get the same result. Target and source lists are also supported: + +env = Environment(tools=['docbook']) +env.DocbookHtml(['manual.html','reference.html'], ['manual.xml','reference.xml']) + +or even + +env = Environment(tools=['docbook']) +env.DocbookHtml(['manual','reference']) + +Whenever you leave out the list of sources, you may not specify a file extension! The +Tool uses the given names as file stems, and adds the suffixes for target and source files +accordingly. + + +The rules given above are valid for the Builders DocbookHtml, DocbookPdf, +DocbookSlidePdf and DocbookXInclude. For the DocbookMan transformation you +can specify a target name, but the actual output names are automatically set from +the refname entries in your XML source. + +Please refer to the section Chunked output for more infos about the other Builders. + +
        +
        Selecting your own stylesheet +If you want to use a specific XSL file, you can set the additional xsl parameter to your +Builder call as follows: + +env.DocbookHtml('other.html', 'manual.xml', xsl='html.xsl') + +Since this may get tedious if you always use the same local naming for your customized XSL files, +e.g. html.xsl for HTML and pdf.xsl for PDF output, a set of variables for setting the +default XSL name is provided. These are: + +DOCBOOK_DEFAULT_XSL_HTML +DOCBOOK_DEFAULT_XSL_HTMLCHUNKED +DOCBOOK_DEFAULT_XSL_HTMLHELP +DOCBOOK_DEFAULT_XSL_PDF +DOCBOOK_DEFAULT_XSL_MAN +DOCBOOK_DEFAULT_XSL_SLIDESPDF +DOCBOOK_DEFAULT_XSL_SLIDESHTML + +and you can set them when constructing your environment: + +env = Environment(tools=['docbook'], + DOCBOOK_DEFAULT_XSL_HTML='html.xsl', + DOCBOOK_DEFAULT_XSL_PDF='pdf.xsl') +env.DocbookHtml('manual') # now uses html.xsl + +
        +
        Chunked output +The Builders DocbookHtmlChunked, DocbookHtmlhelp and DocbookSlidesHtml +are special, in that: + +they create a large set of files, where the exact names and their number depend +on the content of the source file, and + + +the main target is always named index.html, i.e. the output name for the +XSL transformation is not picked up by the stylesheets. + + + +As a result, there is simply no use in specifying a target HTML name. +So the basic syntax for these builders is: + +env = Environment(tools=['docbook']) +env.DocbookHtmlhelp('manual') + +Only if you use the root.filename (titlefoil.html for slides) parameter in +your own stylesheets you have to give the new target name. This ensures that the +dependencies get correct, especially for the cleanup via scons -c: + +env = Environment(tools=['docbook']) +env.DocbookHtmlhelp('mymanual.html','manual', xsl='htmlhelp.xsl') + +Some basic support for the base.dir is added (this has not been properly tested +with variant dirs, yet!). You can add the base_dir keyword to your Builder +call, and the given prefix gets prepended to all the created filenames: + +env = Environment(tools=['docbook']) +env.DocbookHtmlhelp('manual', xsl='htmlhelp.xsl', base_dir='output/') + +Make sure that you don't forget the trailing slash for the base folder, else +your files get renamed only! + +
        +
        All builders +A simple list of all builders currently available: + +DocbookHtml + +Single HTML file. + + + +DocbookHtmlChunked + +Chunked HTML files, with support for the base.dir parameter. The chunkfast.xsl +file (requires "EXSLT") is used as the default stylesheet. + + + +DocbookHtmlhelp + +Htmlhelp files, with support for base.dir. + + + +DocbookPdf + +PDF output. + + + +DocbookMan + +Man pages. + + + +DocbookSlidesPdf + +Slides in PDF format. + + + +DocbookSlidesHtml + +Slides in HTML format, with support for base.dir. + + + +DocbookXInclude + +Can be used to resolve XIncludes in a preprocessing step. + + + + +
        +
        Need more? +This work is still in a very basic state and hasn't been tested well +with things like variant dirs, yet. Unicode problems and poor performance +with large input files may occur. There will definitely arise the need for +adding features, or a variable. Let us know if you can think of a nice +improvement or have worked on a bugfix/patch with success. Enter your issues at the +Launchpad bug tracker for the Docbook Tool, or write to the User General Discussion +list of SCons at scons-users@scons.org. + +
        + +
        diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/docs/pdf.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/docs/pdf.xsl new file mode 100644 index 000000000..8703ced2f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/docs/pdf.xsl @@ -0,0 +1,62 @@ + + + + + + + + + + +0pt + + +/appendix toc,title +article/appendix nop +/article toc,title +book toc,title,figure,table,example,equation +/chapter toc,title +part toc,title +/preface toc,title +reference toc,title +/sect1 toc +/sect2 toc +/sect3 toc +/sect4 toc +/sect5 toc +/section toc +set toc,title + + + + + + + + diff --git a/scons/scons-local-4.5.1/SCons/Tool/docbook/utils/xmldepend.xsl b/scons/scons-local-4.5.1/SCons/Tool/docbook/utils/xmldepend.xsl new file mode 100644 index 000000000..e70e1b5fd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/docbook/utils/xmldepend.xsl @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/dvi.py b/scons/scons-local-4.5.1/SCons/Tool/dvi.py new file mode 100644 index 000000000..4067b2a1e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/dvi.py @@ -0,0 +1,64 @@ +"""SCons.Tool.dvi + +Common DVI Builder definition for various other Tool modules that use it. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Builder +import SCons.Tool + +DVIBuilder = None + +def generate(env): + try: + env['BUILDERS']['DVI'] + except KeyError: + global DVIBuilder + + if DVIBuilder is None: + # The suffix is hard-coded to '.dvi', not configurable via a + # construction variable like $DVISUFFIX, because the output + # file name is hard-coded within TeX. + DVIBuilder = SCons.Builder.Builder(action = {}, + source_scanner = SCons.Tool.LaTeXScanner, + suffix = '.dvi', + emitter = {}, + source_ext_match = None) + + env['BUILDERS']['DVI'] = DVIBuilder + +def exists(env): + # This only puts a skeleton Builder in place, so if someone + # references this Tool directly, it's always "available." + return 1 + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/dvipdf.py b/scons/scons-local-4.5.1/SCons/Tool/dvipdf.py new file mode 100644 index 000000000..e0622072d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/dvipdf.py @@ -0,0 +1,122 @@ +"""SCons.Tool.dvipdf + +Tool-specific initialization for dvipdf. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Action +import SCons.Defaults +import SCons.Tool.pdf +import SCons.Tool.tex +import SCons.Util + +_null = SCons.Scanner.LaTeX._null + +def DviPdfPsFunction(XXXDviAction, target = None, source= None, env=None): + """A builder for DVI files that sets the TEXPICTS environment + variable before running dvi2ps or dvipdf.""" + + try: + abspath = source[0].attributes.path + except AttributeError : + abspath = '' + + saved_env = SCons.Scanner.LaTeX.modify_env_var(env, 'TEXPICTS', abspath) + + result = XXXDviAction(target, source, env) + + if saved_env is _null: + try: + del env['ENV']['TEXPICTS'] + except KeyError: + pass # was never set + else: + env['ENV']['TEXPICTS'] = saved_env + + return result + +def DviPdfFunction(target = None, source= None, env=None): + result = DviPdfPsFunction(PDFAction,target,source,env) + return result + +def DviPdfStrFunction(target = None, source= None, env=None): + """A strfunction for dvipdf that returns the appropriate + command string for the no_exec options.""" + if env.GetOption("no_exec"): + result = env.subst('$DVIPDFCOM',0,target,source) + else: + result = '' + return result + +PDFAction = None +DVIPDFAction = None + +def PDFEmitter(target, source, env): + """Strips any .aux or .log files from the input source list. + These are created by the TeX Builder that in all likelihood was + used to generate the .dvi file we're using as input, and we only + care about the .dvi file. + """ + def strip_suffixes(n): + return not SCons.Util.splitext(str(n))[1] in ['.aux', '.log'] + source = [src for src in source if strip_suffixes(src)] + return (target, source) + +def generate(env): + """Add Builders and construction variables for dvipdf to an Environment.""" + global PDFAction + if PDFAction is None: + PDFAction = SCons.Action.Action('$DVIPDFCOM', '$DVIPDFCOMSTR') + + global DVIPDFAction + if DVIPDFAction is None: + DVIPDFAction = SCons.Action.Action(DviPdfFunction, strfunction = DviPdfStrFunction) + + from . import pdf + pdf.generate(env) + + bld = env['BUILDERS']['PDF'] + bld.add_action('.dvi', DVIPDFAction) + bld.add_emitter('.dvi', PDFEmitter) + + env['DVIPDF'] = 'dvipdf' + env['DVIPDFFLAGS'] = SCons.Util.CLVar('') + env['DVIPDFCOM'] = 'cd ${TARGET.dir} && $DVIPDF $DVIPDFFLAGS ${SOURCE.file} ${TARGET.file}' + +def exists(env): + SCons.Tool.tex.generate_darwin(env) + return env.Detect('dvipdf') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/dvips.py b/scons/scons-local-4.5.1/SCons/Tool/dvips.py new file mode 100644 index 000000000..198bda038 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/dvips.py @@ -0,0 +1,95 @@ +"""SCons.Tool.dvips + +Tool-specific initialization for dvips. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Action +import SCons.Builder +import SCons.Tool.dvipdf +import SCons.Util + +def DviPsFunction(target = None, source= None, env=None): + result = SCons.Tool.dvipdf.DviPdfPsFunction(PSAction,target,source,env) + return result + +def DviPsStrFunction(target = None, source= None, env=None): + """A strfunction for dvipdf that returns the appropriate + command string for the no_exec options.""" + if env.GetOption("no_exec"): + result = env.subst('$PSCOM',0,target,source) + else: + result = '' + return result + +PSAction = None +DVIPSAction = None +PSBuilder = None + +def generate(env): + """Add Builders and construction variables for dvips to an Environment.""" + global PSAction + if PSAction is None: + PSAction = SCons.Action.Action('$PSCOM', '$PSCOMSTR') + + global DVIPSAction + if DVIPSAction is None: + DVIPSAction = SCons.Action.Action(DviPsFunction, strfunction = DviPsStrFunction) + + global PSBuilder + if PSBuilder is None: + PSBuilder = SCons.Builder.Builder(action = PSAction, + prefix = '$PSPREFIX', + suffix = '$PSSUFFIX', + src_suffix = '.dvi', + src_builder = 'DVI', + single_source=True) + + env['BUILDERS']['PostScript'] = PSBuilder + + env['DVIPS'] = 'dvips' + env['DVIPSFLAGS'] = SCons.Util.CLVar('') + # I'm not quite sure I got the directories and filenames right for variant_dir + # We need to be in the correct directory for the sake of latex \includegraphics eps included files. + env['PSCOM'] = 'cd ${TARGET.dir} && $DVIPS $DVIPSFLAGS -o ${TARGET.file} ${SOURCE.file}' + env['PSPREFIX'] = '' + env['PSSUFFIX'] = '.ps' + +def exists(env): + SCons.Tool.tex.generate_darwin(env) + return env.Detect('dvips') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/f03.py b/scons/scons-local-4.5.1/SCons/Tool/f03.py new file mode 100644 index 000000000..142c1278b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/f03.py @@ -0,0 +1,58 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for the generic Posix f03 Fortran compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +from SCons.Tool.FortranCommon import add_all_to_env, add_f03_to_env + +compilers = ['f03'] + +def generate(env): + add_all_to_env(env) + add_f03_to_env(env) + + fcomp = env.Detect(compilers) or 'f03' + if 'F03' not in env: + env['F03'] = fcomp + if 'SHF03' not in env: + env['SHF03'] = '$F03' + + if 'FORTRAN' not in env: + env['FORTRAN'] = fcomp + if 'SHFORTRAN' not in env: + env['SHFORTRAN'] = '$FORTRAN' + + +def exists(env): + return env.Detect(compilers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/f08.py b/scons/scons-local-4.5.1/SCons/Tool/f08.py new file mode 100644 index 000000000..eb367c53e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/f08.py @@ -0,0 +1,58 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for the generic Posix f08 Fortran compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +from SCons.Tool.FortranCommon import add_all_to_env, add_f08_to_env + +compilers = ['f08'] + +def generate(env): + add_all_to_env(env) + add_f08_to_env(env) + + fcomp = env.Detect(compilers) or 'f08' + if 'F08' not in env: + env['F08'] = fcomp + if 'SHF08' not in env: + env['SHF08'] = '$F08' + + if 'FORTRAN' not in env: + env['FORTRAN'] = fcomp + if 'SHFORTRAN' not in env: + env['SHFORTRAN'] = '$FORTRAN' + + +def exists(env): + return env.Detect(compilers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/f77.py b/scons/scons-local-4.5.1/SCons/Tool/f77.py new file mode 100644 index 000000000..5ff15ae45 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/f77.py @@ -0,0 +1,57 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for the generic Posix f77 Fortran compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +from SCons.Tool.FortranCommon import add_all_to_env, add_f77_to_env + +compilers = ['f77'] + +def generate(env): + add_all_to_env(env) + add_f77_to_env(env) + + fcomp = env.Detect(compilers) or 'f77' + if 'F77' not in env: + env['F77'] = fcomp + if 'SHF77' not in env: + env['SHF77'] = '$F77' + + if 'FORTRAN' not in env: + env['FORTRAN'] = fcomp + if 'SHFORTRAN' not in env: + env['SHFORTRAN'] = '$FORTRAN' + +def exists(env): + return env.Detect(compilers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/f90.py b/scons/scons-local-4.5.1/SCons/Tool/f90.py new file mode 100644 index 000000000..cbf3947c1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/f90.py @@ -0,0 +1,57 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for the generic Posix f90 Fortran compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +from SCons.Tool.FortranCommon import add_all_to_env, add_f90_to_env + +compilers = ['f90'] + +def generate(env): + add_all_to_env(env) + add_f90_to_env(env) + + fc = env.Detect(compilers) or 'f90' + if 'F90' not in env: + env['F90'] = fc + if 'SHF90' not in env: + env['SHF90'] = '$F90' + + if 'FORTRAN' not in env: + env['FORTRAN'] = fc + if 'SHFORTRAN' not in env: + env['SHFORTRAN'] = '$FORTRAN' + +def exists(env): + return env.Detect(compilers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/f95.py b/scons/scons-local-4.5.1/SCons/Tool/f95.py new file mode 100644 index 000000000..4830ee03f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/f95.py @@ -0,0 +1,58 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for the generic Posix f95 Fortran compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +from SCons.Tool.FortranCommon import add_all_to_env, add_f95_to_env + +compilers = ['f95'] + +def generate(env): + add_all_to_env(env) + add_f95_to_env(env) + + fcomp = env.Detect(compilers) or 'f95' + if 'F95' not in env: + env['F95'] = fcomp + if 'SHF95' not in env: + env['SHF95'] = '$F95' + + if 'FORTRAN' not in env: + env['FORTRAN'] = fcomp + if 'SHFORTRAN' not in env: + env['SHFORTRAN'] = '$FORTRAN' + + +def exists(env): + return env.Detect(compilers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/filesystem.py b/scons/scons-local-4.5.1/SCons/Tool/filesystem.py new file mode 100644 index 000000000..3b8ee4c8f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/filesystem.py @@ -0,0 +1,98 @@ +"""SCons.Tool.filesystem + +Tool-specific initialization for the filesystem tools. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons +from SCons.Tool.install import copyFunc + +copyToBuilder, copyAsBuilder = None, None + +def copyto_emitter(target, source, env): + """ changes the path of the source to be under the target (which + are assumed to be directories. + """ + n_target = [] + + for t in target: + n_target = n_target + [t.File( str( s ) ) for s in source] + + return (n_target, source) + +def copy_action_func(target, source, env): + assert( len(target) == len(source) ), "\ntarget: %s\nsource: %s" %(list(map(str, target)),list(map(str, source))) + + for t, s in zip(target, source): + if copyFunc(t.get_path(), s.get_path(), env): + return 1 + + return 0 + +def copy_action_str(target, source, env): + return env.subst_target_source(env['COPYSTR'], 0, target, source) + +copy_action = SCons.Action.Action( copy_action_func, copy_action_str ) + +def generate(env): + try: + env['BUILDERS']['CopyTo'] + env['BUILDERS']['CopyAs'] + except KeyError as e: + global copyToBuilder + if copyToBuilder is None: + copyToBuilder = SCons.Builder.Builder( + action = copy_action, + target_factory = env.fs.Dir, + source_factory = env.fs.Entry, + multi = 1, + emitter = [ copyto_emitter, ] ) + + global copyAsBuilder + if copyAsBuilder is None: + copyAsBuilder = SCons.Builder.Builder( + action = copy_action, + target_factory = env.fs.Entry, + source_factory = env.fs.Entry ) + + env['BUILDERS']['CopyTo'] = copyToBuilder + env['BUILDERS']['CopyAs'] = copyAsBuilder + + env['COPYSTR'] = 'Copy file(s): "$SOURCES" to "$TARGETS"' + +def exists(env): + return 1 + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/fortran.py b/scons/scons-local-4.5.1/SCons/Tool/fortran.py new file mode 100644 index 000000000..d21b93087 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/fortran.py @@ -0,0 +1,53 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for a generic Posix f77/f90 Fortran compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +from SCons.Tool.FortranCommon import add_all_to_env, add_fortran_to_env + +compilers = ['f95', 'f90', 'f77'] + + +def generate(env): + add_all_to_env(env) + add_fortran_to_env(env) + + if 'FORTRAN' not in env: + env['FORTRAN'] = env.Detect(compilers) or 'f77' + if 'SHFORTRAN' not in env: + env['SHFORTRAN'] = '$FORTRAN' + + +def exists(env): + return env.Detect(compilers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/g++.py b/scons/scons-local-4.5.1/SCons/Tool/g++.py new file mode 100644 index 000000000..88d88ca84 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/g++.py @@ -0,0 +1,45 @@ +"""SCons.Tool.g++ + +Tool-specific initialization for g++. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + + +#forward proxy to the preffered cxx version +from SCons.Tool.gxx import * + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/g77.py b/scons/scons-local-4.5.1/SCons/Tool/g77.py new file mode 100644 index 000000000..aea419a2f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/g77.py @@ -0,0 +1,71 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Tool-specific initialization for g77. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +import SCons.Util +from SCons.Tool.FortranCommon import add_all_to_env, add_f77_to_env + +compilers = ['g77', 'f77'] + + +def generate(env): + """Add Builders and construction variables for g77 to an Environment.""" + add_all_to_env(env) + add_f77_to_env(env) + + fcomp = env.Detect(compilers) or 'g77' + if env['PLATFORM'] in ['cygwin', 'win32']: + env['SHFORTRANFLAGS'] = SCons.Util.CLVar('$FORTRANFLAGS') + env['SHF77FLAGS'] = SCons.Util.CLVar('$F77FLAGS') + else: + env['SHFORTRANFLAGS'] = SCons.Util.CLVar('$FORTRANFLAGS -fPIC') + env['SHF77FLAGS'] = SCons.Util.CLVar('$F77FLAGS -fPIC') + + env['FORTRAN'] = fcomp + env['SHFORTRAN'] = '$FORTRAN' + + env['F77'] = fcomp + env['SHF77'] = '$F77' + + env['INCFORTRANPREFIX'] = "-I" + env['INCFORTRANSUFFIX'] = "" + + env['INCF77PREFIX'] = "-I" + env['INCF77SUFFIX'] = "" + + +def exists(env): + return env.Detect(compilers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/gas.py b/scons/scons-local-4.5.1/SCons/Tool/gas.py new file mode 100644 index 000000000..d01bd60cc --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/gas.py @@ -0,0 +1,56 @@ +"""SCons.Tool.gas + +Tool-specific initialization for as, the Gnu assembler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +try: + as_module = __import__('as', globals(), locals(), []) +except: + as_module = __import__(__package__+'.as', globals(), locals(), ['*']) + +assemblers = ['as', 'gas'] + +def generate(env): + """Add Builders and construction variables for as to an Environment.""" + as_module.generate(env) + + env['AS'] = env.Detect(assemblers) or 'as' + +def exists(env): + return env.Detect(assemblers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/gcc.py b/scons/scons-local-4.5.1/SCons/Tool/gcc.py new file mode 100644 index 000000000..1a25cb44d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/gcc.py @@ -0,0 +1,113 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons.Tool.gcc + +Tool-specific initialization for gcc. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +from . import cc +import re +import subprocess + +import SCons.Util + +compilers = ['gcc', 'cc'] + + +def generate(env): + """Add Builders and construction variables for gcc to an Environment.""" + + if 'CC' not in env: + env['CC'] = env.Detect(compilers) or compilers[0] + + cc.generate(env) + + if env['PLATFORM'] in ['cygwin', 'win32']: + env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS') + else: + env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS -fPIC') + # determine compiler version + version = detect_version(env, env['CC']) + if version: + env['CCVERSION'] = version + + env['CCDEPFLAGS'] = '-MMD -MF ${TARGET}.d' + env["NINJA_DEPFILE_PARSE_FORMAT"] = 'gcc' + + + +def exists(env): + # is executable, and is a GNU compiler (or accepts '--version' at least) + return detect_version(env, env.Detect(env.get('CC', compilers))) + + +def detect_version(env, cc): + """Return the version of the GNU compiler, or None if it is not a GNU compiler.""" + version = None + cc = env.subst(cc) + if not cc: + return version + + # -dumpversion was added in GCC 3.0. As long as we're supporting + # GCC versions older than that, we should use --version and a + # regular expression. + # pipe = SCons.Action._subproc(env, SCons.Util.CLVar(cc) + ['-dumpversion'], + with SCons.Action._subproc(env, SCons.Util.CLVar(cc) + ['--version'], + stdin='devnull', + stderr='devnull', + stdout=subprocess.PIPE) as pipe: + if pipe.wait() != 0: + return version + + # -dumpversion variant: + # line = pipe.stdout.read().strip() + # --version variant: + line = SCons.Util.to_str(pipe.stdout.readline()) + # Non-GNU compiler's output (like AIX xlc's) may exceed the stdout buffer: + # So continue with reading to let the child process actually terminate. + # We don't need to know the rest of the data, so don't bother decoding. + while pipe.stdout.readline(): + pass + + + # -dumpversion variant: + # if line: + # version = line + # --version variant: + match = re.search(r'[0-9]+(\.[0-9]+)+', line) + if match: + version = match.group(0) + + return version + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/gdc.py b/scons/scons-local-4.5.1/SCons/Tool/gdc.py new file mode 100644 index 000000000..0728c6fec --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/gdc.py @@ -0,0 +1,134 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons.Tool.gdc + +Tool-specific initialization for the GDC compiler. +(https://github.com/D-Programming-GDC/GDC) + +Developed by Russel Winder (russel@winder.org.uk) +2012-05-09 onwards + +Compiler variables: + DC - The name of the D compiler to use. Defaults to gdc. + DPATH - List of paths to search for import modules. + DVERSIONS - List of version tags to enable when compiling. + DDEBUG - List of debug tags to enable when compiling. + +Linker related variables: + LIBS - List of library files to link in. + DLINK - Name of the linker to use. Defaults to gdc. + DLINKFLAGS - List of linker flags. + +Lib tool variables: + DLIB - Name of the lib tool to use. Defaults to lib. + DLIBFLAGS - List of flags to pass to the lib tool. + LIBS - Same as for the linker. (libraries to pull into the .lib) +""" + +import SCons.Action +import SCons.Defaults +import SCons.Tool + +import SCons.Tool.DCommon as DCommon +import SCons.Tool.linkCommon + + +def generate(env): + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + static_obj.add_action('.d', SCons.Defaults.DAction) + shared_obj.add_action('.d', SCons.Defaults.ShDAction) + static_obj.add_emitter('.d', SCons.Defaults.StaticObjectEmitter) + shared_obj.add_emitter('.d', SCons.Defaults.SharedObjectEmitter) + + env['DC'] = env.Detect('gdc') or 'gdc' + env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -o $TARGET $SOURCES' + env['_DINCFLAGS'] = '${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, TARGET, SOURCE)}' + env['_DVERFLAGS'] = '${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)}' + env['_DDEBUGFLAGS'] = '${_concat(DDEBUGPREFIX, DDEBUG, DDEBUGSUFFIX, __env__)}' + env['_DFLAGS'] = '${_concat(DFLAGPREFIX, DFLAGS, DFLAGSUFFIX, __env__)}' + + env['SHDC'] = '$DC' + env['SHDCOM'] = '$SHDC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -fPIC -c -o $TARGET $SOURCES' + + env['DPATH'] = ['#/'] + env['DFLAGS'] = [] + env['DVERSIONS'] = [] + env['DDEBUG'] = [] + + if env['DC']: + DCommon.addDPATHToEnv(env, env['DC']) + + env['DINCPREFIX'] = '-I' + env['DINCSUFFIX'] = '' + env['DVERPREFIX'] = '-version=' + env['DVERSUFFIX'] = '' + env['DDEBUGPREFIX'] = '-debug=' + env['DDEBUGSUFFIX'] = '' + env['DFLAGPREFIX'] = '-' + env['DFLAGSUFFIX'] = '' + env['DFILESUFFIX'] = '.d' + + env['DLINK'] = '$DC' + env['DLINKFLAGS'] = SCons.Util.CLVar('') + env['DLINKCOM'] = '$DLINK -o $TARGET $DLINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' + + env['SHDLINK'] = '$DC' + env['SHDLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -shared-libphobos') + env['SHDLINKCOM'] = '$DLINK -o $TARGET $SHDLINKFLAGS $__SHDLIBVERSIONFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' + + env['DLIB'] = 'lib' if env['PLATFORM'] == 'win32' else 'ar cr' + env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {0}$TARGET $SOURCES $_DLINKLIBFLAGS'.format('-c ' if env['PLATFORM'] == 'win32' else '') + + env['_DLIBFLAGS'] = '${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)}' + + env['DLIBFLAGPREFIX'] = '-' + env['DLIBFLAGSUFFIX'] = '' + env['DLINKFLAGPREFIX'] = '-' + env['DLINKFLAGSUFFIX'] = '' + + # __RPATH is set to $_RPATH in the platform specification if that + # platform supports it. + env['RPATHPREFIX'] = '-Wl,-rpath=' + env['RPATHSUFFIX'] = '' + env['_RPATH'] = '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}' + + # Support for versioned libraries + env['_SHDLIBVERSIONFLAGS'] = '$SHDLIBVERSIONFLAGS -Wl,-soname=$_SHLIBSONAME' + + env['BUILDERS']['ProgramAllAtOnce'] = SCons.Builder.Builder( + action='$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -o $TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS', + emitter=DCommon.allAtOnceEmitter, + ) + + +def exists(env): + return env.Detect('gdc') + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/gettext_tool.py b/scons/scons-local-4.5.1/SCons/Tool/gettext_tool.py new file mode 100644 index 000000000..a1407b362 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/gettext_tool.py @@ -0,0 +1,69 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""gettext tool""" + +import sys +import os + +import SCons.Tool +import SCons.Warnings +from SCons.Errors import StopError +from SCons.Platform.mingw import MINGW_DEFAULT_PATHS +from SCons.Platform.cygwin import CYGWIN_DEFAULT_PATHS +from SCons.Tool.GettextCommon import ( + _msgfmt_exists, + _msginit_exists, + _msgmerge_exists, + tool_list, + _translate, + _xgettext_exists, +) + +def generate(env, **kw): + for t in tool_list(env['PLATFORM'], env): + if sys.platform == 'win32': + tool = SCons.Tool.find_program_path( + env, t, default_paths=MINGW_DEFAULT_PATHS + CYGWIN_DEFAULT_PATHS + ) + if tool: + tool_bin_dir = os.path.dirname(tool) + env.AppendENVPath('PATH', tool_bin_dir) + else: + SCons.Warnings.warn( + SCons.Warnings.SConsWarning, + t + ' tool requested, but binary not found in ENV PATH', + ) + env.Tool(t) + env.AddMethod(_translate, 'Translate') + +def exists(env): + try: + return ( + _xgettext_exists(env) + and _msginit_exists(env) + and _msgmerge_exists(env) + and _msgfmt_exists(env) + ) + except StopError: + return False diff --git a/scons/scons-local-4.5.1/SCons/Tool/gfortran.py b/scons/scons-local-4.5.1/SCons/Tool/gfortran.py new file mode 100644 index 000000000..f9c0a4535 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/gfortran.py @@ -0,0 +1,66 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Tool-specific initialization for gfortran, the GNU Fortran compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +from SCons.Util import CLVar + +from . import fortran + + +def generate(env): + """Add Builders and construction variables for gfortran.""" + fortran.generate(env) + + # fill in other dialects (FORTRAN dialect set by fortran.generate(), + # but don't overwrite if they have been set manually. + for dialect in ['F77', 'F90', 'F95', 'F03', 'F08']: + if dialect not in env: + env[f'{dialect}'] = 'gfortran' + if f'SH{dialect}' not in env: + env[f'SH{dialect}'] = f'${dialect}' + + # The fortran module always sets the shlib FLAGS, but does not + # include -fPIC, which is needed for the GNU tools. Rewrite if needed. + if env['PLATFORM'] not in ['cygwin', 'win32']: + env[f'SH{dialect}FLAGS'] = CLVar(f'${dialect}FLAGS -fPIC') + env[f'INC{dialect}PREFIX'] = "-I" + env[f'INC{dialect}SUFFIX'] = "" + + env['FORTRANMODDIRPREFIX'] = "-J" + + +def exists(env): + return env.Detect('gfortran') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/gnulink.py b/scons/scons-local-4.5.1/SCons/Tool/gnulink.py new file mode 100644 index 000000000..e8b668fa3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/gnulink.py @@ -0,0 +1,70 @@ +# +# MIT License +# +# Copyright The SCons Foundation +# +# 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. +# +"""SCons.Tool.gnulink + +Tool-specific initialization for the gnu linker. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +import SCons.Tool.linkCommon +import SCons.Util +import SCons.Tool + +from . import link + + +def generate(env): + """Add Builders and construction variables for gnulink to an Environment.""" + link.generate(env) + + if env['PLATFORM'] == 'hpux': + env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared -fPIC') + + # __RPATH is set to $_RPATH in the platform specification if that + # platform supports it. + env['RPATHPREFIX'] = '-Wl,-rpath=' + env['RPATHSUFFIX'] = '' + env['_RPATH'] = '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}' + + +def exists(env): + # TODO: sync with link.smart_link() to choose a linker + linkers = {'CXX': ['g++'], 'CC': ['gcc']} + alltools = [] + for langvar, linktools in linkers.items(): + if langvar in env: # use CC over CXX when user specified CC but not CXX + return SCons.Tool.FindTool(linktools, env) + alltools.extend(linktools) + return SCons.Tool.FindTool(alltools, env) # find CXX or CC + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/gs.py b/scons/scons-local-4.5.1/SCons/Tool/gs.py new file mode 100644 index 000000000..25359a858 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/gs.py @@ -0,0 +1,91 @@ +"""SCons.Tool.gs + +Tool-specific initialization for Ghostscript. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Action +import SCons.Builder +import SCons.Platform +import SCons.Util + +# Ghostscript goes by different names on different platforms... +platform = SCons.Platform.platform_default() + +if platform == 'os2': + gs = 'gsos2' +elif platform == 'win32': + gs = 'gswin32c' +else: + gs = 'gs' + +GhostscriptAction = None + +def generate(env): + """Add Builders and construction variables for Ghostscript to an + Environment.""" + global GhostscriptAction + # The following try-except block enables us to use the Tool + # in standalone mode (without the accompanying pdf.py), + # whenever we need an explicit call of gs via the Gs() + # Builder ... + try: + if GhostscriptAction is None: + GhostscriptAction = SCons.Action.Action('$GSCOM', '$GSCOMSTR') + + from SCons.Tool import pdf + pdf.generate(env) + + bld = env['BUILDERS']['PDF'] + bld.add_action('.ps', GhostscriptAction) + except ImportError as e: + pass + + gsbuilder = SCons.Builder.Builder(action = SCons.Action.Action('$GSCOM', '$GSCOMSTR')) + env['BUILDERS']['Gs'] = gsbuilder + + env['GS'] = gs + env['GSFLAGS'] = SCons.Util.CLVar('-dNOPAUSE -dBATCH -sDEVICE=pdfwrite') + env['GSCOM'] = '$GS $GSFLAGS -sOutputFile=$TARGET $SOURCES' + + +def exists(env): + if 'PS2PDF' in env: + return env.Detect(env['PS2PDF']) + else: + return env.Detect(gs) or SCons.Util.WhereIs(gs) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/gxx.py b/scons/scons-local-4.5.1/SCons/Tool/gxx.py new file mode 100644 index 000000000..1272997be --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/gxx.py @@ -0,0 +1,80 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons.Tool.g++ + +Tool-specific initialization for g++. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + + +import SCons.Tool +import SCons.Util + +from . import gcc +from . import cxx + +compilers = ['g++'] + + +def generate(env): + """Add Builders and construction variables for g++ to an Environment.""" + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + if 'CXX' not in env: + env['CXX'] = env.Detect(compilers) or compilers[0] + + cxx.generate(env) + + # platform specific settings + if env['PLATFORM'] == 'aix': + env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -mminimal-toc') + env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1 + env['SHOBJSUFFIX'] = '$OBJSUFFIX' + elif env['PLATFORM'] == 'hpux': + env['SHOBJSUFFIX'] = '.pic.o' + elif env['PLATFORM'] == 'sunos': + env['SHOBJSUFFIX'] = '.pic.o' + # determine compiler version + version = gcc.detect_version(env, env['CXX']) + if version: + env['CXXVERSION'] = version + + env['CCDEPFLAGS'] = '-MMD -MF ${TARGET}.d' + env["NINJA_DEPFILE_PARSE_FORMAT"] = 'gcc' + + + +def exists(env): + # is executable, and is a GNU compiler (or accepts '--version' at least) + return gcc.detect_version(env, env.Detect(env.get('CXX', compilers))) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/hpc++.py b/scons/scons-local-4.5.1/SCons/Tool/hpc++.py new file mode 100644 index 000000000..9631277b4 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/hpc++.py @@ -0,0 +1,45 @@ +"""SCons.Tool.hpc++ + +Tool-specific initialization for c++ on HP/UX. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + + +#forward proxy to the preffered cxx version +from SCons.Tool.hpcxx import * + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/hpcc.py b/scons/scons-local-4.5.1/SCons/Tool/hpcc.py new file mode 100644 index 000000000..51d2e3802 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/hpcc.py @@ -0,0 +1,53 @@ +"""SCons.Tool.hpcc + +Tool-specific initialization for HP aCC and cc. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Util + +from . import cc + +def generate(env): + """Add Builders and construction variables for aCC & cc to an Environment.""" + cc.generate(env) + + env['CXX'] = 'aCC' + env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS +Z') + +def exists(env): + return env.Detect('aCC') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/hpcxx.py b/scons/scons-local-4.5.1/SCons/Tool/hpcxx.py new file mode 100644 index 000000000..7113fa222 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/hpcxx.py @@ -0,0 +1,88 @@ +"""SCons.Tool.hpc++ + +Tool-specific initialization for c++ on HP/UX. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os.path + +import SCons.Util + +import SCons.Tool.cxx +cplusplus = SCons.Tool.cxx +#cplusplus = __import__('cxx', globals(), locals(), []) + + +acc = None + +# search for the acc compiler and linker front end + +try: + dirs = os.listdir('/opt') +except (IOError, OSError): + # Not being able to read the directory because it doesn't exist + # (IOError) or isn't readable (OSError) is okay. + dirs = [] + +for dir in dirs: + cc = '/opt/' + dir + '/bin/aCC' + if os.path.exists(cc): + acc = cc + break + + +def generate(env): + """Add Builders and construction variables for g++ to an Environment.""" + cplusplus.generate(env) + + if acc: + env['CXX'] = acc or 'aCC' + env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS +Z') + # determine version of aCC + with os.popen(acc + ' -V 2>&1') as p: + line = p.readline().rstrip() + if line.find('aCC: HP ANSI C++') == 0: + env['CXXVERSION'] = line.split()[-1] + + if env['PLATFORM'] == 'cygwin': + env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS') + else: + env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS +Z') + +def exists(env): + return acc + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/hplink.py b/scons/scons-local-4.5.1/SCons/Tool/hplink.py new file mode 100644 index 000000000..ba182f1d3 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/hplink.py @@ -0,0 +1,72 @@ +"""SCons.Tool.hplink + +Tool-specific initialization for the HP linker. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# 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. +# + +import os.path + +import SCons.Util + +from . import link + +ccLinker = None + +# search for the acc compiler and linker front end + +try: + dirs = os.listdir('/opt') +except (IOError, OSError): + # Not being able to read the directory because it doesn't exist + # (IOError) or isn't readable (OSError) is okay. + dirs = [] + +for dir in dirs: + linker = '/opt/' + dir + '/bin/aCC' + if os.path.exists(linker): + ccLinker = linker + break + +def generate(env): + """ + Add Builders and construction variables for Visual Age linker to + an Environment. + """ + link.generate(env) + + env['LINKFLAGS'] = SCons.Util.CLVar('-Wl,+s -Wl,+vnocompatwarnings') + env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -b') + env['SHLIBSUFFIX'] = '.sl' + +def exists(env): + return ccLinker + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/icc.py b/scons/scons-local-4.5.1/SCons/Tool/icc.py new file mode 100644 index 000000000..adf24e9ab --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/icc.py @@ -0,0 +1,59 @@ +"""SCons.Tool.icc + +Tool-specific initialization for the OS/2 icc compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +from . import cc + +def generate(env): + """Add Builders and construction variables for the OS/2 to an Environment.""" + cc.generate(env) + + env['CC'] = 'icc' + env['CCCOM'] = '$CC $CFLAGS $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Fo$TARGET' + env['CXXCOM'] = '$CXX $CXXFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Fo$TARGET' + env['CPPDEFPREFIX'] = '/D' + env['CPPDEFSUFFIX'] = '' + env['INCPREFIX'] = '/I' + env['INCSUFFIX'] = '' + env['CFILESUFFIX'] = '.c' + env['CXXFILESUFFIX'] = '.cc' + +def exists(env): + return env.Detect('icc') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/icl.py b/scons/scons-local-4.5.1/SCons/Tool/icl.py new file mode 100644 index 000000000..421a388aa --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/icl.py @@ -0,0 +1,52 @@ +"""SCons.Tool.icl + +Tool-specific initialization for the Intel C/C++ compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Tool.intelc + +# This has been completely superseded by intelc.py, which can +# handle both Windows and Linux versions. + +def generate(*args, **kw): + """Add Builders and construction variables for icl to an Environment.""" + return SCons.Tool.intelc.generate(*args, **kw) + +def exists(*args, **kw): + return SCons.Tool.intelc.exists(*args, **kw) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/ifl.py b/scons/scons-local-4.5.1/SCons/Tool/ifl.py new file mode 100644 index 000000000..574695072 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ifl.py @@ -0,0 +1,67 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for the Intel Fortran compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +import SCons.Defaults +from SCons.Scanner.Fortran import FortranScan +from .FortranCommon import add_all_to_env + +def generate(env): + """Add Builders and construction variables for ifl to an Environment.""" + fscan = FortranScan("FORTRANPATH") + SCons.Tool.SourceFileScanner.add_scanner('.i', fscan) + SCons.Tool.SourceFileScanner.add_scanner('.i90', fscan) + + if 'FORTRANFILESUFFIXES' not in env: + env['FORTRANFILESUFFIXES'] = ['.i'] + else: + env['FORTRANFILESUFFIXES'].append('.i') + + if 'F90FILESUFFIXES' not in env: + env['F90FILESUFFIXES'] = ['.i90'] + else: + env['F90FILESUFFIXES'].append('.i90') + + add_all_to_env(env) + + env['FORTRAN'] = 'ifl' + env['SHFORTRAN'] = '$FORTRAN' + env['FORTRANCOM'] = '$FORTRAN $FORTRANFLAGS $_FORTRANINCFLAGS /c $SOURCES /Fo$TARGET' + env['FORTRANPPCOM'] = '$FORTRAN $FORTRANFLAGS $CPPFLAGS $_CPPDEFFLAGS $_FORTRANINCFLAGS /c $SOURCES /Fo$TARGET' + env['SHFORTRANCOM'] = '$SHFORTRAN $SHFORTRANFLAGS $_FORTRANINCFLAGS /c $SOURCES /Fo$TARGET' + env['SHFORTRANPPCOM'] = '$SHFORTRAN $SHFORTRANFLAGS $CPPFLAGS $_CPPDEFFLAGS $_FORTRANINCFLAGS /c $SOURCES /Fo$TARGET' + +def exists(env): + return env.Detect('ifl') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/ifort.py b/scons/scons-local-4.5.1/SCons/Tool/ifort.py new file mode 100644 index 000000000..bf39b7f49 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ifort.py @@ -0,0 +1,86 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Tool-specific initialization for newer versions of the Intel Fortran Compiler +for Linux/Windows (and possibly Mac OS X). + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +import SCons.Defaults +from SCons.Scanner.Fortran import FortranScan +from .FortranCommon import add_all_to_env + + +def generate(env): + """Add Builders and construction variables for ifort to an Environment.""" + # ifort supports Fortran 90 and Fortran 95 + # Additionally, ifort recognizes more file extensions. + fscan = FortranScan("FORTRANPATH") + SCons.Tool.SourceFileScanner.add_scanner('.i', fscan) + SCons.Tool.SourceFileScanner.add_scanner('.i90', fscan) + + if 'FORTRANFILESUFFIXES' not in env: + env['FORTRANFILESUFFIXES'] = ['.i'] + else: + env['FORTRANFILESUFFIXES'].append('.i') + + if 'F90FILESUFFIXES' not in env: + env['F90FILESUFFIXES'] = ['.i90'] + else: + env['F90FILESUFFIXES'].append('.i90') + + add_all_to_env(env) + + fc = 'ifort' + + for dialect in ['F77', 'F90', 'FORTRAN', 'F95']: + env[f'{dialect}'] = fc + env[f'SH{dialect}'] = f'${dialect}' + if env['PLATFORM'] == 'posix': + env[f'SH{dialect}FLAGS'] = SCons.Util.CLVar(f'${dialect}FLAGS -fPIC') + + if env['PLATFORM'] == 'win32': + # On Windows, the ifort compiler specifies the object on the + # command line with -object:, not -o. Massage the necessary + # command-line construction variables. + for dialect in ['F77', 'F90', 'FORTRAN', 'F95']: + for var in [f'{dialect}COM', f'{dialect}PPCOM', + f'SH{dialect}COM', f'SH{dialect}PPCOM']: + env[var] = env[var].replace('-o $TARGET', '-object:$TARGET') + env['FORTRANMODDIRPREFIX'] = "/module:" + else: + env['FORTRANMODDIRPREFIX'] = "-module " + + +def exists(env): + return env.Detect('ifort') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/ilink.py b/scons/scons-local-4.5.1/SCons/Tool/ilink.py new file mode 100644 index 000000000..4112825b8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ilink.py @@ -0,0 +1,55 @@ +"""SCons.Tool.ilink + +Tool-specific initialization for the OS/2 ilink linker. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# 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. +# + +import SCons.Defaults +import SCons.Tool +import SCons.Util + +def generate(env): + """Add Builders and construction variables for ilink to an Environment.""" + SCons.Tool.createProgBuilder(env) + + env['LINK'] = 'ilink' + env['LINKFLAGS'] = SCons.Util.CLVar('') + env['LINKCOM'] = '$LINK $LINKFLAGS /O:$TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' + env['LIBDIRPREFIX']='/LIBPATH:' + env['LIBDIRSUFFIX']='' + env['LIBLINKPREFIX']='' + env['LIBLINKSUFFIX']='$LIBSUFFIX' + +def exists(env): + return env.Detect('ilink') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/ilink32.py b/scons/scons-local-4.5.1/SCons/Tool/ilink32.py new file mode 100644 index 000000000..1452fd555 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ilink32.py @@ -0,0 +1,60 @@ +"""SCons.Tool.ilink32 + +XXX + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Tool +import SCons.Tool.bcc32 +import SCons.Util + +def generate(env): + """Add Builders and construction variables for Borland ilink to an + Environment.""" + SCons.Tool.createSharedLibBuilder(env) + SCons.Tool.createProgBuilder(env) + + env['LINK'] = '$CC' + env['LINKFLAGS'] = SCons.Util.CLVar('') + env['LINKCOM'] = '$LINK -q $LINKFLAGS -e$TARGET $SOURCES $LIBS' + env['LIBDIRPREFIX']='' + env['LIBDIRSUFFIX']='' + env['LIBLINKPREFIX']='' + env['LIBLINKSUFFIX']='$LIBSUFFIX' + + +def exists(env): + # Uses bcc32 to do linking as it generally knows where the standard + # LIBS are and set up the linking correctly + return SCons.Tool.bcc32.findIt('bcc32', env) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/install.py b/scons/scons-local-4.5.1/SCons/Tool/install.py new file mode 100644 index 000000000..d6870c398 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/install.py @@ -0,0 +1,510 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" Tool-specific initialization for the install tool. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +import os +import stat +from shutil import copy2, copystat + +import SCons.Action +import SCons.Tool +import SCons.Util +from SCons.Subst import SUBST_RAW +from SCons.Tool.linkCommon import ( + StringizeLibSymlinks, + CreateLibSymlinks, + EmitLibSymlinks, +) + +# We keep track of *all* installed files. +_INSTALLED_FILES = [] +_UNIQUE_INSTALLED_FILES = None + +class CopytreeError(OSError): + pass + + +def scons_copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, + ignore_dangling_symlinks=False, dirs_exist_ok=False): + """Recursively copy a directory tree, SCons version. + + This is a modified copy of the Python 3.7 shutil.copytree function. + SCons update: dirs_exist_ok dictates whether to raise an + exception in case dst or any missing parent directory already + exists. Implementation depends on os.makedirs having a similar + flag, which it has since Python 3.2. This version also raises an + SCons-defined exception rather than the one defined locally to shtuil. + This version uses a change from Python 3.8. + TODO: we can remove this forked copy once the minimum Py version is 3.8. + + If exception(s) occur, an Error is raised with a list of reasons. + + If the optional symlinks flag is true, symbolic links in the + source tree result in symbolic links in the destination tree; if + it is false, the contents of the files pointed to by symbolic + links are copied. If the file pointed by the symlink doesn't + exist, an exception will be added in the list of errors raised in + an Error exception at the end of the copy process. + + You can set the optional ignore_dangling_symlinks flag to true if you + want to silence this exception. Notice that this has no effect on + platforms that don't support os.symlink. + + The optional ignore argument is a callable. If given, it + is called with the `src` parameter, which is the directory + being visited by copytree(), and `names` which is the list of + `src` contents, as returned by os.listdir(): + + callable(src, names) -> ignored_names + + Since copytree() is called recursively, the callable will be + called once for each directory that is copied. It returns a + list of names relative to the `src` directory that should + not be copied. + + The optional copy_function argument is a callable that will be used + to copy each file. It will be called with the source path and the + destination path as arguments. By default, copy2() is used, but any + function that supports the same signature (like copy()) can be used. + + """ + names = os.listdir(src) + if ignore is not None: + ignored_names = ignore(src, names) + else: + ignored_names = set() + + os.makedirs(dst, exist_ok=dirs_exist_ok) + errors = [] + for name in names: + if name in ignored_names: + continue + srcname = os.path.join(src, name) + dstname = os.path.join(dst, name) + try: + if os.path.islink(srcname): + linkto = os.readlink(srcname) + if symlinks: + # We can't just leave it to `copy_function` because legacy + # code with a custom `copy_function` may rely on copytree + # doing the right thing. + os.symlink(linkto, dstname) + copystat(srcname, dstname, follow_symlinks=not symlinks) + else: + # ignore dangling symlink if the flag is on + if not os.path.exists(linkto) and ignore_dangling_symlinks: + continue + # otherwise let the copy occurs. copy2 will raise an error + if os.path.isdir(srcname): + scons_copytree(srcname, dstname, symlinks=symlinks, + ignore=ignore, copy_function=copy_function, + ignore_dangling_symlinks=ignore_dangling_symlinks, + dirs_exist_ok=dirs_exist_ok) + else: + copy_function(srcname, dstname) + elif os.path.isdir(srcname): + scons_copytree(srcname, dstname, symlinks=symlinks, + ignore=ignore, copy_function=copy_function, + ignore_dangling_symlinks=ignore_dangling_symlinks, + dirs_exist_ok=dirs_exist_ok) + else: + # Will raise a SpecialFileError for unsupported file types + copy_function(srcname, dstname) + # catch the Error from the recursive copytree so that we can + # continue with other files + except CopytreeError as err: # SCons change + errors.extend(err.args[0]) + except OSError as why: + errors.append((srcname, dstname, str(why))) + try: + copystat(src, dst) + except OSError as why: + # Copying file access times may fail on Windows + if getattr(why, 'winerror', None) is None: + errors.append((src, dst, str(why))) + if errors: + raise CopytreeError(errors) # SCons change + return dst + +# +# Functions doing the actual work of the Install Builder. +# +def copyFunc(dest, source, env) -> int: + """Install a source file or directory into a destination by copying. + + Mode/permissions bits will be copied as well, except that the target + will be made writable. + + Returns: + POSIX-style error code - 0 for success, non-zero for fail + """ + if os.path.isdir(source): + if os.path.exists(dest): + if not os.path.isdir(dest): + raise SCons.Errors.UserError("cannot overwrite non-directory `%s' with a directory `%s'" % (str(dest), str(source))) + else: + parent = os.path.split(dest)[0] + if not os.path.exists(parent): + os.makedirs(parent) + scons_copytree(source, dest, dirs_exist_ok=True) + else: + copy2(source, dest) + st = os.stat(source) + os.chmod(dest, stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE) + + return 0 + +# +# Functions doing the actual work of the InstallVersionedLib Builder. +# +def copyFuncVersionedLib(dest, source, env) -> int: + """Install a versioned library into a destination by copying. + + Any required symbolic links for other library names are created. + + Mode/permissions bits will be copied as well, except that the target + will be made writable. + + Returns: + POSIX-style error code - 0 for success, non-zero for fail + """ + if os.path.isdir(source): + raise SCons.Errors.UserError("cannot install directory `%s' as a version library" % str(source) ) + else: + # remove the link if it is already there + try: + os.remove(dest) + except: + pass + copy2(source, dest) + st = os.stat(source) + os.chmod(dest, stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE) + installShlibLinks(dest, source, env) + + return 0 + +def listShlibLinksToInstall(dest, source, env): + install_links = [] + source = env.arg2nodes(source) + dest = env.fs.File(dest) + install_dir = dest.get_dir() + for src in source: + symlinks = getattr(getattr(src, 'attributes', None), 'shliblinks', None) + if symlinks: + for link, linktgt in symlinks: + link_base = os.path.basename(link.get_path()) + linktgt_base = os.path.basename(linktgt.get_path()) + install_link = env.fs.File(link_base, install_dir) + install_linktgt = env.fs.File(linktgt_base, install_dir) + install_links.append((install_link, install_linktgt)) + return install_links + +def installShlibLinks(dest, source, env): + """If we are installing a versioned shared library create the required links.""" + Verbose = False + symlinks = listShlibLinksToInstall(dest, source, env) + if Verbose: + print('installShlibLinks: symlinks={!r}'.format(StringizeLibSymlinks(symlinks))) + if symlinks: + CreateLibSymlinks(env, symlinks) + return + +def installFunc(target, source, env) -> int: + """Install a source file into a target. + + Uses the function specified in the INSTALL construction variable. + + Returns: + POSIX-style error code - 0 for success, non-zero for fail + """ + + try: + install = env['INSTALL'] + except KeyError: + raise SCons.Errors.UserError('Missing INSTALL construction variable.') + + assert len(target) == len(source), ( + "Installing source %s into target %s: " + "target and source lists must have same length." + % (list(map(str, source)), list(map(str, target))) + ) + for t, s in zip(target, source): + if install(t.get_path(), s.get_path(), env): + return 1 + + return 0 + +def installFuncVersionedLib(target, source, env) -> int: + """Install a versioned library into a target. + + Uses the function specified in the INSTALL construction variable. + + Returns: + POSIX-style error code - 0 for success, non-zero for fail + """ + + try: + install = env['INSTALLVERSIONEDLIB'] + except KeyError: + raise SCons.Errors.UserError( + 'Missing INSTALLVERSIONEDLIB construction variable.' + ) + + assert len(target) == len(source), ( + "Installing source %s into target %s: " + "target and source lists must have same length." + % (list(map(str, source)), list(map(str, target))) + ) + for t, s in zip(target, source): + if hasattr(t.attributes, 'shlibname'): + tpath = os.path.join(t.get_dir(), t.attributes.shlibname) + else: + tpath = t.get_path() + if install(tpath, s.get_path(), env): + return 1 + + return 0 + +def stringFunc(target, source, env): + installstr = env.get('INSTALLSTR') + if installstr: + return env.subst_target_source(installstr, SUBST_RAW, target, source) + target = str(target[0]) + source = str(source[0]) + if os.path.isdir(source): + type = 'directory' + else: + type = 'file' + return 'Install %s: "%s" as "%s"' % (type, source, target) + +# +# Emitter functions +# +def add_targets_to_INSTALLED_FILES(target, source, env): + """ An emitter that adds all target files to the list stored in the + _INSTALLED_FILES global variable. This way all installed files of one + scons call will be collected. + """ + global _INSTALLED_FILES, _UNIQUE_INSTALLED_FILES + _INSTALLED_FILES.extend(target) + + _UNIQUE_INSTALLED_FILES = None + return (target, source) + +def add_versioned_targets_to_INSTALLED_FILES(target, source, env): + """ An emitter that adds all target files to the list stored in the + _INSTALLED_FILES global variable. This way all installed files of one + scons call will be collected. + """ + global _INSTALLED_FILES, _UNIQUE_INSTALLED_FILES + Verbose = False + _INSTALLED_FILES.extend(target) + if Verbose: + print("add_versioned_targets_to_INSTALLED_FILES: target={!r}".format(list(map(str, target)))) + symlinks = listShlibLinksToInstall(target[0], source, env) + if symlinks: + EmitLibSymlinks(env, symlinks, target[0]) + _UNIQUE_INSTALLED_FILES = None + return (target, source) + +class DESTDIR_factory: + """ A node factory, where all files will be relative to the dir supplied + in the constructor. + """ + def __init__(self, env, dir): + self.env = env + self.dir = env.arg2nodes( dir, env.fs.Dir )[0] + + def Entry(self, name): + name = SCons.Util.make_path_relative(name) + return self.dir.Entry(name) + + def Dir(self, name): + name = SCons.Util.make_path_relative(name) + return self.dir.Dir(name) + +# +# The Builder Definition +# +install_action = SCons.Action.Action(installFunc, stringFunc) +installas_action = SCons.Action.Action(installFunc, stringFunc) +installVerLib_action = SCons.Action.Action(installFuncVersionedLib, stringFunc) + +BaseInstallBuilder = None + +def InstallBuilderWrapper(env, target=None, source=None, dir=None, **kw): + if target and dir: + import SCons.Errors + raise SCons.Errors.UserError("Both target and dir defined for Install(), only one may be defined.") + if not dir: + dir=target + + import SCons.Script + install_sandbox = SCons.Script.GetOption('install_sandbox') + if install_sandbox: + target_factory = DESTDIR_factory(env, install_sandbox) + else: + target_factory = env.fs + + try: + dnodes = env.arg2nodes(dir, target_factory.Dir) + except TypeError: + raise SCons.Errors.UserError("Target `%s' of Install() is a file, but should be a directory. Perhaps you have the Install() arguments backwards?" % str(dir)) + sources = env.arg2nodes(source, env.fs.Entry) + tgt = [] + for dnode in dnodes: + for src in sources: + # Prepend './' so the lookup doesn't interpret an initial + # '#' on the file name portion as meaning the Node should + # be relative to the top-level SConstruct directory. + target = env.fs.Entry('.'+os.sep+src.name, dnode) + tgt.extend(BaseInstallBuilder(env, target, src, **kw)) + return tgt + + +def InstallAsBuilderWrapper(env, target=None, source=None, **kw): + result = [] + for src, tgt in map(lambda x, y: (x, y), source, target): + result.extend(BaseInstallBuilder(env, tgt, src, **kw)) + return result + +BaseVersionedInstallBuilder = None + + +def InstallVersionedBuilderWrapper(env, target=None, source=None, dir=None, **kw): + if target and dir: + import SCons.Errors + raise SCons.Errors.UserError("Both target and dir defined for Install(), only one may be defined.") + if not dir: + dir=target + + import SCons.Script + install_sandbox = SCons.Script.GetOption('install_sandbox') + if install_sandbox: + target_factory = DESTDIR_factory(env, install_sandbox) + else: + target_factory = env.fs + + try: + dnodes = env.arg2nodes(dir, target_factory.Dir) + except TypeError: + raise SCons.Errors.UserError("Target `%s' of Install() is a file, but should be a directory. Perhaps you have the Install() arguments backwards?" % str(dir)) + sources = env.arg2nodes(source, env.fs.Entry) + tgt = [] + for dnode in dnodes: + for src in sources: + # Prepend './' so the lookup doesn't interpret an initial + # '#' on the file name portion as meaning the Node should + # be relative to the top-level SConstruct directory. + target = env.fs.Entry('.'+os.sep+src.name, dnode) + tgt.extend(BaseVersionedInstallBuilder(env, target, src, **kw)) + return tgt + +added = None + + +def generate(env): + + from SCons.Script import AddOption, GetOption + global added + if not added: + added = 1 + AddOption('--install-sandbox', + dest='install_sandbox', + type="string", + action="store", + help='A directory under which all installed files will be placed.') + + global BaseInstallBuilder + if BaseInstallBuilder is None: + install_sandbox = GetOption('install_sandbox') + if install_sandbox: + target_factory = DESTDIR_factory(env, install_sandbox) + else: + target_factory = env.fs + + BaseInstallBuilder = SCons.Builder.Builder( + action = install_action, + target_factory = target_factory.Entry, + source_factory = env.fs.Entry, + multi = True, + emitter = [ add_targets_to_INSTALLED_FILES, ], + source_scanner = SCons.Scanner.ScannerBase({}, name='Install', recursive=False), + name = 'InstallBuilder') + + global BaseVersionedInstallBuilder + if BaseVersionedInstallBuilder is None: + install_sandbox = GetOption('install_sandbox') + if install_sandbox: + target_factory = DESTDIR_factory(env, install_sandbox) + else: + target_factory = env.fs + + BaseVersionedInstallBuilder = SCons.Builder.Builder( + action = installVerLib_action, + target_factory = target_factory.Entry, + source_factory = env.fs.Entry, + multi = True, + emitter = [ add_versioned_targets_to_INSTALLED_FILES, ], + name = 'InstallVersionedBuilder') + + env['BUILDERS']['_InternalInstall'] = InstallBuilderWrapper + env['BUILDERS']['_InternalInstallAs'] = InstallAsBuilderWrapper + env['BUILDERS']['_InternalInstallVersionedLib'] = InstallVersionedBuilderWrapper + + # We'd like to initialize this doing something like the following, + # but there isn't yet support for a ${SOURCE.type} expansion that + # will print "file" or "directory" depending on what's being + # installed. For now we punt by not initializing it, and letting + # the stringFunc() that we put in the action fall back to the + # hand-crafted default string if it's not set. + # + #try: + # env['INSTALLSTR'] + #except KeyError: + # env['INSTALLSTR'] = 'Install ${SOURCE.type}: "$SOURCES" as "$TARGETS"' + + try: + env['INSTALL'] + except KeyError: + env['INSTALL'] = copyFunc + + try: + env['INSTALLVERSIONEDLIB'] + except KeyError: + env['INSTALLVERSIONEDLIB'] = copyFuncVersionedLib + +def exists(env): + return 1 + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/intelc.py b/scons/scons-local-4.5.1/SCons/Tool/intelc.py new file mode 100644 index 000000000..ac6fa6077 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/intelc.py @@ -0,0 +1,617 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for the Intel C/C++ compiler. + +Supports Linux and Windows compilers, v7 and up. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +import glob +import math +import os.path +import re +import sys + +is_windows = sys.platform == 'win32' +is_win64 = is_windows and (os.environ['PROCESSOR_ARCHITECTURE'] == 'AMD64' or + ('PROCESSOR_ARCHITEW6432' in os.environ and + os.environ['PROCESSOR_ARCHITEW6432'] == 'AMD64')) +is_linux = sys.platform.startswith('linux') +is_mac = sys.platform == 'darwin' + +if is_windows: + import SCons.Tool.msvc +elif is_linux: + import SCons.Tool.gcc +elif is_mac: + import SCons.Tool.gcc +import SCons.Util +import SCons.Warnings + +# Exceptions for this tool +class IntelCError(SCons.Errors.InternalError): + pass +class MissingRegistryError(IntelCError): # missing registry entry + pass +class MissingDirError(IntelCError): # dir not found + pass +class NoRegistryModuleError(IntelCError): # can't read registry at all + pass + +def linux_ver_normalize(vstr): + """Normalize a Linux compiler version number. + Intel changed from "80" to "9.0" in 2005, so we assume if the number + is greater than 60 it's an old-style number and otherwise new-style. + Always returns an old-style float like 80 or 90 for compatibility with Windows. + Shades of Y2K!""" + # Check for version number like 9.1.026: return 91.026 + # XXX needs to be updated for 2011+ versions (like 2011.11.344 which is compiler v12.1.5) + m = re.match(r'([0-9]+)\.([0-9]+)\.([0-9]+)', vstr) + if m: + vmaj,vmin,build = m.groups() + return float(vmaj) * 10. + float(vmin) + float(build) / 1000. + else: + f = float(vstr) + if is_windows: + return f + else: + if f < 60: return f * 10.0 + else: return f + +def check_abi(abi): + """Check for valid ABI (application binary interface) name, + and map into canonical one""" + if not abi: + return None + abi = abi.lower() + # valid_abis maps input name to canonical name + if is_windows: + valid_abis = {'ia32' : 'ia32', + 'x86' : 'ia32', + 'ia64' : 'ia64', + 'em64t' : 'em64t', + 'amd64' : 'em64t'} + if is_linux: + valid_abis = {'ia32' : 'ia32', + 'x86' : 'ia32', + 'x86_64' : 'x86_64', + 'em64t' : 'x86_64', + 'amd64' : 'x86_64'} + if is_mac: + valid_abis = {'ia32' : 'ia32', + 'x86' : 'ia32', + 'x86_64' : 'x86_64', + 'em64t' : 'x86_64'} + try: + abi = valid_abis[abi] + except KeyError: + raise SCons.Errors.UserError("Intel compiler: Invalid ABI %s, valid values are %s"% \ + (abi, list(valid_abis.keys()))) + return abi + +def get_version_from_list(v, vlist): + """See if we can match v (string) in vlist (list of strings) + Linux has to match in a fuzzy way.""" + if is_windows: + # Simple case, just find it in the list + if v in vlist: return v + else: return None + else: + # Fuzzy match: normalize version number first, but still return + # original non-normalized form. + fuzz = 0.001 + for vi in vlist: + if math.fabs(linux_ver_normalize(vi) - linux_ver_normalize(v)) < fuzz: + return vi + # Not found + return None + +def get_intel_registry_value(valuename, version=None, abi=None): + """ + Return a value from the Intel compiler registry tree. (Windows only) + """ + # Open the key: + if is_win64: + K = 'Software\\Wow6432Node\\Intel\\Compilers\\C++\\' + version + '\\'+abi.upper() + else: + K = 'Software\\Intel\\Compilers\\C++\\' + version + '\\'+abi.upper() + try: + k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, K) + except SCons.Util.RegError: + # For version 13 and later, check UUID subkeys for valuename + if is_win64: + K = 'Software\\Wow6432Node\\Intel\\Suites\\' + version + "\\Defaults\\C++\\" + abi.upper() + else: + K = 'Software\\Intel\\Suites\\' + version + "\\Defaults\\C++\\" + abi.upper() + try: + k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, K) + uuid = SCons.Util.RegQueryValueEx(k, 'SubKey')[0] + + if is_win64: + K = 'Software\\Wow6432Node\\Intel\\Suites\\' + version + "\\" + uuid + "\\C++" + else: + K = 'Software\\Intel\\Suites\\' + version + "\\" + uuid + "\\C++" + k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, K) + + try: + v = SCons.Util.RegQueryValueEx(k, valuename)[0] + return v # or v.encode('iso-8859-1', 'replace') to remove unicode? + except SCons.Util.RegError: + if abi.upper() == 'EM64T': + abi = 'em64t_native' + if is_win64: + K = 'Software\\Wow6432Node\\Intel\\Suites\\' + version + "\\" + uuid + "\\C++\\" + abi.upper() + else: + K = 'Software\\Intel\\Suites\\' + version + "\\" + uuid + "\\C++\\" + abi.upper() + k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, K) + + try: + v = SCons.Util.RegQueryValueEx(k, valuename)[0] + return v # or v.encode('iso-8859-1', 'replace') to remove unicode? + except SCons.Util.RegError: + raise MissingRegistryError("%s was not found in the registry, for Intel compiler version %s, abi='%s'"%(K, version,abi)) + + except (SCons.Util.RegError, OSError): + raise MissingRegistryError("%s was not found in the registry, for Intel compiler version %s, abi='%s'"%(K, version,abi)) + + # Get the value: + try: + v = SCons.Util.RegQueryValueEx(k, valuename)[0] + return v # or v.encode('iso-8859-1', 'replace') to remove unicode? + except SCons.Util.RegError: + raise MissingRegistryError("%s\\%s was not found in the registry."%(K, valuename)) + + +def get_all_compiler_versions(): + """Returns a sorted list of strings, like "70" or "80" or "9.0" + with most recent compiler version first. + """ + versions=[] + if is_windows: + if is_win64: + keyname = 'Software\\WoW6432Node\\Intel\\Compilers\\C++' + else: + keyname = 'Software\\Intel\\Compilers\\C++' + try: + k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, + keyname) + except OSError: + # For version 13 or later, check for default instance UUID + if is_win64: + keyname = 'Software\\WoW6432Node\\Intel\\Suites' + else: + keyname = 'Software\\Intel\\Suites' + try: + k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, + keyname) + except OSError: + return [] + i = 0 + versions = [] + try: + while i < 100: + subkey = SCons.Util.RegEnumKey(k, i) # raises SConsEnvironmentError + # Check that this refers to an existing dir. + # This is not 100% perfect but should catch common + # installation issues like when the compiler was installed + # and then the install directory deleted or moved (rather + # than uninstalling properly), so the registry values + # are still there. + if subkey == 'Defaults': # Ignore default instances + i = i + 1 + continue + ok = False + for try_abi in ('IA32', 'IA32e', 'IA64', 'EM64T'): + try: + d = get_intel_registry_value('ProductDir', subkey, try_abi) + except MissingRegistryError: + continue # not found in reg, keep going + if os.path.exists(d): ok = True + if ok: + versions.append(subkey) + else: + try: + # Registry points to nonexistent dir. Ignore this + # version. + value = get_intel_registry_value('ProductDir', subkey, 'IA32') + except MissingRegistryError as e: + + # Registry key is left dangling (potentially + # after uninstalling). + + print("scons: *** Ignoring the registry key for the Intel compiler version %s.\n" \ + "scons: *** It seems that the compiler was uninstalled and that the registry\n" \ + "scons: *** was not cleaned up properly.\n" % subkey) + else: + print("scons: *** Ignoring "+str(value)) + + i = i + 1 + except EnvironmentError: + # no more subkeys + pass + elif is_linux or is_mac: + for d in glob.glob('/opt/intel_cc_*'): + # Typical dir here is /opt/intel_cc_80. + m = re.search(r'cc_(.*)$', d) + if m: + versions.append(m.group(1)) + for d in glob.glob('/opt/intel/cc*/*'): + # Typical dir here is /opt/intel/cc/9.0 for IA32, + # /opt/intel/cce/9.0 for EMT64 (AMD64) + m = re.search(r'([0-9][0-9.]*)$', d) + if m: + versions.append(m.group(1)) + for d in glob.glob('/opt/intel/Compiler/*'): + # Typical dir here is /opt/intel/Compiler/11.1 + m = re.search(r'([0-9][0-9.]*)$', d) + if m: + versions.append(m.group(1)) + for d in glob.glob('/opt/intel/composerxe-*'): + # Typical dir here is /opt/intel/composerxe-2011.4.184 + m = re.search(r'([0-9][0-9.]*)$', d) + if m: + versions.append(m.group(1)) + for d in glob.glob('/opt/intel/composer_xe_*'): + # Typical dir here is /opt/intel/composer_xe_2011_sp1.11.344 + # The _sp1 is useless, the installers are named 2011.9.x, 2011.10.x, 2011.11.x + m = re.search(r'([0-9]{0,4})(?:_sp\d*)?\.([0-9][0-9.]*)$', d) + if m: + versions.append("%s.%s"%(m.group(1), m.group(2))) + for d in glob.glob('/opt/intel/compilers_and_libraries_*'): + # JPA: For the new version of Intel compiler 2016.1. + m = re.search(r'([0-9]{0,4})(?:_sp\d*)?\.([0-9][0-9.]*)$', d) + if m: + versions.append("%s.%s"%(m.group(1), m.group(2))) + + def keyfunc(str): + """Given a dot-separated version string, return a tuple of ints representing it.""" + return [int(x) for x in str.split('.')] + # split into ints, sort, then remove dups + return sorted(SCons.Util.unique(versions), key=keyfunc, reverse=True) + +def get_intel_compiler_top(version, abi): + """ + Return the main path to the top-level dir of the Intel compiler, + using the given version. + The compiler will be in /bin/icl.exe (icc on linux), + the include dir is /include, etc. + """ + + if is_windows: + if not SCons.Util.can_read_reg: + raise NoRegistryModuleError("No Windows registry module was found") + top = get_intel_registry_value('ProductDir', version, abi) + archdir={'x86_64': 'intel64', + 'amd64' : 'intel64', + 'em64t' : 'intel64', + 'x86' : 'ia32', + 'i386' : 'ia32', + 'ia32' : 'ia32' + }[abi] # for v11 and greater + # pre-11, icl was in Bin. 11 and later, it's in Bin/ apparently. + if not os.path.exists(os.path.join(top, "Bin", "icl.exe")) \ + and not os.path.exists(os.path.join(top, "Bin", abi, "icl.exe")) \ + and not os.path.exists(os.path.join(top, "Bin", archdir, "icl.exe")): + raise MissingDirError("Can't find Intel compiler in %s" % top) + elif is_mac or is_linux: + def find_in_2008style_dir(version): + # first dir is new (>=9.0) style, second is old (8.0) style. + dirs=('/opt/intel/cc/%s', '/opt/intel_cc_%s') + if abi == 'x86_64': + dirs=('/opt/intel/cce/%s',) # 'e' stands for 'em64t', aka x86_64 aka amd64 + top=None + for d in dirs: + if os.path.exists(os.path.join(d%version, "bin", "icc")): + top = d%version + break + return top + def find_in_2010style_dir(version): + dirs=('/opt/intel/Compiler/%s/*'%version) + # typically /opt/intel/Compiler/11.1/064 (then bin/intel64/icc) + dirs=glob.glob(dirs) + # find highest sub-version number by reverse sorting and picking first existing one. + dirs.sort() + dirs.reverse() + top=None + for d in dirs: + if (os.path.exists(os.path.join(d, "bin", "ia32", "icc")) or + os.path.exists(os.path.join(d, "bin", "intel64", "icc"))): + top = d + break + return top + def find_in_2011style_dir(version): + # The 2011 (compiler v12) dirs are inconsistent, so just redo the search from + # get_all_compiler_versions and look for a match (search the newest form first) + top=None + for d in glob.glob('/opt/intel/composer_xe_*'): + # Typical dir here is /opt/intel/composer_xe_2011_sp1.11.344 + # The _sp1 is useless, the installers are named 2011.9.x, 2011.10.x, 2011.11.x + m = re.search(r'([0-9]{0,4})(?:_sp\d*)?\.([0-9][0-9.]*)$', d) + if m: + cur_ver = "%s.%s"%(m.group(1), m.group(2)) + if cur_ver == version and \ + (os.path.exists(os.path.join(d, "bin", "ia32", "icc")) or + os.path.exists(os.path.join(d, "bin", "intel64", "icc"))): + top = d + break + if not top: + for d in glob.glob('/opt/intel/composerxe-*'): + # Typical dir here is /opt/intel/composerxe-2011.4.184 + m = re.search(r'([0-9][0-9.]*)$', d) + if m and m.group(1) == version and \ + (os.path.exists(os.path.join(d, "bin", "ia32", "icc")) or + os.path.exists(os.path.join(d, "bin", "intel64", "icc"))): + top = d + break + return top + def find_in_2016style_dir(version): + # The 2016 (compiler v16) dirs are inconsistent from previous. + top = None + for d in glob.glob('/opt/intel/compilers_and_libraries_%s/linux'%version): + if os.path.exists(os.path.join(d, "bin", "ia32", "icc")) or os.path.exists(os.path.join(d, "bin", "intel64", "icc")): + top = d + break + return top + + top = find_in_2016style_dir(version) or find_in_2011style_dir(version) or find_in_2010style_dir(version) or find_in_2008style_dir(version) + # print "INTELC: top=",top + if not top: + raise MissingDirError("Can't find version %s Intel compiler in %s (abi='%s')"%(version,top, abi)) + return top + + +def generate(env, version=None, abi=None, topdir=None, verbose=0): + r"""Add Builders and construction variables for Intel C/C++ compiler + to an Environment. + + Args: + version (str): compiler version to use, like "80" + abi (str): 'win32' or whatever Itanium version wants + topdir (str): directory containing compiler tree, e.g. + "c:\\Program Files\\Intel\\Compiler70". + If `topdir` is used, `version` and `abi` are ignored. + verbose: if >0, prints compiler version used. + + """ + if not (is_mac or is_linux or is_windows): + # can't handle this platform + return + + if is_windows: + SCons.Tool.msvc.generate(env) + elif is_linux: + SCons.Tool.gcc.generate(env) + elif is_mac: + SCons.Tool.gcc.generate(env) + + # if version is unspecified, use latest + vlist = get_all_compiler_versions() + if not version: + if vlist: + version = vlist[0] + else: + # User may have specified '90' but we need to get actual dirname '9.0'. + # get_version_from_list does that mapping. + v = get_version_from_list(version, vlist) + if not v: + raise SCons.Errors.UserError("Invalid Intel compiler version %s: "%version + \ + "installed versions are %s"%(', '.join(vlist))) + version = v + + # if abi is unspecified, use ia32 + # alternatives are ia64 for Itanium, or amd64 or em64t or x86_64 (all synonyms here) + abi = check_abi(abi) + if abi is None: + if is_mac or is_linux: + # Check if we are on 64-bit linux, default to 64 then. + uname_m = os.uname()[4] + if uname_m == 'x86_64': + abi = 'x86_64' + else: + abi = 'ia32' + else: + if is_win64: + abi = 'em64t' + else: + abi = 'ia32' + + if version and not topdir: + try: + topdir = get_intel_compiler_top(version, abi) + except (SCons.Util.RegError, IntelCError): + topdir = None + + if not topdir: + # Normally this is an error, but it might not be if the compiler is + # on $PATH and the user is importing their env. + class ICLTopDirWarning(SCons.Warnings.SConsWarning): + pass + + if ( + ((is_mac or is_linux) and not env.Detect('icc')) + or (is_windows and not env.Detect('icl')) + ): + SCons.Warnings.enableWarningClass(ICLTopDirWarning) + SCons.Warnings.warn( + ICLTopDirWarning, + "Failed to find Intel compiler for version='%s', abi='%s'" + % (str(version), str(abi)), + ) + else: + # should be cleaned up to say what this other version is + # since in this case we have some other Intel compiler installed + SCons.Warnings.enableWarningClass(ICLTopDirWarning) + SCons.Warnings.warn( + ICLTopDirWarning, + "Can't find Intel compiler top dir for version='%s', abi='%s'" + % (str(version), str(abi)), + ) + + if topdir: + archdir={'x86_64': 'intel64', + 'amd64' : 'intel64', + 'em64t' : 'intel64', + 'x86' : 'ia32', + 'i386' : 'ia32', + 'ia32' : 'ia32' + }[abi] # for v11 and greater + if os.path.exists(os.path.join(topdir, 'bin', archdir)): + bindir="bin/%s"%archdir + libdir="lib/%s"%archdir + else: + bindir="bin" + libdir="lib" + if verbose: + print("Intel C compiler: using version %s (%g), abi %s, in '%s/%s'"%\ + (repr(version), linux_ver_normalize(version),abi,topdir,bindir)) + if is_linux: + # Show the actual compiler version by running the compiler. + os.system('%s/%s/icc --version'%(topdir,bindir)) + if is_mac: + # Show the actual compiler version by running the compiler. + os.system('%s/%s/icc --version'%(topdir,bindir)) + + env['INTEL_C_COMPILER_TOP'] = topdir + if is_linux: + paths={'INCLUDE' : 'include', + 'LIB' : libdir, + 'PATH' : bindir, + 'LD_LIBRARY_PATH' : libdir} + for p, v in paths.items(): + env.PrependENVPath(p, os.path.join(topdir, v)) + if is_mac: + paths={'INCLUDE' : 'include', + 'LIB' : libdir, + 'PATH' : bindir, + 'LD_LIBRARY_PATH' : libdir} + for p, v in paths.items(): + env.PrependENVPath(p, os.path.join(topdir, v)) + if is_windows: + # env key reg valname default subdir of top + paths=(('INCLUDE', 'IncludeDir', 'Include'), + ('LIB' , 'LibDir', 'Lib'), + ('PATH' , 'BinDir', 'Bin')) + # We are supposed to ignore version if topdir is set, so set + # it to the emptry string if it's not already set. + if version is None: + version = '' + # Each path has a registry entry, use that or default to subdir + for p in paths: + try: + path=get_intel_registry_value(p[1], version, abi) + # These paths may have $(ICInstallDir) + # which needs to be substituted with the topdir. + path=path.replace('$(ICInstallDir)', topdir + os.sep) + except IntelCError: + # Couldn't get it from registry: use default subdir of topdir + env.PrependENVPath(p[0], os.path.join(topdir, p[2])) + else: + env.PrependENVPath(p[0], path.split(os.pathsep)) + # print "ICL %s: %s, final=%s"%(p[0], path, str(env['ENV'][p[0]])) + + if is_windows: + env['CC'] = 'icl' + env['CXX'] = 'icl' + env['LINK'] = 'xilink' + else: + env['CC'] = 'icc' + env['CXX'] = 'icpc' + # Don't reset LINK here; + # use smart_link which should already be here from link.py. + #env['LINK'] = '$CC' + env['AR'] = 'xiar' + env['LD'] = 'xild' # not used by default + + # This is not the exact (detailed) compiler version, + # just the major version as determined above or specified + # by the user. It is a float like 80 or 90, in normalized form for Linux + # (i.e. even for Linux 9.0 compiler, still returns 90 rather than 9.0) + if version: + env['INTEL_C_COMPILER_VERSION']=linux_ver_normalize(version) + + if is_windows: + # Look for license file dir + # in system environment, registry, and default location. + envlicdir = os.environ.get("INTEL_LICENSE_FILE", '') + K = r'SOFTWARE\Intel\Licenses' + try: + k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, K) + reglicdir = SCons.Util.RegQueryValueEx(k, "w_cpp")[0] + except (AttributeError, SCons.Util.RegError): + reglicdir = "" + defaultlicdir = r'C:\Program Files\Common Files\Intel\Licenses' + + licdir = None + for ld in [envlicdir, reglicdir]: + # If the string contains an '@', then assume it's a network + # license (port@system) and good by definition. + if ld and (ld.find('@') != -1 or os.path.exists(ld)): + licdir = ld + break + if not licdir: + licdir = defaultlicdir + if not os.path.exists(licdir): + class ICLLicenseDirWarning(SCons.Warnings.SConsWarning): + pass + SCons.Warnings.enableWarningClass(ICLLicenseDirWarning) + SCons.Warnings.warn( + ICLLicenseDirWarning, + "Intel license dir was not found. " + "Tried using the INTEL_LICENSE_FILE environment variable " + "(%s), the registry (%s) and the default path (%s). " + "Using the default path as a last resort." + % (envlicdir, reglicdir, defaultlicdir) + ) + env['ENV']['INTEL_LICENSE_FILE'] = licdir + +def exists(env): + if not (is_mac or is_linux or is_windows): + # can't handle this platform + return 0 + + try: + versions = get_all_compiler_versions() + except (SCons.Util.RegError, IntelCError): + versions = None + detected = versions is not None and len(versions) > 0 + if not detected: + # try env.Detect, maybe that will work + if is_windows: + return env.Detect('icl') + elif is_linux: + return env.Detect('icc') + elif is_mac: + return env.Detect('icc') + return detected + +# end of file + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/ipkg.py b/scons/scons-local-4.5.1/SCons/Tool/ipkg.py new file mode 100644 index 000000000..8e01dd26d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ipkg.py @@ -0,0 +1,75 @@ +"""SCons.Tool.ipkg + +Tool-specific initialization for ipkg. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +The ipkg tool calls the ipkg-build. Its only argument should be the +packages fake_root. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os + +import SCons.Builder + +def generate(env): + """Add Builders and construction variables for ipkg to an Environment.""" + try: + bld = env['BUILDERS']['Ipkg'] + except KeyError: + bld = SCons.Builder.Builder(action='$IPKGCOM', + suffix='$IPKGSUFFIX', + source_scanner=None, + target_scanner=None) + env['BUILDERS']['Ipkg'] = bld + + + env['IPKG'] = 'ipkg-build' + env['IPKGCOM'] = '$IPKG $IPKGFLAGS ${SOURCE}' + + if env.WhereIs('id'): + with os.popen('id -un') as p: + env['IPKGUSER'] = p.read().strip() + with os.popen('id -gn') as p: + env['IPKGGROUP'] = p.read().strip() + env['IPKGFLAGS'] = SCons.Util.CLVar('-o $IPKGUSER -g $IPKGGROUP') + env['IPKGSUFFIX'] = '.ipk' + +def exists(env): + """ + Can we find the tool + """ + return env.Detect('ipkg-build') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/jar.py b/scons/scons-local-4.5.1/SCons/Tool/jar.py new file mode 100644 index 000000000..ae44ff3bd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/jar.py @@ -0,0 +1,256 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for jar. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +import os +from typing import List + +import SCons.Node +import SCons.Node.FS +import SCons.Subst +import SCons.Tool +import SCons.Util +import SCons.Warnings +from SCons.Node.FS import _my_normcase +from SCons.Tool.JavaCommon import get_java_install_dirs + + +def jarSources(target, source, env, for_signature) -> List[str]: + """Only include sources that are not a manifest file.""" + try: + env['JARCHDIR'] + except KeyError: + jarchdir_set = False + else: + jarchdir_set = True + jarchdir = env.subst('$JARCHDIR', target=target, source=source) + if jarchdir: + jarchdir = env.fs.Dir(jarchdir) + result = [] + for src in source: + contents = src.get_text_contents() + if contents.startswith("Manifest-Version"): + continue + if jarchdir_set: + _chdir = jarchdir + else: + try: + _chdir = src.attributes.java_classdir + except AttributeError: + _chdir = None + if _chdir: + # If we are changing the dir with -C, then sources should + # be relative to that directory. + src = SCons.Subst.Literal(src.get_path(_chdir)) + result.append('-C') + result.append(_chdir) + result.append(src) + return result + +def jarManifest(target, source, env, for_signature): + """Look in sources for a manifest file, if any.""" + for src in source: + contents = src.get_text_contents() + if contents.startswith("Manifest-Version"): + return src + return '' + +def jarFlags(target, source, env, for_signature) -> str: + """If we have a manifest, make sure that the 'm' + flag is specified.""" + jarflags = env.subst('$JARFLAGS', target=target, source=source) + for src in source: + contents = src.get_text_contents() + if contents.startswith("Manifest-Version"): + if 'm' not in jarflags: + return jarflags + 'm' + break + return jarflags + +def Jar(env, target=None, source=[], *args, **kw): + """The Jar Builder. + + This is a pseudo-Builder wrapper around the separate jar builders + depending on whether the sources are a file list or a directory. + """ + # TODO: W1113: Keyword argument before variable positional arguments list in the definition of Jar function + # TODO: W0102: Dangerous default value [] as argument + + # jar target should not be a list so assume they passed + # no target and want implicit target to be made and the arg + # was actaully the list of sources + if SCons.Util.is_List(target) and source == []: + SCons.Warnings.warn( + SCons.Warnings.SConsWarning, + "Making implicit target jar file, and treating the list as sources" + ) + source = target + target = None + + # mutiple targets passed so build each target the same from the + # same source + #TODO Maybe this should only be done once, and the result copied + # for each target since it should result in the same? + if SCons.Util.is_List(target) and SCons.Util.is_List(source): + jars = [] + for single_target in target: + jars += env.Jar(target=single_target, source=source, *args, **kw) + return jars + + # they passed no target so make a target implicitly + if target is None: + try: + # make target from the first source file + target = os.path.splitext(str(source[0]))[0] + env.subst('$JARSUFFIX') + except: + # TODO: W0702: No exception type(s) specified + # something strange is happening but attempt anyways + SCons.Warnings.warn( + SCons.Warnings.SConsWarning, + "Could not make implicit target from sources, using directory" + ) + target = os.path.basename(str(env.Dir('.'))) + env.subst('$JARSUFFIX') + + # make lists out of our target and sources + if not SCons.Util.is_List(target): + target = [target] + if not SCons.Util.is_List(source): + source = [source] + + # setup for checking through all the sources and handle accordingly + java_class_suffix = env.subst('$JAVACLASSSUFFIX') + java_suffix = env.subst('$JAVASUFFIX') + target_nodes = [] + + # function for determining what to do with a file and not a directory + # if its already a class file then it can be used as a + # source for jar, otherwise turn it into a class file then + # return the source + def file_to_class(src): + if _my_normcase(str(src)).endswith(java_suffix): + return env.JavaClassFile(source=src, *args, **kw) + return [env.fs.File(src)] + + # function for calling the JavaClassDir builder if a directory is + # passed as a source to Jar builder. The JavaClassDir builder will + # return an empty list if there were no target classes built from + # the directory, in this case assume the user wanted the directory + # copied into the jar as is (it contains other files such as + # resources or class files compiled from prior commands) + # TODO: investigate the expexcted behavior for directories that + # have mixed content, such as Java files along side other files + # files. + def dir_to_class(src): + dir_targets = env.JavaClassDir(source=src, *args, **kw) + if dir_targets == []: + # no classes files could be built from the source dir + # so pass the dir as is. + return [env.fs.Dir(src)] + return dir_targets + + # loop through the sources and handle each accordingly + # the goal here is to get all the source files into a class + # file or a directory that contains class files + for src in SCons.Util.flatten(source): + src = env.subst(src) + if isinstance(src, SCons.Node.FS.Base): + if isinstance(src, SCons.Node.FS.File): + # found a file so make sure its a class file + target_nodes.extend(file_to_class(src)) + else: + # found a dir so get the class files out of it + target_nodes.extend(dir_to_class(src)) + else: + try: + # source is string try to convert it to file + target_nodes.extend(file_to_class(env.fs.File(src))) + continue + except: + # TODO: W0702: No exception type(s) specified + pass + + try: + # source is string try to covnert it to dir + target_nodes.extend(dir_to_class(env.fs.Dir(src))) + continue + except: + # TODO: W0702: No exception type(s) specified + pass + + SCons.Warnings.warn( + SCons.Warnings.SConsWarning, + ("File: " + str(src) + + " could not be identified as File or Directory, skipping.") + ) + + # at this point all our sources have been converted to classes or + # directories of class so pass it to the Jar builder + return env.JarFile(target=target, source=target_nodes, *args, **kw) + +def generate(env) -> None: + """Add Builders and construction variables for jar to an Environment.""" + SCons.Tool.CreateJarBuilder(env) + + SCons.Tool.CreateJavaFileBuilder(env) + SCons.Tool.CreateJavaClassFileBuilder(env) + SCons.Tool.CreateJavaClassDirBuilder(env) + + env.AddMethod(Jar) + + if env['PLATFORM'] == 'win32': + # Ensure that we have a proper path for jar + paths = get_java_install_dirs('win32') + jar = SCons.Tool.find_program_path(env, 'jar', default_paths=paths) + if jar: + jar_bin_dir = os.path.dirname(jar) + env.AppendENVPath('PATH', jar_bin_dir) + + env['JAR'] = 'jar' + env['JARFLAGS'] = SCons.Util.CLVar('cf') + env['_JARFLAGS'] = jarFlags + env['_JARMANIFEST'] = jarManifest + env['_JARSOURCES'] = jarSources + env['_JARCOM'] = '$JAR $_JARFLAGS $TARGET $_JARMANIFEST $_JARSOURCES' + env['JARCOM'] = "${TEMPFILE('$_JARCOM','$JARCOMSTR')}" + env['JARSUFFIX'] = '.jar' + +def exists(env): + # As reported by Jan Nijtmans in issue #2730, the simple + # return env.Detect('jar') + # doesn't always work during initialization. For now, we + # stop trying to detect an executable (analogous to the + # javac Builder). + # TODO: Come up with a proper detect() routine...and enable it. + return True + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/javac.py b/scons/scons-local-4.5.1/SCons/Tool/javac.py new file mode 100644 index 000000000..1b331253b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/javac.py @@ -0,0 +1,252 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons.Tool.javac + +Tool-specific initialization for javac. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + + +import os +import os.path +from collections import OrderedDict + +import SCons.Action +import SCons.Builder +from SCons.Node.FS import _my_normcase +from SCons.Tool.JavaCommon import parse_java_file, get_java_install_dirs, get_java_include_paths +import SCons.Util + +def classname(path): + """Turn a string (path name) into a Java class name.""" + return os.path.normpath(path).replace(os.sep, '.') + +def emit_java_classes(target, source, env): + """Create and return lists of source java files + and their corresponding target class files. + """ + java_suffix = env.get('JAVASUFFIX', '.java') + class_suffix = env.get('JAVACLASSSUFFIX', '.class') + + target[0].must_be_same(SCons.Node.FS.Dir) + classdir = target[0] + + s = source[0].rentry().disambiguate() + if isinstance(s, SCons.Node.FS.File): + sourcedir = s.dir.rdir() + elif isinstance(s, SCons.Node.FS.Dir): + sourcedir = s.rdir() + else: + raise SCons.Errors.UserError("Java source must be File or Dir, not '%s'" % s.__class__) + + slist = [] + js = _my_normcase(java_suffix) + for entry in source: + entry = entry.rentry().disambiguate() + if isinstance(entry, SCons.Node.FS.File): + slist.append(entry) + elif isinstance(entry, SCons.Node.FS.Dir): + result = OrderedDict() + dirnode = entry.rdir() + def find_java_files(arg, dirpath, filenames): + java_files = sorted([n for n in filenames + if _my_normcase(n).endswith(js)]) + mydir = dirnode.Dir(dirpath) + java_paths = [mydir.File(f) for f in java_files] + for jp in java_paths: + arg[jp] = True + for dirpath, dirnames, filenames in os.walk(dirnode.get_abspath()): + find_java_files(result, dirpath, filenames) + entry.walk(find_java_files, result) + + slist.extend(list(result.keys())) + else: + raise SCons.Errors.UserError("Java source must be File or Dir, not '%s'" % entry.__class__) + + version = env.get('JAVAVERSION', '1.4') + full_tlist = [] + for f in slist: + tlist = [] + source_file_based = True + pkg_dir = None + if not f.is_derived(): + pkg_dir, classes = parse_java_file(f.rfile().get_abspath(), version) + if classes: + source_file_based = False + if pkg_dir: + d = target[0].Dir(pkg_dir) + p = pkg_dir + os.sep + else: + d = target[0] + p = '' + for c in classes: + t = d.File(c + class_suffix) + t.attributes.java_classdir = classdir + t.attributes.java_sourcedir = sourcedir + t.attributes.java_classname = classname(p + c) + tlist.append(t) + + if source_file_based: + base = f.name[:-len(java_suffix)] + if pkg_dir: + t = target[0].Dir(pkg_dir).File(base + class_suffix) + else: + t = target[0].File(base + class_suffix) + t.attributes.java_classdir = classdir + t.attributes.java_sourcedir = f.dir + t.attributes.java_classname = classname(base) + tlist.append(t) + + for t in tlist: + t.set_specific_source([f]) + + full_tlist.extend(tlist) + + return full_tlist, slist + +JavaAction = SCons.Action.Action('$JAVACCOM', '$JAVACCOMSTR') + +JavaBuilder = SCons.Builder.Builder(action = JavaAction, + emitter = emit_java_classes, + target_factory = SCons.Node.FS.Entry, + source_factory = SCons.Node.FS.Entry) + +class pathopt: + """ + Callable object for generating javac-style path options from + a construction variable (e.g. -classpath, -sourcepath). + """ + def __init__(self, opt, var, default=None): + self.opt = opt + self.var = var + self.default = default + + def __call__(self, target, source, env, for_signature): + path = env[self.var] + if path and not SCons.Util.is_List(path): + path = [path] + if self.default: + default = env[self.default] + if default: + if not SCons.Util.is_List(default): + default = [default] + path = path + default + if path: + path = SCons.Util.flatten(path) + return [self.opt, os.pathsep.join(map(str, path))] + else: + return [] + +def Java(env, target, source, *args, **kw): + """ + A pseudo-Builder wrapper around the separate JavaClass{File,Dir} + Builders. + """ + if not SCons.Util.is_List(target): + target = [target] + if not SCons.Util.is_List(source): + source = [source] + + # Pad the target list with repetitions of the last element in the + # list so we have a target for every source element. + target = target + ([target[-1]] * (len(source) - len(target))) + + java_suffix = env.subst('$JAVASUFFIX') + result = [] + + for t, s in zip(target, source): + if isinstance(s, SCons.Node.FS.Base): + if isinstance(s, SCons.Node.FS.File): + b = env.JavaClassFile + else: + b = env.JavaClassDir + else: + if os.path.isfile(s): + b = env.JavaClassFile + elif os.path.isdir(s): + b = env.JavaClassDir + elif s[-len(java_suffix):] == java_suffix: + b = env.JavaClassFile + else: + b = env.JavaClassDir + result.extend(b(t, s, *args, **kw)) + + return result + +def generate(env): + """Add Builders and construction variables for javac to an Environment.""" + java_file = SCons.Tool.CreateJavaFileBuilder(env) + java_class = SCons.Tool.CreateJavaClassFileBuilder(env) + java_class_dir = SCons.Tool.CreateJavaClassDirBuilder(env) + java_class.add_emitter(None, emit_java_classes) + java_class.add_emitter(env.subst('$JAVASUFFIX'), emit_java_classes) + java_class_dir.emitter = emit_java_classes + + env.AddMethod(Java) + + version = env.get('JAVAVERSION', None) + + if env['PLATFORM'] == 'win32': + # Ensure that we have a proper path for javac + paths = get_java_install_dirs('win32', version=version) + javac = SCons.Tool.find_program_path(env, 'javac', default_paths=paths) + if javac: + javac_bin_dir = os.path.dirname(javac) + env.AppendENVPath('PATH', javac_bin_dir) + else: + javac = SCons.Tool.find_program_path(env, 'javac') + + + env.SetDefault( + JAVAC='javac', + JAVACFLAGS=SCons.Util.CLVar(''), + JAVAINCLUDES=get_java_include_paths(env, javac, version), + JAVACLASSSUFFIX='.class', + JAVASUFFIX='.java', + JAVABOOTCLASSPATH=[], + JAVACLASSPATH=[], + JAVASOURCEPATH=[], + JAVAPROCESSORPATH=[], + ) + env['_javapathopt'] = pathopt + env['_JAVABOOTCLASSPATH'] = '${_javapathopt("-bootclasspath", "JAVABOOTCLASSPATH")} ' + env['_JAVAPROCESSORPATH'] = '${_javapathopt("-processorpath", "JAVAPROCESSORPATH")} ' + env['_JAVACLASSPATH'] = '${_javapathopt("-classpath", "JAVACLASSPATH")} ' + env['_JAVASOURCEPATH'] = '${_javapathopt("-sourcepath", "JAVASOURCEPATH", "_JAVASOURCEPATHDEFAULT")} ' + env['_JAVASOURCEPATHDEFAULT'] = '${TARGET.attributes.java_sourcedir}' + env['_JAVACCOM'] = '$JAVAC $JAVACFLAGS $_JAVABOOTCLASSPATH $_JAVAPROCESSORPATH $_JAVACLASSPATH -d ${TARGET.attributes.java_classdir} $_JAVASOURCEPATH $SOURCES' + env['JAVACCOM'] = "${TEMPFILE('$_JAVACCOM','$JAVACCOMSTR')}" + +def exists(env): + return 1 + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/javah.py b/scons/scons-local-4.5.1/SCons/Tool/javah.py new file mode 100644 index 000000000..c5a75646e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/javah.py @@ -0,0 +1,148 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. +"""SCons.Tool.javah + +Tool-specific initialization for javah. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + + +import os.path + +import SCons.Action +import SCons.Builder +import SCons.Node.FS +import SCons.Tool.javac +import SCons.Util +from SCons.Tool.JavaCommon import get_java_install_dirs + + +def emit_java_headers(target, source, env): + """Create and return lists of Java stub header files that will + be created from a set of class files. + """ + class_suffix = env.get('JAVACLASSSUFFIX', '.class') + classdir = env.get('JAVACLASSDIR') + + if not classdir: + try: + s = source[0] + except IndexError: + classdir = '.' + else: + try: + classdir = s.attributes.java_classdir + except AttributeError: + classdir = '.' + classdir = env.Dir(classdir).rdir() + + if str(classdir) == '.': + c_ = None + else: + c_ = str(classdir) + os.sep + + slist = [] + for src in source: + try: + classname = src.attributes.java_classname + except AttributeError: + classname = str(src) + if c_ and classname[:len(c_)] == c_: + classname = classname[len(c_):] + if class_suffix and classname[-len(class_suffix):] == class_suffix: + classname = classname[:-len(class_suffix)] + classname = SCons.Tool.javac.classname(classname) + s = src.rfile() + s.attributes.java_classname = classname + slist.append(s) + + s = source[0].rfile() + if not hasattr(s.attributes, 'java_classdir'): + s.attributes.java_classdir = classdir + + if target[0].__class__ is SCons.Node.FS.File: + tlist = target + else: + if not isinstance(target[0], SCons.Node.FS.Dir): + target[0].__class__ = SCons.Node.FS.Dir + target[0]._morph() + tlist = [] + for s in source: + fname = s.attributes.java_classname.replace('.', '_') + '.h' + t = target[0].File(fname) + t.attributes.java_lookupdir = target[0] + tlist.append(t) + + return tlist, source + +def JavaHOutFlagGenerator(target, source, env, for_signature): + try: + t = target[0] + except (AttributeError, IndexError, TypeError): + t = target + try: + return '-d ' + str(t.attributes.java_lookupdir) + except AttributeError: + return '-o ' + str(t) + +def getJavaHClassPath(env,target, source, for_signature): + path = "${SOURCE.attributes.java_classdir}" + if 'JAVACLASSPATH' in env and env['JAVACLASSPATH']: + path = SCons.Util.AppendPath(path, env['JAVACLASSPATH']) + return "-classpath %s" % path + +def generate(env): + """Add Builders and construction variables for javah to an Environment.""" + java_javah = SCons.Tool.CreateJavaHBuilder(env) + java_javah.emitter = emit_java_headers + + if env['PLATFORM'] == 'win32': + # Ensure that we have a proper path for javah + paths = get_java_install_dirs('win32') + javah = SCons.Tool.find_program_path(env, 'javah', default_paths=paths) + if javah: + javah_bin_dir = os.path.dirname(javah) + env.AppendENVPath('PATH', javah_bin_dir) + + env.SetDefault( + JAVAH='javah', + JAVAHFLAGS=SCons.Util.CLVar(''), + JAVACLASSSUFFIX='.class', + JAVASUFFIX='.java', + ) + env['_JAVAHOUTFLAG'] = JavaHOutFlagGenerator + env['_JAVAHCLASSPATH'] = getJavaHClassPath + env['JAVAHCOM'] = '$JAVAH $JAVAHFLAGS $_JAVAHOUTFLAG $_JAVAHCLASSPATH ${SOURCES.attributes.java_classname}' + +def exists(env): + return env.Detect('javah') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/latex.py b/scons/scons-local-4.5.1/SCons/Tool/latex.py new file mode 100644 index 000000000..f30356b23 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/latex.py @@ -0,0 +1,80 @@ +"""SCons.Tool.latex + +Tool-specific initialization for LaTeX. +Generates .dvi files from .latex or .ltx files + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Action +import SCons.Defaults +import SCons.Scanner.LaTeX +import SCons.Util +import SCons.Tool +import SCons.Tool.tex + +def LaTeXAuxFunction(target = None, source= None, env=None): + result = SCons.Tool.tex.InternalLaTeXAuxAction( SCons.Tool.tex.LaTeXAction, target, source, env ) + if result != 0: + SCons.Tool.tex.check_file_error_message(env['LATEX']) + return result + +LaTeXAuxAction = SCons.Action.Action(LaTeXAuxFunction, + strfunction=SCons.Tool.tex.TeXLaTeXStrFunction) + +def generate(env): + """Add Builders and construction variables for LaTeX to an Environment.""" + + env.AppendUnique(LATEXSUFFIXES=SCons.Tool.LaTeXSuffixes) + + from . import dvi + dvi.generate(env) + + from . import pdf + pdf.generate(env) + + bld = env['BUILDERS']['DVI'] + bld.add_action('.ltx', LaTeXAuxAction) + bld.add_action('.latex', LaTeXAuxAction) + bld.add_emitter('.ltx', SCons.Tool.tex.tex_eps_emitter) + bld.add_emitter('.latex', SCons.Tool.tex.tex_eps_emitter) + + SCons.Tool.tex.generate_common(env) + +def exists(env): + SCons.Tool.tex.generate_darwin(env) + return env.Detect('latex') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/ldc.py b/scons/scons-local-4.5.1/SCons/Tool/ldc.py new file mode 100644 index 000000000..fa02bf873 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ldc.py @@ -0,0 +1,147 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + + +"""SCons.Tool.ldc + +Tool-specific initialization for the LDC compiler. +(https://github.com/ldc-developers/ldc) + +Developed by Russel Winder (russel@winder.org.uk) +2012-05-09 onwards + +Compiler variables: + DC - The name of the D compiler to use. Defaults to ldc2. + DPATH - List of paths to search for import modules. + DVERSIONS - List of version tags to enable when compiling. + DDEBUG - List of debug tags to enable when compiling. + +Linker related variables: + LIBS - List of library files to link in. + DLINK - Name of the linker to use. Defaults to ldc2. + DLINKFLAGS - List of linker flags. + +Lib tool variables: + DLIB - Name of the lib tool to use. Defaults to lib. + DLIBFLAGS - List of flags to pass to the lib tool. + LIBS - Same as for the linker. (libraries to pull into the .lib) +""" + + + +import SCons.Action +import SCons.Builder +import SCons.Defaults +import SCons.Scanner.D +import SCons.Tool + +import SCons.Tool.DCommon as DCommon + + +def generate(env): + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + static_obj.add_action('.d', SCons.Defaults.DAction) + shared_obj.add_action('.d', SCons.Defaults.ShDAction) + static_obj.add_emitter('.d', SCons.Defaults.StaticObjectEmitter) + shared_obj.add_emitter('.d', SCons.Defaults.SharedObjectEmitter) + + env['DC'] = env.Detect('ldc2') or 'ldc2' + env['DCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -of=$TARGET $SOURCES' + env['_DINCFLAGS'] = '${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, TARGET, SOURCE)}' + env['_DVERFLAGS'] = '${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)}' + env['_DDEBUGFLAGS'] = '${_concat(DDEBUGPREFIX, DDEBUG, DDEBUGSUFFIX, __env__)}' + env['_DFLAGS'] = '${_concat(DFLAGPREFIX, DFLAGS, DFLAGSUFFIX, __env__)}' + + env['SHDC'] = '$DC' + env['SHDCOM'] = '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -relocation-model=pic -of=$TARGET $SOURCES' + + env['DPATH'] = ['#/'] + env['DFLAGS'] = [] + env['DVERSIONS'] = [] + env['DDEBUG'] = [] + + if env['DC']: + DCommon.addDPATHToEnv(env, env['DC']) + + env['DINCPREFIX'] = '-I=' + env['DINCSUFFIX'] = '' + env['DVERPREFIX'] = '-version=' + env['DVERSUFFIX'] = '' + env['DDEBUGPREFIX'] = '-debug=' + env['DDEBUGSUFFIX'] = '' + env['DFLAGPREFIX'] = '-' + env['DFLAGSUFFIX'] = '' + env['DFILESUFFIX'] = '.d' + + env['DLINK'] = '$DC' + env['DLINKFLAGS'] = SCons.Util.CLVar('') + env['DLINKCOM'] = '$DLINK -of=$TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS' + + env['SHDLINK'] = '$DC' + env['SHDLINKFLAGS'] = SCons.Util.CLVar('$DLINKFLAGS -shared -defaultlib=phobos2-ldc') + + env['SHDLINKCOM'] = '$DLINK -of=$TARGET $SHDLINKFLAGS $__SHDLIBVERSIONFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS -L-ldruntime-ldc' + + env['DLIBLINKPREFIX'] = '' if env['PLATFORM'] == 'win32' else '-L-l' + env['DLIBLINKSUFFIX'] = '.lib' if env['PLATFORM'] == 'win32' else '' + # env['_DLIBFLAGS'] = '${_concat(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, __env__, RDirs, TARGET, SOURCE)}' + env['_DLIBFLAGS'] = '${_stripixes(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__)}' + + env['DLIBDIRPREFIX'] = '-L-L' + env['DLIBDIRSUFFIX'] = '' + env['_DLIBDIRFLAGS'] = '${_concat(DLIBDIRPREFIX, LIBPATH, DLIBDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)}' + + env['DLIB'] = 'lib' if env['PLATFORM'] == 'win32' else 'ar cr' + env['DLIBCOM'] = '$DLIB $_DLIBFLAGS {0}$TARGET $SOURCES $_DLIBFLAGS'.format('-c ' if env['PLATFORM'] == 'win32' else '') + + # env['_DLIBFLAGS'] = '${_concat(DLIBFLAGPREFIX, DLIBFLAGS, DLIBFLAGSUFFIX, __env__)}' + + env['DLIBFLAGPREFIX'] = '-' + env['DLIBFLAGSUFFIX'] = '' + + # __RPATH is set to $_RPATH in the platform specification if that + # platform supports it. + env['DRPATHPREFIX'] = '-L-Wl,-rpath,' if env['PLATFORM'] == 'darwin' else '-L-rpath=' + env['DRPATHSUFFIX'] = '' + env['_DRPATH'] = '${_concat(DRPATHPREFIX, RPATH, DRPATHSUFFIX, __env__)}' + + # Support for versioned libraries + env['_SHDLIBVERSIONFLAGS'] = '$SHDLIBVERSIONFLAGS -L-soname=$_SHLIBSONAME' + + + env['BUILDERS']['ProgramAllAtOnce'] = SCons.Builder.Builder( + action='$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -of=$TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS', + emitter=DCommon.allAtOnceEmitter, + ) + + +def exists(env): + return env.Detect('ldc2') + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/lex.py b/scons/scons-local-4.5.1/SCons/Tool/lex.py new file mode 100644 index 000000000..3f1a3ade1 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/lex.py @@ -0,0 +1,175 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for lex. + +This tool should support multiple lex implementations, +but is in actuality biased towards GNU Flex. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +import os.path +import sys +from typing import Optional + +import SCons.Action +import SCons.Tool +import SCons.Warnings +from SCons.Platform.mingw import MINGW_DEFAULT_PATHS +from SCons.Platform.cygwin import CYGWIN_DEFAULT_PATHS +from SCons.Platform.win32 import CHOCO_DEFAULT_PATH +from SCons.Util import CLVar, to_String + +DEFAULT_PATHS = CHOCO_DEFAULT_PATH + MINGW_DEFAULT_PATHS + CYGWIN_DEFAULT_PATHS + +LexAction = SCons.Action.Action("$LEXCOM", "$LEXCOMSTR") + +if sys.platform == 'win32': + BINS = ['flex', 'lex', 'win_flex'] +else: + BINS = ["flex", "lex"] + + +def lexEmitter(target, source, env) -> tuple: + """Adds extra files generated by lex program to target list.""" + + sourceBase, sourceExt = os.path.splitext(to_String(source[0])) + if sourceExt == ".lm": # If using Objective-C + target = [sourceBase + ".m"] # the extension is ".m". + + # With --header-file and ----tables-file, the file to write is defined + # by the option argument. Extract this and include in the list of targets. + # NOTE: a filename passed to the command this way is not modified by SCons, + # and so will be interpreted relative to the project top directory at + # execution time, while the name added to the target list will be + # interpreted relative to the SConscript directory - a possible mismatch. + # + # These are GNU flex-only options. + # TODO: recognize --outfile also? + file_gen_options = ["--header-file=", "--tables-file="] + lexflags = env.subst_list("$LEXFLAGS", target=target, source=source) + for option in lexflags[0]: + for fileGenOption in file_gen_options: + l = len(fileGenOption) + if option[:l] == fileGenOption: + # A file generating option is present, so add the + # file name to the target list. + file_name = option[l:].strip() + target.append(file_name) + + lexheaderfile = env.subst("$LEX_HEADER_FILE", target=target, source=source) + if lexheaderfile: + target.append(lexheaderfile) + # rewrite user-supplied file string with a node, we need later + env.Replace(LEX_HEADER_FILE=env.File(lexheaderfile)) + + lextablesfile = env.subst("$LEX_TABLES_FILE", target=target, source=source) + if lextablesfile: + target.append(lextablesfile) + # rewrite user-supplied file string with a node, we need later + env.Replace(LEX_TABLES_FILE=env.File(lextablesfile)) + + return target, source + + +def get_lex_path(env, append_paths=False) -> Optional[str]: + """ + Returns the path to the lex tool, searching several possible names. + + Only called in the Windows case, so the `default_path` argument to + :func:`find_program_path` can be Windows-specific. + + Args: + env: current construction environment + append_paths: if set, add the path to the tool to PATH + """ + for prog in BINS: + bin_path = SCons.Tool.find_program_path( + env, + prog, + default_paths=DEFAULT_PATHS, + add_path=append_paths, + ) + if bin_path: + return bin_path + + SCons.Warnings.warn( + SCons.Warnings.SConsWarning, + 'lex tool requested, but lex or flex binary not found in ENV PATH' + ) + + +def generate(env) -> None: + """Add Builders and construction variables for lex to an Environment.""" + c_file, cxx_file = SCons.Tool.createCFileBuilders(env) + + # C + c_file.add_action(".l", LexAction) + c_file.add_emitter(".l", lexEmitter) + + c_file.add_action(".lex", LexAction) + c_file.add_emitter(".lex", lexEmitter) + + # Objective-C + cxx_file.add_action(".lm", LexAction) + cxx_file.add_emitter(".lm", lexEmitter) + + # C++ + cxx_file.add_action(".ll", LexAction) + cxx_file.add_emitter(".ll", lexEmitter) + + if sys.platform == 'win32': + # ignore the return, all we need is for the path to be added + _ = get_lex_path(env, append_paths=True) + + env.SetDefault( + LEX=env.Detect(BINS), + LEXFLAGS=CLVar(""), + LEX_HEADER_FILE="", + LEX_TABLES_FILE="", + ) + + if sys.platform == 'win32': + env.SetDefault(LEXUNISTD=CLVar("")) + env["LEXCOM"] = "$LEX $LEXUNISTD $LEXFLAGS $_LEX_HEADER $_LEX_TABLES -t $SOURCES > $TARGET" + else: + env["LEXCOM"] = "$LEX $LEXFLAGS $_LEX_HEADER $_LEX_TABLES -t $SOURCES > $TARGET" + + env['_LEX_HEADER'] = '${LEX_HEADER_FILE and "--header-file=" + str(LEX_HEADER_FILE)}' + env['_LEX_TABLES'] = '${LEX_TABLES_FILE and "--tables-file=" + str(LEX_TABLES_FILE)}' + + +def exists(env) -> Optional[str]: + if sys.platform == 'win32': + return get_lex_path(env) + else: + return env.Detect(BINS) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/link.py b/scons/scons-local-4.5.1/SCons/Tool/link.py new file mode 100644 index 000000000..24d17a31f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/link.py @@ -0,0 +1,72 @@ +# +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Tool-specific initialization for the generic POSIX linker. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +import SCons.Tool +import SCons.Util +import SCons.Warnings +from SCons.Tool import createProgBuilder +from SCons.Tool.linkCommon import smart_link +from SCons.Tool.linkCommon.LoadableModule import setup_loadable_module_logic +from SCons.Tool.linkCommon.SharedLibrary import setup_shared_lib_logic + + +def generate(env): + """Add Builders and construction variables for gnulink to an Environment.""" + createProgBuilder(env) + + setup_shared_lib_logic(env) + setup_loadable_module_logic(env) + + env['SMARTLINK'] = smart_link + env['LINK'] = "$SMARTLINK" + env['LINKFLAGS'] = SCons.Util.CLVar('') + + # __RPATH is only set to something ($_RPATH typically) on platforms that support it. + env['LINKCOM'] = '$LINK -o $TARGET $LINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' + env['LIBDIRPREFIX'] = '-L' + env['LIBDIRSUFFIX'] = '' + env['_LIBFLAGS'] = '${_stripixes(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, LIBPREFIXES, LIBSUFFIXES, __env__)}' + env['LIBLINKPREFIX'] = '-l' + env['LIBLINKSUFFIX'] = '' + + +def exists(env): + # This module isn't really a Tool on its own, it's common logic for + # other linkers. + return None + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/linkCommon/LoadableModule.py b/scons/scons-local-4.5.1/SCons/Tool/linkCommon/LoadableModule.py new file mode 100644 index 000000000..c8124a088 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/linkCommon/LoadableModule.py @@ -0,0 +1,131 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +from SCons.Tool import createLoadableModuleBuilder +from .SharedLibrary import shlib_symlink_emitter +from . import lib_emitter + + +def ldmod_symlink_emitter(target, source, env, **kw): + return shlib_symlink_emitter(target, source, env, variable_prefix='LDMODULE') + + +def _get_ldmodule_stem(target, source, env, for_signature): + """ + Get the basename for a library (so for libxyz.so, return xyz) + :param target: + :param source: + :param env: + :param for_signature: + :return: + """ + target_name = str(target) + ldmodule_prefix = env.subst('$LDMODULEPREFIX') + ldmodule_suffix = env.subst("$_LDMODULESUFFIX") + + if target_name.startswith(ldmodule_prefix): + target_name = target_name[len(ldmodule_prefix):] + + if target_name.endswith(ldmodule_suffix): + target_name = target_name[:-len(ldmodule_suffix)] + + return target_name + + +def _ldmodule_soversion(target, source, env, for_signature): + """Function to determine what to use for SOVERSION""" + + if 'SOVERSION' in env: + return '.$SOVERSION' + elif 'LDMODULEVERSION' in env: + ldmod_version = env.subst('$LDMODULEVERSION') + # We use only the most significant digit of LDMODULEVERSION + return '.' + ldmod_version.split('.')[0] + else: + return '' + + +def _ldmodule_soname(target, source, env, for_signature): + if 'SONAME' in env: + return '$SONAME' + else: + return "$LDMODULEPREFIX$_get_ldmodule_stem${LDMODULESUFFIX}$_LDMODULESOVERSION" + +def _LDMODULEVERSION(target, source, env, for_signature): + """ + Return "." + version if it's set, otherwise just a blank + """ + value = env.subst('$LDMODULEVERSION', target=target, source=source) + # print("_has_LDMODULEVERSION:%s"%value) + if value: + return "."+value + else: + return "" + +def setup_loadable_module_logic(env): + """ + Just the logic for loadable modules + + For most platforms, a loadable module is the same as a shared + library. Platforms which are different can override these, but + setting them the same means that LoadableModule works everywhere. + + :param env: + :return: + """ + + createLoadableModuleBuilder(env) + + env['_get_ldmodule_stem'] = _get_ldmodule_stem + env['_LDMODULESOVERSION'] = _ldmodule_soversion + env['_LDMODULESONAME'] = _ldmodule_soname + + env['LDMODULENAME'] = '${LDMODULEPREFIX}$_get_ldmodule_stem${_LDMODULESUFFIX}' + + # This is the non versioned LDMODULE filename + # If LDMODULEVERSION is defined then this will symlink to $LDMODULENAME + env['LDMODULE_NOVERSION_SYMLINK'] = '$_get_shlib_dir${LDMODULEPREFIX}$_get_ldmodule_stem${LDMODULESUFFIX}' + + # This is the sonamed file name + # If LDMODULEVERSION is defined then this will symlink to $LDMODULENAME + env['LDMODULE_SONAME_SYMLINK'] = '$_get_shlib_dir$_LDMODULESONAME' + + env['_LDMODULEVERSION'] = _LDMODULEVERSION + + env['_LDMODULEVERSIONFLAGS'] = '$LDMODULEVERSIONFLAGS -Wl,-soname=$_LDMODULESONAME' + + env['LDMODULEEMITTER'] = [lib_emitter, ldmod_symlink_emitter] + + env['LDMODULEPREFIX'] = '$SHLIBPREFIX' + env['_LDMODULESUFFIX'] = '${LDMODULESUFFIX}${_LDMODULEVERSION}' + env['LDMODULESUFFIX'] = '$SHLIBSUFFIX' + + env['LDMODULE'] = '$SHLINK' + + env['LDMODULEFLAGS'] = '$SHLINKFLAGS' + + env['LDMODULECOM'] = '$LDMODULE -o $TARGET $LDMODULEFLAGS $__LDMODULEVERSIONFLAGS $__RPATH $SOURCES ' \ + '$_LIBDIRFLAGS $_LIBFLAGS ' + + env['LDMODULEVERSION'] = '$SHLIBVERSION' + env['LDMODULENOVERSIONSYMLINKS'] = '$SHLIBNOVERSIONSYMLINKS' \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/Tool/linkCommon/README.md b/scons/scons-local-4.5.1/SCons/Tool/linkCommon/README.md new file mode 100644 index 000000000..4a83c16bb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/linkCommon/README.md @@ -0,0 +1,89 @@ +# Current implementation details + +The code has been simplified to use Subst expansion do most of the work. + +The following internal env vars have been added which are python functions (note also ldmodule where shlib is below) +* `_get_shlib_stem` - given a library name `libxyz.so.1.1.0` it will retrievve `xyz` +* `_get_shlib_dir` - given a library with a path `DEF/a/b/libxyz.so.1.1.0` it will retrieve `DEF` +* `_SHLIBSOVERSION` - will look for `SOVERSION` and then `SHLIBVERSION` to determine the `SOVERSION` to be used in file naming +* `_SHLIBSONAME` - will check for and error if both `SONAME` and `SOVERSION` are defined, otherwise will generate the proper filenaming for SONAME +* `_SHLIBVERSION` - will return `SHLIBVERSION` or "" if SHLIBVERSION is defined +* `_SHLIBVERSIONFLAGS` - will return proper compiler flags for SHLIBVERSION +* `__SHLIBVERSIONFLAGS` - compiler defined proper versioned shared library flags +* `SHLIB_SONAME_SYMLINK` - this is the symlink for SONAME to be used (`libxyz.1.so`) +* `SHLIB_NOVERSION_SYMLINK` - this is the symlink for non-versioned filename (`libxyz.so`) +Shared library file nodes will have `node.attributes.shliblinks` which is a tuple of the symlinks to be created + + + +# Versioned Shared Library and Loadable modules requirements + +The following env variables can affect the command line and created files for these + +* `SHLIBVERSION` - If this is not set, the all of the following will be ignored? +* `SONAME` +* `SOVERSION` +* `APPLELINK_NO_CURRENT_VERSION` (applelink only) +* `APPLELINK_CURRENT_VERSION` (applelink only) +* `APPLELINK_COMPATIBILITY_VERSION` (applelink only) + +In most cases the linker will create a file named as + +`${SHLIBPREFIX}lib_name${SHLIBVERSION}${SHLIBSUFFIX}` + +Which will have a soname baked into it as one of the + +* `${SONAME}` +* `${SHLIBPREFIX}lib_name${SOVERSION}${SHLIBSUFFIX}` +* `-Wl,-soname=$_SHLIBSONAME` (for gnulink as similar) +* (for applelink only) + * `${SHLIBPREFIX}lib_name${major version only from SHLIBVERSION}${SHLIBSUFFIX}` + * `-Wl,-compatibility_version,%s` + * `-Wl,-current_version,%s` + +For **applelink** the version has to follow these rules to verify that the version # is valid. + +* For version # = X[.Y[.Z]] +* where X 0-65535 +* where Y either not specified or 0-255 +* where Z either not specified or 0-255 + + +For most platforms this will lead to a series of symlinks eventually pointing to the actual shared library (or loadable module file). +1. `${SHLIBPREFIX}lib_name${SHLIBSUFFIX} -> ${SHLIBPREFIX}lib_name${SHLIBVERSION}${SHLIBSUFFIX}` +1. `${SHLIBPREFIX}lib_name${SOVERSION}${SHLIBSUFFIX} -> ${SHLIBPREFIX}lib_name${SHLIBVERSION}${SHLIBSUFFIX}` + +These symlinks are stored by the emitter in the following +`target[0].attributes.shliblinks = symlinks` +This means that those values are fixed a the time SharedLibrary() is called (generally) + +For **openbsd** the following rules for symlinks apply + + * OpenBSD uses x.y shared library versioning numbering convention and doesn't use symlinks to backwards-compatible libraries + + + +User can request: +env.SharedLibrary('a',sources, SHLIBVERSION) +env.SharedLibrary('liba.so',sources, SHLIBVERSION) +Ideally we'll keep the 'a' for use in constructing all follow on. To do this we have to do it in the Builder() or at +least prevent BuilderBase._create_nodes() from discarding this info if it's available. + + +Firstly check if [SH|LD]LIBNOVERSIONSYMLINKS defined or if [SH|LD]LIBVERSION is not defined, if so we do nothing special + +The emitter can calculate the filename stem 'a' above and store it on the target node. Then also create the symlinks +and store those on the node. We should have all the information needed by the time the emitter is called. +Same should apply for loadable modules.. +This should be vastly simpler. +Unfortunately we cannot depend on the target having an OverrideEnvironment() which we could populate all the related +env variables in the emitter... +Maybe we can force one at that point? + + +SOVERSION can be specified, if not, then defaults to major portion of SHLIBVERSION +SONAME can be specified, if not defaults to ${SHLIBPREFIX}lib_name${SOVERSION} + +NOTE: mongodb uses Append(SHLIBEMITTER=.. ) for their libdeps stuff. (So test +with that once you have new logic working) + diff --git a/scons/scons-local-4.5.1/SCons/Tool/linkCommon/SharedLibrary.py b/scons/scons-local-4.5.1/SCons/Tool/linkCommon/SharedLibrary.py new file mode 100644 index 000000000..d18aa6b4b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/linkCommon/SharedLibrary.py @@ -0,0 +1,218 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +from SCons.Errors import UserError +from SCons.Tool import createSharedLibBuilder +from SCons.Util import CLVar +from . import lib_emitter, EmitLibSymlinks, StringizeLibSymlinks + + +def shlib_symlink_emitter(target, source, env, **kw): + verbose = False + + if "variable_prefix" in kw: + var_prefix = kw["variable_prefix"] + else: + var_prefix = "SHLIB" + + do_symlinks = env.subst("$%sNOVERSIONSYMLINKS" % var_prefix) + if do_symlinks in ["1", "True", "true", True]: + return target, source + + shlibversion = env.subst("$%sVERSION" % var_prefix) + if shlibversion: + if verbose: + print("shlib_symlink_emitter: %sVERSION=%s" % (var_prefix, shlibversion)) + + libnode = target[0] + shlib_soname_symlink = env.subst( + "$%s_SONAME_SYMLINK" % var_prefix, target=target, source=source + ) + shlib_noversion_symlink = env.subst( + "$%s_NOVERSION_SYMLINK" % var_prefix, target=target, source=source + ) + + if verbose: + print("shlib_soname_symlink :%s" % shlib_soname_symlink) + print("shlib_noversion_symlink :%s" % shlib_noversion_symlink) + print("libnode :%s" % libnode) + + shlib_soname_symlink = env.File(shlib_soname_symlink) + shlib_noversion_symlink = env.File(shlib_noversion_symlink) + + symlinks = [] + if shlib_soname_symlink != libnode: + # If soname and library name machine, don't symlink them together + symlinks.append((env.File(shlib_soname_symlink), libnode)) + + symlinks.append((env.File(shlib_noversion_symlink), libnode)) + + if verbose: + print( + "_lib_emitter: symlinks={!r}".format( + ", ".join( + ["%r->%r" % (k, v) for k, v in StringizeLibSymlinks(symlinks)] + ) + ) + ) + + if symlinks: + # This does the actual symlinking + EmitLibSymlinks(env, symlinks, target[0]) + + # This saves the information so if the versioned shared library is installed + # it can faithfully reproduce the correct symlinks + target[0].attributes.shliblinks = symlinks + + return target, source + + +def _soversion(target, source, env, for_signature): + """Function to determine what to use for SOVERSION""" + + if "SOVERSION" in env: + return ".$SOVERSION" + elif "SHLIBVERSION" in env: + shlibversion = env.subst("$SHLIBVERSION") + # We use only the most significant digit of SHLIBVERSION + return "." + shlibversion.split(".")[0] + else: + return "" + + +def _soname(target, source, env, for_signature): + if "SONAME" in env: + # Now verify that SOVERSION is not also set as that is not allowed + if "SOVERSION" in env: + raise UserError( + "Ambiguous library .so naming, both SONAME: %s and SOVERSION: %s are defined. " + "Only one can be defined for a target library." + % (env["SONAME"], env["SOVERSION"]) + ) + return "$SONAME" + else: + return "$SHLIBPREFIX$_get_shlib_stem${SHLIBSUFFIX}$_SHLIBSOVERSION" + + +def _get_shlib_stem(target, source, env, for_signature: bool) -> str: + """Get the base name of a shared library. + + Args: + target: target node containing the lib name + source: source node, not used + env: environment context for running subst + for_signature: whether this is being done for signature generation + + Returns: + the library name without prefix/suffix + """ + verbose = False + + target_name = str(target.name) + shlibprefix = env.subst("$SHLIBPREFIX") + shlibsuffix = env.subst("$_SHLIBSUFFIX") + + if verbose and not for_signature: + print( + "_get_shlib_stem: target_name:%s shlibprefix:%s shlibsuffix:%s" + % (target_name, shlibprefix, shlibsuffix) + ) + + + if shlibsuffix and target_name.endswith(shlibsuffix): + target_name = target_name[: -len(shlibsuffix)] + + if shlibprefix and target_name.startswith(shlibprefix): + # skip pathological case were target _is_ the prefix + if target_name != shlibprefix: + target_name = target_name[len(shlibprefix) :] + + + if verbose and not for_signature: + print("_get_shlib_stem: target_name:%s AFTER" % (target_name,)) + + return target_name + + +def _get_shlib_dir(target, source, env, for_signature: bool) -> str: + """Get the directory the shared library is in. + + Args: + target: target node + source: source node, not used + env: environment context, not used + for_signature: whether this is being done for signature generation + + Returns: + the directory the library will be in (empty string if '.') + """ + verbose = False + + if target.dir and str(target.dir) != ".": + if verbose: + print("_get_shlib_dir: target.dir:%s" % target.dir) + + return "%s/" % str(target.dir) + else: + return "" + + +def setup_shared_lib_logic(env): + """Initialize an environment for shared library building. + + Args: + env: environment to set up + """ + createSharedLibBuilder(env) + + env["_get_shlib_stem"] = _get_shlib_stem + env["_get_shlib_dir"] = _get_shlib_dir + env["_SHLIBSOVERSION"] = _soversion + env["_SHLIBSONAME"] = _soname + + env["SHLIBNAME"] = "${_get_shlib_dir}${SHLIBPREFIX}$_get_shlib_stem${_SHLIBSUFFIX}" + + # This is the non versioned shlib filename + # If SHLIBVERSION is defined then this will symlink to $SHLIBNAME + env["SHLIB_NOVERSION_SYMLINK"] = "${_get_shlib_dir}${SHLIBPREFIX}$_get_shlib_stem${SHLIBSUFFIX}" + + # This is the sonamed file name + # If SHLIBVERSION is defined then this will symlink to $SHLIBNAME + env["SHLIB_SONAME_SYMLINK"] = "${_get_shlib_dir}$_SHLIBSONAME" + + # Note this is gnu style + env["SHLIBSONAMEFLAGS"] = "-Wl,-soname=$_SHLIBSONAME" + env["_SHLIBVERSION"] = "${SHLIBVERSION and '.'+SHLIBVERSION or ''}" + env["_SHLIBVERSIONFLAGS"] = "$SHLIBVERSIONFLAGS -Wl,-soname=$_SHLIBSONAME" + + env["SHLIBEMITTER"] = [lib_emitter, shlib_symlink_emitter] + + # If it's already set, then don't overwrite. + env["SHLIBPREFIX"] = env.get('SHLIBPREFIX', "lib") + env["_SHLIBSUFFIX"] = "${SHLIBSUFFIX}${_SHLIBVERSION}" + + env["SHLINKFLAGS"] = CLVar("$LINKFLAGS -shared") + + env["SHLINKCOM"] = "$SHLINK -o $TARGET $SHLINKFLAGS $__SHLIBVERSIONFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS $_LIBFLAGS" + + env["SHLINK"] = "$LINK" diff --git a/scons/scons-local-4.5.1/SCons/Tool/linkCommon/__init__.py b/scons/scons-local-4.5.1/SCons/Tool/linkCommon/__init__.py new file mode 100644 index 000000000..5461ad3db --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/linkCommon/__init__.py @@ -0,0 +1,170 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Common link/shared library logic +""" + +import SCons.Util +import SCons.Warnings +from SCons.Tool.DCommon import isD +from SCons.Util import is_List + +issued_mixed_link_warning = False + + +def StringizeLibSymlinks(symlinks): + """Converts list with pairs of nodes to list with pairs of node paths + (strings). Used mainly for debugging.""" + if is_List(symlinks): + try: + return [(k.get_path(), v.get_path()) for k, v in symlinks] + except (TypeError, ValueError): + return symlinks + else: + return symlinks + + +def EmitLibSymlinks(env, symlinks, libnode, **kw): + """Used by emitters to handle (shared/versioned) library symlinks""" + Verbose = False + + # nodes involved in process... all symlinks + library + nodes = list(set([x for x, y in symlinks] + [libnode])) + + clean_targets = kw.get('clean_targets', []) + if not is_List(clean_targets): + clean_targets = [clean_targets] + + for link, linktgt in symlinks: + env.SideEffect(link, linktgt) + if Verbose: + print("EmitLibSymlinks: SideEffect(%r,%r)" % (link.get_path(), linktgt.get_path())) + clean_list = [x for x in nodes if x != linktgt] + env.Clean(list(set([linktgt] + clean_targets)), clean_list) + if Verbose: + print("EmitLibSymlinks: Clean(%r,%r)" % (linktgt.get_path(), [x.get_path() for x in clean_list])) + + +def CreateLibSymlinks(env, symlinks): + """Physically creates symlinks. The symlinks argument must be a list in + form [ (link, linktarget), ... ], where link and linktarget are SCons + nodes. + """ + Verbose = False + + for link, linktgt in symlinks: + linktgt = link.get_dir().rel_path(linktgt) + link = link.get_path() + if Verbose: + print("CreateLibSymlinks: preparing to add symlink %r -> %r" % (link, linktgt)) + # Delete the (previously created) symlink if exists. Let only symlinks + # to be deleted to prevent accidental deletion of source files... + if env.fs.islink(link): + env.fs.unlink(link) + if Verbose: + print("CreateLibSymlinks: removed old symlink %r" % link) + # If a file or directory exists with the same name as link, an OSError + # will be thrown, which should be enough, I think. + env.fs.symlink(linktgt, link) + if Verbose: + print("CreateLibSymlinks: add symlink %r -> %r" % (link, linktgt)) + return 0 + + +def LibSymlinksActionFunction(target, source, env): + for tgt in target: + symlinks = getattr(getattr(tgt, 'attributes', None), 'shliblinks', None) + if symlinks: + CreateLibSymlinks(env, symlinks) + return 0 + + +def LibSymlinksStrFun(target, source, env, *args): + cmd = None + for tgt in target: + symlinks = getattr(getattr(tgt, 'attributes', None), 'shliblinks', None) + if symlinks: + if cmd is None: cmd = "" + if cmd: cmd += "\n" + cmd += "Create symlinks for: %r\n " % tgt.get_path() + try: + linkstr = '\n '.join(["%r->%r" % (k, v) for k, v in StringizeLibSymlinks(symlinks)]) + except (KeyError, ValueError): + pass + else: + cmd += "%s" % linkstr + return cmd + + +def _call_env_subst(env, string, *args, **kw): + kw2 = {} + for k in ('raw', 'target', 'source', 'conv', 'executor'): + try: + kw2[k] = kw[k] + except KeyError: + pass + return env.subst(string, *args, **kw2) + + +def smart_link(source, target, env, for_signature): + import SCons.Tool.cxx + import SCons.Tool.FortranCommon + + has_cplusplus = SCons.Tool.cxx.iscplusplus(source) + has_fortran = SCons.Tool.FortranCommon.isfortran(env, source) + has_d = isD(env, source) + if has_cplusplus and has_fortran and not has_d: + global issued_mixed_link_warning + if not issued_mixed_link_warning: + msg = ( + "Using $CXX to link Fortran and C++ code together.\n" + " This may generate a buggy executable if the '%s'\n" + " compiler does not know how to deal with Fortran runtimes." + ) + SCons.Warnings.warn( + SCons.Warnings.FortranCxxMixWarning, msg % env.subst('$CXX') + ) + issued_mixed_link_warning = True + return '$CXX' + elif has_d: + env['LINKCOM'] = env['DLINKCOM'] + env['SHLINKCOM'] = env['SHDLINKCOM'] + return '$DC' + elif has_fortran: + return '$FORTRAN' + elif has_cplusplus: + return '$CXX' + return '$CC' + + +def lib_emitter(target, source, env, **kw): + verbose = False + if verbose: + print("_lib_emitter: target[0]={!r}".format(target[0].get_path())) + for tgt in target: + if SCons.Util.is_String(tgt): + tgt = env.File(tgt) + tgt.attributes.shared = 1 + + return target, source diff --git a/scons/scons-local-4.5.1/SCons/Tool/linkloc.py b/scons/scons-local-4.5.1/SCons/Tool/linkloc.py new file mode 100644 index 000000000..6ee5d6192 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/linkloc.py @@ -0,0 +1,112 @@ +"""SCons.Tool.linkloc + +Tool specification for the LinkLoc linker for the Phar Lap ETS embedded +operating system. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import re + +import SCons.Action +import SCons.Defaults +import SCons.Errors +import SCons.Tool +import SCons.Util + +from SCons.Tool.MSCommon import msvs_exists, merge_default_version +from SCons.Tool.PharLapCommon import addPharLapPaths + +_re_linker_command = re.compile(r'(\s)@\s*([^\s]+)') + +def repl_linker_command(m): + # Replaces any linker command file directives (e.g. "@foo.lnk") with + # the actual contents of the file. + try: + with open(m.group(2), "r") as f: + return m.group(1) + f.read() + except IOError: + # the linker should return an error if it can't + # find the linker command file so we will remain quiet. + # However, we will replace the @ with a # so we will not continue + # to find it with recursive substitution + return m.group(1) + '#' + m.group(2) + +class LinklocGenerator: + def __init__(self, cmdline): + self.cmdline = cmdline + + def __call__(self, env, target, source, for_signature): + if for_signature: + # Expand the contents of any linker command files recursively + subs = 1 + strsub = env.subst(self.cmdline, target=target, source=source) + while subs: + strsub, subs = _re_linker_command.subn(repl_linker_command, strsub) + return strsub + else: + return "${TEMPFILE('" + self.cmdline + "')}" + +def generate(env): + """Add Builders and construction variables for ar to an Environment.""" + SCons.Tool.createSharedLibBuilder(env) + SCons.Tool.createProgBuilder(env) + + env['SUBST_CMD_FILE'] = LinklocGenerator + env['SHLINK'] = '$LINK' + env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS') + env['SHLINKCOM'] = '${SUBST_CMD_FILE("$SHLINK $SHLINKFLAGS $_LIBDIRFLAGS $_LIBFLAGS -dll $TARGET $SOURCES")}' + env['SHLIBEMITTER']= None + env['LDMODULEEMITTER']= None + env['LINK'] = "linkloc" + env['LINKFLAGS'] = SCons.Util.CLVar('') + env['LINKCOM'] = '${SUBST_CMD_FILE("$LINK $LINKFLAGS $_LIBDIRFLAGS $_LIBFLAGS -exe $TARGET $SOURCES")}' + env['LIBDIRPREFIX']='-libpath ' + env['LIBDIRSUFFIX']='' + env['LIBLINKPREFIX']='-lib ' + env['LIBLINKSUFFIX']='$LIBSUFFIX' + + # Set-up ms tools paths for default version + merge_default_version(env) + + addPharLapPaths(env) + +def exists(env): + if msvs_exists(env): + return env.Detect('linkloc') + else: + return 0 + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/m4.py b/scons/scons-local-4.5.1/SCons/Tool/m4.py new file mode 100644 index 000000000..8506784de --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/m4.py @@ -0,0 +1,63 @@ +"""SCons.Tool.m4 + +Tool-specific initialization for m4. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Action +import SCons.Builder +import SCons.Util + +def generate(env): + """Add Builders and construction variables for m4 to an Environment.""" + M4Action = SCons.Action.Action('$M4COM', '$M4COMSTR') + bld = SCons.Builder.Builder(action = M4Action, src_suffix = '.m4') + + env['BUILDERS']['M4'] = bld + + # .m4 files might include other files, and it would be pretty hard + # to write a scanner for it, so let's just cd to the dir of the m4 + # file and run from there. + # The src_suffix setup is like so: file.c.m4 -> file.c, + # file.cpp.m4 -> file.cpp etc. + env['M4'] = 'm4' + env['M4FLAGS'] = SCons.Util.CLVar('-E') + env['M4COM'] = 'cd ${SOURCE.rsrcdir} && $M4 $M4FLAGS < ${SOURCE.file} > ${TARGET.abspath}' + +def exists(env): + return env.Detect('m4') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/masm.py b/scons/scons-local-4.5.1/SCons/Tool/masm.py new file mode 100644 index 000000000..b9d88cd19 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/masm.py @@ -0,0 +1,77 @@ +"""SCons.Tool.masm + +Tool-specific initialization for the Microsoft Assembler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Defaults +import SCons.Tool +import SCons.Util + +ASSuffixes = ['.s', '.asm', '.ASM'] +ASPPSuffixes = ['.spp', '.SPP', '.sx'] +if SCons.Util.case_sensitive_suffixes('.s', '.S'): + ASPPSuffixes.extend(['.S']) +else: + ASSuffixes.extend(['.S']) + +def generate(env): + """Add Builders and construction variables for masm to an Environment.""" + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + for suffix in ASSuffixes: + static_obj.add_action(suffix, SCons.Defaults.ASAction) + shared_obj.add_action(suffix, SCons.Defaults.ASAction) + static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter) + shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter) + + for suffix in ASPPSuffixes: + static_obj.add_action(suffix, SCons.Defaults.ASPPAction) + shared_obj.add_action(suffix, SCons.Defaults.ASPPAction) + static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter) + shared_obj.add_emitter(suffix, SCons.Defaults.SharedObjectEmitter) + + env['AS'] = 'ml' + env['ASFLAGS'] = SCons.Util.CLVar('/nologo') + env['ASPPFLAGS'] = '$ASFLAGS' + env['ASCOM'] = '$AS $ASFLAGS /c /Fo$TARGET $SOURCES' + env['ASPPCOM'] = '$CC $ASPPFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c /Fo$TARGET $SOURCES' + env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1 + +def exists(env): + return env.Detect('ml') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/midl.py b/scons/scons-local-4.5.1/SCons/Tool/midl.py new file mode 100644 index 000000000..c25ce69ad --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/midl.py @@ -0,0 +1,92 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons.Tool.midl + +Tool-specific initialization for midl (Microsoft IDL compiler). + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +import SCons.Action +import SCons.Builder +import SCons.Defaults +import SCons.Scanner.IDL +import SCons.Util + +from .MSCommon import msvc_setup_env_tool + +tool_name = 'midl' + + +def midl_emitter(target, source, env): + """Produces a list of outputs from the MIDL compiler""" + base, _ = SCons.Util.splitext(str(target[0])) + tlb = target[0] + incl = base + '.h' + interface = base + '_i.c' + targets = [tlb, incl, interface] + + midlcom = env['MIDLCOM'] + + if midlcom.find('/proxy') != -1: + proxy = base + '_p.c' + targets.append(proxy) + if midlcom.find('/dlldata') != -1: + dlldata = base + '_data.c' + targets.append(dlldata) + + return targets, source + + +idl_scanner = SCons.Scanner.IDL.IDLScan() + +midl_action = SCons.Action.Action('$MIDLCOM', '$MIDLCOMSTR') + +midl_builder = SCons.Builder.Builder(action=midl_action, + src_suffix='.idl', + suffix='.tlb', + emitter=midl_emitter, + source_scanner=idl_scanner) + + +def generate(env): + """Add Builders and construction variables for midl to an Environment.""" + + env['MIDL'] = 'MIDL.EXE' + env['MIDLFLAGS'] = SCons.Util.CLVar('/nologo') + env['MIDLCOM'] = '$MIDL $MIDLFLAGS /tlb ${TARGETS[0]} /h ${TARGETS[1]} /iid ${TARGETS[2]} /proxy ${TARGETS[3]} /dlldata ${TARGETS[4]} $SOURCE 2> NUL' + env['BUILDERS']['TypeLibrary'] = midl_builder + + +def exists(env): + return msvc_setup_env_tool(env, tool=tool_name) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/mingw.py b/scons/scons-local-4.5.1/SCons/Tool/mingw.py new file mode 100644 index 000000000..8e7ac2df9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/mingw.py @@ -0,0 +1,226 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons.Tool.gcc + +Tool-specific initialization for MinGW (http://www.mingw.org/) + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +import os +import os.path +import glob + +import SCons.Action +import SCons.Builder +import SCons.Defaults +import SCons.Tool +import SCons.Util + +mingw_base_paths = [ + r'c:\MinGW\bin', + r'C:\cygwin64\bin', + r'C:\msys64', + r'C:\msys64\mingw64\bin', + r'C:\cygwin\bin', + r'C:\msys', + r'C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin' +] + + +def shlib_generator(target, source, env, for_signature): + cmd = SCons.Util.CLVar(['$SHLINK', '$SHLINKFLAGS']) + + dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX') + if dll: cmd.extend(['-o', dll]) + + cmd.extend(['$SOURCES', '$_LIBDIRFLAGS', '$_LIBFLAGS']) + + implib = env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX') + if implib: cmd.append('-Wl,--out-implib,' + implib.get_string(for_signature)) + + def_target = env.FindIxes(target, 'WINDOWSDEFPREFIX', 'WINDOWSDEFSUFFIX') + insert_def = env.subst("$WINDOWS_INSERT_DEF") + if insert_def not in ['', '0', 0] and def_target: \ + cmd.append('-Wl,--output-def,' + def_target.get_string(for_signature)) + + return [cmd] + + +def shlib_emitter(target, source, env): + dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX') + no_import_lib = env.get('no_import_lib', 0) + + if not dll: + raise SCons.Errors.UserError( + "A shared library should have exactly one target with the suffix: %s Target(s) are:%s" % \ + (env.subst("$SHLIBSUFFIX"), ",".join([str(t) for t in target]))) + + if not no_import_lib and \ + not env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX'): + # Create list of target libraries as strings + targetStrings = env.ReplaceIxes(dll, + 'SHLIBPREFIX', 'SHLIBSUFFIX', + 'LIBPREFIX', 'LIBSUFFIX') + + # Now add file nodes to target list + target.append(env.fs.File(targetStrings)) + + # Append a def file target if there isn't already a def file target + # or a def file source or the user has explicitly asked for the target + # to be emitted. + def_source = env.FindIxes(source, 'WINDOWSDEFPREFIX', 'WINDOWSDEFSUFFIX') + def_target = env.FindIxes(target, 'WINDOWSDEFPREFIX', 'WINDOWSDEFSUFFIX') + skip_def_insert = env.subst("$WINDOWS_INSERT_DEF") in ['', '0', 0] + if not def_source and not def_target and not skip_def_insert: + # Create list of target libraries and def files as strings + targetStrings = env.ReplaceIxes(dll, + 'SHLIBPREFIX', 'SHLIBSUFFIX', + 'WINDOWSDEFPREFIX', 'WINDOWSDEFSUFFIX') + + # Now add file nodes to target list + target.append(env.fs.File(targetStrings)) + + return (target, source) + + +shlib_action = SCons.Action.Action(shlib_generator, '$SHLINKCOMSTR', generator=1) +ldmodule_action = SCons.Action.Action(shlib_generator, '$LDMODULECOMSTR', generator=1) + +res_action = SCons.Action.Action('$RCCOM', '$RCCOMSTR') + +res_builder = SCons.Builder.Builder(action=res_action, suffix='.o', + source_scanner=SCons.Tool.SourceFileScanner) +SCons.Tool.SourceFileScanner.add_scanner('.rc', SCons.Defaults.CScan) + +# This is what we search for to find mingw: +# key_program = 'mingw32-gcc' +key_program = 'mingw32-make' + + +def find_version_specific_mingw_paths(): + r""" + One example of default mingw install paths is: + C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev2\mingw64\bin + + Use glob'ing to find such and add to mingw_base_paths + """ + new_paths = glob.glob(r"C:\mingw-w64\*\mingw64\bin") + + return new_paths + + +_mingw_all_paths = None + +def get_mingw_paths(): + global _mingw_all_paths + if _mingw_all_paths is None: + _mingw_all_paths = mingw_base_paths + find_version_specific_mingw_paths() + return _mingw_all_paths + +def generate(env): + # Check for reasoanble mingw default paths + mingw_paths = get_mingw_paths() + + mingw = SCons.Tool.find_program_path(env, key_program, default_paths=mingw_paths) + if mingw: + mingw_bin_dir = os.path.dirname(mingw) + + # Adjust path if we found it in a chocolatey install + if mingw_bin_dir == r'C:\ProgramData\chocolatey\bin': + mingw_bin_dir = r'C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin' + + env.AppendENVPath('PATH', mingw_bin_dir) + + # Most of mingw is the same as gcc and friends... + gnu_tools = ['gcc', 'g++', 'gnulink', 'ar', 'gas', 'gfortran', 'm4'] + for tool in gnu_tools: + SCons.Tool.Tool(tool)(env) + + # ... but a few things differ: + env['CC'] = 'gcc' + # make sure the msvc tool doesnt break us, it added a /flag + if 'CCFLAGS' in env: + # make sure its a CLVar to handle list or str cases + if type(env['CCFLAGS']) is not SCons.Util.CLVar: + env['CCFLAGS'] = SCons.Util.CLVar(env['CCFLAGS']) + env['CCFLAGS'] = SCons.Util.CLVar(str(env['CCFLAGS']).replace('/nologo', '')) + env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS') + env['CXX'] = 'g++' + env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS') + env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared') + env['SHLINKCOM'] = shlib_action + env['SHLINKCOMSTR'] = shlib_generator + env['LDMODULECOM'] = ldmodule_action + env.Append(SHLIBEMITTER=[shlib_emitter]) + env.Append(LDMODULEEMITTER=[shlib_emitter]) + env['AS'] = 'as' + + env['WINDOWSDEFPREFIX'] = '' + env['WINDOWSDEFSUFFIX'] = '.def' + + env['SHOBJSUFFIX'] = '.o' + env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1 + env['RC'] = 'windres' + env['RCFLAGS'] = SCons.Util.CLVar('') + env['RCINCFLAGS'] = '${_concat(RCINCPREFIX, CPPPATH, RCINCSUFFIX, __env__, RDirs, TARGET, SOURCE, affect_signature=False)}' + env['RCINCPREFIX'] = '--include-dir ' + env['RCINCSUFFIX'] = '' + env['RCCOM'] = '$RC $_CPPDEFFLAGS $RCINCFLAGS ${RCINCPREFIX} ${SOURCE.dir} $RCFLAGS -i $SOURCE -o $TARGET' + env['BUILDERS']['RES'] = res_builder + + # Some setting from the platform also have to be overridden: + env['OBJSUFFIX'] = '.o' + env['LIBPREFIX'] = 'lib' + env['LIBSUFFIX'] = '.a' + env['PROGSUFFIX'] = '.exe' + + # Handle new versioned shared library logic + env['_SHLIBSUFFIX'] = '$SHLIBSUFFIX' + env["SHLIBPREFIX"] = "" + + # Disable creating symlinks for versioned shared library. + env['SHLIBNOVERSIONSYMLINKS'] = True + env['LDMODULENOVERSIONSYMLINKS'] = True + env['IMPLIBNOVERSIONSYMLINKS'] = True + + + +def exists(env): + mingw_paths = get_mingw_paths() + mingw = SCons.Tool.find_program_path(env, key_program, default_paths=mingw_paths) + if mingw: + mingw_bin_dir = os.path.dirname(mingw) + env.AppendENVPath('PATH', mingw_bin_dir) + + return mingw + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/msgfmt.py b/scons/scons-local-4.5.1/SCons/Tool/msgfmt.py new file mode 100644 index 000000000..a15c1dcc0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/msgfmt.py @@ -0,0 +1,132 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" msgfmt tool """ + +import sys +import os + +import SCons.Action +import SCons.Tool +import SCons.Util +import SCons.Warnings +from SCons.Builder import BuilderBase +from SCons.Errors import StopError +from SCons.Platform.cygwin import CYGWIN_DEFAULT_PATHS +from SCons.Platform.mingw import MINGW_DEFAULT_PATHS +from SCons.Tool.GettextCommon import ( + _detect_msgfmt, + _msgfmt_exists, + # MsgfmtToolWarning, + _read_linguas_from_files, +) + +class _MOFileBuilder(BuilderBase): + """The builder class for `MO` files. + + The reason for this builder to exists and its purpose is quite simillar + as for `_POFileBuilder`. This time, we extend list of sources, not targets, + and call `BuilderBase._execute()` only once (as we assume single-target + here). + """ + + def _execute(self, env, target, source, *args, **kw): + # Here we add support for 'LINGUAS_FILE' keyword. Emitter is not suitable + # in this case, as it is called too late (after multiple sources + # are handled single_source builder. + + linguas_files = None + if 'LINGUAS_FILE' in env and env['LINGUAS_FILE'] is not None: + linguas_files = env['LINGUAS_FILE'] + # This should prevent from endless recursion. + env['LINGUAS_FILE'] = None + # We read only languages. Suffixes shall be added automatically. + linguas = _read_linguas_from_files(env, linguas_files) + if SCons.Util.is_List(source): + source.extend(linguas) + elif source is not None: + source = [source] + linguas + else: + source = linguas + result = BuilderBase._execute(self, env, target, source, *args, **kw) + if linguas_files is not None: + env['LINGUAS_FILE'] = linguas_files + return result + + +def _create_mo_file_builder(env, **kw): + """ Create builder object for `MOFiles` builder """ + + # FIXME: What factory use for source? Ours or their? + kw['action'] = SCons.Action.Action('$MSGFMTCOM', '$MSGFMTCOMSTR') + kw['suffix'] = '$MOSUFFIX' + kw['src_suffix'] = '$POSUFFIX' + kw['src_builder'] = '_POUpdateBuilder' + kw['single_source'] = True + return _MOFileBuilder(**kw) + + +def generate(env, **kw): + """ Generate `msgfmt` tool """ + + if sys.platform == 'win32': + msgfmt = SCons.Tool.find_program_path( + env, 'msgfmt', default_paths=MINGW_DEFAULT_PATHS + CYGWIN_DEFAULT_PATHS + ) + if msgfmt: + msgfmt_bin_dir = os.path.dirname(msgfmt) + env.AppendENVPath('PATH', msgfmt_bin_dir) + else: + SCons.Warnings.warn( + # MsgfmtToolWarning, # using this breaks test, so keep: + SCons.Warnings.SConsWarning, + 'msgfmt tool requested, but binary not found in ENV PATH', + ) + + try: + env['MSGFMT'] = _detect_msgfmt(env) + except StopError: + env['MSGFMT'] = 'msgfmt' + env.SetDefault( + MSGFMTFLAGS=[SCons.Util.CLVar('-c')], + MSGFMTCOM='$MSGFMT $MSGFMTFLAGS -o $TARGET $SOURCE', + MSGFMTCOMSTR='', + MOSUFFIX=['.mo'], + POSUFFIX=['.po'], + ) + env.Append(BUILDERS={'MOFiles': _create_mo_file_builder(env)}) + + +def exists(env): + """ Check if the tool exists """ + + try: + return _msgfmt_exists(env) + except StopError: + return False + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/msginit.py b/scons/scons-local-4.5.1/SCons/Tool/msginit.py new file mode 100644 index 000000000..9635f5710 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/msginit.py @@ -0,0 +1,137 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool specific initialization of msginit tool.""" + +import sys +import os + +import SCons.Action +import SCons.Tool +import SCons.Util +import SCons.Warnings +from SCons.Environment import _null +from SCons.Errors import StopError +from SCons.Platform.cygwin import CYGWIN_DEFAULT_PATHS +from SCons.Platform.mingw import MINGW_DEFAULT_PATHS +from SCons.Tool.GettextCommon import ( + _detect_msginit, + _init_po_files, + _msginit_exists, + # MsginitToolWarning, + _POFileBuilder, +) + + +def _optional_no_translator_flag(env): + """Return '--no-translator' flag if we run *msginit(1)* in non-interactive + mode.""" + if 'POAUTOINIT' in env: + autoinit = env['POAUTOINIT'] + else: + autoinit = False + if autoinit: + return [SCons.Util.CLVar('--no-translator')] + else: + return [SCons.Util.CLVar('')] + + +def _POInitBuilder(env, **kw): + """ Create builder object for `POInit` builder. """ + + action = SCons.Action.Action(_init_po_files, None) + return _POFileBuilder(env, action=action, target_alias='$POCREATE_ALIAS') + + +def _POInitBuilderWrapper(env, target=None, source=_null, **kw): + """Wrapper for _POFileBuilder. We use it to make user's life easier. + + This wrapper checks for `$POTDOMAIN` construction variable (or override in + `**kw`) and treats it appropriatelly. + """ + if source is _null: + if 'POTDOMAIN' in kw: + domain = kw['POTDOMAIN'] + elif 'POTDOMAIN' in env: + domain = env['POTDOMAIN'] + else: + domain = 'messages' + source = [domain] # NOTE: Suffix shall be appended automatically + return env._POInitBuilder(target, source, **kw) + +def generate(env, **kw): + """ Generate the `msginit` tool """ + + if sys.platform == 'win32': + msginit = SCons.Tool.find_program_path( + env, 'msginit', default_paths=MINGW_DEFAULT_PATHS + CYGWIN_DEFAULT_PATHS + ) + if msginit: + msginit_bin_dir = os.path.dirname(msginit) + env.AppendENVPath('PATH', msginit_bin_dir) + else: + SCons.Warnings.warn( + # MsginitToolWarning, # using this breaks test, so keep: + SCons.Warnings.SConsWarning, + 'msginit tool requested, but binary not found in ENV PATH', + ) + + try: + env['MSGINIT'] = _detect_msginit(env) + except StopError: + env['MSGINIT'] = 'msginit' + msginitcom = ( + '$MSGINIT ${_MSGNoTranslator(__env__)} -l ${_MSGINITLOCALE}' + + ' $MSGINITFLAGS -i $SOURCE -o $TARGET' + ) + # NOTE: We set POTSUFFIX here, in case the 'xgettext' is not loaded + # (sometimes we really don't need it) + env.SetDefault( + POSUFFIX=['.po'], + POTSUFFIX=['.pot'], + _MSGINITLOCALE='${TARGET.filebase}', + _MSGNoTranslator=_optional_no_translator_flag, + MSGINITCOM=msginitcom, + MSGINITCOMSTR='', + MSGINITFLAGS=[], + POAUTOINIT=False, + POCREATE_ALIAS='po-create', + ) + env.Append(BUILDERS={'_POInitBuilder': _POInitBuilder(env)}) + env.AddMethod(_POInitBuilderWrapper, 'POInit') + env.AlwaysBuild(env.Alias('$POCREATE_ALIAS')) + + +def exists(env): + """ Check if the tool exists """ + + try: + return _msginit_exists(env) + except StopError: + return False + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/msgmerge.py b/scons/scons-local-4.5.1/SCons/Tool/msgmerge.py new file mode 100644 index 000000000..69508ebbf --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/msgmerge.py @@ -0,0 +1,125 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool specific initialization for `msgmerge` tool.""" + +import sys +import os + +import SCons.Action +import SCons.Tool +import SCons.Warnings +from SCons.Errors import StopError +from SCons.Platform.cygwin import CYGWIN_DEFAULT_PATHS +from SCons.Platform.mingw import MINGW_DEFAULT_PATHS +from SCons.Tool.GettextCommon import ( + _detect_msgmerge, + _init_po_files, + _msgmerge_exists, + # MsgmergeToolWarning, + _POFileBuilder, +) + +def _update_or_init_po_files(target, source, env): + """ Action function for `POUpdate` builder """ + + for tgt in target: + if tgt.rexists(): + action = SCons.Action.Action('$MSGMERGECOM', '$MSGMERGECOMSTR') + else: + action = _init_po_files + status = action([tgt], source, env) + if status: + return status + return 0 + + +def _POUpdateBuilder(env, **kw): + """ Create an object of `POUpdate` builder """ + + action = SCons.Action.Action(_update_or_init_po_files, None) + return _POFileBuilder(env, action=action, target_alias='$POUPDATE_ALIAS') + + +from SCons.Environment import _null + + +def _POUpdateBuilderWrapper(env, target=None, source=_null, **kw): + """ Wrapper for `POUpdate` builder - make user's life easier """ + if source is _null: + if 'POTDOMAIN' in kw: + domain = kw['POTDOMAIN'] + elif 'POTDOMAIN' in env and env['POTDOMAIN']: + domain = env['POTDOMAIN'] + else: + domain = 'messages' + source = [domain] # NOTE: Suffix shall be appended automatically + return env._POUpdateBuilder(target, source, **kw) + + +def generate(env, **kw): + """ Generate the `msgmerge` tool """ + + if sys.platform == 'win32': + msgmerge = SCons.Tool.find_program_path( + env, 'msgmerge', default_paths=MINGW_DEFAULT_PATHS + CYGWIN_DEFAULT_PATHS + ) + if msgmerge: + msgmerge_bin_dir = os.path.dirname(msgmerge) + env.AppendENVPath('PATH', msgmerge_bin_dir) + else: + SCons.Warnings.warn( + # MsgmergeToolWarning, # using this breaks test, so keep: + SCons.Warnings.SConsWarning, + 'msgmerge tool requested, but binary not found in ENV PATH', + ) + try: + env['MSGMERGE'] = _detect_msgmerge(env) + except StopError: + env['MSGMERGE'] = 'msgmerge' + env.SetDefault( + POTSUFFIX=['.pot'], + POSUFFIX=['.po'], + MSGMERGECOM='$MSGMERGE $MSGMERGEFLAGS --update $TARGET $SOURCE', + MSGMERGECOMSTR='', + MSGMERGEFLAGS=[], + POUPDATE_ALIAS='po-update', + ) + env.Append(BUILDERS={'_POUpdateBuilder': _POUpdateBuilder(env)}) + env.AddMethod(_POUpdateBuilderWrapper, 'POUpdate') + env.AlwaysBuild(env.Alias('$POUPDATE_ALIAS')) + + +def exists(env): + """ Check if the tool exists """ + + try: + return _msgmerge_exists(env) + except StopError: + return False + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/mslib.py b/scons/scons-local-4.5.1/SCons/Tool/mslib.py new file mode 100644 index 000000000..be4088b15 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/mslib.py @@ -0,0 +1,75 @@ +"""SCons.Tool.mslib + +Tool-specific initialization for lib (MicroSoft library archiver). + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os + +import SCons.Defaults +import SCons.Tool +import SCons.Tool.msvs +import SCons.Tool.msvc +import SCons.Util + +from .MSCommon import msvc_setup_env_tool, msvc_setup_env_once + +tool_name = 'mslib' + +def generate(env): + """Add Builders and construction variables for lib to an Environment.""" + SCons.Tool.createStaticLibBuilder(env) + + # Set-up ms tools paths + msvc_setup_env_once(env, tool=tool_name) + + env['AR'] = 'lib' + env['ARFLAGS'] = SCons.Util.CLVar('/nologo') + env['ARCOM'] = "${TEMPFILE('$AR $ARFLAGS /OUT:$TARGET $SOURCES','$ARCOMSTR')}" + env['LIBPREFIX'] = '' + env['LIBSUFFIX'] = '.lib' + + # Issue #3350 + # Change tempfile argument joining character from a space to a newline + # mslink will fail if any single line is too long, but is fine with many lines + # in a tempfile + env['TEMPFILEARGJOIN'] = os.linesep + + +def exists(env): + return msvc_setup_env_tool(env, tool=tool_name) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/mslink.py b/scons/scons-local-4.5.1/SCons/Tool/mslink.py new file mode 100644 index 000000000..2a90e174e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/mslink.py @@ -0,0 +1,341 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons.Tool.mslink + +Tool-specific initialization for the Microsoft linker. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +import os +import os.path + +import SCons.Action +import SCons.Defaults +import SCons.Errors +import SCons.Platform.win32 +import SCons.Tool +import SCons.Tool.msvc +import SCons.Tool.msvs +import SCons.Util + +from .MSCommon import msvc_setup_env_once, msvc_setup_env_tool +from .MSCommon.common import get_pch_node + +tool_name = 'mslink' + +def pdbGenerator(env, target, source, for_signature): + try: + return ['/PDB:%s' % target[0].attributes.pdb, '/DEBUG'] + except (AttributeError, IndexError): + return None + +def _dllTargets(target, source, env, for_signature, paramtp): + listCmd = [] + dll = env.FindIxes(target, '%sPREFIX' % paramtp, '%sSUFFIX' % paramtp) + if dll: listCmd.append("/out:%s"%dll.get_string(for_signature)) + + implib = env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX') + if implib: listCmd.append("/implib:%s"%implib.get_string(for_signature)) + + return listCmd + +def _dllSources(target, source, env, for_signature, paramtp): + listCmd = [] + + deffile = env.FindIxes(source, "WINDOWSDEFPREFIX", "WINDOWSDEFSUFFIX") + for src in source: + # Check explicitly for a non-None deffile so that the __cmp__ + # method of the base SCons.Util.Proxy class used for some Node + # proxies doesn't try to use a non-existent __dict__ attribute. + if deffile and src == deffile: + # Treat this source as a .def file. + listCmd.append("/def:%s" % src.get_string(for_signature)) + else: + # Just treat it as a generic source file. + listCmd.append(src) + return listCmd + +def windowsShlinkTargets(target, source, env, for_signature): + return _dllTargets(target, source, env, for_signature, 'SHLIB') + +def windowsShlinkSources(target, source, env, for_signature): + return _dllSources(target, source, env, for_signature, 'SHLIB') + +def _windowsLdmodTargets(target, source, env, for_signature): + """Get targets for loadable modules.""" + return _dllTargets(target, source, env, for_signature, 'LDMODULE') + +def _windowsLdmodSources(target, source, env, for_signature): + """Get sources for loadable modules.""" + return _dllSources(target, source, env, for_signature, 'LDMODULE') + +def _dllEmitter(target, source, env, paramtp): + """Common implementation of dll emitter.""" + SCons.Tool.msvc.validate_vars(env) + + extratargets = [] + extrasources = [] + + dll = env.FindIxes(target, '%sPREFIX' % paramtp, '%sSUFFIX' % paramtp) + no_import_lib = env.get('no_import_lib', 0) + + if not dll: + raise SCons.Errors.UserError('A shared library should have exactly one target with the suffix: %s' % env.subst('$%sSUFFIX' % paramtp)) + + insert_def = env.subst("$WINDOWS_INSERT_DEF") + if insert_def not in ['', '0', 0] and \ + not env.FindIxes(source, "WINDOWSDEFPREFIX", "WINDOWSDEFSUFFIX"): + + # append a def file to the list of sources + extrasources.append( + env.ReplaceIxes(dll, + '%sPREFIX' % paramtp, '%sSUFFIX' % paramtp, + "WINDOWSDEFPREFIX", "WINDOWSDEFSUFFIX")) + + version_num, suite = SCons.Tool.msvs.msvs_parse_version(env.get('MSVS_VERSION', '6.0')) + if version_num >= 8.0 and \ + (env.get('WINDOWS_INSERT_MANIFEST', 0) or env.get('WINDOWS_EMBED_MANIFEST', 0)): + # MSVC 8 and above automatically generate .manifest files that must be installed + extratargets.append( + env.ReplaceIxes(dll, + '%sPREFIX' % paramtp, '%sSUFFIX' % paramtp, + "WINDOWSSHLIBMANIFESTPREFIX", "WINDOWSSHLIBMANIFESTSUFFIX")) + + if 'PDB' in env and env['PDB']: + pdb = env.arg2nodes('$PDB', target=target, source=source)[0] + extratargets.append(pdb) + target[0].attributes.pdb = pdb + + pch_node = get_pch_node(env, target, source) + if version_num >= 11.0 and pch_node: + # MSVC 11 and above need the PCH object file to be added to the link line, + # otherwise you get link error LNK2011. + pchobj = SCons.Util.splitext(str(pch_node))[0] + '.obj' + # print "prog_emitter, version %s, appending pchobj %s"%(version_num, pchobj) + if pchobj not in extrasources: + extrasources.append(pchobj) + + if not no_import_lib and \ + not env.FindIxes(target, "LIBPREFIX", "LIBSUFFIX"): + # Append an import library to the list of targets. + extratargets.append( + env.ReplaceIxes(dll, + '%sPREFIX' % paramtp, '%sSUFFIX' % paramtp, + "LIBPREFIX", "LIBSUFFIX")) + # and .exp file is created if there are exports from a DLL + extratargets.append( + env.ReplaceIxes(dll, + '%sPREFIX' % paramtp, '%sSUFFIX' % paramtp, + "WINDOWSEXPPREFIX", "WINDOWSEXPSUFFIX")) + + return (target+extratargets, source+extrasources) + +def windowsLibEmitter(target, source, env): + return _dllEmitter(target, source, env, 'SHLIB') + +def ldmodEmitter(target, source, env): + """Emitter for loadable modules. + + Loadable modules are identical to shared libraries on Windows, but building + them is subject to different parameters (LDMODULE*). + """ + return _dllEmitter(target, source, env, 'LDMODULE') + +def prog_emitter(target, source, env): + SCons.Tool.msvc.validate_vars(env) + + extratargets = [] + extrasources = [] + + exe = env.FindIxes(target, "PROGPREFIX", "PROGSUFFIX") + if not exe: + raise SCons.Errors.UserError("An executable should have exactly one target with the suffix: %s" % env.subst("$PROGSUFFIX")) + + version_num, suite = SCons.Tool.msvs.msvs_parse_version(env.get('MSVS_VERSION', '6.0')) + if version_num >= 8.0 and \ + (env.get('WINDOWS_INSERT_MANIFEST', 0) or env.get('WINDOWS_EMBED_MANIFEST', 0)): + # MSVC 8 and above automatically generate .manifest files that have to be installed + extratargets.append( + env.ReplaceIxes(exe, + "PROGPREFIX", "PROGSUFFIX", + "WINDOWSPROGMANIFESTPREFIX", "WINDOWSPROGMANIFESTSUFFIX")) + + if 'PDB' in env and env['PDB']: + pdb = env.arg2nodes('$PDB', target=target, source=source)[0] + extratargets.append(pdb) + target[0].attributes.pdb = pdb + + pch_node = get_pch_node(env, target, source) + if version_num >= 11.0 and pch_node: + # MSVC 11 and above need the PCH object file to be added to the link line, + # otherwise you get link error LNK2011. + pchobj = SCons.Util.splitext(str(pch_node))[0] + '.obj' + # print "prog_emitter, version %s, appending pchobj %s"%(version_num, pchobj) + if pchobj not in extrasources: + extrasources.append(pchobj) + + return (target+extratargets,source+extrasources) + +def RegServerFunc(target, source, env): + if 'register' in env and env['register']: + ret = regServerAction([target[0]], [source[0]], env) + if ret: + raise SCons.Errors.UserError("Unable to register %s" % target[0]) + else: + print("Registered %s sucessfully" % target[0]) + return ret + return 0 + +# These are the actual actions run to embed the manifest. +# They are only called from the Check versions below. +embedManifestExeAction = SCons.Action.Action('$MTEXECOM') +embedManifestDllAction = SCons.Action.Action('$MTSHLIBCOM') + +def embedManifestDllCheck(target, source, env): + """Function run by embedManifestDllCheckAction to check for existence of manifest + and other conditions, and embed the manifest by calling embedManifestDllAction if so.""" + if env.get('WINDOWS_EMBED_MANIFEST', 0): + manifestSrc = target[0].get_abspath() + '.manifest' + if os.path.exists(manifestSrc): + ret = embedManifestDllAction([target[0]], None, env) + if ret: + raise SCons.Errors.UserError("Unable to embed manifest into %s" % (target[0])) + return ret + else: + print('(embed: no %s.manifest found; not embedding.)'%str(target[0])) + return 0 + +def embedManifestExeCheck(target, source, env): + """Function run by embedManifestExeCheckAction to check for existence of manifest + and other conditions, and embed the manifest by calling embedManifestExeAction if so.""" + if env.get('WINDOWS_EMBED_MANIFEST', 0): + manifestSrc = target[0].get_abspath() + '.manifest' + if os.path.exists(manifestSrc): + ret = embedManifestExeAction([target[0]], None, env) + if ret: + raise SCons.Errors.UserError("Unable to embed manifest into %s" % (target[0])) + return ret + else: + print('(embed: no %s.manifest found; not embedding.)'%str(target[0])) + return 0 + +embedManifestDllCheckAction = SCons.Action.Action(embedManifestDllCheck, None) +embedManifestExeCheckAction = SCons.Action.Action(embedManifestExeCheck, None) + +regServerAction = SCons.Action.Action("$REGSVRCOM", "$REGSVRCOMSTR") +regServerCheck = SCons.Action.Action(RegServerFunc, None) +shlibLinkAction = SCons.Action.Action('${TEMPFILE("$SHLINK $SHLINKFLAGS $_SHLINK_TARGETS $_LIBDIRFLAGS $_LIBFLAGS $_PDB $_SHLINK_SOURCES", "$SHLINKCOMSTR")}', '$SHLINKCOMSTR') +compositeShLinkAction = shlibLinkAction + regServerCheck + embedManifestDllCheckAction +ldmodLinkAction = SCons.Action.Action('${TEMPFILE("$LDMODULE $LDMODULEFLAGS $_LDMODULE_TARGETS $_LIBDIRFLAGS $_LIBFLAGS $_PDB $_LDMODULE_SOURCES", "$LDMODULECOMSTR")}', '$LDMODULECOMSTR') +compositeLdmodAction = ldmodLinkAction + regServerCheck + embedManifestDllCheckAction +exeLinkAction = SCons.Action.Action('${TEMPFILE("$LINK $LINKFLAGS /OUT:$TARGET.windows $_LIBDIRFLAGS $_LIBFLAGS $_PDB $SOURCES.windows", "$LINKCOMSTR")}', '$LINKCOMSTR') +compositeLinkAction = exeLinkAction + embedManifestExeCheckAction + +def generate(env): + """Add Builders and construction variables for ar to an Environment.""" + SCons.Tool.createSharedLibBuilder(env, shlib_suffix='$SHLIBSUFFIX') + SCons.Tool.createProgBuilder(env) + + env['SHLINK'] = '$LINK' + env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS /dll') + env['_SHLINK_TARGETS'] = windowsShlinkTargets + env['_SHLINK_SOURCES'] = windowsShlinkSources + env['SHLINKCOM'] = compositeShLinkAction + env.Append(SHLIBEMITTER=[windowsLibEmitter]) + env.Append(LDMODULEEMITTER=[windowsLibEmitter]) + env['LINK'] = 'link' + env['LINKFLAGS'] = SCons.Util.CLVar('/nologo') + env['_PDB'] = pdbGenerator + env['LINKCOM'] = compositeLinkAction + env.Append(PROGEMITTER=[prog_emitter]) + env['LIBDIRPREFIX'] = '/LIBPATH:' + env['LIBDIRSUFFIX'] = '' + env['LIBLINKPREFIX'] = '' + env['LIBLINKSUFFIX'] = '$LIBSUFFIX' + + env['WINDOWSDEFPREFIX'] = '' + env['WINDOWSDEFSUFFIX'] = '.def' + env['WINDOWSEXPPREFIX'] = '' + env['WINDOWSEXPSUFFIX'] = '.exp' + env['WINDOWS_INSERT_DEF'] = 0 + + env['WINDOWSSHLIBMANIFESTPREFIX'] = '' + env['WINDOWSSHLIBMANIFESTSUFFIX'] = '${SHLIBSUFFIX}.manifest' + env['WINDOWSPROGMANIFESTPREFIX'] = '' + env['WINDOWSPROGMANIFESTSUFFIX'] = '${PROGSUFFIX}.manifest' + + env['REGSVRACTION'] = regServerCheck + env['REGSVR'] = os.path.join( + SCons.Platform.win32.get_system_root(), 'System32', 'regsvr32' + ) + env['REGSVRFLAGS'] = '/s ' + env['REGSVRCOM'] = '$REGSVR $REGSVRFLAGS ${TARGET.windows}' + + env['WINDOWS_EMBED_MANIFEST'] = 0 + env['MT'] = 'mt' + # env['MTFLAGS'] = ['-hashupdate'] + env['MTFLAGS'] = SCons.Util.CLVar('/nologo') + # Note: use - here to prevent build failure if no manifest produced. + # This seems much simpler than a fancy system using a function action to see + # if the manifest actually exists before trying to run mt with it. + env['MTEXECOM'] = '-$MT $MTFLAGS -manifest ${TARGET}.manifest $_MANIFEST_SOURCES -outputresource:$TARGET;1' + env['MTSHLIBCOM'] = '-$MT $MTFLAGS -manifest ${TARGET}.manifest $_MANIFEST_SOURCES -outputresource:$TARGET;2' + # TODO Future work garyo 27-Feb-11 + env['_MANIFEST_SOURCES'] = None # _windowsManifestSources + + # Set-up ms tools paths + msvc_setup_env_once(env, tool=tool_name) + + # Loadable modules are on Windows the same as shared libraries, but they + # are subject to different build parameters (LDMODULE* variables). + # Therefore LDMODULE* variables correspond as much as possible to + # SHLINK*/SHLIB* ones. + SCons.Tool.createLoadableModuleBuilder(env, loadable_module_suffix='$LDMODULESUFFIX') + env['LDMODULE'] = '$SHLINK' + env['LDMODULEPREFIX'] = '$SHLIBPREFIX' + env['LDMODULESUFFIX'] = '$SHLIBSUFFIX' + env['LDMODULEFLAGS'] = '$SHLINKFLAGS' + env['_LDMODULE_TARGETS'] = _windowsLdmodTargets + env['_LDMODULE_SOURCES'] = _windowsLdmodSources + env['LDMODULEEMITTER'] = [ldmodEmitter] + env['LDMODULECOM'] = compositeLdmodAction + + # Issue #3350 + # Change tempfile argument joining character from a space to a newline + # mslink will fail if any single line is too long, but is fine with many lines + # in a tempfile + env['TEMPFILEARGJOIN'] = os.linesep + +def exists(env): + return msvc_setup_env_tool(env, tool=tool_name) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/mssdk.py b/scons/scons-local-4.5.1/SCons/Tool/mssdk.py new file mode 100644 index 000000000..b94f105f0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/mssdk.py @@ -0,0 +1,50 @@ +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +"""SCons.Tool.mssdk + +Tool-specific initialization for Microsoft SDKs, both Platform +SDKs and Windows SDKs. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +from .MSCommon import mssdk_exists, \ + mssdk_setup_env + +def generate(env): + """Add construction variables for an MS SDK to an Environment.""" + mssdk_setup_env(env) + +def exists(env): + return mssdk_exists() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/msvc.py b/scons/scons-local-4.5.1/SCons/Tool/msvc.py new file mode 100644 index 000000000..191d2cc7c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/msvc.py @@ -0,0 +1,331 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons.Tool.msvc + +Tool-specific initialization for Microsoft Visual C/C++. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +import os.path +import os + +import SCons.Action +import SCons.Builder +import SCons.Errors +import SCons.Platform.win32 +import SCons.Tool +import SCons.Tool.msvs +import SCons.Util +import SCons.Warnings +import SCons.Scanner.RC + +from .MSCommon import msvc_setup_env_tool, msvc_setup_env_once, msvc_version_to_maj_min, msvc_find_vswhere +from .MSCommon.common import get_pch_node + +tool_name = 'msvc' + +CSuffixes = ['.c', '.C'] +CXXSuffixes = ['.cc', '.cpp', '.cxx', '.c++', '.C++'] + +def validate_vars(env): + """Validate the PCH and PCHSTOP construction variables.""" + if 'PCH' in env and env['PCH']: + if 'PCHSTOP' not in env: + raise SCons.Errors.UserError("The PCHSTOP construction must be defined if PCH is defined.") + if not SCons.Util.is_String(env['PCHSTOP']): + raise SCons.Errors.UserError("The PCHSTOP construction variable must be a string: %r"%env['PCHSTOP']) + +def msvc_set_PCHPDBFLAGS(env): + """ + Set appropriate PCHPDBFLAGS for the MSVC version being used. + """ + if env.get('MSVC_VERSION',False): + maj, min = msvc_version_to_maj_min(env['MSVC_VERSION']) + if maj < 8: + env['PCHPDBFLAGS'] = SCons.Util.CLVar(['${(PDB and "/Yd") or ""}']) + else: + env['PCHPDBFLAGS'] = '' + else: + # Default if we can't determine which version of MSVC we're using + env['PCHPDBFLAGS'] = SCons.Util.CLVar(['${(PDB and "/Yd") or ""}']) + + +def pch_emitter(target, source, env): + """Adds the object file target.""" + + validate_vars(env) + + pch = None + obj = None + + for t in target: + if SCons.Util.splitext(str(t))[1] == '.pch': + pch = t + if SCons.Util.splitext(str(t))[1] == '.obj': + obj = t + + if not obj: + obj = SCons.Util.splitext(str(pch))[0]+'.obj' + + target = [pch, obj] # pch must be first, and obj second for the PCHCOM to work + + return (target, source) + + +def object_emitter(target, source, env, parent_emitter): + """Sets up the PCH dependencies for an object file.""" + + validate_vars(env) + + parent_emitter(target, source, env) + + # Add a dependency, but only if the target (e.g. 'Source1.obj') + # doesn't correspond to the pre-compiled header ('Source1.pch'). + # If the basenames match, then this was most likely caused by + # someone adding the source file to both the env.PCH() and the + # env.Program() calls, and adding the explicit dependency would + # cause a cycle on the .pch file itself. + # + # See issue #2505 for a discussion of what to do if it turns + # out this assumption causes trouble in the wild: + # https://github.com/SCons/scons/issues/2505 + pch=get_pch_node(env, target, source) + if pch: + if str(target[0]) != SCons.Util.splitext(str(pch))[0] + '.obj': + env.Depends(target, pch) + + return (target, source) + +def static_object_emitter(target, source, env): + return object_emitter(target, source, env, + SCons.Defaults.StaticObjectEmitter) + +def shared_object_emitter(target, source, env): + return object_emitter(target, source, env, + SCons.Defaults.SharedObjectEmitter) + + +def gen_ccpchflags(env, target, source, for_signature): + """ + Generator for CCPCHFLAGS + if PCH is not defined or evaluates to a false value, then return empty string. + """ + pch_node = get_pch_node(env, target, source) + if not pch_node: + return '' + + return SCons.Util.CLVar(["/Yu$PCHSTOP", "/Fp%s" % pch_node]) + +pch_action = SCons.Action.Action('$PCHCOM', '$PCHCOMSTR') +pch_builder = SCons.Builder.Builder(action=pch_action, suffix='.pch', + emitter=pch_emitter, + source_scanner=SCons.Tool.SourceFileScanner) + + +# Logic to build .rc files into .res files (resource files) +res_scanner = SCons.Scanner.RC.RCScan() +res_action = SCons.Action.Action('$RCCOM', '$RCCOMSTR') +res_builder = SCons.Builder.Builder(action=res_action, + src_suffix='.rc', + suffix='.res', + src_builder=[], + source_scanner=res_scanner) + +def msvc_batch_key(action, env, target, source): + """ + Returns a key to identify unique batches of sources for compilation. + + If batching is enabled (via the $MSVC_BATCH setting), then all + target+source pairs that use the same action, defined by the same + environment, and have the same target and source directories, will + be batched. + + Returning None specifies that the specified target+source should not + be batched with other compilations. + """ + + # Fixing MSVC_BATCH mode. Previous if did not work when MSVC_BATCH + # was set to False. This new version should work better. + # Note we need to do the env.subst so $MSVC_BATCH can be a reference to + # another construction variable, which is why we test for False and 0 + # as strings. + if 'MSVC_BATCH' not in env or env.subst('$MSVC_BATCH') in ('0', 'False', '', None): + # We're not using batching; return no key. + return None + t = target[0] + s = source[0] + if os.path.splitext(t.name)[0] != os.path.splitext(s.name)[0]: + # The base names are different, so this *must* be compiled + # separately; return no key. + return None + return (id(action), id(env), t.dir, s.dir) + +def msvc_output_flag(target, source, env, for_signature): + """ + Returns the correct /Fo flag for batching. + + If batching is disabled or there's only one source file, then we + return an /Fo string that specifies the target explicitly. Otherwise, + we return an /Fo string that just specifies the first target's + directory (where the Visual C/C++ compiler will put the .obj files). + """ + + # Fixing MSVC_BATCH mode. Previous if did not work when MSVC_BATCH + # was set to False. This new version should work better. Removed + # len(source)==1 as batch mode can compile only one file + # (and it also fixed problem with compiling only one changed file + # with batch mode enabled) + if 'MSVC_BATCH' not in env or env.subst('$MSVC_BATCH') in ('0', 'False', '', None): + return '/Fo$TARGET' + else: + # The Visual C/C++ compiler requires a \ at the end of the /Fo + # option to indicate an output directory. We use os.sep here so + # that the test(s) for this can be run on non-Windows systems + # without having a hard-coded backslash mess up command-line + # argument parsing. + # Adding double os.sep's as if the TARGET.dir has a space or otherwise + # needs to be quoted they are needed per MSVC's odd behavior + # See: https://github.com/SCons/scons/issues/3106 + return '/Fo${TARGET.dir}' + os.sep*2 + +CAction = SCons.Action.Action("$CCCOM", "$CCCOMSTR", + batch_key=msvc_batch_key, + targets='$CHANGED_TARGETS') +ShCAction = SCons.Action.Action("$SHCCCOM", "$SHCCCOMSTR", + batch_key=msvc_batch_key, + targets='$CHANGED_TARGETS') +CXXAction = SCons.Action.Action("$CXXCOM", "$CXXCOMSTR", + batch_key=msvc_batch_key, + targets='$CHANGED_TARGETS') +ShCXXAction = SCons.Action.Action("$SHCXXCOM", "$SHCXXCOMSTR", + batch_key=msvc_batch_key, + targets='$CHANGED_TARGETS') + + + + +def generate(env): + """Add Builders and construction variables for MSVC++ to an Environment.""" + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + # TODO(batch): shouldn't reach in to cmdgen this way; necessary + # for now to bypass the checks in Builder.DictCmdGenerator.__call__() + # and allow .cc and .cpp to be compiled in the same command line. + static_obj.cmdgen.source_ext_match = False + shared_obj.cmdgen.source_ext_match = False + + for suffix in CSuffixes: + static_obj.add_action(suffix, CAction) + shared_obj.add_action(suffix, ShCAction) + static_obj.add_emitter(suffix, static_object_emitter) + shared_obj.add_emitter(suffix, shared_object_emitter) + + for suffix in CXXSuffixes: + static_obj.add_action(suffix, CXXAction) + shared_obj.add_action(suffix, ShCXXAction) + static_obj.add_emitter(suffix, static_object_emitter) + shared_obj.add_emitter(suffix, shared_object_emitter) + + env['CCPDBFLAGS'] = SCons.Util.CLVar(['${(PDB and "/Z7") or ""}']) + env['CCPCHFLAGS'] = gen_ccpchflags + env['_MSVC_OUTPUT_FLAG'] = msvc_output_flag + env['_CCCOMCOM'] = '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS $CCPCHFLAGS $CCPDBFLAGS' + env['CC'] = 'cl' + env['CCFLAGS'] = SCons.Util.CLVar('/nologo') + env['CFLAGS'] = SCons.Util.CLVar('') + env['CCCOM'] = '${TEMPFILE("$CC $_MSVC_OUTPUT_FLAG /c $CHANGED_SOURCES $CFLAGS $CCFLAGS $_CCCOMCOM","$CCCOMSTR")}' + env['SHCC'] = '$CC' + env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS') + env['SHCFLAGS'] = SCons.Util.CLVar('$CFLAGS') + env['SHCCCOM'] = '${TEMPFILE("$SHCC $_MSVC_OUTPUT_FLAG /c $CHANGED_SOURCES $SHCFLAGS $SHCCFLAGS $_CCCOMCOM","$SHCCCOMSTR")}' + env['CXX'] = '$CC' + env['CXXFLAGS'] = SCons.Util.CLVar('$( /TP $)') + env['CXXCOM'] = '${TEMPFILE("$CXX $_MSVC_OUTPUT_FLAG /c $CHANGED_SOURCES $CXXFLAGS $CCFLAGS $_CCCOMCOM","$CXXCOMSTR")}' + env['SHCXX'] = '$CXX' + env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS') + env['SHCXXCOM'] = '${TEMPFILE("$SHCXX $_MSVC_OUTPUT_FLAG /c $CHANGED_SOURCES $SHCXXFLAGS $SHCCFLAGS $_CCCOMCOM","$SHCXXCOMSTR")}' + env['CPPDEFPREFIX'] = '/D' + env['CPPDEFSUFFIX'] = '' + env['INCPREFIX'] = '/I' + env['INCSUFFIX'] = '' +# env.Append(OBJEMITTER = [static_object_emitter]) +# env.Append(SHOBJEMITTER = [shared_object_emitter]) + env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1 + + env['RC'] = 'rc' + env['RCFLAGS'] = SCons.Util.CLVar('/nologo') + env['RCSUFFIXES']=['.rc','.rc2'] + env['RCCOM'] = '$RC $_CPPDEFFLAGS $_CPPINCFLAGS $RCFLAGS /fo$TARGET $SOURCES' + env['BUILDERS']['RES'] = res_builder + env['OBJPREFIX'] = '' + env['OBJSUFFIX'] = '.obj' + env['SHOBJPREFIX'] = '$OBJPREFIX' + env['SHOBJSUFFIX'] = '$OBJSUFFIX' + + # MSVC probably wont support unistd.h so default + # without it for lex generation + env["LEXUNISTD"] = SCons.Util.CLVar("--nounistd") + + # Get user specified vswhere location or locate. + env['VSWHERE'] = env.get('VSWHERE', msvc_find_vswhere()) + + # Set-up ms tools paths + msvc_setup_env_once(env, tool=tool_name) + + env['CFILESUFFIX'] = '.c' + env['CXXFILESUFFIX'] = '.cc' + + msvc_set_PCHPDBFLAGS(env) + + # Issue #3350 + # Change tempfile argument joining character from a space to a newline + # mslink will fail if any single line is too long, but is fine with many lines + # in a tempfile + env['TEMPFILEARGJOIN'] = os.linesep + + + env['PCHCOM'] = '$CXX /Fo${TARGETS[1]} $CXXFLAGS $CCFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS /c $SOURCES /Yc$PCHSTOP /Fp${TARGETS[0]} $CCPDBFLAGS $PCHPDBFLAGS' + env['BUILDERS']['PCH'] = pch_builder + + if 'ENV' not in env: + env['ENV'] = {} + if 'SystemRoot' not in env['ENV']: # required for dlls in the winsxs folders + env['ENV']['SystemRoot'] = SCons.Platform.win32.get_system_root() + + env['CCDEPFLAGS'] = '/showIncludes' + env["NINJA_DEPFILE_PARSE_FORMAT"] = 'msvc' + + +def exists(env): + return msvc_setup_env_tool(env, tool=tool_name) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/msvs.py b/scons/scons-local-4.5.1/SCons/Tool/msvs.py new file mode 100644 index 000000000..86df1ef66 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/msvs.py @@ -0,0 +1,2118 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" Tool-specific initialization for Microsoft Visual Studio project files. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +import base64 +import uuid +import ntpath +import os +import pickle +import re +import sys + +import SCons.Builder +import SCons.Node.FS +import SCons.Platform.win32 +import SCons.Script.SConscript +import SCons.PathList +import SCons.Util +import SCons.Warnings +from SCons.Defaults import processDefines +from SCons.compat import PICKLE_PROTOCOL +from .MSCommon import msvc_setup_env_tool, msvc_setup_env_once + +tool_name = 'msvs' + +############################################################################## +# Below here are the classes and functions for generation of +# DSP/DSW/SLN/VCPROJ files. +############################################################################## + +def xmlify(s): + s = s.replace("&", "&") # do this first + s = s.replace("'", "'") + s = s.replace('"', """) + s = s.replace('<', "<") + s = s.replace('>', ">") + s = s.replace('\n', ' ') + return s + + +def processIncludes(includes, env, target, source): + """ + Process a CPPPATH list in includes, given the env, target and source. + Returns a list of directory paths. These paths are absolute so we avoid + putting pound-prefixed paths in a Visual Studio project file. + """ + return [env.Dir(i).abspath for i in + SCons.PathList.PathList(includes).subst_path(env, target, source)] + +# Work-in-progress +# individual elements each get a globally unique identifier. +# however, there also are some "well known" guids that either +# represent something, or are used as a namespace to base +# generating guids that should be "in" the namespace +#NAMESPACE_PROJECT = uuid.UUID("{D9BD5916-F055-4D77-8C69-9448E02BF433}") +#NAMESPACE_SLN_GROUP = uuid.UUID("{2D0C29E0-512F-47BE-9AC4-F4CAE74AE16E}") +#NAMESPACE_INTERNAL = uuid.UUID("{BAA4019E-6D67-4EF1-B3CB-AE6CD82E4060}") + +# Kinds of projects, as used in solution files +#PROJECT_KIND_C = "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}" +#PROJECT_KIND_PCL = "{786C830F-07A1-408B-BD7F-6EE04809D6DB}" +#NAMESPACE_PRJ_FOLDER = "{66A26720-8FB5-11D2-AA7E-00C04F688DDE}" +#NAMESPACE_SLN_FOLDER = "{2150E333-8FDC-42A3-9474-1A3956D46DE8}" +#NAMESPACE_TEST = "{3AC096D0-A1C2-E12C-1390-A8335801FDAB}" + +def processFlags(flags, env): + """ + If /std:c++XX is in flags then we need to ensure /Zc:__cplusplus is in + flags to tell intellisense to respect our specified standard + """ + if any(f.startswith('/std:c++') for f in flags) and \ + not any(f == '/Zc:__cplusplus' for f in flags): + flags.append('/Zc:__cplusplus') + return [env.subst(f) for f in flags] + + +external_makefile_guid = '{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}' + +def _generateGUID(slnfile, name, namespace=external_makefile_guid): + """Generates a GUID for the sln file to use. + + The uuid5 function is used to combine an existing namespace uuid - + the one VS uses for C projects (external_makedile_guid) - + and a combination of the solution file name (slnfile) and the + project name (name). We just need uniqueness/repeatability. + + Returns (str) "displayable" GUID, already wrapped in braces + """ + + # Normalize the slnfile path to a Windows path (\ separators) so + # the generated file has a consistent GUID even if we generate + # it on a non-Windows platform. + slnfile = ntpath.normpath(str(slnfile)) + solution = uuid.uuid5(uuid.UUID(namespace), "%s-%s" %(slnfile, name)) + return '{' + str(solution).upper() + '}' + + +version_re = re.compile(r'(\d+\.\d+)(.*)') + + +def msvs_parse_version(s): + """ + Split a Visual Studio version, which may in fact be something like + '7.0Exp', into is version number (returned as a float) and trailing + "suite" portion. + """ + num, suite = version_re.match(s).groups() + return float(num), suite + +# This is how we re-invoke SCons from inside MSVS Project files. +# The problem is that we might have been invoked as either scons.bat +# or scons.py. If we were invoked directly as scons.py, then we could +# use sys.argv[0] to find the SCons "executable," but that doesn't work +# if we were invoked as scons.bat, which uses "python -c" to execute +# things and ends up with "-c" as sys.argv[0]. Consequently, we have +# the MSVS Project file invoke SCons the same way that scons.bat does, +# which works regardless of how we were invoked. +def getExecScriptMain(env, xml=None): + scons_home = env.get('SCONS_HOME') + if not scons_home and 'SCONS_LIB_DIR' in os.environ: + scons_home = os.environ['SCONS_LIB_DIR'] + if scons_home: + exec_script_main = "from os.path import join; import sys; sys.path = [ r'%s' ] + sys.path; import SCons.Script; SCons.Script.main()" % scons_home + else: + version = SCons.__version__ + exec_script_main = "from os.path import join; import sys; sys.path = [ join(sys.prefix, 'Lib', 'site-packages', 'scons-%(version)s'), join(sys.prefix, 'scons-%(version)s'), join(sys.prefix, 'Lib', 'site-packages', 'scons'), join(sys.prefix, 'scons') ] + sys.path; import SCons.Script; SCons.Script.main()" % locals() + if xml: + exec_script_main = xmlify(exec_script_main) + return exec_script_main + +# The string for the Python executable we tell the Project file to use +# is either sys.executable or, if an external PYTHON_ROOT environment +# variable exists, $(PYTHON)ROOT\\python.exe (generalized a little to +# pluck the actual executable name from sys.executable). +try: + python_root = os.environ['PYTHON_ROOT'] +except KeyError: + python_executable = sys.executable +else: + python_executable = os.path.join('$$(PYTHON_ROOT)', + os.path.split(sys.executable)[1]) + +class Config: + pass + +def splitFully(path): + dir, base = os.path.split(path) + if dir and dir != '' and dir != path: + return splitFully(dir)+[base] + if base == '': + return [] + return [base] + +def makeHierarchy(sources): + """Break a list of files into a hierarchy; for each value, if it is a string, + then it is a file. If it is a dictionary, it is a folder. The string is + the original path of the file.""" + + hierarchy = {} + for file in sources: + path = splitFully(file) + if len(path): + dict = hierarchy + for part in path[:-1]: + if part not in dict: + dict[part] = {} + dict = dict[part] + dict[path[-1]] = file + #else: + # print 'Warning: failed to decompose path for '+str(file) + return hierarchy + +class _UserGenerator: + """ + Base class for .dsp.user file generator + """ + # Default instance values. + # Ok ... a bit defensive, but it does not seem reasonable to crash the + # build for a workspace user file. :-) + usrhead = None + usrdebg = None + usrconf = None + createfile = False + def __init__(self, dspfile, source, env): + # DebugSettings should be a list of debug dictionary sorted in the same order + # as the target list and variants + if 'variant' not in env: + raise SCons.Errors.InternalError("You must specify a 'variant' argument (i.e. 'Debug' or " +\ + "'Release') to create an MSVSProject.") + elif SCons.Util.is_String(env['variant']): + variants = [env['variant']] + elif SCons.Util.is_List(env['variant']): + variants = env['variant'] + + if 'DebugSettings' not in env or env['DebugSettings'] is None: + dbg_settings = [] + elif SCons.Util.is_Dict(env['DebugSettings']): + dbg_settings = [env['DebugSettings']] + elif SCons.Util.is_List(env['DebugSettings']): + if len(env['DebugSettings']) != len(variants): + raise SCons.Errors.InternalError("Sizes of 'DebugSettings' and 'variant' lists must be the same.") + dbg_settings = [] + for ds in env['DebugSettings']: + if SCons.Util.is_Dict(ds): + dbg_settings.append(ds) + else: + dbg_settings.append({}) + else: + dbg_settings = [] + + if len(dbg_settings) == 1: + dbg_settings = dbg_settings * len(variants) + + self.createfile = self.usrhead and self.usrdebg and self.usrconf and \ + dbg_settings and bool([ds for ds in dbg_settings if ds]) + + if self.createfile: + dbg_settings = dict(list(zip(variants, dbg_settings))) + for var, src in dbg_settings.items(): + # Update only expected keys + trg = {} + for key in [k for k in self.usrdebg.keys() if k in src]: + trg[key] = str(src[key]) + self.configs[var].debug = trg + + def UserHeader(self): + encoding = self.env.subst('$MSVSENCODING') + versionstr = self.versionstr + self.usrfile.write(self.usrhead % locals()) + + def UserProject(self): + pass + + def Build(self): + if not self.createfile: + return + try: + filename = self.dspabs +'.user' + self.usrfile = open(filename, 'w') + except IOError as detail: + raise SCons.Errors.InternalError('Unable to open "' + filename + '" for writing:' + str(detail)) + else: + self.UserHeader() + self.UserProject() + self.usrfile.close() + +V9UserHeader = """\ + + +\t +""" + +V9UserConfiguration = """\ +\t\t +\t\t\t +\t\t +""" + +V9DebugSettings = { +'Command':'$(TargetPath)', +'WorkingDirectory': None, +'CommandArguments': None, +'Attach':'false', +'DebuggerType':'3', +'Remote':'1', +'RemoteMachine': None, +'RemoteCommand': None, +'HttpUrl': None, +'PDBPath': None, +'SQLDebugging': None, +'Environment': None, +'EnvironmentMerge':'true', +'DebuggerFlavor': None, +'MPIRunCommand': None, +'MPIRunArguments': None, +'MPIRunWorkingDirectory': None, +'ApplicationCommand': None, +'ApplicationArguments': None, +'ShimCommand': None, +'MPIAcceptMode': None, +'MPIAcceptFilter': None, +} + +class _GenerateV7User(_UserGenerator): + """Generates a Project file for MSVS .NET""" + def __init__(self, dspfile, source, env): + if self.version_num >= 9.0: + self.usrhead = V9UserHeader + self.usrconf = V9UserConfiguration + self.usrdebg = V9DebugSettings + super().__init__(dspfile, source, env) + + def UserProject(self): + confkeys = sorted(self.configs.keys()) + for kind in confkeys: + variant = self.configs[kind].variant + platform = self.configs[kind].platform + debug = self.configs[kind].debug + if debug: + debug_settings = '\n'.join(['\t\t\t\t%s="%s"' % (key, xmlify(value)) + for key, value in debug.items() + if value is not None]) + self.usrfile.write(self.usrconf % locals()) + self.usrfile.write('\t\n') + +V10UserHeader = """\ + + +""" + +V10UserConfiguration = """\ +\t +%(debug_settings)s +\t +""" + +V10DebugSettings = { +'LocalDebuggerCommand': None, +'LocalDebuggerCommandArguments': None, +'LocalDebuggerEnvironment': None, +'DebuggerFlavor': 'WindowsLocalDebugger', +'LocalDebuggerWorkingDirectory': None, +'LocalDebuggerAttach': None, +'LocalDebuggerDebuggerType': None, +'LocalDebuggerMergeEnvironment': None, +'LocalDebuggerSQLDebugging': None, +'RemoteDebuggerCommand': None, +'RemoteDebuggerCommandArguments': None, +'RemoteDebuggerWorkingDirectory': None, +'RemoteDebuggerServerName': None, +'RemoteDebuggerConnection': None, +'RemoteDebuggerDebuggerType': None, +'RemoteDebuggerAttach': None, +'RemoteDebuggerSQLDebugging': None, +'DeploymentDirectory': None, +'AdditionalFiles': None, +'RemoteDebuggerDeployDebugCppRuntime': None, +'WebBrowserDebuggerHttpUrl': None, +'WebBrowserDebuggerDebuggerType': None, +'WebServiceDebuggerHttpUrl': None, +'WebServiceDebuggerDebuggerType': None, +'WebServiceDebuggerSQLDebugging': None, +} + +class _GenerateV10User(_UserGenerator): + """Generates a Project'user file for MSVS 2010 or later""" + + def __init__(self, dspfile, source, env): + version_num, suite = msvs_parse_version(env['MSVS_VERSION']) + if version_num >= 14.3: + # Visual Studio 2022 is considered to be version 17. + self.versionstr = '17.0' + elif version_num >= 14.2: + # Visual Studio 2019 is considered to be version 16. + self.versionstr = '16.0' + elif version_num >= 14.1: + # Visual Studio 2017 is considered to be version 15. + self.versionstr = '15.0' + elif version_num == 14.0: + self.versionstr = '14.0' + else: + self.versionstr = '4.0' + self.usrhead = V10UserHeader + self.usrconf = V10UserConfiguration + self.usrdebg = V10DebugSettings + super().__init__(dspfile, source, env) + + def UserProject(self): + confkeys = sorted(self.configs.keys()) + for kind in confkeys: + variant = self.configs[kind].variant + platform = self.configs[kind].platform + debug = self.configs[kind].debug + if debug: + debug_settings = '\n'.join(['\t\t<%s>%s' % (key, xmlify(value), key) + for key, value in debug.items() + if value is not None]) + self.usrfile.write(self.usrconf % locals()) + self.usrfile.write('') + +class _DSPGenerator: + """ Base class for DSP generators """ + + srcargs = [ + 'srcs', + 'incs', + 'localincs', + 'resources', + 'misc'] + + def __init__(self, dspfile, source, env): + self.dspfile = str(dspfile) + try: + get_abspath = dspfile.get_abspath + except AttributeError: + self.dspabs = os.path.abspath(dspfile) + else: + self.dspabs = get_abspath() + + if 'variant' not in env: + raise SCons.Errors.InternalError("You must specify a 'variant' argument (i.e. 'Debug' or " +\ + "'Release') to create an MSVSProject.") + elif SCons.Util.is_String(env['variant']): + variants = [env['variant']] + elif SCons.Util.is_List(env['variant']): + variants = env['variant'] + + if 'buildtarget' not in env or env['buildtarget'] is None: + buildtarget = [''] + elif SCons.Util.is_String(env['buildtarget']): + buildtarget = [env['buildtarget']] + elif SCons.Util.is_List(env['buildtarget']): + if len(env['buildtarget']) != len(variants): + raise SCons.Errors.InternalError("Sizes of 'buildtarget' and 'variant' lists must be the same.") + buildtarget = [] + for bt in env['buildtarget']: + if SCons.Util.is_String(bt): + buildtarget.append(bt) + else: + buildtarget.append(bt.get_abspath()) + else: + buildtarget = [env['buildtarget'].get_abspath()] + if len(buildtarget) == 1: + bt = buildtarget[0] + buildtarget = [] + for _ in variants: + buildtarget.append(bt) + + if 'outdir' not in env or env['outdir'] is None: + outdir = [''] + elif SCons.Util.is_String(env['outdir']): + outdir = [env['outdir']] + elif SCons.Util.is_List(env['outdir']): + if len(env['outdir']) != len(variants): + raise SCons.Errors.InternalError("Sizes of 'outdir' and 'variant' lists must be the same.") + outdir = [] + for s in env['outdir']: + if SCons.Util.is_String(s): + outdir.append(s) + else: + outdir.append(s.get_abspath()) + else: + outdir = [env['outdir'].get_abspath()] + if len(outdir) == 1: + s = outdir[0] + outdir = [] + for v in variants: + outdir.append(s) + + if 'runfile' not in env or env['runfile'] is None: + runfile = buildtarget[-1:] + elif SCons.Util.is_String(env['runfile']): + runfile = [env['runfile']] + elif SCons.Util.is_List(env['runfile']): + if len(env['runfile']) != len(variants): + raise SCons.Errors.InternalError("Sizes of 'runfile' and 'variant' lists must be the same.") + runfile = [] + for s in env['runfile']: + if SCons.Util.is_String(s): + runfile.append(s) + else: + runfile.append(s.get_abspath()) + else: + runfile = [env['runfile'].get_abspath()] + if len(runfile) == 1: + s = runfile[0] + runfile = [] + for v in variants: + runfile.append(s) + + self.sconscript = env['MSVSSCONSCRIPT'] + + def GetKeyFromEnv(env, key, variants): + """ + Retrieves a specific key from the environment. If the key is + present, it is expected to either be a string or a list with length + equal to the number of variants. The function returns a list of + the desired value (e.g. cpp include paths) guaranteed to be of + length equal to the length of the variants list. + """ + if key not in env or env[key] is None: + return [''] * len(variants) + elif SCons.Util.is_String(env[key]): + return [env[key]] * len(variants) + elif SCons.Util.is_List(env[key]): + if len(env[key]) != len(variants): + raise SCons.Errors.InternalError("Sizes of '%s' and 'variant' lists must be the same." % key) + else: + return env[key] + else: + raise SCons.Errors.InternalError("Unsupported type for key '%s' in environment: %s" % + (key, type(env[key]))) + + cmdargs = GetKeyFromEnv(env, 'cmdargs', variants) + + # The caller is allowed to put 'cppdefines' and/or 'cpppaths' in the + # environment, which is useful if they want to provide per-variant + # values for these. Otherwise, we fall back to using the global + # 'CPPDEFINES' and 'CPPPATH' functions. + if 'cppdefines' in env: + cppdefines = GetKeyFromEnv(env, 'cppdefines', variants) + else: + cppdefines = [env.get('CPPDEFINES', [])] * len(variants) + if 'cpppaths' in env: + cpppaths = GetKeyFromEnv(env, 'cpppaths', variants) + else: + cpppaths = [env.get('CPPPATH', [])] * len(variants) + if 'cppflags' in env: + cppflags = GetKeyFromEnv(env, 'cppflags', variants) + else: + cppflags = [env.get('CCFLAGS', []) + env.get('CXXFLAGS', []) + env.get('CPPFLAGS', [])] * len(variants) + + self.env = env + + if 'name' in self.env: + self.name = self.env['name'] + else: + self.name = os.path.basename(SCons.Util.splitext(self.dspfile)[0]) + self.name = self.env.subst(self.name) + + sourcenames = [ + 'Source Files', + 'Header Files', + 'Local Headers', + 'Resource Files', + 'Other Files'] + + self.sources = {} + for n in sourcenames: + self.sources[n] = [] + + self.configs = {} + + self.nokeep = 0 + if 'nokeep' in env and env['variant'] != 0: + self.nokeep = 1 + + if self.nokeep == 0 and os.path.exists(self.dspabs): + self.Parse() + + for t in zip(sourcenames,self.srcargs): + if t[1] in self.env: + if SCons.Util.is_List(self.env[t[1]]): + for i in self.env[t[1]]: + if i not in self.sources[t[0]]: + self.sources[t[0]].append(i) + else: + if not self.env[t[1]] in self.sources[t[0]]: + self.sources[t[0]].append(self.env[t[1]]) + + for n in sourcenames: + self.sources[n].sort(key=lambda a: a.lower()) + + def AddConfig(self, variant, buildtarget, outdir, runfile, cmdargs, cppdefines, cpppaths, cppflags, dspfile=dspfile, env=env): + config = Config() + config.buildtarget = buildtarget + config.outdir = outdir + config.cmdargs = cmdargs + config.cppdefines = cppdefines + config.cppflags = cppflags + config.runfile = runfile + + # Dir objects can't be pickled, so we need an absolute path here. + config.cpppaths = processIncludes(cpppaths, env, None, None) + + match = re.match(r'(.*)\|(.*)', variant) + if match: + config.variant = match.group(1) + config.platform = match.group(2) + else: + config.variant = variant + config.platform = 'Win32' + + self.configs[variant] = config + # DEBUG: leave enabled, test/MSVS/CPPPATH-dirs.py expects this + print("Adding '" + self.name + ' - ' + config.variant + '|' + config.platform + "' to '" + str(dspfile) + "'") + + for i in range(len(variants)): + AddConfig(self, variants[i], buildtarget[i], outdir[i], runfile[i], cmdargs[i], cppdefines[i], cpppaths[i], cppflags[i]) + + seen = set() + self.platforms = [p.platform for p in self.configs.values() + if not (p.platform in seen or seen.add(p.platform))] + + + def Build(self): + pass + +V6DSPHeader = """\ +# Microsoft Developer Studio Project File - Name="%(name)s" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) External Target" 0x0106 + +CFG=%(name)s - Win32 %(confkey)s +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "%(name)s.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "%(name)s.mak" CFG="%(name)s - Win32 %(confkey)s" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +""" + +class _GenerateV6DSP(_DSPGenerator): + """Generates a Project file for MSVS 6.0""" + + def PrintHeader(self): + # pick a default config + confkeys = sorted(self.configs.keys()) + + name = self.name + confkey = confkeys[0] + + self.file.write(V6DSPHeader % locals()) + + for kind in confkeys: + self.file.write('!MESSAGE "%s - Win32 %s" (based on "Win32 (x86) External Target")\n' % (name, kind)) + + self.file.write('!MESSAGE\n\n') + + def PrintProject(self): + name = self.name + self.file.write('# Begin Project\n' + '# PROP AllowPerConfigDependencies 0\n' + '# PROP Scc_ProjName ""\n' + '# PROP Scc_LocalPath ""\n\n') + + first = 1 + confkeys = sorted(self.configs.keys()) + for kind in confkeys: + outdir = self.configs[kind].outdir + buildtarget = self.configs[kind].buildtarget + if first == 1: + self.file.write('!IF "$(CFG)" == "%s - Win32 %s"\n\n' % (name, kind)) + first = 0 + else: + self.file.write('\n!ELSEIF "$(CFG)" == "%s - Win32 %s"\n\n' % (name, kind)) + + env_has_buildtarget = 'MSVSBUILDTARGET' in self.env + if not env_has_buildtarget: + self.env['MSVSBUILDTARGET'] = buildtarget + + # have to write this twice, once with the BASE settings, and once without + for base in ("BASE ",""): + self.file.write('# PROP %sUse_MFC 0\n' + '# PROP %sUse_Debug_Libraries ' % (base, base)) + if 'debug' not in kind.lower(): + self.file.write('0\n') + else: + self.file.write('1\n') + self.file.write('# PROP %sOutput_Dir "%s"\n' + '# PROP %sIntermediate_Dir "%s"\n' % (base,outdir,base,outdir)) + cmd = 'echo Starting SCons && ' + self.env.subst('$MSVSBUILDCOM', 1) + self.file.write('# PROP %sCmd_Line "%s"\n' + '# PROP %sRebuild_Opt "-c && %s"\n' + '# PROP %sTarget_File "%s"\n' + '# PROP %sBsc_Name ""\n' + '# PROP %sTarget_Dir ""\n'\ + %(base,cmd,base,cmd,base,buildtarget,base,base)) + + if not env_has_buildtarget: + del self.env['MSVSBUILDTARGET'] + + self.file.write('\n!ENDIF\n\n' + '# Begin Target\n\n') + for kind in confkeys: + self.file.write('# Name "%s - Win32 %s"\n' % (name,kind)) + self.file.write('\n') + first = 0 + for kind in confkeys: + if first == 0: + self.file.write('!IF "$(CFG)" == "%s - Win32 %s"\n\n' % (name,kind)) + first = 1 + else: + self.file.write('!ELSEIF "$(CFG)" == "%s - Win32 %s"\n\n' % (name,kind)) + self.file.write('!ENDIF\n\n') + self.PrintSourceFiles() + self.file.write('# End Target\n' + '# End Project\n') + + if self.nokeep == 0: + # now we pickle some data and add it to the file -- MSDEV will ignore it. + pdata = pickle.dumps(self.configs,PICKLE_PROTOCOL) + pdata = base64.b64encode(pdata).decode() + self.file.write(pdata + '\n') + pdata = pickle.dumps(self.sources,PICKLE_PROTOCOL) + pdata = base64.b64encode(pdata).decode() + self.file.write(pdata + '\n') + + def PrintSourceFiles(self): + categories = {'Source Files': 'cpp|c|cxx|l|y|def|odl|idl|hpj|bat', + 'Header Files': 'h|hpp|hxx|hm|inl', + 'Local Headers': 'h|hpp|hxx|hm|inl', + 'Resource Files': 'r|rc|ico|cur|bmp|dlg|rc2|rct|bin|cnt|rtf|gif|jpg|jpeg|jpe', + 'Other Files': ''} + + for kind in sorted(categories.keys(), key=lambda a: a.lower()): + if not self.sources[kind]: + continue # skip empty groups + + self.file.write('# Begin Group "' + kind + '"\n\n') + typelist = categories[kind].replace('|', ';') + self.file.write('# PROP Default_Filter "' + typelist + '"\n') + + for file in self.sources[kind]: + file = os.path.normpath(file) + self.file.write('# Begin Source File\n\n' + 'SOURCE="' + file + '"\n' + '# End Source File\n') + self.file.write('# End Group\n') + + # add the SConscript file outside of the groups + self.file.write('# Begin Source File\n\n' + 'SOURCE="' + str(self.sconscript) + '"\n' + '# End Source File\n') + + def Parse(self): + try: + dspfile = open(self.dspabs,'r') + except IOError: + return # doesn't exist yet, so can't add anything to configs. + + line = dspfile.readline() + # skip until marker + while line: + if "# End Project" in line: + break + line = dspfile.readline() + + # read to get configs + line = dspfile.readline() + datas = line + while line and line != '\n': + line = dspfile.readline() + datas = datas + line + + # OK, we've found our little pickled cache of data. + try: + datas = base64.decodestring(datas) + data = pickle.loads(datas) + except KeyboardInterrupt: + raise + except Exception: + return # unable to unpickle any data for some reason + + self.configs.update(data) + + # keep reading to get sources + data = None + line = dspfile.readline() + datas = line + while line and line != '\n': + line = dspfile.readline() + datas = datas + line + dspfile.close() + + # OK, we've found our little pickled cache of data. + # it has a "# " in front of it, so we strip that. + try: + datas = base64.decodestring(datas) + data = pickle.loads(datas) + except KeyboardInterrupt: + raise + except: + return # unable to unpickle any data for some reason + + self.sources.update(data) + + def Build(self): + try: + self.file = open(self.dspabs,'w') + except IOError as detail: + raise SCons.Errors.InternalError('Unable to open "' + self.dspabs + '" for writing:' + str(detail)) + else: + self.PrintHeader() + self.PrintProject() + self.file.close() + +V7DSPHeader = """\ + + +""" + +V7DSPConfiguration = """\ +\t\t +\t\t\t +\t\t +""" + +V8DSPHeader = """\ + + +""" + +V8DSPConfiguration = """\ +\t\t +\t\t\t +\t\t +""" +class _GenerateV7DSP(_DSPGenerator, _GenerateV7User): + """Generates a Project file for MSVS .NET""" + + def __init__(self, dspfile, source, env): + _DSPGenerator.__init__(self, dspfile, source, env) + self.version = env['MSVS_VERSION'] + self.version_num, self.suite = msvs_parse_version(self.version) + if self.version_num >= 9.0: + self.versionstr = '9.00' + self.dspheader = V8DSPHeader + self.dspconfiguration = V8DSPConfiguration + elif self.version_num >= 8.0: + self.versionstr = '8.00' + self.dspheader = V8DSPHeader + self.dspconfiguration = V8DSPConfiguration + else: + if self.version_num >= 7.1: + self.versionstr = '7.10' + else: + self.versionstr = '7.00' + self.dspheader = V7DSPHeader + self.dspconfiguration = V7DSPConfiguration + self.file = None + + _GenerateV7User.__init__(self, dspfile, source, env) + + def PrintHeader(self): + env = self.env + versionstr = self.versionstr + name = self.name + encoding = self.env.subst('$MSVSENCODING') + scc_provider = env.get('MSVS_SCC_PROVIDER', '') + scc_project_name = env.get('MSVS_SCC_PROJECT_NAME', '') + scc_aux_path = env.get('MSVS_SCC_AUX_PATH', '') + # MSVS_SCC_LOCAL_PATH is kept for backwards compatibility purpose and should + # be deprecated as soon as possible. + scc_local_path_legacy = env.get('MSVS_SCC_LOCAL_PATH', '') + scc_connection_root = env.get('MSVS_SCC_CONNECTION_ROOT', os.curdir) + scc_local_path = os.path.relpath(scc_connection_root, os.path.dirname(self.dspabs)) + project_guid = env.get('MSVS_PROJECT_GUID', '') + if not project_guid: + project_guid = _generateGUID(self.dspfile, '') + if scc_provider != '': + scc_attrs = '\tSccProjectName="%s"\n' % scc_project_name + if scc_aux_path != '': + scc_attrs += '\tSccAuxPath="%s"\n' % scc_aux_path + scc_attrs += ('\tSccLocalPath="%s"\n' + '\tSccProvider="%s"' % (scc_local_path, scc_provider)) + elif scc_local_path_legacy != '': + # This case is kept for backwards compatibility purpose and should + # be deprecated as soon as possible. + scc_attrs = ('\tSccProjectName="%s"\n' + '\tSccLocalPath="%s"' % (scc_project_name, scc_local_path_legacy)) + else: + self.dspheader = self.dspheader.replace('%(scc_attrs)s\n', '') + + self.file.write(self.dspheader % locals()) + + self.file.write('\t\n') + for platform in self.platforms: + self.file.write( + '\t\t\n' % platform) + self.file.write('\t\n') + + if self.version_num >= 8.0: + self.file.write('\t\n' + '\t\n') + + def PrintProject(self): + self.file.write('\t\n') + + confkeys = sorted(self.configs.keys()) + for kind in confkeys: + variant = self.configs[kind].variant + platform = self.configs[kind].platform + outdir = self.configs[kind].outdir + buildtarget = self.configs[kind].buildtarget + runfile = self.configs[kind].runfile + cmdargs = self.configs[kind].cmdargs + cpppaths = self.configs[kind].cpppaths + cppdefines = self.configs[kind].cppdefines + + env_has_buildtarget = 'MSVSBUILDTARGET' in self.env + if not env_has_buildtarget: + self.env['MSVSBUILDTARGET'] = buildtarget + + starting = 'echo Starting SCons && ' + if cmdargs: + cmdargs = ' ' + cmdargs + else: + cmdargs = '' + buildcmd = xmlify(starting + self.env.subst('$MSVSBUILDCOM', 1) + cmdargs) + rebuildcmd = xmlify(starting + self.env.subst('$MSVSREBUILDCOM', 1) + cmdargs) + cleancmd = xmlify(starting + self.env.subst('$MSVSCLEANCOM', 1) + cmdargs) + + # This isn't perfect; CPPDEFINES and CPPPATH can contain $TARGET and $SOURCE, + # so they could vary depending on the command being generated. This code + # assumes they don't. + preprocdefs = xmlify(';'.join(processDefines(cppdefines))) + includepath = xmlify(';'.join(processIncludes(cpppaths, self.env, None, None))) + + if not env_has_buildtarget: + del self.env['MSVSBUILDTARGET'] + + self.file.write(self.dspconfiguration % locals()) + + self.file.write('\t\n') + + if self.version_num >= 7.1: + self.file.write('\t\n' + '\t\n') + + self.PrintSourceFiles() + + self.file.write('\n') + + if self.nokeep == 0: + # now we pickle some data and add it to the file -- MSDEV will ignore it. + pdata = pickle.dumps(self.configs,PICKLE_PROTOCOL) + pdata = base64.b64encode(pdata).decode() + self.file.write('\n') + + def printSources(self, hierarchy, commonprefix): + sorteditems = sorted(hierarchy.items(), key=lambda a: a[0].lower()) + + # First folders, then files + for key, value in sorteditems: + if SCons.Util.is_Dict(value): + self.file.write('\t\t\t\n' % key) + self.printSources(value, commonprefix) + self.file.write('\t\t\t\n') + + for key, value in sorteditems: + if SCons.Util.is_String(value): + file = value + if commonprefix: + file = os.path.join(commonprefix, value) + file = os.path.normpath(file) + self.file.write('\t\t\t\n' + '\t\t\t\n' % file) + + def PrintSourceFiles(self): + categories = {'Source Files': 'cpp;c;cxx;l;y;def;odl;idl;hpj;bat', + 'Header Files': 'h;hpp;hxx;hm;inl', + 'Local Headers': 'h;hpp;hxx;hm;inl', + 'Resource Files': 'r;rc;ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe', + 'Other Files': ''} + + self.file.write('\t\n') + + cats = sorted([k for k in categories.keys() if self.sources[k]], + key=lambda a: a.lower()) + for kind in cats: + if len(cats) > 1: + self.file.write('\t\t\n' % (kind, categories[kind])) + + sources = self.sources[kind] + + # First remove any common prefix + commonprefix = None + s = list(map(os.path.normpath, sources)) + # take the dirname because the prefix may include parts + # of the filenames (e.g. if you have 'dir\abcd' and + # 'dir\acde' then the cp will be 'dir\a' ) + cp = os.path.dirname( os.path.commonprefix(s) ) + if cp and s[0][len(cp)] == os.sep: + # +1 because the filename starts after the separator + sources = [s[len(cp)+1:] for s in sources] + commonprefix = cp + + hierarchy = makeHierarchy(sources) + self.printSources(hierarchy, commonprefix=commonprefix) + + if len(cats)>1: + self.file.write('\t\t\n') + + # add the SConscript file outside of the groups + self.file.write('\t\t\n' + '\t\t\n' % str(self.sconscript)) + + self.file.write('\t\n' + '\t\n' + '\t\n') + + def Parse(self): + try: + dspfile = open(self.dspabs,'r') + except IOError: + return # doesn't exist yet, so can't add anything to configs. + + line = dspfile.readline() + # skip until marker + while line: + if '\n') + + def printFilters(self, hierarchy, name): + sorteditems = sorted(hierarchy.items(), key = lambda a: a[0].lower()) + + for key, value in sorteditems: + if SCons.Util.is_Dict(value): + filter_name = name + '\\' + key + self.filters_file.write('\t\t\n' + '\t\t\t%s\n' + '\t\t\n' % (filter_name, _generateGUID(self.dspabs, filter_name))) + self.printFilters(value, filter_name) + + def printSources(self, hierarchy, kind, commonprefix, filter_name): + keywords = {'Source Files': 'ClCompile', + 'Header Files': 'ClInclude', + 'Local Headers': 'ClInclude', + 'Resource Files': 'None', + 'Other Files': 'None'} + + sorteditems = sorted(hierarchy.items(), key = lambda a: a[0].lower()) + + # First folders, then files + for key, value in sorteditems: + if SCons.Util.is_Dict(value): + self.printSources(value, kind, commonprefix, filter_name + '\\' + key) + + for key, value in sorteditems: + if SCons.Util.is_String(value): + file = value + if commonprefix: + file = os.path.join(commonprefix, value) + file = os.path.normpath(file) + + self.file.write('\t\t<%s Include="%s" />\n' % (keywords[kind], file)) + self.filters_file.write('\t\t<%s Include="%s">\n' + '\t\t\t%s\n' + '\t\t\n' % (keywords[kind], file, filter_name, keywords[kind])) + + def PrintSourceFiles(self): + categories = {'Source Files': 'cpp;c;cxx;l;y;def;odl;idl;hpj;bat', + 'Header Files': 'h;hpp;hxx;hm;inl', + 'Local Headers': 'h;hpp;hxx;hm;inl', + 'Resource Files': 'r;rc;ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe', + 'Other Files': ''} + + cats = sorted([k for k in categories.keys() if self.sources[k]], + key = lambda a: a.lower()) + + # print vcxproj.filters file first + self.filters_file.write('\t\n') + for kind in cats: + self.filters_file.write('\t\t\n' + '\t\t\t{7b42d31d-d53c-4868-8b92-ca2bc9fc052f}\n' + '\t\t\t%s\n' + '\t\t\n' % (kind, categories[kind])) + + # First remove any common prefix + sources = self.sources[kind] + commonprefix = None + s = list(map(os.path.normpath, sources)) + # take the dirname because the prefix may include parts + # of the filenames (e.g. if you have 'dir\abcd' and + # 'dir\acde' then the cp will be 'dir\a' ) + cp = os.path.dirname( os.path.commonprefix(s) ) + if cp and s[0][len(cp)] == os.sep: + # +1 because the filename starts after the separator + sources = [s[len(cp)+1:] for s in sources] + commonprefix = cp + + hierarchy = makeHierarchy(sources) + self.printFilters(hierarchy, kind) + + self.filters_file.write('\t\n') + + # then print files and filters + for kind in cats: + self.file.write('\t\n') + self.filters_file.write('\t\n') + + # First remove any common prefix + sources = self.sources[kind] + commonprefix = None + s = list(map(os.path.normpath, sources)) + # take the dirname because the prefix may include parts + # of the filenames (e.g. if you have 'dir\abcd' and + # 'dir\acde' then the cp will be 'dir\a' ) + cp = os.path.dirname( os.path.commonprefix(s) ) + if cp and s[0][len(cp)] == os.sep: + # +1 because the filename starts after the separator + sources = [s[len(cp)+1:] for s in sources] + commonprefix = cp + + hierarchy = makeHierarchy(sources) + self.printSources(hierarchy, kind, commonprefix, kind) + + self.file.write('\t\n') + self.filters_file.write('\t\n') + + # add the SConscript file outside of the groups + self.file.write('\t\n' + '\t\t\n' + #'\t\t\n' + '\t\n' % str(self.sconscript)) + + def Parse(self): + # DEBUG + # print("_GenerateV10DSP.Parse()") + pass + + def Build(self): + try: + self.file = open(self.dspabs, 'w') + except IOError as detail: + raise SCons.Errors.InternalError('Unable to open "' + self.dspabs + '" for writing:' + str(detail)) + else: + self.PrintHeader() + self.PrintProject() + self.file.close() + + _GenerateV10User.Build(self) + +class _DSWGenerator: + """ Base class for DSW generators """ + def __init__(self, dswfile, source, env): + self.dswfile = os.path.normpath(str(dswfile)) + self.dsw_folder_path = os.path.dirname(os.path.abspath(self.dswfile)) + self.env = env + + if 'projects' not in env: + raise SCons.Errors.UserError("You must specify a 'projects' argument to create an MSVSSolution.") + projects = env['projects'] + if not SCons.Util.is_List(projects): + raise SCons.Errors.InternalError("The 'projects' argument must be a list of nodes.") + projects = SCons.Util.flatten(projects) + if len(projects) < 1: + raise SCons.Errors.UserError("You must specify at least one project to create an MSVSSolution.") + self.dspfiles = list(map(str, projects)) + + if 'name' in self.env: + self.name = self.env['name'] + else: + self.name = os.path.basename(SCons.Util.splitext(self.dswfile)[0]) + self.name = self.env.subst(self.name) + + def Build(self): + pass + +class _GenerateV7DSW(_DSWGenerator): + """Generates a Solution file for MSVS .NET""" + def __init__(self, dswfile, source, env): + super().__init__(dswfile, source, env) + + self.file = None + self.version = self.env['MSVS_VERSION'] + self.version_num, self.suite = msvs_parse_version(self.version) + self.versionstr = '7.00' + if self.version_num >= 11.0: + self.versionstr = '12.00' + elif self.version_num >= 10.0: + self.versionstr = '11.00' + elif self.version_num >= 9.0: + self.versionstr = '10.00' + elif self.version_num >= 8.0: + self.versionstr = '9.00' + elif self.version_num >= 7.1: + self.versionstr = '8.00' + + if 'slnguid' in env and env['slnguid']: + self.slnguid = env['slnguid'] + else: + self.slnguid = _generateGUID(dswfile, self.name) + + self.configs = {} + + self.nokeep = 0 + if 'nokeep' in env and env['variant'] != 0: + self.nokeep = 1 + + if self.nokeep == 0 and os.path.exists(self.dswfile): + self.Parse() + + def AddConfig(self, variant, dswfile=dswfile): + config = Config() + + match = re.match(r'(.*)\|(.*)', variant) + if match: + config.variant = match.group(1) + config.platform = match.group(2) + else: + config.variant = variant + config.platform = 'Win32' + + self.configs[variant] = config + # DEBUG + # print("Adding '" + self.name + ' - ' + config.variant + '|' + config.platform + "' to '" + str(dswfile) + "'") + + if 'variant' not in env: + raise SCons.Errors.InternalError("You must specify a 'variant' argument (i.e. 'Debug' or " +\ + "'Release') to create an MSVS Solution File.") + elif SCons.Util.is_String(env['variant']): + AddConfig(self, env['variant']) + elif SCons.Util.is_List(env['variant']): + for variant in env['variant']: + AddConfig(self, variant) + + seen = set() + self.platforms = [p.platform for p in self.configs.values() + if not (p.platform in seen or seen.add(p.platform))] + + def GenerateProjectFilesInfo(self): + for dspfile in self.dspfiles: + dsp_folder_path, name = os.path.split(dspfile) + dsp_folder_path = os.path.abspath(dsp_folder_path) + if SCons.Util.splitext(name)[1] == '.filters': + # Ignore .filters project files + continue + dsp_relative_folder_path = os.path.relpath(dsp_folder_path, self.dsw_folder_path) + if dsp_relative_folder_path == os.curdir: + dsp_relative_file_path = name + else: + dsp_relative_file_path = os.path.join(dsp_relative_folder_path, name) + dspfile_info = {'NAME': name, + 'GUID': _generateGUID(dspfile, ''), + 'FOLDER_PATH': dsp_folder_path, + 'FILE_PATH': dspfile, + 'SLN_RELATIVE_FOLDER_PATH': dsp_relative_folder_path, + 'SLN_RELATIVE_FILE_PATH': dsp_relative_file_path} + self.dspfiles_info.append(dspfile_info) + + self.dspfiles_info = [] + GenerateProjectFilesInfo(self) + + def Parse(self): + try: + dswfile = open(self.dswfile,'r') + except IOError: + return # doesn't exist yet, so can't add anything to configs. + + line = dswfile.readline() + while line: + if line[:9] == "EndGlobal": + break + line = dswfile.readline() + + line = dswfile.readline() + datas = line + while line: + line = dswfile.readline() + datas = datas + line + dswfile.close() + + # OK, we've found our little pickled cache of data. + try: + datas = base64.decodestring(datas) + data = pickle.loads(datas) + except KeyboardInterrupt: + raise + except: + return # unable to unpickle any data for some reason + + self.configs.update(data) + + def PrintSolution(self): + """Writes a solution file""" + self.file.write('Microsoft Visual Studio Solution File, Format Version %s\n' % self.versionstr) + if self.version_num >= 14.3: + # Visual Studio 2022 is considered to be version 17. + self.file.write('# Visual Studio 17\n') + elif self.version_num >= 14.2: + # Visual Studio 2019 is considered to be version 16. + self.file.write('# Visual Studio 16\n') + elif self.version_num > 14.0: + # Visual Studio 2015 and 2017 are both considered to be version 15. + self.file.write('# Visual Studio 15\n') + elif self.version_num >= 12.0: + self.file.write('# Visual Studio 14\n') + elif self.version_num >= 11.0: + self.file.write('# Visual Studio 11\n') + elif self.version_num >= 10.0: + self.file.write('# Visual Studio 2010\n') + elif self.version_num >= 9.0: + self.file.write('# Visual Studio 2008\n') + elif self.version_num >= 8.0: + self.file.write('# Visual Studio 2005\n') + + for dspinfo in self.dspfiles_info: + name = dspinfo['NAME'] + base, suffix = SCons.Util.splitext(name) + if suffix == '.vcproj': + name = base + self.file.write('Project("%s") = "%s", "%s", "%s"\n' + % (external_makefile_guid, name, dspinfo['SLN_RELATIVE_FILE_PATH'], dspinfo['GUID'])) + if 7.1 <= self.version_num < 8.0: + self.file.write('\tProjectSection(ProjectDependencies) = postProject\n' + '\tEndProjectSection\n') + self.file.write('EndProject\n') + + self.file.write('Global\n') + + env = self.env + if 'MSVS_SCC_PROVIDER' in env: + scc_number_of_projects = len(self.dspfiles) + 1 + slnguid = self.slnguid + scc_provider = env.get('MSVS_SCC_PROVIDER', '').replace(' ', r'\u0020') + scc_project_name = env.get('MSVS_SCC_PROJECT_NAME', '').replace(' ', r'\u0020') + scc_connection_root = env.get('MSVS_SCC_CONNECTION_ROOT', os.curdir) + scc_local_path = os.path.relpath(scc_connection_root, self.dsw_folder_path).replace('\\', '\\\\') + self.file.write('\tGlobalSection(SourceCodeControl) = preSolution\n' + '\t\tSccNumberOfProjects = %(scc_number_of_projects)d\n' + '\t\tSccProjectName0 = %(scc_project_name)s\n' + '\t\tSccLocalPath0 = %(scc_local_path)s\n' + '\t\tSccProvider0 = %(scc_provider)s\n' + '\t\tCanCheckoutShared = true\n' % locals()) + sln_relative_path_from_scc = os.path.relpath(self.dsw_folder_path, scc_connection_root) + if sln_relative_path_from_scc != os.curdir: + self.file.write('\t\tSccProjectFilePathRelativizedFromConnection0 = %s\\\\\n' + % sln_relative_path_from_scc.replace('\\', '\\\\')) + if self.version_num < 8.0: + # When present, SolutionUniqueID is automatically removed by VS 2005 + # TODO: check for Visual Studio versions newer than 2005 + self.file.write('\t\tSolutionUniqueID = %s\n' % slnguid) + for dspinfo in self.dspfiles_info: + i = self.dspfiles_info.index(dspinfo) + 1 + dsp_relative_file_path = dspinfo['SLN_RELATIVE_FILE_PATH'].replace('\\', '\\\\') + dsp_scc_relative_folder_path = os.path.relpath(dspinfo['FOLDER_PATH'], scc_connection_root).replace('\\', '\\\\') + self.file.write('\t\tSccProjectUniqueName%(i)s = %(dsp_relative_file_path)s\n' + '\t\tSccLocalPath%(i)d = %(scc_local_path)s\n' + '\t\tCanCheckoutShared = true\n' + '\t\tSccProjectFilePathRelativizedFromConnection%(i)s = %(dsp_scc_relative_folder_path)s\\\\\n' + % locals()) + self.file.write('\tEndGlobalSection\n') + if self.version_num >= 8.0: + self.file.write('\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n') + else: + self.file.write('\tGlobalSection(SolutionConfiguration) = preSolution\n') + + confkeys = sorted(self.configs.keys()) + cnt = 0 + for name in confkeys: + variant = self.configs[name].variant + platform = self.configs[name].platform + if self.version_num >= 8.0: + self.file.write('\t\t%s|%s = %s|%s\n' % (variant, platform, variant, platform)) + else: + self.file.write('\t\tConfigName.%d = %s\n' % (cnt, variant)) + cnt = cnt + 1 + self.file.write('\tEndGlobalSection\n') + if self.version_num <= 7.1: + self.file.write('\tGlobalSection(ProjectDependencies) = postSolution\n' + '\tEndGlobalSection\n') + if self.version_num >= 8.0: + self.file.write('\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n') + else: + self.file.write('\tGlobalSection(ProjectConfiguration) = postSolution\n') + + for name in confkeys: + variant = self.configs[name].variant + platform = self.configs[name].platform + if self.version_num >= 8.0: + for dspinfo in self.dspfiles_info: + guid = dspinfo['GUID'] + self.file.write('\t\t%s.%s|%s.ActiveCfg = %s|%s\n' + '\t\t%s.%s|%s.Build.0 = %s|%s\n' % (guid,variant,platform,variant,platform,guid,variant,platform,variant,platform)) + else: + for dspinfo in self.dspfiles_info: + guid = dspinfo['GUID'] + self.file.write('\t\t%s.%s.ActiveCfg = %s|%s\n' + '\t\t%s.%s.Build.0 = %s|%s\n' %(guid,variant,variant,platform,guid,variant,variant,platform)) + + self.file.write('\tEndGlobalSection\n') + + if self.version_num >= 8.0: + self.file.write('\tGlobalSection(SolutionProperties) = preSolution\n' + '\t\tHideSolutionNode = FALSE\n' + '\tEndGlobalSection\n') + else: + self.file.write('\tGlobalSection(ExtensibilityGlobals) = postSolution\n' + '\tEndGlobalSection\n' + '\tGlobalSection(ExtensibilityAddIns) = postSolution\n' + '\tEndGlobalSection\n') + self.file.write('EndGlobal\n') + if self.nokeep == 0: + pdata = pickle.dumps(self.configs,PICKLE_PROTOCOL) + pdata = base64.b64encode(pdata).decode() + self.file.write(pdata) + self.file.write('\n') + + def Build(self): + try: + self.file = open(self.dswfile,'w') + except IOError as detail: + raise SCons.Errors.InternalError('Unable to open "' + self.dswfile + '" for writing:' + str(detail)) + else: + self.PrintSolution() + self.file.close() + +V6DSWHeader = """\ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "%(name)s"="%(dspfile)s" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### +""" + +class _GenerateV6DSW(_DSWGenerator): + """Generates a Workspace file for MSVS 6.0""" + + def PrintWorkspace(self): + """ writes a DSW file """ + name = self.name + dspfile = os.path.relpath(self.dspfiles[0], self.dsw_folder_path) + self.file.write(V6DSWHeader % locals()) + + def Build(self): + try: + self.file = open(self.dswfile,'w') + except IOError as detail: + raise SCons.Errors.InternalError('Unable to open "' + self.dswfile + '" for writing:' + str(detail)) + else: + self.PrintWorkspace() + self.file.close() + + +def GenerateDSP(dspfile, source, env): + """Generates a Project file based on the version of MSVS that is being used""" + + version_num = 6.0 + if 'MSVS_VERSION' in env: + version_num, suite = msvs_parse_version(env['MSVS_VERSION']) + if version_num >= 10.0: + g = _GenerateV10DSP(dspfile, source, env) + g.Build() + elif version_num >= 7.0: + g = _GenerateV7DSP(dspfile, source, env) + g.Build() + else: + g = _GenerateV6DSP(dspfile, source, env) + g.Build() + +def GenerateDSW(dswfile, source, env): + """Generates a Solution/Workspace file based on the version of MSVS that is being used""" + + version_num = 6.0 + if 'MSVS_VERSION' in env: + version_num, suite = msvs_parse_version(env['MSVS_VERSION']) + if version_num >= 7.0: + g = _GenerateV7DSW(dswfile, source, env) + g.Build() + else: + g = _GenerateV6DSW(dswfile, source, env) + g.Build() + + +############################################################################## +# Above here are the classes and functions for generation of +# DSP/DSW/SLN/VCPROJ files. +############################################################################## + +def GetMSVSProjectSuffix(target, source, env, for_signature): + return env['MSVS']['PROJECTSUFFIX'] + +def GetMSVSSolutionSuffix(target, source, env, for_signature): + return env['MSVS']['SOLUTIONSUFFIX'] + +def GenerateProject(target, source, env): + # generate the dsp file, according to the version of MSVS. + builddspfile = target[0] + dspfile = builddspfile.srcnode() + + # this detects whether or not we're using a VariantDir + if dspfile is not builddspfile: + try: + bdsp = open(str(builddspfile), "w+") + except IOError as detail: + print('Unable to open "' + str(dspfile) + '" for writing:',detail,'\n') + raise + + bdsp.write("This is just a placeholder file.\nThe real project file is here:\n%s\n" % dspfile.get_abspath()) + bdsp.close() + + GenerateDSP(dspfile, source, env) + + if env.get('auto_build_solution', 1): + builddswfile = target[1] + dswfile = builddswfile.srcnode() + + if dswfile is not builddswfile: + + try: + bdsw = open(str(builddswfile), "w+") + except IOError as detail: + print('Unable to open "' + str(dspfile) + '" for writing:',detail,'\n') + raise + + bdsw.write("This is just a placeholder file.\nThe real workspace file is here:\n%s\n" % dswfile.get_abspath()) + bdsw.close() + + GenerateDSW(dswfile, source, env) + +def GenerateSolution(target, source, env): + GenerateDSW(target[0], source, env) + +def projectEmitter(target, source, env): + """Sets up the DSP dependencies.""" + + # todo: Not sure what sets source to what user has passed as target, + # but this is what happens. When that is fixed, we also won't have + # to make the user always append env['MSVSPROJECTSUFFIX'] to target. + if source[0] == target[0]: + source = [] + + # make sure the suffix is correct for the version of MSVS we're running. + (base, suff) = SCons.Util.splitext(str(target[0])) + suff = env.subst('$MSVSPROJECTSUFFIX') + target[0] = base + suff + + if not source: + source = 'prj_inputs:' + source = source + env.subst('$MSVSSCONSCOM', 1) + source = source + env.subst('$MSVSENCODING', 1) + + # Project file depends on CPPDEFINES and CPPPATH + preprocdefs = xmlify(';'.join(processDefines(env.get('CPPDEFINES', [])))) + includepath = xmlify(';'.join(processIncludes(env.get('CPPPATH', []), env, None, None))) + source = source + "; ppdefs:%s incpath:%s"%(preprocdefs, includepath) + + if 'buildtarget' in env and env['buildtarget'] is not None: + if SCons.Util.is_String(env['buildtarget']): + source = source + ' "%s"' % env['buildtarget'] + elif SCons.Util.is_List(env['buildtarget']): + for bt in env['buildtarget']: + if SCons.Util.is_String(bt): + source = source + ' "%s"' % bt + else: + try: source = source + ' "%s"' % bt.get_abspath() + except AttributeError: raise SCons.Errors.InternalError("buildtarget can be a string, a node, a list of strings or nodes, or None") + else: + try: source = source + ' "%s"' % env['buildtarget'].get_abspath() + except AttributeError: raise SCons.Errors.InternalError("buildtarget can be a string, a node, a list of strings or nodes, or None") + + if 'outdir' in env and env['outdir'] is not None: + if SCons.Util.is_String(env['outdir']): + source = source + ' "%s"' % env['outdir'] + elif SCons.Util.is_List(env['outdir']): + for s in env['outdir']: + if SCons.Util.is_String(s): + source = source + ' "%s"' % s + else: + try: source = source + ' "%s"' % s.get_abspath() + except AttributeError: raise SCons.Errors.InternalError("outdir can be a string, a node, a list of strings or nodes, or None") + else: + try: source = source + ' "%s"' % env['outdir'].get_abspath() + except AttributeError: raise SCons.Errors.InternalError("outdir can be a string, a node, a list of strings or nodes, or None") + + if 'name' in env: + if SCons.Util.is_String(env['name']): + source = source + ' "%s"' % env['name'] + else: + raise SCons.Errors.InternalError("name must be a string") + + if 'variant' in env: + if SCons.Util.is_String(env['variant']): + source = source + ' "%s"' % env['variant'] + elif SCons.Util.is_List(env['variant']): + for variant in env['variant']: + if SCons.Util.is_String(variant): + source = source + ' "%s"' % variant + else: + raise SCons.Errors.InternalError("name must be a string or a list of strings") + else: + raise SCons.Errors.InternalError("variant must be a string or a list of strings") + else: + raise SCons.Errors.InternalError("variant must be specified") + + for s in _DSPGenerator.srcargs: + if s in env: + if SCons.Util.is_String(env[s]): + source = source + ' "%s' % env[s] + elif SCons.Util.is_List(env[s]): + for t in env[s]: + if SCons.Util.is_String(t): + source = source + ' "%s"' % t + else: + raise SCons.Errors.InternalError(s + " must be a string or a list of strings") + else: + raise SCons.Errors.InternalError(s + " must be a string or a list of strings") + + source = source + ' "%s"' % str(target[0]) + source = [SCons.Node.Python.Value(source)] + + targetlist = [target[0]] + sourcelist = source + + if env.get('auto_build_solution', 1): + env['projects'] = [env.File(t).srcnode() for t in targetlist] + t, s = solutionEmitter(target, target, env) + targetlist = targetlist + t + + # Beginning with Visual Studio 2010 for each project file (.vcxproj) we have additional file (.vcxproj.filters) + version_num = 6.0 + if 'MSVS_VERSION' in env: + version_num, suite = msvs_parse_version(env['MSVS_VERSION']) + if version_num >= 10.0: + targetlist.append(targetlist[0] + '.filters') + + return (targetlist, sourcelist) + +def solutionEmitter(target, source, env): + """Sets up the DSW dependencies.""" + + # todo: Not sure what sets source to what user has passed as target, + # but this is what happens. When that is fixed, we also won't have + # to make the user always append env['MSVSSOLUTIONSUFFIX'] to target. + if source[0] == target[0]: + source = [] + + # make sure the suffix is correct for the version of MSVS we're running. + (base, suff) = SCons.Util.splitext(str(target[0])) + suff = env.subst('$MSVSSOLUTIONSUFFIX') + target[0] = base + suff + + if not source: + source = 'sln_inputs:' + + if 'name' in env: + if SCons.Util.is_String(env['name']): + source = source + ' "%s"' % env['name'] + else: + raise SCons.Errors.InternalError("name must be a string") + + if 'variant' in env: + if SCons.Util.is_String(env['variant']): + source = source + ' "%s"' % env['variant'] + elif SCons.Util.is_List(env['variant']): + for variant in env['variant']: + if SCons.Util.is_String(variant): + source = source + ' "%s"' % variant + else: + raise SCons.Errors.InternalError("name must be a string or a list of strings") + else: + raise SCons.Errors.InternalError("variant must be a string or a list of strings") + else: + raise SCons.Errors.InternalError("variant must be specified") + + if 'slnguid' in env: + if SCons.Util.is_String(env['slnguid']): + source = source + ' "%s"' % env['slnguid'] + else: + raise SCons.Errors.InternalError("slnguid must be a string") + + if 'projects' in env: + if SCons.Util.is_String(env['projects']): + source = source + ' "%s"' % env['projects'] + elif SCons.Util.is_List(env['projects']): + for t in env['projects']: + if SCons.Util.is_String(t): + source = source + ' "%s"' % t + + source = source + ' "%s"' % str(target[0]) + source = [SCons.Node.Python.Value(source)] + + return ([target[0]], source) + +projectAction = SCons.Action.Action(GenerateProject, None) + +solutionAction = SCons.Action.Action(GenerateSolution, None) + +projectBuilder = SCons.Builder.Builder(action = '$MSVSPROJECTCOM', + suffix = '$MSVSPROJECTSUFFIX', + emitter = projectEmitter) + +solutionBuilder = SCons.Builder.Builder(action = '$MSVSSOLUTIONCOM', + suffix = '$MSVSSOLUTIONSUFFIX', + emitter = solutionEmitter) + +default_MSVS_SConscript = None + +def generate(env): + """Add Builders and construction variables for Microsoft Visual + Studio project files to an Environment.""" + try: + env['BUILDERS']['MSVSProject'] + except KeyError: + env['BUILDERS']['MSVSProject'] = projectBuilder + + try: + env['BUILDERS']['MSVSSolution'] + except KeyError: + env['BUILDERS']['MSVSSolution'] = solutionBuilder + + env['MSVSPROJECTCOM'] = projectAction + env['MSVSSOLUTIONCOM'] = solutionAction + + if SCons.Script.call_stack: + # XXX Need to find a way to abstract this; the build engine + # shouldn't depend on anything in SCons.Script. + env['MSVSSCONSCRIPT'] = SCons.Script.call_stack[0].sconscript + else: + global default_MSVS_SConscript + if default_MSVS_SConscript is None: + default_MSVS_SConscript = env.File('SConstruct') + env['MSVSSCONSCRIPT'] = default_MSVS_SConscript + + # Allow consumers to provide their own versions of MSVSSCONS and + # MSVSSCONSFLAGS. This helps support consumers who use wrapper scripts to + # invoke scons. + if 'MSVSSCONS' not in env: + env['MSVSSCONS'] = '"%s" -c "%s"' % (python_executable, getExecScriptMain(env)) + if 'MSVSSCONSFLAGS' not in env: + env['MSVSSCONSFLAGS'] = '-C "${MSVSSCONSCRIPT.dir.get_abspath()}" -f ${MSVSSCONSCRIPT.name}' + + env['MSVSSCONSCOM'] = '$MSVSSCONS $MSVSSCONSFLAGS' + env['MSVSBUILDCOM'] = '$MSVSSCONSCOM "$MSVSBUILDTARGET"' + env['MSVSREBUILDCOM'] = '$MSVSSCONSCOM "$MSVSBUILDTARGET"' + env['MSVSCLEANCOM'] = '$MSVSSCONSCOM -c "$MSVSBUILDTARGET"' + + # Set-up ms tools paths for default version + msvc_setup_env_once(env, tool=tool_name) + + if 'MSVS_VERSION' in env: + version_num, suite = msvs_parse_version(env['MSVS_VERSION']) + else: + (version_num, suite) = (7.0, None) # guess at a default + if 'MSVS' not in env: + env['MSVS'] = {} + if version_num < 7.0: + env['MSVS']['PROJECTSUFFIX'] = '.dsp' + env['MSVS']['SOLUTIONSUFFIX'] = '.dsw' + elif version_num < 10.0: + env['MSVS']['PROJECTSUFFIX'] = '.vcproj' + env['MSVS']['SOLUTIONSUFFIX'] = '.sln' + else: + env['MSVS']['PROJECTSUFFIX'] = '.vcxproj' + env['MSVS']['SOLUTIONSUFFIX'] = '.sln' + + if version_num >= 10.0: + env['MSVSENCODING'] = 'utf-8' + else: + env['MSVSENCODING'] = 'Windows-1252' + + env['GET_MSVSPROJECTSUFFIX'] = GetMSVSProjectSuffix + env['GET_MSVSSOLUTIONSUFFIX'] = GetMSVSSolutionSuffix + env['MSVSPROJECTSUFFIX'] = '${GET_MSVSPROJECTSUFFIX}' + env['MSVSSOLUTIONSUFFIX'] = '${GET_MSVSSOLUTIONSUFFIX}' + env['SCONS_HOME'] = os.environ.get('SCONS_HOME') + +def exists(env): + return msvc_setup_env_tool(env, tool=tool_name) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/mwcc.py b/scons/scons-local-4.5.1/SCons/Tool/mwcc.py new file mode 100644 index 000000000..8f1201a02 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/mwcc.py @@ -0,0 +1,207 @@ +"""SCons.Tool.mwcc + +Tool-specific initialization for the Metrowerks CodeWarrior compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os +import os.path + +import SCons.Util + +def set_vars(env): + """Set MWCW_VERSION, MWCW_VERSIONS, and some codewarrior environment vars + + MWCW_VERSIONS is set to a list of objects representing installed versions + + MWCW_VERSION is set to the version object that will be used for building. + MWCW_VERSION can be set to a string during Environment + construction to influence which version is chosen, otherwise + the latest one from MWCW_VERSIONS is used. + + Returns true if at least one version is found, false otherwise + """ + desired = env.get('MWCW_VERSION', '') + + # return right away if the variables are already set + if isinstance(desired, MWVersion): + return 1 + elif desired is None: + return 0 + + versions = find_versions() + version = None + + if desired: + for v in versions: + if str(v) == desired: + version = v + elif versions: + version = versions[-1] + + env['MWCW_VERSIONS'] = versions + env['MWCW_VERSION'] = version + + if version is None: + return 0 + + env.PrependENVPath('PATH', version.clpath) + env.PrependENVPath('PATH', version.dllpath) + ENV = env['ENV'] + ENV['CWFolder'] = version.path + ENV['LM_LICENSE_FILE'] = version.license + plus = lambda x: '+%s' % x + ENV['MWCIncludes'] = os.pathsep.join(map(plus, version.includes)) + ENV['MWLibraries'] = os.pathsep.join(map(plus, version.libs)) + return 1 + + +def find_versions(): + """Return a list of MWVersion objects representing installed versions""" + versions = [] + + ### This function finds CodeWarrior by reading from the registry on + ### Windows. Some other method needs to be implemented for other + ### platforms, maybe something that calls env.WhereIs('mwcc') + + if SCons.Util.can_read_reg: + try: + HLM = SCons.Util.HKEY_LOCAL_MACHINE + product = 'SOFTWARE\\Metrowerks\\CodeWarrior\\Product Versions' + product_key = SCons.Util.RegOpenKeyEx(HLM, product) + + i = 0 + while True: + name = product + '\\' + SCons.Util.RegEnumKey(product_key, i) + name_key = SCons.Util.RegOpenKeyEx(HLM, name) + + try: + version = SCons.Util.RegQueryValueEx(name_key, 'VERSION') + path = SCons.Util.RegQueryValueEx(name_key, 'PATH') + mwv = MWVersion(version[0], path[0], 'Win32-X86') + versions.append(mwv) + except SCons.Util.RegError: + pass + + i = i + 1 + + except SCons.Util.RegError: + pass + + return versions + + +class MWVersion: + def __init__(self, version, path, platform): + self.version = version + self.path = path + self.platform = platform + self.clpath = os.path.join(path, 'Other Metrowerks Tools', + 'Command Line Tools') + self.dllpath = os.path.join(path, 'Bin') + + # The Metrowerks tools don't store any configuration data so they + # are totally dumb when it comes to locating standard headers, + # libraries, and other files, expecting all the information + # to be handed to them in environment variables. The members set + # below control what information scons injects into the environment + + ### The paths below give a normal build environment in CodeWarrior for + ### Windows, other versions of CodeWarrior might need different paths. + + msl = os.path.join(path, 'MSL') + support = os.path.join(path, '%s Support' % platform) + + self.license = os.path.join(path, 'license.dat') + self.includes = [msl, support] + self.libs = [msl, support] + + def __str__(self): + return self.version + + +CSuffixes = ['.c', '.C'] +CXXSuffixes = ['.cc', '.cpp', '.cxx', '.c++', '.C++'] + + +def generate(env): + """Add Builders and construction variables for the mwcc to an Environment.""" + import SCons.Defaults + import SCons.Tool + + set_vars(env) + + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + for suffix in CSuffixes: + static_obj.add_action(suffix, SCons.Defaults.CAction) + shared_obj.add_action(suffix, SCons.Defaults.ShCAction) + + for suffix in CXXSuffixes: + static_obj.add_action(suffix, SCons.Defaults.CXXAction) + shared_obj.add_action(suffix, SCons.Defaults.ShCXXAction) + + env['CCCOMFLAGS'] = '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -nolink -o $TARGET $SOURCES' + + env['CC'] = 'mwcc' + env['CCCOM'] = '$CC $CFLAGS $CCFLAGS $CCCOMFLAGS' + + env['CXX'] = 'mwcc' + env['CXXCOM'] = '$CXX $CXXFLAGS $CCCOMFLAGS' + + env['SHCC'] = '$CC' + env['SHCCFLAGS'] = '$CCFLAGS' + env['SHCFLAGS'] = '$CFLAGS' + env['SHCCCOM'] = '$SHCC $SHCFLAGS $SHCCFLAGS $CCCOMFLAGS' + + env['SHCXX'] = '$CXX' + env['SHCXXFLAGS'] = '$CXXFLAGS' + env['SHCXXCOM'] = '$SHCXX $SHCXXFLAGS $CCCOMFLAGS' + + env['CFILESUFFIX'] = '.c' + env['CXXFILESUFFIX'] = '.cpp' + env['CPPDEFPREFIX'] = '-D' + env['CPPDEFSUFFIX'] = '' + env['INCPREFIX'] = '-I' + env['INCSUFFIX'] = '' + + #env['PCH'] = ? + #env['PCHSTOP'] = ? + + +def exists(env): + return set_vars(env) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/mwld.py b/scons/scons-local-4.5.1/SCons/Tool/mwld.py new file mode 100644 index 000000000..20676606e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/mwld.py @@ -0,0 +1,108 @@ +"""SCons.Tool.mwld + +Tool-specific initialization for the Metrowerks CodeWarrior linker. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Tool + + +def generate(env): + """Add Builders and construction variables for lib to an Environment.""" + SCons.Tool.createStaticLibBuilder(env) + SCons.Tool.createSharedLibBuilder(env) + SCons.Tool.createProgBuilder(env) + + env['AR'] = 'mwld' + env['ARCOM'] = '$AR $ARFLAGS -library -o $TARGET $SOURCES' + + env['LIBDIRPREFIX'] = '-L' + env['LIBDIRSUFFIX'] = '' + env['LIBLINKPREFIX'] = '-l' + env['LIBLINKSUFFIX'] = '.lib' + + env['LINK'] = 'mwld' + env['LINKCOM'] = '$LINK $LINKFLAGS -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' + + env['SHLINK'] = '$LINK' + env['SHLINKFLAGS'] = '$LINKFLAGS' + env['SHLINKCOM'] = shlib_action + env['SHLIBEMITTER']= shlib_emitter + env['LDMODULEEMITTER']= shlib_emitter + + +def exists(env): + import SCons.Tool.mwcc + return SCons.Tool.mwcc.set_vars(env) + + +def shlib_generator(target, source, env, for_signature): + cmd = ['$SHLINK', '$SHLINKFLAGS', '-shared'] + + no_import_lib = env.get('no_import_lib', 0) + if no_import_lib: cmd.extend('-noimplib') + + dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX') + if dll: cmd.extend(['-o', dll]) + + implib = env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX') + if implib: cmd.extend(['-implib', implib.get_string(for_signature)]) + + cmd.extend(['$SOURCES', '$_LIBDIRFLAGS', '$_LIBFLAGS']) + + return [cmd] + + +def shlib_emitter(target, source, env): + dll = env.FindIxes(target, 'SHLIBPREFIX', 'SHLIBSUFFIX') + no_import_lib = env.get('no_import_lib', 0) + + if not dll: + raise SCons.Errors.UserError("A shared library should have exactly one target with the suffix: %s" % env.subst("$SHLIBSUFFIX")) + + if not no_import_lib and \ + not env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX'): + + # Append an import library to the list of targets. + target.append(env.ReplaceIxes(dll, + 'SHLIBPREFIX', 'SHLIBSUFFIX', + 'LIBPREFIX', 'LIBSUFFIX')) + + return target, source + + +shlib_action = SCons.Action.Action(shlib_generator, generator=1) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/nasm.py b/scons/scons-local-4.5.1/SCons/Tool/nasm.py new file mode 100644 index 000000000..ff0bc612f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/nasm.py @@ -0,0 +1,72 @@ +"""SCons.Tool.nasm + +Tool-specific initialization for nasm, the famous Netwide Assembler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Defaults +import SCons.Tool +import SCons.Util + +ASSuffixes = ['.s', '.asm', '.ASM'] +ASPPSuffixes = ['.spp', '.SPP', '.sx'] +if SCons.Util.case_sensitive_suffixes('.s', '.S'): + ASPPSuffixes.extend(['.S']) +else: + ASSuffixes.extend(['.S']) + +def generate(env): + """Add Builders and construction variables for nasm to an Environment.""" + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + + for suffix in ASSuffixes: + static_obj.add_action(suffix, SCons.Defaults.ASAction) + static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter) + + for suffix in ASPPSuffixes: + static_obj.add_action(suffix, SCons.Defaults.ASPPAction) + static_obj.add_emitter(suffix, SCons.Defaults.StaticObjectEmitter) + + env['AS'] = 'nasm' + env['ASFLAGS'] = SCons.Util.CLVar('') + env['ASPPFLAGS'] = '$ASFLAGS' + env['ASCOM'] = '$AS $ASFLAGS -o $TARGET $SOURCES' + env['ASPPCOM'] = '$CC $ASPPFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o $TARGET $SOURCES' + +def exists(env): + return env.Detect('nasm') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/ninja/Globals.py b/scons/scons-local-4.5.1/SCons/Tool/ninja/Globals.py new file mode 100644 index 000000000..6b079eff2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ninja/Globals.py @@ -0,0 +1,41 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +import SCons.Action + +NINJA_RULES = "__NINJA_CUSTOM_RULES" +NINJA_POOLS = "__NINJA_CUSTOM_POOLS" +NINJA_CUSTOM_HANDLERS = "__NINJA_CUSTOM_HANDLERS" +NINJA_BUILD = "NINJA_BUILD" +NINJA_WHEREIS_MEMO = {} +NINJA_STAT_MEMO = {} +NINJA_DEFAULT_TARGETS = [] +NINJA_CMDLINE_TARGETS = [] +__NINJA_RULE_MAPPING = {} + +# These are the types that get_command can do something with +COMMAND_TYPES = ( + SCons.Action.CommandAction, + SCons.Action.CommandGeneratorAction, +) +ninja_builder_initialized = False diff --git a/scons/scons-local-4.5.1/SCons/Tool/ninja/Methods.py b/scons/scons-local-4.5.1/SCons/Tool/ninja/Methods.py new file mode 100644 index 000000000..c0afab80b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ninja/Methods.py @@ -0,0 +1,286 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +import os +import shlex +import textwrap + +import SCons +from SCons.Subst import SUBST_CMD +from SCons.Tool.ninja import NINJA_CUSTOM_HANDLERS, NINJA_RULES, NINJA_POOLS +from SCons.Tool.ninja.Globals import __NINJA_RULE_MAPPING +from SCons.Tool.ninja.Utils import get_targets_sources, get_dependencies, get_order_only, get_outputs, get_inputs, \ + get_rule, get_path, generate_command, get_command_env, get_comstr + + +def register_custom_handler(env, name, handler): + """Register a custom handler for SCons function actions.""" + env[NINJA_CUSTOM_HANDLERS][name] = handler + + +def register_custom_rule_mapping(env, pre_subst_string, rule): + """Register a function to call for a given rule.""" + SCons.Tool.ninja.Globals.__NINJA_RULE_MAPPING[pre_subst_string] = rule + + +def register_custom_rule(env, rule, command, description="", deps=None, pool=None, use_depfile=False, use_response_file=False, response_file_content="$rspc"): + """Allows specification of Ninja rules from inside SCons files.""" + rule_obj = { + "command": command, + "description": description if description else "{} $out".format(rule), + } + + if use_depfile: + rule_obj["depfile"] = os.path.join(get_path(env['NINJA_DIR']), '$out.depfile') + + if deps is not None: + rule_obj["deps"] = deps + + if pool is not None: + rule_obj["pool"] = pool + + if use_response_file: + rule_obj["rspfile"] = "$out.rsp" + rule_obj["rspfile_content"] = response_file_content + + env[NINJA_RULES][rule] = rule_obj + + +def register_custom_pool(env, pool, size): + """Allows the creation of custom Ninja pools""" + env[NINJA_POOLS][pool] = size + + +def set_build_node_callback(env, node, callback): + if not node.is_conftest(): + node.attributes.ninja_build_callback = callback + + +def get_generic_shell_command(env, node, action, targets, sources, executor=None): + return ( + "GENERATED_CMD", + { + "cmd": generate_command(env, node, action, targets, sources, executor=executor), + "env": get_command_env(env, targets, sources), + }, + # Since this function is a rule mapping provider, it must return a list of dependencies, + # and usually this would be the path to a tool, such as a compiler, used for this rule. + # However this function is to generic to be able to reliably extract such deps + # from the command, so we return a placeholder empty list. It should be noted that + # generally this function will not be used solely and is more like a template to generate + # the basics for a custom provider which may have more specific options for a provider + # function for a custom NinjaRuleMapping. + [] + ) + + +def CheckNinjaCompdbExpand(env, context): + """ Configure check testing if ninja's compdb can expand response files""" + + # TODO: When would this be false? + context.Message('Checking if ninja compdb can expand response files... ') + ret, output = context.TryAction( + action='ninja -f $SOURCE -t compdb -x CMD_RSP > $TARGET', + extension='.ninja', + text=textwrap.dedent(""" + rule CMD_RSP + command = $cmd @$out.rsp > fake_output.txt + description = Building $out + rspfile = $out.rsp + rspfile_content = $rspc + build fake_output.txt: CMD_RSP fake_input.txt + cmd = echo + pool = console + rspc = "test" + """)) + result = '@fake_output.txt.rsp' not in output + context.Result(result) + return result + + +def get_command(env, node, action): # pylint: disable=too-many-branches + """Get the command to execute for node.""" + if node.env: + sub_env = node.env + else: + sub_env = env + executor = node.get_executor() + tlist, slist = get_targets_sources(node) + + # Generate a real CommandAction + if isinstance(action, SCons.Action.CommandGeneratorAction): + # pylint: disable=protected-access + action = action._generate(tlist, slist, sub_env, SUBST_CMD, executor=executor) + + variables = {} + + # since we will check the ninja rule map for this command str, we must make sure + # its string so its hashable. + comstr = str(get_comstr(sub_env, action, tlist, slist)) + if not comstr: + return None + + provider = __NINJA_RULE_MAPPING.get(comstr, get_generic_shell_command) + rule, variables, provider_deps = provider(sub_env, node, action, tlist, slist, executor=executor) + if node.get_env().get('NINJA_FORCE_SCONS_BUILD'): + rule = 'TEMPLATE' + + # Get the dependencies for all targets + implicit = list({dep for tgt in tlist for dep in get_dependencies(tgt)}) + + # Now add in the other dependencies related to the command, + # e.g. the compiler binary. The ninja rule can be user provided so + # we must do some validation to resolve the dependency path for ninja. + for provider_dep in provider_deps: + + provider_dep = sub_env.subst(provider_dep) + if not provider_dep: + continue + + # If the tool is a node, then SCons will resolve the path later, if its not + # a node then we assume it generated from build and make sure it is existing. + if isinstance(provider_dep, SCons.Node.Node) or os.path.exists(provider_dep): + implicit.append(provider_dep) + continue + + # in some case the tool could be in the local directory and be supplied without the ext + # such as in windows, so append the executable suffix and check. + prog_suffix = sub_env.get('PROGSUFFIX', '') + provider_dep_ext = provider_dep if provider_dep.endswith(prog_suffix) else provider_dep + prog_suffix + if os.path.exists(provider_dep_ext): + implicit.append(provider_dep_ext) + continue + + # Many commands will assume the binary is in the path, so + # we accept this as a possible input from a given command. + + provider_dep_abspath = sub_env.WhereIs(provider_dep) or sub_env.WhereIs(provider_dep, path=os.environ["PATH"]) + if provider_dep_abspath: + implicit.append(provider_dep_abspath) + continue + + # Possibly these could be ignore and the build would still work, however it may not always + # rebuild correctly, so we hard stop, and force the user to fix the issue with the provided + # ninja rule. + raise Exception("Could not resolve path for %s dependency on node '%s'" % (provider_dep, node)) + + ninja_build = { + "order_only": get_order_only(node), + "outputs": get_outputs(node), + "inputs": get_inputs(node), + "implicit": implicit, + "rule": get_rule(node, rule), + "variables": variables, + } + + # Don't use sub_env here because we require that NINJA_POOL be set + # on a per-builder call basis to prevent accidental strange + # behavior like env['NINJA_POOL'] = 'console' and sub_env can be + # the global Environment object if node.env is None. + # Example: + # + # Allowed: + # + # env.Command("ls", NINJA_POOL="ls_pool") + # + # Not allowed and ignored: + # + # env["NINJA_POOL"] = "ls_pool" + # env.Command("ls") + # + # TODO: Why not alloe env['NINJA_POOL'] ? (bdbaddog) + if node.env and node.env.get("NINJA_POOL", None) is not None: + ninja_build["pool"] = node.env["NINJA_POOL"] + + return ninja_build + + +def gen_get_response_file_command(env, rule, tool, tool_is_dynamic=False, custom_env={}): + """Generate a response file command provider for rule name.""" + + # If win32 using the environment with a response file command will cause + # ninja to fail to create the response file. Additionally since these rules + # generally are not piping through cmd.exe /c any environment variables will + # make CreateProcess fail to start. + # + # On POSIX we can still set environment variables even for compile + # commands so we do so. + use_command_env = not env["PLATFORM"] == "win32" + if "$" in tool: + tool_is_dynamic = True + + def get_response_file_command(env, node, action, targets, sources, executor=None): + if hasattr(action, "process"): + cmd_list, _, _ = action.process(targets, sources, env, executor=executor) + cmd_list = [str(c).replace("$", "$$") for c in cmd_list[0]] + else: + command = generate_command( + env, node, action, targets, sources, executor=executor + ) + cmd_list = shlex.split(command) + + if tool_is_dynamic: + tool_command = env.subst( + tool, target=targets, source=sources, executor=executor + ) + else: + tool_command = tool + + try: + # Add 1 so we always keep the actual tool inside of cmd + tool_idx = cmd_list.index(tool_command) + 1 + except ValueError: + raise Exception( + "Could not find tool {} in {} generated from {}".format( + tool, cmd_list, get_comstr(env, action, targets, sources) + ) + ) + + cmd, rsp_content = cmd_list[:tool_idx], cmd_list[tool_idx:] + + # Canonicalize the path to have forward (posix style) dir sep characters. + if os.altsep: + rsp_content = [rsp_content_item.replace(os.sep, os.altsep) for rsp_content_item in rsp_content] + rsp_content = ['"' + rsp_content_item + '"' for rsp_content_item in rsp_content] + rsp_content = " ".join(rsp_content) + + variables = {"rspc": rsp_content, rule: cmd} + if use_command_env: + variables["env"] = get_command_env(env, targets, sources) + + for key, value in custom_env.items(): + variables["env"] += env.subst( + "export %s=%s;" % (key, value), target=targets, source=sources, executor=executor + ) + " " + + if node.get_env().get('NINJA_FORCE_SCONS_BUILD'): + ret_rule = 'TEMPLATE' + else: + if len(' '.join(cmd_list)) < env.get('MAXLINELENGTH', 2048): + ret_rule = rule + else: + ret_rule = rule + '_RSP' + + return ret_rule, variables, [tool_command] + + return get_response_file_command diff --git a/scons/scons-local-4.5.1/SCons/Tool/ninja/NinjaState.py b/scons/scons-local-4.5.1/SCons/Tool/ninja/NinjaState.py new file mode 100644 index 000000000..5e7c28919 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ninja/NinjaState.py @@ -0,0 +1,923 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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 +# "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. + +import io +import os +import pathlib +import signal +import tempfile +import shutil +import sys +import random +import filecmp +from os.path import splitext +from tempfile import NamedTemporaryFile +import ninja +import hashlib + +import SCons +from SCons.Script import COMMAND_LINE_TARGETS +from SCons.Util import wait_for_process_to_die +from SCons.Errors import InternalError +from .Globals import COMMAND_TYPES, NINJA_RULES, NINJA_POOLS, \ + NINJA_CUSTOM_HANDLERS, NINJA_DEFAULT_TARGETS +from .Rules import _install_action_function, _mkdir_action_function, _lib_symlink_action_function, _copy_action_function +from .Utils import get_path, alias_to_ninja_build, generate_depfile, ninja_noop, get_order_only, \ + get_outputs, get_inputs, get_dependencies, get_rule, get_command_env, to_escaped_list, ninja_sorted_build +from .Methods import get_command + + +# pylint: disable=too-many-instance-attributes +class NinjaState: + """Maintains state of Ninja build system as it's translated from SCons.""" + + def __init__(self, env, ninja_file, ninja_syntax): + self.env = env + self.ninja_file = ninja_file + + self.ninja_bin_path = env.get('NINJA') + if not self.ninja_bin_path: + # default to using ninja installed with python module + ninja_bin = 'ninja.exe' if env["PLATFORM"] == "win32" else 'ninja' + self.ninja_bin_path = os.path.abspath(os.path.join( + ninja.__file__, + os.pardir, + 'data', + 'bin', + ninja_bin)) + if not os.path.exists(self.ninja_bin_path): + # couldn't find it, just give the bin name and hope + # its in the path later + self.ninja_bin_path = ninja_bin + self.ninja_syntax = ninja_syntax + self.writer_class = ninja_syntax.Writer + self.__generated = False + self.translator = SConsToNinjaTranslator(env) + self.generated_suffixes = env.get("NINJA_GENERATED_SOURCE_SUFFIXES", []) + + # List of generated builds that will be written at a later stage + self.builds = dict() + + # SCons sets this variable to a function which knows how to do + # shell quoting on whatever platform it's run on. Here we use it + # to make the SCONS_INVOCATION variable properly quoted for things + # like CCFLAGS + scons_escape = env.get("ESCAPE", lambda x: x) + + # The daemon port should be the same across runs, unless explicitly set + # or if the portfile is deleted. This ensures the ninja file is deterministic + # across regen's if nothings changed. The construction var should take preference, + # then portfile is next, and then otherwise create a new random port to persist in + # use. + scons_daemon_port = None + os.makedirs(get_path(self.env.get("NINJA_DIR")), exist_ok=True) + scons_daemon_port_file = str(pathlib.Path(get_path(self.env.get("NINJA_DIR"))) / "scons_daemon_portfile") + + if env.get('NINJA_SCONS_DAEMON_PORT') is not None: + scons_daemon_port = int(env.get('NINJA_SCONS_DAEMON_PORT')) + elif os.path.exists(scons_daemon_port_file): + with open(scons_daemon_port_file) as f: + scons_daemon_port = int(f.read()) + else: + scons_daemon_port = random.randint(10000, 60000) + + with open(scons_daemon_port_file, 'w') as f: + f.write(str(scons_daemon_port)) + + # if SCons was invoked from python, we expect the first arg to be the scons.py + # script, otherwise scons was invoked from the scons script + python_bin = '' + if os.path.basename(sys.argv[0]) == 'scons.py': + python_bin = ninja_syntax.escape(scons_escape(sys.executable)) + self.variables = { + "COPY": "cmd.exe /c 1>NUL copy" if sys.platform == "win32" else "cp", + 'PORT': scons_daemon_port, + 'NINJA_DIR_PATH': env.get('NINJA_DIR').abspath, + 'PYTHON_BIN': sys.executable, + 'NINJA_TOOL_DIR': pathlib.Path(__file__).parent, + 'NINJA_SCONS_DAEMON_KEEP_ALIVE': str(env.get('NINJA_SCONS_DAEMON_KEEP_ALIVE')), + "SCONS_INVOCATION": '{} {} --disable-ninja __NINJA_NO=1 $out'.format( + python_bin, + " ".join( + [ninja_syntax.escape(scons_escape(arg)) for arg in sys.argv if arg not in COMMAND_LINE_TARGETS] + ), + ), + "SCONS_INVOCATION_W_TARGETS": "{} {} NINJA_DISABLE_AUTO_RUN=1".format( + python_bin, " ".join([ + ninja_syntax.escape(scons_escape(arg)) + for arg in sys.argv + if arg != 'NINJA_DISABLE_AUTO_RUN=1']) + ), + # This must be set to a global default per: + # https://ninja-build.org/manual.html#_deps + # English Visual Studio will have the default below, + # otherwise the user can define the variable in the first environment + # that initialized ninja tool + "msvc_deps_prefix": env.get("NINJA_MSVC_DEPS_PREFIX", "Note: including file:") + } + + self.rules = { + "CMD": { + "command": "cmd /c $env$cmd $in $out" if sys.platform == "win32" else "$env$cmd $in $out", + "description": "Building $out", + "pool": "local_pool", + }, + "GENERATED_CMD": { + "command": "cmd /c $env$cmd" if sys.platform == "win32" else "$env$cmd", + "description": "Building $out", + "pool": "local_pool", + }, + # We add the deps processing variables to this below. We + # don't pipe these through cmd.exe on Windows because we + # use this to generate a compile_commands.json database + # which can't use the shell command as it's compile + # command. + "CC_RSP": { + "command": "$env$CC @$out.rsp", + "description": "Compiling $out", + "rspfile": "$out.rsp", + "rspfile_content": "$rspc", + }, + "CXX_RSP": { + "command": "$env$CXX @$out.rsp", + "description": "Compiling $out", + "rspfile": "$out.rsp", + "rspfile_content": "$rspc", + }, + "LINK_RSP": { + "command": "$env$LINK @$out.rsp", + "description": "Linking $out", + "rspfile": "$out.rsp", + "rspfile_content": "$rspc", + "pool": "local_pool", + }, + # Ninja does not automatically delete the archive before + # invoking ar. The ar utility will append to an existing archive, which + # can cause duplicate symbols if the symbols moved between object files. + # Native SCons will perform this operation so we need to force ninja + # to do the same. See related for more info: + # https://jira.mongodb.org/browse/SERVER-49457 + "AR_RSP": { + "command": "{}$env$AR @$out.rsp".format( + '' if sys.platform == "win32" else "rm -f $out && " + ), + "description": "Archiving $out", + "rspfile": "$out.rsp", + "rspfile_content": "$rspc", + "pool": "local_pool", + }, + "CC": { + "command": "$env$CC $rspc", + "description": "Compiling $out", + }, + "CXX": { + "command": "$env$CXX $rspc", + "description": "Compiling $out", + }, + "LINK": { + "command": "$env$LINK $rspc", + "description": "Linking $out", + "pool": "local_pool", + }, + "AR": { + "command": "{}$env$AR $rspc".format( + '' if sys.platform == "win32" else "rm -f $out && " + ), + "description": "Archiving $out", + "pool": "local_pool", + }, + "SYMLINK": { + "command": ( + "cmd /c mklink $out $in" + if sys.platform == "win32" + else "ln -s $in $out" + ), + "description": "Symlink $in -> $out", + }, + "INSTALL": { + "command": "$COPY $in $out", + "description": "Install $out", + "pool": "install_pool", + # On Windows cmd.exe /c copy does not always correctly + # update the timestamp on the output file. This leads + # to a stuck constant timestamp in the Ninja database + # and needless rebuilds. + # + # Adding restat here ensures that Ninja always checks + # the copy updated the timestamp and that Ninja has + # the correct information. + "restat": 1, + }, + "TEMPLATE": { + "command": "$PYTHON_BIN $NINJA_TOOL_DIR/ninja_daemon_build.py $PORT $NINJA_DIR_PATH $out", + "description": "Defer to SCons to build $out", + "pool": "local_pool", + "restat": 1 + }, + "EXIT_SCONS_DAEMON": { + "command": "$PYTHON_BIN $NINJA_TOOL_DIR/ninja_daemon_build.py $PORT $NINJA_DIR_PATH --exit", + "description": "Shutting down ninja scons daemon server", + "pool": "local_pool", + "restat": 1 + }, + "SCONS": { + "command": "$SCONS_INVOCATION $out", + "description": "$SCONS_INVOCATION $out", + "pool": "scons_pool", + # restat + # if present, causes Ninja to re-stat the command's outputs + # after execution of the command. Each output whose + # modification time the command did not change will be + # treated as though it had never needed to be built. This + # may cause the output's reverse dependencies to be removed + # from the list of pending build actions. + # + # We use restat any time we execute SCons because + # SCons calls in Ninja typically create multiple + # targets. But since SCons is doing it's own up to + # date-ness checks it may only update say one of + # them. Restat will find out which of the multiple + # build targets did actually change then only rebuild + # those targets which depend specifically on that + # output. + "restat": 1, + }, + + "SCONS_DAEMON": { + "command": "$PYTHON_BIN $NINJA_TOOL_DIR/ninja_run_daemon.py $PORT $NINJA_DIR_PATH $NINJA_SCONS_DAEMON_KEEP_ALIVE $SCONS_INVOCATION", + "description": "Starting scons daemon...", + "pool": "local_pool", + # restat + # if present, causes Ninja to re-stat the command's outputs + # after execution of the command. Each output whose + # modification time the command did not change will be + # treated as though it had never needed to be built. This + # may cause the output's reverse dependencies to be removed + # from the list of pending build actions. + # + # We use restat any time we execute SCons because + # SCons calls in Ninja typically create multiple + # targets. But since SCons is doing it's own up to + # date-ness checks it may only update say one of + # them. Restat will find out which of the multiple + # build targets did actually change then only rebuild + # those targets which depend specifically on that + # output. + "restat": 1, + }, + "REGENERATE": { + "command": "$SCONS_INVOCATION_W_TARGETS", + "description": "Regenerating $self", + "generator": 1, + "pool": "console", + "restat": 1, + }, + } + + if env['PLATFORM'] == 'darwin' and env.get('AR', "") == 'ar': + self.rules["AR"] = { + "command": "rm -f $out && $env$AR $rspc", + "description": "Archiving $out", + "pool": "local_pool", + } + self.pools = {"scons_pool": 1} + + def add_build(self, node): + if not node.has_builder(): + return False + + if isinstance(node, SCons.Node.Python.Value): + return False + + if isinstance(node, SCons.Node.Alias.Alias): + build = alias_to_ninja_build(node) + else: + build = self.translator.action_to_ninja_build(node) + + # Some things are unbuild-able or need not be built in Ninja + if build is None: + return False + + node_string = str(node) + if node_string in self.builds: + # TODO: If we work out a way to handle Alias() with same name as file this logic can be removed + # This works around adding Alias with the same name as a Node. + # It's not great way to workaround because it force renames the alias, + # but the alternative is broken ninja support. + warn_msg = f"Alias {node_string} name the same as File node, ninja does not support this. Renaming Alias {node_string} to {node_string}_alias." + if isinstance(node, SCons.Node.Alias.Alias): + for i, output in enumerate(build["outputs"]): + if output == node_string: + build["outputs"][i] += "_alias" + node_string += "_alias" + print(warn_msg) + elif self.builds[node_string]["rule"] == "phony": + for i, output in enumerate(self.builds[node_string]["outputs"]): + if output == node_string: + self.builds[node_string]["outputs"][i] += "_alias" + tmp_build = self.builds[node_string].copy() + del self.builds[node_string] + node_string += "_alias" + self.builds[node_string] = tmp_build + print(warn_msg) + else: + raise InternalError("Node {} added to ninja build state more than once".format(node_string)) + self.builds[node_string] = build + return True + + # TODO: rely on SCons to tell us what is generated source + # or some form of user scanner maybe (Github Issue #3624) + def is_generated_source(self, output): + """Check if output ends with a known generated suffix.""" + _, suffix = splitext(output) + return suffix in self.generated_suffixes + + def has_generated_sources(self, output): + """ + Determine if output indicates this is a generated header file. + """ + for generated in output: + if self.is_generated_source(generated): + return True + return False + + # pylint: disable=too-many-branches,too-many-locals + def generate(self): + """ + Generate the build.ninja. + + This should only be called once for the lifetime of this object. + """ + if self.__generated: + return + + num_jobs = self.env.get('NINJA_MAX_JOBS', self.env.GetOption("num_jobs")) + self.pools.update({ + "local_pool": num_jobs, + "install_pool": num_jobs / 2, + }) + + deps_format = self.env.get("NINJA_DEPFILE_PARSE_FORMAT", 'msvc' if self.env['PLATFORM'] == 'win32' else 'gcc') + for rule in ["CC", "CXX"]: + if deps_format == "msvc": + self.rules[rule]["deps"] = "msvc" + elif deps_format == "gcc" or deps_format == "clang": + self.rules[rule]["deps"] = "gcc" + self.rules[rule]["depfile"] = "$out.d" + else: + raise Exception(f"Unknown 'NINJA_DEPFILE_PARSE_FORMAT'={self.env['NINJA_DEPFILE_PARSE_FORMAT']}, use 'mvsc', 'gcc', or 'clang'.") + + for key, rule in self.env.get(NINJA_RULES, {}).items(): + # make a non response file rule for users custom response file rules. + if rule.get('rspfile') is not None: + self.rules.update({key + '_RSP': rule}) + non_rsp_rule = rule.copy() + del non_rsp_rule['rspfile'] + del non_rsp_rule['rspfile_content'] + self.rules.update({key: non_rsp_rule}) + else: + self.rules.update({key: rule}) + + self.pools.update(self.env.get(NINJA_POOLS, {})) + + content = io.StringIO() + ninja = self.writer_class(content, width=100) + + ninja.comment("Generated by scons. DO NOT EDIT.") + + ninja.variable("builddir", get_path(self.env.Dir(self.env['NINJA_DIR']).path)) + + for pool_name, size in sorted(self.pools.items()): + ninja.pool(pool_name, min(self.env.get('NINJA_MAX_JOBS', size), size)) + + for var, val in sorted(self.variables.items()): + ninja.variable(var, val) + + for rule, kwargs in sorted(self.rules.items()): + if self.env.get('NINJA_MAX_JOBS') is not None and 'pool' not in kwargs: + kwargs['pool'] = 'local_pool' + ninja.rule(rule, **kwargs) + + # If the user supplied an alias to determine generated sources, use that, otherwise + # determine what the generated sources are dynamically. + generated_sources_alias = self.env.get('NINJA_GENERATED_SOURCE_ALIAS_NAME') + generated_sources_build = None + + if generated_sources_alias: + generated_sources_build = self.builds.get(generated_sources_alias) + if generated_sources_build is None or generated_sources_build["rule"] != 'phony': + raise Exception( + "ERROR: 'NINJA_GENERATED_SOURCE_ALIAS_NAME' set, but no matching Alias object found." + ) + + if generated_sources_alias and generated_sources_build: + generated_source_files = sorted( + [] if not generated_sources_build else generated_sources_build['implicit'] + ) + + def check_generated_source_deps(build): + return ( + build != generated_sources_build + and set(build["outputs"]).isdisjoint(generated_source_files) + ) + else: + generated_sources_build = None + generated_source_files = sorted({ + output + # First find builds which have header files in their outputs. + for build in self.builds.values() + if self.has_generated_sources(build["outputs"]) + for output in build["outputs"] + # Collect only the header files from the builds with them + # in their output. We do this because is_generated_source + # returns True if it finds a header in any of the outputs, + # here we need to filter so we only have the headers and + # not the other outputs. + if self.is_generated_source(output) + }) + + if generated_source_files: + generated_sources_alias = "_ninja_generated_sources" + ninja.build( + outputs=generated_sources_alias, + rule="phony", + implicit=generated_source_files + ) + + def check_generated_source_deps(build): + return ( + not build["rule"] == "INSTALL" + and set(build["outputs"]).isdisjoint(generated_source_files) + and set(build.get("implicit", [])).isdisjoint(generated_source_files) + ) + + template_builders = [] + scons_compiledb = False + + if SCons.Script._Get_Default_Targets == SCons.Script._Set_Default_Targets_Has_Not_Been_Called: + all_targets = set() + else: + all_targets = None + + for build in [self.builds[key] for key in sorted(self.builds.keys())]: + if "compile_commands.json" in build["outputs"]: + scons_compiledb = True + + # this is for the no command line targets, no SCons default case. We want this default + # to just be all real files in the build. + if all_targets is not None and build['rule'] != 'phony': + all_targets = all_targets | set(build["outputs"]) + + if build["rule"] == "TEMPLATE": + template_builders.append(build) + continue + + if "implicit" in build: + build["implicit"].sort() + + # Don't make generated sources depend on each other. We + # have to check that none of the outputs are generated + # sources and none of the direct implicit dependencies are + # generated sources or else we will create a dependency + # cycle. + if ( + generated_source_files + and check_generated_source_deps(build) + ): + # Make all non-generated source targets depend on + # _generated_sources. We use order_only for generated + # sources so that we don't rebuild the world if one + # generated source was rebuilt. We just need to make + # sure that all of these sources are generated before + # other builds. + order_only = build.get("order_only", []) + order_only.append(generated_sources_alias) + build["order_only"] = order_only + if "order_only" in build: + build["order_only"].sort() + + # When using a depfile Ninja can only have a single output + # but SCons will usually have emitted an output for every + # thing a command will create because it's caching is much + # more complex than Ninja's. This includes things like DWO + # files. Here we make sure that Ninja only ever sees one + # target when using a depfile. It will still have a command + # that will create all of the outputs but most targets don't + # depend directly on DWO files and so this assumption is safe + # to make. + rule = self.rules.get(build["rule"]) + + # Some rules like 'phony' and other builtins we don't have + # listed in self.rules so verify that we got a result + # before trying to check if it has a deps key. + # + # Anything using deps or rspfile in Ninja can only have a single + # output, but we may have a build which actually produces + # multiple outputs which other targets can depend on. Here we + # slice up the outputs so we have a single output which we will + # use for the "real" builder and multiple phony targets that + # match the file names of the remaining outputs. This way any + # build can depend on any output from any build. + # + # We assume that the first listed output is the 'key' + # output and is stably presented to us by SCons. For + # instance if -gsplit-dwarf is in play and we are + # producing foo.o and foo.dwo, we expect that outputs[0] + # from SCons will be the foo.o file and not the dwo + # file. If instead we just sorted the whole outputs array, + # we would find that the dwo file becomes the + # first_output, and this breaks, for instance, header + # dependency scanning. + if rule is not None and (rule.get("deps") or rule.get("rspfile")): + first_output, remaining_outputs = ( + build["outputs"][0], + build["outputs"][1:], + ) + + if remaining_outputs: + ninja_sorted_build( + ninja, + outputs=remaining_outputs, rule="phony", implicit=first_output, + ) + + build["outputs"] = first_output + + # Optionally a rule can specify a depfile, and SCons can generate implicit + # dependencies into the depfile. This allows for dependencies to come and go + # without invalidating the ninja file. The depfile was created in ninja specifically + # for dealing with header files appearing and disappearing across rebuilds, but it can + # be repurposed for anything, as long as you have a way to regenerate the depfile. + # More specific info can be found here: https://ninja-build.org/manual.html#_depfile + if rule is not None and rule.get('depfile') and build.get('deps_files'): + path = build['outputs'] if SCons.Util.is_List(build['outputs']) else [build['outputs']] + generate_depfile(self.env, path[0], build.pop('deps_files', [])) + + if "inputs" in build: + build["inputs"].sort() + + ninja_sorted_build( + ninja, + **build + ) + + scons_daemon_dirty = str(pathlib.Path(get_path(self.env.get("NINJA_DIR"))) / "scons_daemon_dirty") + for template_builder in template_builders: + template_builder["implicit"] += [scons_daemon_dirty] + ninja_sorted_build( + ninja, + **template_builder + ) + + # We have to glob the SCons files here to teach the ninja file + # how to regenerate itself. We'll never see ourselves in the + # DAG walk so we can't rely on action_to_ninja_build to + # generate this rule even though SCons should know we're + # dependent on SCons files. + ninja_file_path = self.env.File(self.ninja_file).path + regenerate_deps = to_escaped_list(self.env, self.env['NINJA_REGENERATE_DEPS']) + + ninja_sorted_build( + ninja, + outputs=ninja_file_path, + rule="REGENERATE", + implicit=regenerate_deps, + variables={ + "self": ninja_file_path + } + ) + + ninja_sorted_build( + ninja, + outputs=regenerate_deps, + rule="phony", + variables={ + "self": ninja_file_path, + } + ) + + if not scons_compiledb: + # If we ever change the name/s of the rules that include + # compile commands (i.e. something like CC) we will need to + # update this build to reflect that complete list. + ninja_sorted_build( + ninja, + outputs="compile_commands.json", + rule="CMD", + pool="console", + implicit=[str(self.ninja_file)], + variables={ + "cmd": "{} -f {} -t compdb {}CC CXX > compile_commands.json".format( + # NINJA_COMPDB_EXPAND - should only be true for ninja + # This was added to ninja's compdb tool in version 1.9.0 (merged April 2018) + # https://github.com/ninja-build/ninja/pull/1223 + # TODO: add check in generate to check version and enable this by default if it's available. + self.ninja_bin_path, str(self.ninja_file), + '-x ' if self.env.get('NINJA_COMPDB_EXPAND', True) else '' + ) + }, + ) + + ninja_sorted_build( + ninja, + outputs="compiledb", rule="phony", implicit=["compile_commands.json"], + ) + + ninja_sorted_build( + ninja, + outputs=["run_ninja_scons_daemon_phony", scons_daemon_dirty], + rule="SCONS_DAEMON", + ) + + ninja.build( + "shutdown_ninja_scons_daemon_phony", + rule="EXIT_SCONS_DAEMON", + ) + + + if all_targets is None: + # Look in SCons's list of DEFAULT_TARGETS, find the ones that + # we generated a ninja build rule for. + all_targets = [str(node) for node in NINJA_DEFAULT_TARGETS] + else: + all_targets = list(all_targets) + + if len(all_targets) == 0: + all_targets = ["phony_default"] + ninja_sorted_build( + ninja, + outputs=all_targets, + rule="phony", + ) + + ninja.default([self.ninja_syntax.escape_path(path) for path in sorted(all_targets)]) + + with NamedTemporaryFile(delete=False, mode='w') as temp_ninja_file: + temp_ninja_file.write(content.getvalue()) + + if self.env.GetOption('skip_ninja_regen') and os.path.exists(ninja_file_path) and filecmp.cmp(temp_ninja_file.name, ninja_file_path): + os.unlink(temp_ninja_file.name) + else: + + daemon_dir = pathlib.Path(tempfile.gettempdir()) / ('scons_daemon_' + str(hashlib.md5(str(get_path(self.env["NINJA_DIR"])).encode()).hexdigest())) + pidfile = None + if os.path.exists(scons_daemon_dirty): + pidfile = scons_daemon_dirty + elif os.path.exists(daemon_dir / 'pidfile'): + pidfile = daemon_dir / 'pidfile' + + if pidfile: + with open(pidfile) as f: + pid = int(f.readline()) + try: + os.kill(pid, signal.SIGINT) + except OSError: + pass + + # wait for the server process to fully killed + # TODO: update wait_for_process_to_die() to handle timeout and then catch exception + # here and do something smart. + wait_for_process_to_die(pid) + + if os.path.exists(scons_daemon_dirty): + os.unlink(scons_daemon_dirty) + + shutil.move(temp_ninja_file.name, ninja_file_path) + + self.__generated = True + + +class SConsToNinjaTranslator: + """Translates SCons Actions into Ninja build objects.""" + + def __init__(self, env): + self.env = env + self.func_handlers = { + # Skip conftest builders + "_createSource": ninja_noop, + # SCons has a custom FunctionAction that just makes sure the + # target isn't static. We let the commands that ninja runs do + # this check for us. + "SharedFlagChecker": ninja_noop, + # The install builder is implemented as a function action. + # TODO: use command action #3573 + "installFunc": _install_action_function, + "MkdirFunc": _mkdir_action_function, + "Mkdir": _mkdir_action_function, + "LibSymlinksActionFunction": _lib_symlink_action_function, + "Copy": _copy_action_function + } + + self.loaded_custom = False + + # pylint: disable=too-many-return-statements + def action_to_ninja_build(self, node, action=None): + """Generate build arguments dictionary for node.""" + + if not self.loaded_custom: + self.func_handlers.update(self.env[NINJA_CUSTOM_HANDLERS]) + self.loaded_custom = True + + if node.builder is None: + return None + + if action is None: + action = node.builder.action + + if node.env and node.env.get("NINJA_SKIP"): + return None + + build = {} + env = node.env if node.env else self.env + + # Ideally this should never happen, and we do try to filter + # Ninja builders out of being sources of ninja builders but I + # can't fix every DAG problem so we just skip ninja_builders + # if we find one + if SCons.Tool.ninja.NINJA_STATE.ninja_file == str(node): + build = None + elif isinstance(action, SCons.Action.FunctionAction): + build = self.handle_func_action(node, action) + elif isinstance(action, SCons.Action.LazyAction): + # pylint: disable=protected-access + action = action._generate_cache(env) + build = self.action_to_ninja_build(node, action=action) + elif isinstance(action, SCons.Action.ListAction): + build = self.handle_list_action(node, action) + elif isinstance(action, COMMAND_TYPES): + build = get_command(env, node, action) + else: + return { + "rule": "TEMPLATE", + "order_only": get_order_only(node), + "outputs": get_outputs(node), + "inputs": get_inputs(node), + "implicit": get_dependencies(node, skip_sources=True), + } + + if build is not None: + build["order_only"] = get_order_only(node) + + # TODO: WPD Is this testing the filename to verify it's a configure context generated file? + if not node.is_conftest(): + node_callback = node.check_attributes("ninja_build_callback") + if callable(node_callback): + node_callback(env, node, build) + + return build + + def handle_func_action(self, node, action): + """Determine how to handle the function action.""" + name = action.function_name() + # This is the name given by the Subst/Textfile builders. So return the + # node to indicate that SCons is required. We skip sources here because + # dependencies don't really matter when we're going to shove these to + # the bottom of ninja's DAG anyway and Textfile builders can have text + # content as their source which doesn't work as an implicit dep in + # ninja. + if name == 'ninja_builder': + return None + + handler = self.func_handlers.get(name, None) + if handler is not None: + return handler(node.env if node.env else self.env, node) + elif name == "ActionCaller": + action_to_call = str(action).split('(')[0].strip() + handler = self.func_handlers.get(action_to_call, None) + if handler is not None: + return handler(node.env if node.env else self.env, node) + + SCons.Warnings.SConsWarning( + "Found unhandled function action {}, " + " generating scons command to build\n" + "Note: this is less efficient than Ninja," + " you can write your own ninja build generator for" + " this function using NinjaRegisterFunctionHandler".format(name) + ) + + return { + "rule": "TEMPLATE", + "order_only": get_order_only(node), + "outputs": get_outputs(node), + "inputs": get_inputs(node), + "implicit": get_dependencies(node, skip_sources=True), + } + + # pylint: disable=too-many-branches + def handle_list_action(self, node, action): + """TODO write this comment""" + results = [ + self.action_to_ninja_build(node, action=act) + for act in action.list + if act is not None + ] + results = [ + result for result in results if result is not None and result["outputs"] + ] + if not results: + return None + + # No need to process the results if we only got a single result + if len(results) == 1: + return results[0] + + all_outputs = list({output for build in results for output in build["outputs"]}) + dependencies = list({dep for build in results for dep in build.get("implicit", [])}) + + if results[0]["rule"] == "CMD" or results[0]["rule"] == "GENERATED_CMD": + cmdline = "" + for cmd in results: + + # Occasionally a command line will expand to a + # whitespace only string (i.e. ' '). Which is not a + # valid command but does not trigger the empty command + # condition if not cmdstr. So here we strip preceding + # and proceeding whitespace to make strings like the + # above become empty strings and so will be skipped. + if not cmd.get("variables") or not cmd["variables"].get("cmd"): + continue + + cmdstr = cmd["variables"]["cmd"].strip() + if not cmdstr: + continue + + # Skip duplicate commands + if cmdstr in cmdline: + continue + + if cmdline: + cmdline += " && " + + cmdline += cmdstr + + # Remove all preceding and proceeding whitespace + cmdline = cmdline.strip() + env = node.env if node.env else self.env + executor = node.get_executor() + if executor is not None: + targets = executor.get_all_targets() + else: + if hasattr(node, "target_peers"): + targets = node.target_peers + else: + targets = [node] + + # Make sure we didn't generate an empty cmdline + if cmdline: + ninja_build = { + "outputs": all_outputs, + "rule": get_rule(node, "GENERATED_CMD"), + "variables": { + "cmd": cmdline, + "env": get_command_env(env, targets, node.sources), + }, + "implicit": dependencies, + } + + if node.env and node.env.get("NINJA_POOL", None) is not None: + ninja_build["pool"] = node.env["pool"] + + return ninja_build + + elif results[0]["rule"] == "phony": + return { + "outputs": all_outputs, + "rule": "phony", + "implicit": dependencies, + } + + elif results[0]["rule"] == "INSTALL": + return { + "outputs": all_outputs, + "rule": get_rule(node, "INSTALL"), + "inputs": get_inputs(node), + "implicit": dependencies, + } + + return { + "rule": "TEMPLATE", + "order_only": get_order_only(node), + "outputs": get_outputs(node), + "inputs": get_inputs(node), + "implicit": get_dependencies(node, skip_sources=True), + } diff --git a/scons/scons-local-4.5.1/SCons/Tool/ninja/Overrides.py b/scons/scons-local-4.5.1/SCons/Tool/ninja/Overrides.py new file mode 100644 index 000000000..e98ec4036 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ninja/Overrides.py @@ -0,0 +1,96 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. +""" +This module is to hold logic which overrides default SCons behaviors to enable +ninja file generation +""" +import SCons + + +def ninja_hack_linkcom(env): + # TODO: change LINKCOM and SHLINKCOM to handle embedding manifest exe checks + # without relying on the SCons hacks that SCons uses by default. + if env["PLATFORM"] == "win32": + from SCons.Tool.mslink import compositeLinkAction + + if env.get("LINKCOM", None) == compositeLinkAction: + env[ + "LINKCOM" + ] = '${TEMPFILE("$LINK $LINKFLAGS /OUT:$TARGET.windows $_LIBDIRFLAGS $_LIBFLAGS $_PDB $SOURCES.windows", "$LINKCOMSTR")}' + env[ + "SHLINKCOM" + ] = '${TEMPFILE("$SHLINK $SHLINKFLAGS $_SHLINK_TARGETS $_LIBDIRFLAGS $_LIBFLAGS $_PDB $_SHLINK_SOURCES", "$SHLINKCOMSTR")}' + + +def ninja_hack_arcom(env): + """ + Force ARCOM so use 's' flag on ar instead of separately running ranlib + """ + if env["PLATFORM"] != "win32" and env.get("RANLIBCOM"): + # There is no way to translate the ranlib list action into + # Ninja so add the s flag and disable ranlib. + # + # This is equivalent to Meson. + # https://github.com/mesonbuild/meson/blob/master/mesonbuild/linkers.py#L143 + old_arflags = str(env["ARFLAGS"]) + if "s" not in old_arflags: + old_arflags += "s" + + env["ARFLAGS"] = SCons.Util.CLVar([old_arflags]) + + # Disable running ranlib, since we added 's' above + env["RANLIBCOM"] = "" + + +class NinjaNoResponseFiles(SCons.Platform.TempFileMunge): + """Overwrite the __call__ method of SCons' TempFileMunge to not delete.""" + + def __call__(self, target, source, env, for_signature): + return self.cmd + + def _print_cmd_str(*_args, **_kwargs): + """Disable this method""" + pass + + +def ninja_always_serial(self, num, taskmaster): + """Replacement for SCons.Job.Jobs constructor which always uses the Serial Job class.""" + # We still set self.num_jobs to num even though it's a lie. The + # only consumer of this attribute is the Parallel Job class AND + # the Main.py function which instantiates a Jobs class. It checks + # if Jobs.num_jobs is equal to options.num_jobs, so if the user + # provides -j12 but we set self.num_jobs = 1 they get an incorrect + # warning about this version of Python not supporting parallel + # builds. So here we lie so the Main.py will not give a false + # warning to users. + self.num_jobs = num + self.job = SCons.Taskmaster.Job.Serial(taskmaster) + + +# pylint: disable=too-few-public-methods +class AlwaysExecAction(SCons.Action.FunctionAction): + """Override FunctionAction.__call__ to always execute.""" + + def __call__(self, *args, **kwargs): + kwargs["execute"] = 1 + return super().__call__(*args, **kwargs) diff --git a/scons/scons-local-4.5.1/SCons/Tool/ninja/Rules.py b/scons/scons-local-4.5.1/SCons/Tool/ninja/Rules.py new file mode 100644 index 000000000..e7d19e32c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ninja/Rules.py @@ -0,0 +1,81 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +from .Utils import get_outputs, get_rule, get_inputs, get_dependencies + + +def _install_action_function(_env, node): + """Install files using the install or copy commands""" + return { + "outputs": get_outputs(node), + "rule": get_rule(node, "INSTALL"), + "inputs": get_inputs(node), + "implicit": get_dependencies(node), + } + + +def _mkdir_action_function(env, node): + return { + "outputs": get_outputs(node), + "rule": get_rule(node, "GENERATED_CMD"), + # implicit explicitly omitted, we translate these so they can be + # used by anything that depends on these but commonly this is + # hit with a node that will depend on all of the fake + # srcnode's that SCons will never give us a rule for leading + # to an invalid ninja file. + "variables": { + # On Windows mkdir "-p" is always on + "cmd": "mkdir {args}".format( + args = ' '.join(get_outputs(node)) + " & exit /b 0" if env["PLATFORM"] == "win32" else "-p " + ' '.join(get_outputs(node)), + ), + }, + } + + +def _copy_action_function(env, node): + return { + "outputs": get_outputs(node), + "inputs": get_inputs(node), + "rule": get_rule(node, "CMD"), + "variables": { + "cmd": "$COPY", + }, + } + + +def _lib_symlink_action_function(_env, node): + """Create shared object symlinks if any need to be created""" + symlinks = node.check_attributes("shliblinks") + + if not symlinks or symlinks is None: + return None + + outputs = [link.get_dir().rel_path(linktgt) for link, linktgt in symlinks] + inputs = [link.get_path() for link, _ in symlinks] + + return { + "outputs": outputs, + "inputs": inputs, + "rule": get_rule(node, "SYMLINK"), + "implicit": get_dependencies(node), + } diff --git a/scons/scons-local-4.5.1/SCons/Tool/ninja/Utils.py b/scons/scons-local-4.5.1/SCons/Tool/ninja/Utils.py new file mode 100644 index 000000000..7269fb2e5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ninja/Utils.py @@ -0,0 +1,444 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. +import os +import shutil +from os.path import join as joinpath +from collections import OrderedDict + +import SCons +from SCons.Action import get_default_ENV, _string_from_cmd_list +from SCons.Script import AddOption +from SCons.Util import is_List, flatten_sequence + +class NinjaExperimentalWarning(SCons.Warnings.WarningOnByDefault): + pass + + +def ninja_add_command_line_options(): + """ + Add additional command line arguments to SCons specific to the ninja tool + """ + AddOption('--disable-execute-ninja', + dest='disable_execute_ninja', + metavar='BOOL', + action="store_true", + default=False, + help='Disable automatically running ninja after scons') + + AddOption('--disable-ninja', + dest='disable_ninja', + metavar='BOOL', + action="store_true", + default=False, + help='Disable ninja generation and build with scons even if tool is loaded. '+ + 'Also used by ninja to build targets which only scons can build.') + + AddOption('--skip-ninja-regen', + dest='skip_ninja_regen', + metavar='BOOL', + action="store_true", + default=False, + help='Allow scons to skip regeneration of the ninja file and restarting of the daemon. ' + + 'Care should be taken in cases where Glob is in use or SCons generated files are used in ' + + 'command lines.') + + +def is_valid_dependent_node(node): + """ + Return True if node is not an alias or is an alias that has children + + This prevents us from making phony targets that depend on other + phony targets that will never have an associated ninja build + target. + + We also have to specify that it's an alias when doing the builder + check because some nodes (like src files) won't have builders but + are valid implicit dependencies. + """ + if isinstance(node, SCons.Node.Alias.Alias): + return node.children() + + return not node.get_env().get("NINJA_SKIP") + + +def alias_to_ninja_build(node): + """Convert an Alias node into a Ninja phony target""" + return { + "outputs": get_outputs(node), + "rule": "phony", + "implicit": [ + get_path(src_file(n)) for n in node.children() if is_valid_dependent_node(n) + ], + } + + +def check_invalid_ninja_node(node): + return not isinstance(node, (SCons.Node.FS.Base, SCons.Node.Alias.Alias)) + + +def filter_ninja_nodes(node_list): + ninja_nodes = [] + for node in node_list: + if isinstance(node, (SCons.Node.FS.Base, SCons.Node.Alias.Alias)) and not node.get_env().get('NINJA_SKIP'): + ninja_nodes.append(node) + else: + continue + return ninja_nodes + + +def get_input_nodes(node): + if node.get_executor() is not None: + inputs = node.get_executor().get_all_sources() + else: + inputs = node.sources + return inputs + + +def invalid_ninja_nodes(node, targets): + result = False + for node_list in [node.prerequisites, get_input_nodes(node), node.children(), targets]: + if node_list: + result = result or any([check_invalid_ninja_node(node) for node in node_list]) + return result + + +def get_order_only(node): + """Return a list of order only dependencies for node.""" + if node.prerequisites is None: + return [] + return [get_path(src_file(prereq)) for prereq in filter_ninja_nodes(node.prerequisites)] + + +def get_dependencies(node, skip_sources=False): + """Return a list of dependencies for node.""" + if skip_sources: + return [ + get_path(src_file(child)) + for child in filter_ninja_nodes(node.children()) + if child not in node.sources + ] + return [get_path(src_file(child)) for child in filter_ninja_nodes(node.children())] + + +def get_inputs(node): + """Collect the Ninja inputs for node.""" + return [get_path(src_file(o)) for o in filter_ninja_nodes(get_input_nodes(node))] + + +def get_outputs(node): + """Collect the Ninja outputs for node.""" + executor = node.get_executor() + if executor is not None: + outputs = executor.get_all_targets() + else: + if hasattr(node, "target_peers"): + outputs = node.target_peers + else: + outputs = [node] + + outputs = [get_path(o) for o in filter_ninja_nodes(outputs)] + + return outputs + + +def get_targets_sources(node): + executor = node.get_executor() + if executor is not None: + tlist = executor.get_all_targets() + slist = executor.get_all_sources() + else: + if hasattr(node, "target_peers"): + tlist = node.target_peers + else: + tlist = [node] + slist = node.sources + + # Retrieve the repository file for all sources + slist = [rfile(s) for s in slist] + return tlist, slist + + +def get_path(node): + """ + Return a fake path if necessary. + + As an example Aliases use this as their target name in Ninja. + """ + if hasattr(node, "get_path"): + return node.get_path() + return str(node) + + +def rfile(node): + """ + Return the repository file for node if it has one. Otherwise return node + """ + if hasattr(node, "rfile"): + return node.rfile() + return node + + +def src_file(node): + """Returns the src code file if it exists.""" + if hasattr(node, "srcnode"): + src = node.srcnode() + if src.stat() is not None: + return src + return get_path(node) + + +def get_rule(node, rule): + tlist, slist = get_targets_sources(node) + if invalid_ninja_nodes(node, tlist): + return "TEMPLATE" + else: + return rule + + +def to_escaped_list(env, lst): + """ + Ninja tool function for returning an escaped list of strings from a subst + generator. + + env_var arg can be a list or a subst generator which returns a list. + """ + + # subst_list will take in either a raw list or a subst callable which generates + # a list, and return a list of CmdStringHolders which can be converted into raw strings. + # If a raw list was passed in, then scons_list will make a list of lists from the original + # values and even subst items in the list if they are substitutable. Flatten will flatten + # the list in that case, to ensure for either input we have a list of CmdStringHolders. + deps_list = env.Flatten(env.subst_list(lst)) + + # Now that we have the deps in a list as CmdStringHolders, we can convert them into raw strings + # and make sure to escape the strings to handle spaces in paths. We also will sort the result + # keep the order of the list consistent. + return sorted([dep.escape(env.get("ESCAPE", lambda x: x)) for dep in deps_list]) + + +def generate_depfile(env, node, dependencies): + """ + Ninja tool function for writing a depfile. The depfile should include + the node path followed by all the dependent files in a makefile format. + + dependencies arg can be a list or a subst generator which returns a list. + """ + + depfile = os.path.join(get_path(env['NINJA_DIR']), str(node) + '.depfile') + + depfile_contents = str(node) + ": " + ' '.join(to_escaped_list(env, dependencies)) + + need_rewrite = False + try: + with open(depfile, 'r') as f: + need_rewrite = (f.read() != depfile_contents) + except FileNotFoundError: + need_rewrite = True + + if need_rewrite: + os.makedirs(os.path.dirname(depfile) or '.', exist_ok=True) + with open(depfile, 'w') as f: + f.write(depfile_contents) + + +def ninja_noop(*_args, **_kwargs): + """ + A general purpose no-op function. + + There are many things that happen in SCons that we don't need and + also don't return anything. We use this to disable those functions + instead of creating multiple definitions of the same thing. + """ + return None + +def ninja_recursive_sorted_dict(build): + sorted_dict = OrderedDict() + for key, val in sorted(build.items()): + if isinstance(val, dict): + sorted_dict[key] = ninja_recursive_sorted_dict(val) + else: + sorted_dict[key] = val + return sorted_dict + + +def ninja_sorted_build(ninja, **build): + sorted_dict = ninja_recursive_sorted_dict(build) + ninja.build(**sorted_dict) + + +def get_command_env(env, target, source): + """ + Return a string that sets the environment for any environment variables that + differ between the OS environment and the SCons command ENV. + + It will be compatible with the default shell of the operating system. + """ + try: + return env["NINJA_ENV_VAR_CACHE"] + except KeyError: + pass + + # Scan the ENV looking for any keys which do not exist in + # os.environ or differ from it. We assume if it's a new or + # differing key from the process environment then it's + # important to pass down to commands in the Ninja file. + ENV = SCons.Action._resolve_shell_env(env, target, source) + scons_specified_env = { + key: value + for key, value in ENV.items() + # TODO: Remove this filter, unless there's a good reason to keep. SCons's behavior shouldn't depend on shell's. + if key not in os.environ or os.environ.get(key, None) != value + } + + windows = env["PLATFORM"] == "win32" + command_env = "" + scons_specified_env = SCons.Util.sanitize_shell_env(scons_specified_env) + for key, value in scons_specified_env.items(): + if windows: + command_env += "set '{}={}' && ".format(key, value) + else: + # We address here *only* the specific case that a user might have + # an environment variable which somehow gets included and has + # spaces in the value. These are escapes that Ninja handles. This + # doesn't make builds on paths with spaces (Ninja and SCons issues) + # nor expanding response file paths with spaces (Ninja issue) work. + value = value.replace(r' ', r'$ ') + command_env += "export {}='{}';".format(key, value) + + env["NINJA_ENV_VAR_CACHE"] = command_env + return command_env + + +def get_comstr(env, action, targets, sources): + """Get the un-substituted string for action.""" + # Despite being having "list" in it's name this member is not + # actually a list. It's the pre-subst'd string of the command. We + # use it to determine if the command we're about to generate needs + # to use a custom Ninja rule. By default this redirects CC, CXX, + # AR, SHLINK, and LINK commands to their respective rules but the + # user can inject custom Ninja rules and tie them to commands by + # using their pre-subst'd string. + if hasattr(action, "process"): + return action.cmd_list + + return action.genstring(targets, sources, env) + + +def generate_command(env, node, action, targets, sources, executor=None): + # Actions like CommandAction have a method called process that is + # used by SCons to generate the cmd_line they need to run. So + # check if it's a thing like CommandAction and call it if we can. + if hasattr(action, "process"): + cmd_list, _, _ = action.process(targets, sources, env, executor=executor) + cmd = _string_from_cmd_list(cmd_list[0]) + else: + # Anything else works with genstring, this is most commonly hit by + # ListActions which essentially call process on all of their + # commands and concatenate it for us. + genstring = action.genstring(targets, sources, env) + if executor is not None: + cmd = env.subst(genstring, executor=executor) + else: + cmd = env.subst(genstring, targets, sources) + + cmd = cmd.replace("\n", " && ").strip() + if cmd.endswith("&&"): + cmd = cmd[0:-2].strip() + + # Escape dollars as necessary + return cmd.replace("$", "$$") + + +def ninja_csig(original): + """Return a dummy csig""" + + def wrapper(self): + if isinstance(self, SCons.Node.Node) and self.is_sconscript(): + return original(self) + return "dummy_ninja_csig" + + return wrapper + + +def ninja_contents(original): + """Return a dummy content without doing IO""" + + def wrapper(self): + if isinstance(self, SCons.Node.Node) and (self.is_sconscript() or self.is_conftest()): + return original(self) + return bytes("dummy_ninja_contents", encoding="utf-8") + + return wrapper + + +def ninja_stat(_self, path): + """ + Eternally memoized stat call. + + SCons is very aggressive about clearing out cached values. For our + purposes everything should only ever call stat once since we're + running in a no_exec build the file system state should not + change. For these reasons we patch SCons.Node.FS.LocalFS.stat to + use our eternal memoized dictionary. + """ + + try: + return SCons.Tool.ninja.Globals.NINJA_STAT_MEMO[path] + except KeyError: + try: + result = os.stat(path) + except os.error: + result = None + + SCons.Tool.ninja.Globals.NINJA_STAT_MEMO[path] = result + return result + + +def ninja_whereis(thing, *_args, **_kwargs): + """Replace env.WhereIs with a much faster version""" + + # Optimize for success, this gets called significantly more often + # when the value is already memoized than when it's not. + try: + return SCons.Tool.ninja.Globals.NINJA_WHEREIS_MEMO[thing] + except KeyError: + # TODO: Fix this to respect env['ENV']['PATH']... WPD + # We do not honor any env['ENV'] or env[*] variables in the + # generated ninja file. Ninja passes your raw shell environment + # down to it's subprocess so the only sane option is to do the + # same during generation. At some point, if and when we try to + # upstream this, I'm sure a sticking point will be respecting + # env['ENV'] variables and such but it's actually quite + # complicated. I have a naive version but making it always work + # with shell quoting is nigh impossible. So I've decided to + # cross that bridge when it's absolutely required. + path = shutil.which(thing) + SCons.Tool.ninja.Globals.NINJA_WHEREIS_MEMO[thing] = path + return path + + +def ninja_print_conf_log(s, target, source, env): + """Command line print only for conftest to generate a correct conf log.""" + if target and target[0].is_conftest(): + action = SCons.Action._ActionAction() + action.print_cmd_line(s, target, source, env) diff --git a/scons/scons-local-4.5.1/SCons/Tool/ninja/__init__.py b/scons/scons-local-4.5.1/SCons/Tool/ninja/__init__.py new file mode 100644 index 000000000..2622641d9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ninja/__init__.py @@ -0,0 +1,514 @@ +# MIT License +# +# Copyright 2020 MongoDB Inc. +# +# 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. +# + +"""Generate build.ninja files from SCons aliases.""" + +import importlib +import os +import traceback +import subprocess +import sys + +import SCons +import SCons.Script +import SCons.Tool.ninja.Globals +from SCons.Script import GetOption +from SCons.Util import sanitize_shell_env + +from .Globals import NINJA_RULES, NINJA_POOLS, NINJA_CUSTOM_HANDLERS, NINJA_DEFAULT_TARGETS, NINJA_CMDLINE_TARGETS +from .Methods import register_custom_handler, register_custom_rule_mapping, register_custom_rule, register_custom_pool, \ + set_build_node_callback, get_generic_shell_command, CheckNinjaCompdbExpand, get_command, \ + gen_get_response_file_command +from .Overrides import ninja_hack_linkcom, ninja_hack_arcom, NinjaNoResponseFiles, ninja_always_serial, AlwaysExecAction +from .Utils import ninja_add_command_line_options, \ + ninja_noop, ninja_print_conf_log, ninja_csig, ninja_contents, ninja_stat, ninja_whereis, NinjaExperimentalWarning + +try: + import ninja + NINJA_BINARY = ninja.__file__ +except ImportError: + NINJA_BINARY = False +else: + from .NinjaState import NinjaState + +NINJA_STATE = None + + +def ninja_builder(env, target, source): + """Generate a build.ninja for source.""" + if not isinstance(source, list): + source = [source] + if not isinstance(target, list): + target = [target] + + # We have no COMSTR equivalent so print that we're generating + # here. + print("Generating:", str(target[0])) + + generated_build_ninja = target[0].get_abspath() + try: + NINJA_STATE.generate() + except Exception: + raise SCons.Errors.BuildError( + errstr=f"ERROR: an exception occurred while generating the ninja file:\n{traceback.format_exc()}", + node=target) + + if env["PLATFORM"] == "win32": + # TODO: Is this necessary as you set env variable in the ninja build file per target? + # this is not great, its doesn't consider specific + # node environments, which means on linux the build could + # behave differently, because on linux you can set the environment + # per command in the ninja file. This is only needed if + # running ninja directly from a command line that hasn't + # had the environment setup (vcvarsall.bat) + with open('run_ninja_env.bat', 'w') as f: + for key in env['ENV']: + f.write('set {}={}\n'.format(key, env['ENV'][key])) + f.write('{} -f {} %*\n'.format(NINJA_STATE.ninja_bin_path, generated_build_ninja)) + cmd = ['run_ninja_env.bat'] + + else: + cmd = [NINJA_STATE.ninja_bin_path, '-f', generated_build_ninja] + + if str(env.get("NINJA_DISABLE_AUTO_RUN")).lower() not in ['1', 'true']: + num_jobs = env.get('NINJA_MAX_JOBS', env.GetOption("num_jobs")) + cmd += ['-j' + str(num_jobs)] + env.get('NINJA_CMD_ARGS', '').split() + NINJA_CMDLINE_TARGETS + print(f"ninja will be run with command line targets: {' '.join(NINJA_CMDLINE_TARGETS)}") + print("Executing:", str(' '.join(cmd))) + + # execute the ninja build at the end of SCons, trying to + # reproduce the output like a ninja build would + def execute_ninja(): + + if env['PLATFORM'] == 'win32': + spawn_env = os.environ + else: + spawn_env = sanitize_shell_env(env['ENV']) + + proc = subprocess.Popen(cmd, + stderr=sys.stderr, + stdout=subprocess.PIPE, + universal_newlines=True, + env=spawn_env + ) + for stdout_line in iter(proc.stdout.readline, ""): + yield stdout_line + proc.stdout.close() + return_code = proc.wait() + if return_code: + raise subprocess.CalledProcessError(return_code, 'ninja') + + erase_previous = False + for output in execute_ninja(): + output = output.strip() + if erase_previous: + sys.stdout.write('\x1b[2K') # erase previous line + sys.stdout.write("\r") + else: + sys.stdout.write(os.linesep) + sys.stdout.write(output) + sys.stdout.flush() + # this will only erase ninjas [#/#] lines + # leaving warnings and other output, seems a bit + # prone to failure with such a simple check + erase_previous = output.startswith('[') + sys.stdout.write("\n") + + +def options(opts): + """ + Add command line Variables for Ninja builder. + """ + opts.AddVariables( + ("NINJA_CMD_ARGS", "Arguments to pass to ninja"), + ) + +def exists(env): + """Enable if called.""" + + if 'ninja' not in GetOption('experimental'): + return False + + # This variable disables the tool when storing the SCons command in the + # generated ninja file to ensure that the ninja tool is not loaded when + # SCons should do actual work as a subprocess of a ninja build. The ninja + # tool is very invasive into the internals of SCons and so should never be + # enabled when SCons needs to build a target. + if env.get("__NINJA_NO", "0") == "1": + return False + + # pypi ninja module detection done at top of file during import ninja. + if NINJA_BINARY: + return NINJA_BINARY + else: + raise SCons.Warnings.SConsWarning("Failed to import ninja, attempt normal SCons build.") + + +def ninja_emitter(target, source, env): + """ fix up the source/targets """ + + ninja_file = env.File(env.subst("$NINJA_FILE_NAME")) + ninja_file.attributes.ninja_file = True + + # Someone called env.Ninja('my_targetname.ninja') + if not target and len(source) == 1: + target = source + + # Default target name is $NINJA_PREFIX.$NINJA.SUFFIX + if not target: + target = [ninja_file, ] + + # No source should have been passed. Drop it. + if source: + source = [] + + return target, source + + +def generate(env): + """Generate the NINJA builders.""" + global NINJA_STATE, NINJA_CMDLINE_TARGETS + + if 'ninja' not in GetOption('experimental'): + return + + if not SCons.Tool.ninja.Globals.ninja_builder_initialized: + SCons.Tool.ninja.Globals.ninja_builder_initialized = True + + ninja_add_command_line_options() + + if not NINJA_BINARY: + raise SCons.Warnings.SConsWarning("Failed to import ninja, attempt normal SCons build.") + + env["NINJA_DISABLE_AUTO_RUN"] = env.get("NINJA_DISABLE_AUTO_RUN", GetOption('disable_execute_ninja')) + env["NINJA_FILE_NAME"] = env.get("NINJA_FILE_NAME", "build.ninja") + + # Add the Ninja builder. + always_exec_ninja_action = AlwaysExecAction(ninja_builder, {}) + ninja_builder_obj = SCons.Builder.Builder(action=always_exec_ninja_action, + emitter=ninja_emitter) + env.Append(BUILDERS={"Ninja": ninja_builder_obj}) + + env["NINJA_ALIAS_NAME"] = env.get("NINJA_ALIAS_NAME", "generate-ninja") + env['NINJA_DIR'] = env.Dir(env.get("NINJA_DIR", '#/.ninja')) + env["NINJA_SCONS_DAEMON_KEEP_ALIVE"] = env.get("NINJA_SCONS_DAEMON_KEEP_ALIVE", 180000) + + if GetOption("disable_ninja"): + env.SConsignFile(os.path.join(str(env['NINJA_DIR']), '.ninja.sconsign')) + + # here we allow multiple environments to construct rules and builds + # into the same ninja file + if NINJA_STATE is None: + ninja_file = env.Ninja() + env['NINJA_FILE'] = ninja_file[0] + env.AlwaysBuild(ninja_file) + + # We need to force SCons to only build the ninja target when ninja tool is loaded. + # The ninja tool is going to 'rip the guts out' of scons and make it basically unable + # to do anything in terms of building, so any targets besides the ninja target will + # end up doing nothing besides causing confusion. We save the targets however, so that + # SCons and invoke ninja to build them in lieu of the user. + NINJA_CMDLINE_TARGETS = SCons.Script.BUILD_TARGETS + SCons.Script.BUILD_TARGETS = SCons.Script.TargetList(env.Alias("$NINJA_ALIAS_NAME", ninja_file)) + else: + if str(NINJA_STATE.ninja_file) != env["NINJA_FILE_NAME"]: + SCons.Warnings.SConsWarning("Generating multiple ninja files not supported, set ninja file name before tool initialization.") + ninja_file = [NINJA_STATE.ninja_file] + + + def ninja_generate_deps(env): + """Return a list of SConscripts + TODO: Should we also include files loaded from site_scons/*** + or even all loaded modules? https://stackoverflow.com/questions/4858100/how-to-list-imported-modules + TODO: Do we want this to be Nodes? + """ + return sorted([str(s) for s in SCons.Node.SConscriptNodes]) + + env['_NINJA_REGENERATE_DEPS_FUNC'] = ninja_generate_deps + + env['NINJA_REGENERATE_DEPS'] = env.get('NINJA_REGENERATE_DEPS', '${_NINJA_REGENERATE_DEPS_FUNC(__env__)}') + + # This adds the required flags such that the generated compile + # commands will create depfiles as appropriate in the Ninja file. + if 'CCDEPFLAGS' not in env: + # Issue some warning here + pass + else: + env.Append(CCFLAGS='$CCDEPFLAGS') + + env.AddMethod(CheckNinjaCompdbExpand, "CheckNinjaCompdbExpand") + + # Provide a way for custom rule authors to easily access command + # generation. + env.AddMethod(get_generic_shell_command, "NinjaGetGenericShellCommand") + env.AddMethod(get_command, "NinjaGetCommand") + env.AddMethod(gen_get_response_file_command, "NinjaGenResponseFileProvider") + env.AddMethod(set_build_node_callback, "NinjaSetBuildNodeCallback") + + # Provides a way for users to handle custom FunctionActions they + # want to translate to Ninja. + env[NINJA_CUSTOM_HANDLERS] = {} + env.AddMethod(register_custom_handler, "NinjaRegisterFunctionHandler") + + # Provides a mechanism for inject custom Ninja rules which can + # then be mapped using NinjaRuleMapping. + env[NINJA_RULES] = {} + env.AddMethod(register_custom_rule, "NinjaRule") + + # Provides a mechanism for inject custom Ninja pools which can + # be used by providing the NINJA_POOL="name" as an + # OverrideEnvironment variable in a builder call. + env[NINJA_POOLS] = {} + env.AddMethod(register_custom_pool, "NinjaPool") + + # Add the ability to register custom NinjaRuleMappings for Command + # builders. We don't store this dictionary in the env to prevent + # accidental deletion of the CC/XXCOM mappings. You can still + # overwrite them if you really want to but you have to explicit + # about it this way. The reason is that if they were accidentally + # deleted you would get a very subtly incorrect Ninja file and + # might not catch it. + env.AddMethod(register_custom_rule_mapping, "NinjaRuleMapping") + + # on windows we need to change the link action + ninja_hack_linkcom(env) + + # Normally in SCons actions for the Program and *Library builders + # will return "${*COM}" as their pre-subst'd command line. However + # if a user in a SConscript overwrites those values via key access + # like env["LINKCOM"] = "$( $ICERUN $)" + env["LINKCOM"] then + # those actions no longer return the "bracketted" string and + # instead return something that looks more expanded. So to + # continue working even if a user has done this we map both the + # "bracketted" and semi-expanded versions. + def robust_rule_mapping(var, rule, tool): + provider = gen_get_response_file_command(env, rule, tool) + env.NinjaRuleMapping("${" + var + "}", provider) + + # some of these construction vars could be generators, e.g. + # CommandGeneratorAction, so if the var is not a string, we + # can't parse the generated string. + if isinstance(env.get(var), str): + env.NinjaRuleMapping(env.get(var, None), provider) + + robust_rule_mapping("CCCOM", "CC", "$CC") + robust_rule_mapping("SHCCCOM", "CC", "$CC") + robust_rule_mapping("CXXCOM", "CXX", "$CXX") + robust_rule_mapping("SHCXXCOM", "CXX", "$CXX") + robust_rule_mapping("LINKCOM", "LINK", "$LINK") + robust_rule_mapping("SHLINKCOM", "LINK", "$SHLINK") + robust_rule_mapping("ARCOM", "AR", "$AR") + + # Make SCons node walk faster by preventing unnecessary work + env.Decider("timestamp-match") + + # Used to determine if a build generates a source file. Ninja + # requires that all generated sources are added as order_only + # dependencies to any builds that *might* use them. + # TODO: switch to using SCons to help determine this (Github Issue #3624) + env["NINJA_GENERATED_SOURCE_SUFFIXES"] = env.get('NINJA_GENERATED_SOURCE_SUFFIXES', [".h", ".hpp"]) + + # Force ARCOM so use 's' flag on ar instead of separately running ranlib + ninja_hack_arcom(env) + + if GetOption('disable_ninja'): + return env + + print("Initializing ninja tool... this feature is experimental. SCons internals and all environments will be affected.") + print(f"SCons running in ninja mode. {env['NINJA_FILE']} will be generated.") + # This is the point of no return, anything after this comment + # makes changes to SCons that are irreversible and incompatible + # with a normal SCons build. We return early if __NINJA_NO=1 has + # been given on the command line (i.e. by us in the generated + # ninja file) here to prevent these modifications from happening + # when we want SCons to do work. Everything before this was + # necessary to setup the builder and other functions so that the + # tool can be unconditionally used in the users's SCons files. + + if not exists(env): + return + + # Set a known variable that other tools can query so they can + # behave correctly during ninja generation. + env["GENERATING_NINJA"] = True + + # These methods are no-op'd because they do not work during ninja + # generation, expected to do no work, or simply fail. All of which + # are slow in SCons. So we overwrite them with no logic. + SCons.Node.FS.File.make_ready = ninja_noop + SCons.Node.FS.File.prepare = ninja_noop + SCons.Node.FS.File.push_to_cache = ninja_noop + SCons.Executor.Executor.prepare = ninja_noop + SCons.Taskmaster.Task.prepare = ninja_noop + SCons.Node.FS.File.built = ninja_noop + SCons.Node.Node.visited = ninja_noop + + # We make lstat a no-op because it is only used for SONAME + # symlinks which we're not producing. + SCons.Node.FS.LocalFS.lstat = ninja_noop + + # This is a slow method that isn't memoized. We make it a noop + # since during our generation we will never use the results of + # this or change the results. + SCons.Node.FS.is_up_to_date = ninja_noop + + # We overwrite stat and WhereIs with eternally memoized + # implementations. See the docstring of ninja_stat and + # ninja_whereis for detailed explanations. + SCons.Node.FS.LocalFS.stat = ninja_stat + SCons.Util.WhereIs = ninja_whereis + + # Monkey patch get_csig and get_contents for some classes. It + # slows down the build significantly and we don't need contents or + # content signatures calculated when generating a ninja file since + # we're not doing any SCons caching or building. + SCons.Executor.Executor.get_contents = ninja_contents( + SCons.Executor.Executor.get_contents + ) + SCons.Node.Alias.Alias.get_contents = ninja_contents( + SCons.Node.Alias.Alias.get_contents + ) + SCons.Node.FS.File.get_contents = ninja_contents(SCons.Node.FS.File.get_contents) + SCons.Node.FS.File.get_csig = ninja_csig(SCons.Node.FS.File.get_csig) + SCons.Node.FS.Dir.get_csig = ninja_csig(SCons.Node.FS.Dir.get_csig) + SCons.Node.Alias.Alias.get_csig = ninja_csig(SCons.Node.Alias.Alias.get_csig) + + # Ignore CHANGED_SOURCES and CHANGED_TARGETS. We don't want those + # to have effect in a generation pass because the generator + # shouldn't generate differently depending on the current local + # state. Without this, when generating on Windows, if you already + # had a foo.obj, you would omit foo.cpp from the response file. Do the same for UNCHANGED. + SCons.Executor.Executor._get_changed_sources = SCons.Executor.Executor._get_sources + SCons.Executor.Executor._get_changed_targets = SCons.Executor.Executor._get_targets + SCons.Executor.Executor._get_unchanged_sources = SCons.Executor.Executor._get_sources + SCons.Executor.Executor._get_unchanged_targets = SCons.Executor.Executor._get_targets + + # Replace false action messages with nothing. + env["PRINT_CMD_LINE_FUNC"] = ninja_print_conf_log + + # This reduces unnecessary subst_list calls to add the compiler to + # the implicit dependencies of targets. Since we encode full paths + # in our generated commands we do not need these slow subst calls + # as executing the command will fail if the file is not found + # where we expect it. + env["IMPLICIT_COMMAND_DEPENDENCIES"] = False + + # This makes SCons more aggressively cache MD5 signatures in the + # SConsign file. + # TODO: WPD shouldn't this be set to 0? + env.SetOption("max_drift", 1) + + # The Serial job class is SIGNIFICANTLY (almost twice as) faster + # than the Parallel job class for generating Ninja files. So we + # monkey the Jobs constructor to only use the Serial Job class. + SCons.Taskmaster.Job.Jobs.__init__ = ninja_always_serial + + ninja_syntax = importlib.import_module(".ninja_syntax", package='ninja') + + if NINJA_STATE is None: + NINJA_STATE = NinjaState(env, ninja_file[0], ninja_syntax) + + # TODO: this is hacking into scons, preferable if there were a less intrusive way + # We will subvert the normal builder execute to make sure all the ninja file is dependent + # on all targets generated from any builders + SCons_Builder_BuilderBase__execute = SCons.Builder.BuilderBase._execute + + def NinjaBuilderExecute(self, env, target, source, overwarn={}, executor_kw={}): + # this ensures all environments in which a builder executes from will + # not create list actions for linking on windows + ninja_hack_linkcom(env) + targets = SCons_Builder_BuilderBase__execute(self, env, target, source, overwarn=overwarn, executor_kw=executor_kw) + + if not SCons.Util.is_List(target): + target = [target] + + for target in targets: + if target.check_attributes('ninja_file') is None and not target.is_conftest(): + env.Depends(ninja_file, targets) + return targets + SCons.Builder.BuilderBase._execute = NinjaBuilderExecute + + # Here we monkey patch the Task.execute method to not do a bunch of + # unnecessary work. If a build is a regular builder (i.e not a conftest and + # not our own Ninja builder) then we add it to the NINJA_STATE. Otherwise we + # build it like normal. This skips all of the caching work that this method + # would normally do since we aren't pulling any of these targets from the + # cache. + # + # In the future we may be able to use this to actually cache the build.ninja + # file once we have the upstream support for referencing SConscripts as File + # nodes. + def ninja_execute(self): + + target = self.targets[0] + if target.get_env().get('NINJA_SKIP'): + return + if target.check_attributes('ninja_file') is None: + NINJA_STATE.add_build(target) + else: + target.build() + + SCons.Taskmaster.Task.execute = ninja_execute + + # Make needs_execute always return true instead of determining out of + # date-ness. + SCons.Script.Main.BuildTask.needs_execute = lambda x: True + + def ninja_Set_Default_Targets(env, tlist): + """ + Record the default targets if they were ever set by the user. Ninja + will need to write the default targets and make sure not to include + the scons daemon shutdown target. + """ + SCons.Script._Get_Default_Targets = SCons.Script._Set_Default_Targets_Has_Been_Called + SCons.Script.DEFAULT_TARGETS = ninja_file + for t in tlist: + if isinstance(t, SCons.Node.Node): + NINJA_DEFAULT_TARGETS.append(t) + else: + nodes = env.arg2nodes(t, env.fs.Entry) + NINJA_DEFAULT_TARGETS.extend(nodes) + SCons.Script._Set_Default_Targets = ninja_Set_Default_Targets + + # We will eventually need to overwrite TempFileMunge to make it + # handle persistent tempfiles or get an upstreamed change to add + # some configurability to it's behavior in regards to tempfiles. + # + # Set all three environment variables that Python's + # tempfile.mkstemp looks at as it behaves differently on different + # platforms and versions of Python. + # build_dir = env.subst("$NINJA_DIR") + # if build_dir == "": + # build_dir = "." + # os.environ["TMPDIR"] = env.Dir("{}/.response_files".format(build_dir)).get_abspath() + # os.environ["TEMP"] = os.environ["TMPDIR"] + # os.environ["TMP"] = os.environ["TMPDIR"] + # if not os.path.isdir(os.environ["TMPDIR"]): + # env.Execute(SCons.Defaults.Mkdir(os.environ["TMPDIR"])) + + env['TEMPFILEDIR'] = "$NINJA_DIR/.response_files" + env["TEMPFILE"] = NinjaNoResponseFiles + + env.Alias('run-ninja-scons-daemon', 'run_ninja_scons_daemon_phony') + env.Alias('shutdown-ninja-scons-daemon', 'shutdown_ninja_scons_daemon_phony') diff --git a/scons/scons-local-4.5.1/SCons/Tool/ninja/ninja_daemon_build.py b/scons/scons-local-4.5.1/SCons/Tool/ninja/ninja_daemon_build.py new file mode 100644 index 000000000..32c375dfd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ninja/ninja_daemon_build.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 +# +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +This script is intended to execute a single build target. This script should be +called by ninja, passing the port, ninja dir, and build target via arguments. +The script then executes a simple get request to the scons daemon which is listening +on from localhost on the set port. +""" + +import http.client +import sys +import time +import os +import logging +import pathlib +import tempfile +import hashlib +import traceback +import socket + +ninja_builddir = pathlib.Path(sys.argv[2]) +daemon_dir = pathlib.Path(tempfile.gettempdir()) / ( + "scons_daemon_" + str(hashlib.md5(str(ninja_builddir).encode()).hexdigest()) +) +os.makedirs(daemon_dir, exist_ok=True) + +logging.basicConfig( + filename=daemon_dir / "scons_daemon_request.log", + filemode="a", + format="%(asctime)s %(message)s", + level=logging.DEBUG, +) + + +def log_error(msg): + logging.debug(msg) + sys.stderr.write(msg) + + +while True: + try: + if not os.path.exists(daemon_dir / "pidfile"): + if sys.argv[3] != '--exit': + logging.debug(f"ERROR: Server pid not found {daemon_dir / 'pidfile'} for request {sys.argv[3]}") + exit(1) + else: + logging.debug("WARNING: Unnecessary request to shutdown server, it's already shutdown.") + exit(0) + + logging.debug(f"Sending request: {sys.argv[3]}") + conn = http.client.HTTPConnection( + "127.0.0.1", port=int(sys.argv[1]), timeout=60 + ) + if sys.argv[3] == '--exit': + conn.request("GET", "/?exit=1") + else: + conn.request("GET", "/?build=" + sys.argv[3]) + response = None + + while not response: + try: + response = conn.getresponse() + except (http.client.RemoteDisconnected, http.client.ResponseNotReady, socket.timeout): + time.sleep(0.1) + except http.client.HTTPException: + log_error(f"Error: {traceback.format_exc()}") + exit(1) + else: + msg = response.read() + status = response.status + if status != 200: + log_error(msg.decode("utf-8")) + exit(1) + + logging.debug(f"Request Done: {sys.argv[3]}") + exit(0) + + except ConnectionRefusedError: + logging.debug(f"Server refused connection to build {sys.argv[3]}, maybe it was too busy, tring again: {traceback.format_exc()}") + time.sleep(0.1) + + except Exception: + log_error(f"Failed to send command: {traceback.format_exc()}") + exit(1) + + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/ninja/ninja_run_daemon.py b/scons/scons-local-4.5.1/SCons/Tool/ninja/ninja_run_daemon.py new file mode 100644 index 000000000..08029a29f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ninja/ninja_run_daemon.py @@ -0,0 +1,143 @@ +#!/usr/bin/env python3 +# +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +This script is intended to be called by ninja to start up the scons daemon process. It will +launch the server and attempt to connect to it. This process needs to completely detach +from the spawned process so ninja can consider the build edge completed. It should be passed +the args which should be forwarded to the scons daemon process which could be any number of +# arguments. However the first few arguments are required to be port, ninja dir, and keep alive +timeout in seconds. + +The scons_daemon_dirty file acts as a pidfile marker letting this script quickly skip over +restarting the server if the server is running. The assumption here is the pidfile should only +exist if the server is running. +""" + +import subprocess +import sys +import os +import pathlib +import tempfile +import hashlib +import logging +import time +import http.client +import traceback +import socket + +ninja_builddir = pathlib.Path(sys.argv[2]) +daemon_dir = pathlib.Path(tempfile.gettempdir()) / ( + "scons_daemon_" + str(hashlib.md5(str(ninja_builddir).encode()).hexdigest()) +) +os.makedirs(daemon_dir, exist_ok=True) + +logging.basicConfig( + filename=daemon_dir / "scons_daemon.log", + filemode="a", + format="%(asctime)s %(message)s", + level=logging.DEBUG, +) + +def log_error(msg): + logging.debug(msg) + sys.stderr.write(msg) + +if not os.path.exists(ninja_builddir / "scons_daemon_dirty"): + cmd = [ + sys.executable, + str(pathlib.Path(__file__).parent / "ninja_scons_daemon.py"), + ] + sys.argv[1:] + logging.debug(f"Starting daemon with {' '.join(cmd)}") + + + # TODO: Remove the following when Python3.6 support is dropped. + if sys.platform == 'win32' and sys.version_info[0] == 3 and sys.version_info[1] == 6: + # on Windows with Python version 3.6, popen does not do a good job disconnecting + # the std handles and this make ninja hang because they stay open to the original + # process ninja launched. Here we can force the handles to be separated. + # See: https://docs.python.org/3.6/library/subprocess.html#subprocess.STARTUPINFO + # See Also: https://docs.python.org/3.6/library/subprocess.html#subprocess.Popen + # Note when you don't specify stdin, stdout, and/or stderr they default to None + # which indicates no output redirection will occur. + si = subprocess.STARTUPINFO() + si.dwFlags = subprocess.STARTF_USESTDHANDLES + p = subprocess.Popen( + cmd, close_fds=True, shell=False, startupinfo=si + ) + else: + p = subprocess.Popen( + cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, shell=False, + ) + with open(daemon_dir / "pidfile", "w") as f: + f.write(str(p.pid)) + with open(ninja_builddir / "scons_daemon_dirty", "w") as f: + f.write(str(p.pid)) + + error_msg = f"ERROR: Failed to connect to scons daemon.\n Check {daemon_dir / 'scons_daemon.log'} for more info.\n" + + while True: + try: + logging.debug("Attempting to connect scons daemon") + conn = http.client.HTTPConnection( + "127.0.0.1", port=int(sys.argv[1]), timeout=60 + ) + conn.request("GET", "/?ready=true") + response = None + + try: + response = conn.getresponse() + except (http.client.RemoteDisconnected, http.client.ResponseNotReady, socket.timeout): + time.sleep(0.01) + except http.client.HTTPException: + log_error(f"Error: {traceback.format_exc()}") + exit(1) + else: + msg = response.read() + status = response.status + if status != 200: + log_error(msg.decode("utf-8")) + exit(1) + logging.debug("Server Responded it was ready!") + break + + except ConnectionRefusedError: + logging.debug(f"Server not ready, server PID: {p.pid}") + time.sleep(1) + if p.poll() is not None: + log_error(f"Server process died, aborting: {p.returncode}") + sys.exit(p.returncode) + except ConnectionResetError: + log_error("Server ConnectionResetError") + exit(1) + except Exception: + log_error(f"Error: {traceback.format_exc()}") + exit(1) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/ninja/ninja_scons_daemon.py b/scons/scons-local-4.5.1/SCons/Tool/ninja/ninja_scons_daemon.py new file mode 100644 index 000000000..6802af293 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/ninja/ninja_scons_daemon.py @@ -0,0 +1,367 @@ +#!/usr/bin/env python3 +# +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +This script primarily consists of two threads, the http server thread and the scons interactive +process thread. The http server thread will listen on the passed port for http get request +which should indicate some action for the scons interactive process to take. + +The daemon will keep log files in a tmp directory correlated to the hash of the absolute path +of the ninja build dir passed. The daemon will also use a keep alive time to know when to shut +itself down after the passed timeout of no activity. Any time the server receives a get request, +the keep alive time will be reset. +""" + +import http.server +import socketserver +from urllib.parse import urlparse, parse_qs +import time +from threading import Condition +from subprocess import PIPE, Popen +import sys +import os +import threading +import queue +import pathlib +import logging +from timeit import default_timer as timer +import traceback +import tempfile +import hashlib +import signal + +port = int(sys.argv[1]) +ninja_builddir = pathlib.Path(sys.argv[2]) +daemon_keep_alive = int(sys.argv[3]) +args = sys.argv[4:] + +# TODO: Remove the following when Python3.6 support is dropped. +# Windows and Python36 passed nothing for the std handles because of issues with popen +# and its handles so we have to make some fake ones to prevent exceptions. +if sys.platform == 'win32' and sys.version_info[0] == 3 and sys.version_info[1] == 6: + from io import StringIO + sys.stderr = StringIO() + sys.stdout = StringIO() + +daemon_dir = pathlib.Path(tempfile.gettempdir()) / ( + "scons_daemon_" + str(hashlib.md5(str(ninja_builddir).encode()).hexdigest()) +) +os.makedirs(daemon_dir, exist_ok=True) +logging.basicConfig( + filename=daemon_dir / "scons_daemon.log", + filemode="a", + format="%(asctime)s %(message)s", + level=logging.DEBUG, +) + + +def daemon_log(message): + logging.debug(message) + + +def custom_readlines(handle, line_separator="\n", chunk_size=1): + buf = "" + while not handle.closed: + data = handle.read(chunk_size) + if not data: + break + buf += data.decode("utf-8") + if line_separator in buf: + chunks = buf.split(line_separator) + buf = chunks.pop() + for chunk in chunks: + yield chunk + line_separator + if buf.endswith("scons>>>"): + yield buf + buf = "" + + +def custom_readerr(handle, line_separator="\n", chunk_size=1): + buf = "" + while not handle.closed: + data = handle.read(chunk_size) + if not data: + break + buf += data.decode("utf-8") + if line_separator in buf: + chunks = buf.split(line_separator) + buf = chunks.pop() + for chunk in chunks: + yield chunk + line_separator + + +def enqueue_output(out, queue): + for line in iter(custom_readlines(out)): + queue.put(line) + out.close() + + +def enqueue_error(err, queue): + for line in iter(custom_readerr(err)): + queue.put(line) + err.close() + + +input_q = queue.Queue() +output_q = queue.Queue() +error_q = queue.Queue() + +building_cv = Condition() +error_cv = Condition() + +class StateInfo: + def __init__(self) -> None: + self.thread_error = False + self.finished_building = [] + self.error_nodes = [] + self.startup_failed = False + self.startup_output = '' + self.daemon_needs_to_shutdown = False + self.httpd = None + +shared_state = StateInfo() + +def sigint_func(signum, frame): + global shared_state + shared_state.daemon_needs_to_shutdown = True + +signal.signal(signal.SIGINT, sigint_func) + + +def daemon_thread_func(): + global shared_state + try: + args_list = args + ["--interactive"] + daemon_log(f"Starting daemon with args: {' '.join(args_list)}") + daemon_log(f"cwd: {os.getcwd()}") + + p = Popen(args_list, stdout=PIPE, stderr=PIPE, stdin=PIPE) + + t = threading.Thread(target=enqueue_output, args=(p.stdout, output_q)) + t.daemon = True + t.start() + + te = threading.Thread(target=enqueue_error, args=(p.stderr, error_q)) + te.daemon = True + te.start() + + daemon_ready = False + + building_node = None + startup_complete = False + + # While scons interactive process is stil running... + while p.poll() is None: + + # while there is scons output to process + while True: + try: + line = output_q.get(block=False, timeout=0.01) + except queue.Empty: + # breaks out of the output processing loop + break + else: + daemon_log("output: " + line.strip()) + if not startup_complete: + shared_state.startup_output += line + + if "scons: building terminated because of errors." in line: + error_output = "" + while True: + try: + error_output += error_q.get(block=False, timeout=0.01) + except queue.Empty: + break + shared_state.error_nodes += [{"node": building_node, "error": error_output}] + daemon_ready = True + building_node = None + with building_cv: + building_cv.notify() + + elif line == "scons>>>": + shared_state.startup_output = '' + startup_complete = True + + with error_q.mutex: + error_q.queue.clear() + daemon_ready = True + with building_cv: + building_cv.notify() + building_node = None + + # while there is input to process... + while daemon_ready and not input_q.empty(): + + try: + building_node = input_q.get(block=False, timeout=0.01) + except queue.Empty: + break + if "exit" in building_node: + daemon_log("input: " + "exit") + p.stdin.write("exit\n".encode("utf-8")) + p.stdin.flush() + with building_cv: + shared_state.finished_building += [building_node] + daemon_ready = False + shared_state.daemon_needs_to_shutdown = True + break + + else: + input_command = "build " + building_node + "\n" + daemon_log("input: " + input_command.strip()) + + p.stdin.write(input_command.encode("utf-8")) + p.stdin.flush() + with building_cv: + shared_state.finished_building += [building_node] + daemon_ready = False + + if shared_state.daemon_needs_to_shutdown: + break + time.sleep(0.01) + + # our scons process is done, make sure we are shutting down in this case + if not shared_state.daemon_needs_to_shutdown: + if not startup_complete: + shared_state.startup_failed = True + shared_state.daemon_needs_to_shutdown = True + + except Exception: + shared_state.thread_error = True + daemon_log("SERVER ERROR: " + traceback.format_exc()) + raise + + +daemon_thread = threading.Thread(target=daemon_thread_func) +daemon_thread.daemon = True +daemon_thread.start() + +logging.debug( + f"Starting request server on port {port}, keep alive: {daemon_keep_alive}" +) + +keep_alive_timer = timer() + +def server_thread_func(): + global shared_state + class S(http.server.BaseHTTPRequestHandler): + def do_GET(self): + global shared_state + global keep_alive_timer + try: + gets = parse_qs(urlparse(self.path).query) + + # process a request from ninja for a node for scons to build. + # Currently this is a serial process because scons interactive is serial + # is it was originally meant for a real human user to be providing input + # parallel input was never implemented. + build = gets.get("build") + if build: + keep_alive_timer = timer() + + daemon_log(f"Got request: {build[0]}") + input_q.put(build[0]) + + def pred(): + return build[0] in shared_state.finished_building + + with building_cv: + building_cv.wait_for(pred) + + for error_node in shared_state.error_nodes: + if error_node["node"] == build[0]: + self.send_response(500) + self.send_header("Content-type", "text/html") + self.end_headers() + self.wfile.write(error_node["error"].encode()) + return + + self.send_response(200) + self.send_header("Content-type", "text/html") + self.end_headers() + return + + # this message is used in server startup, to make sure the server launched + # successfully. If SCons interactive got to a input prompt (scons>>>), then + # the server is ready to start processing commands. Otherwise the server will + # send an error response back to ninja and shut itself down. + ready = gets.get("ready") + if ready: + if shared_state.startup_failed: + self.send_response(500) + self.send_header("Content-type", "text/html") + self.end_headers() + self.wfile.write(shared_state.startup_output.encode()) + return + + exitbuild = gets.get("exit") + if exitbuild: + input_q.put("exit") + + self.send_response(200) + self.send_header("Content-type", "text/html") + self.end_headers() + + except Exception: + shared_state.thread_error = True + daemon_log("SERVER ERROR: " + traceback.format_exc()) + raise + + def log_message(self, format, *args): + return + + socketserver.TCPServer.allow_reuse_address = True + shared_state.httpd = socketserver.TCPServer(("127.0.0.1", port), S) + shared_state.httpd.serve_forever() + + +server_thread = threading.Thread(target=server_thread_func) +server_thread.daemon = True +server_thread.start() + +while (timer() - keep_alive_timer < daemon_keep_alive + and not shared_state.thread_error + and not shared_state.daemon_needs_to_shutdown): + time.sleep(1) + +if shared_state.thread_error: + daemon_log(f"Shutting server on port {port} down because thread error.") +elif shared_state.daemon_needs_to_shutdown: + daemon_log("Server shutting down upon request.") +else: + daemon_log( + f"Shutting server on port {port} down because timed out: {daemon_keep_alive}" + ) +shared_state.httpd.shutdown() +if os.path.exists(ninja_builddir / "scons_daemon_dirty"): + os.unlink(ninja_builddir / "scons_daemon_dirty") +if os.path.exists(daemon_dir / "pidfile"): + os.unlink(daemon_dir / "pidfile") + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/packaging/__init__.py b/scons/scons-local-4.5.1/SCons/Tool/packaging/__init__.py new file mode 100644 index 000000000..6fe01c190 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/packaging/__init__.py @@ -0,0 +1,328 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons Packaging Tool.""" + +import importlib +from inspect import getfullargspec + +import SCons.Defaults +import SCons.Environment +from SCons.Errors import UserError, SConsEnvironmentError +from SCons.Script import AddOption, GetOption +from SCons.Util import is_List, make_path_relative +from SCons.Variables import EnumVariable +from SCons.Warnings import warn, SConsWarning + + +__all__ = [ + 'src_targz', 'src_tarbz2', 'src_tarxz', 'src_zip', + 'targz', 'tarbz2', 'tarxz', 'zip', + 'rpm', 'msi', 'ipk', +] + +# +# Utility and Builder function +# +def Tag(env, target, source, *more_tags, **kw_tags): + """ Tag a file with the given arguments. + + Just sets the accordingly named attribute on the file object. + + TODO: FIXME + """ + if not target: + target = source + first_tag = None + else: + first_tag = source + + if first_tag: + kw_tags[first_tag[0]] = '' + + if not kw_tags and not more_tags: + raise UserError("No tags given.") + + # XXX: sanity checks + for x in more_tags: + kw_tags[x] = '' + + if not SCons.Util.is_List(target): + target = [target] + else: + # hmm, sometimes the target list is a list of a list + # make sure it is flattened prior to processing. + # TODO: perhaps some bug ?!? + target = env.Flatten(target) + + for t in target: + for k, v in kw_tags.items(): + # all file tags have to start with PACKAGING_, so we can later + # differentiate between "normal" object attributes and the + # packaging attributes. As the user should not be bothered with + # that, the prefix will be added here if missing. + if not k.startswith('PACKAGING_'): + k = 'PACKAGING_' + k + t.Tag(k, v) + +def Package(env, target=None, source=None, **kw): + """ Entry point for the package tool. + """ + # check if we need to find the source files ourselves + if not source: + source = env.FindInstalledFiles() + + if not source: + raise UserError("No source for Package() given") + + # decide which types of packages shall be built. Can be defined through + # four mechanisms: command line argument, keyword argument, + # environment argument and default selection (zip or tar.gz) in that + # order. + try: + kw['PACKAGETYPE'] = env['PACKAGETYPE'] + except KeyError: + pass + + if not kw.get('PACKAGETYPE'): + kw['PACKAGETYPE'] = GetOption('package_type') + + if kw['PACKAGETYPE'] is None: + if 'Tar' in env['BUILDERS']: + kw['PACKAGETYPE'] = 'targz' + elif 'Zip' in env['BUILDERS']: + kw['PACKAGETYPE'] = 'zip' + else: + raise UserError("No type for Package() given") + + packagetype = kw['PACKAGETYPE'] + if not is_List(packagetype): + packagetype = packagetype.split(',') + + # load the needed packagers. + def load_packager(pkgtype): + try: + # the specific packager is a relative import + return importlib.import_module("." + pkgtype, __name__) + except ImportError as e: + raise SConsEnvironmentError("packager %s not available: %s" + % (pkgtype, str(e))) + + packagers = [load_packager(p) for p in packagetype] + + # set up targets and the PACKAGEROOT + try: + # fill up the target list with a default target name until the + # PACKAGETYPE list is of the same size as the target list. + if not target: + target = [] + + size_diff = len(packagetype) - len(target) + default_name = "%(NAME)s-%(VERSION)s" + + if size_diff > 0: + default_target = default_name % kw + target.extend([default_target] * size_diff) + + if 'PACKAGEROOT' not in kw: + kw['PACKAGEROOT'] = default_name % kw + + except KeyError as e: + raise UserError("Missing Packagetag '%s'" % e.args[0]) + + # setup the source files + source = env.arg2nodes(source, env.fs.Entry) + + # call the packager to setup the dependencies. + targets = [] + try: + for packager in packagers: + t = [target.pop(0)] + t = packager.package(env, t, source, **kw) + targets.extend(t) + + assert len(target) == 0 + + except KeyError as e: + raise UserError("Missing Packagetag '%s' for %s packager" + % (e.args[0], packager.__name__)) + except TypeError: + # this exception means that a needed argument for the packager is + # missing. As our packagers get their "tags" as named function + # arguments we need to find out which one is missing. + argspec = getfullargspec(packager.package) + args = argspec.args + if argspec.defaults: + # throw away arguments with default values + args = args[:-len(argspec.defaults)] + args.remove('env') + args.remove('target') + args.remove('source') + # now remove any args for which we have a value in kw. + args = [x for x in args if x not in kw] + + if not args: + raise # must be a different error, so re-raise + elif len(args) == 1: + raise UserError("Missing Packagetag '%s' for %s packager" + % (args[0], packager.__name__)) + raise UserError("Missing Packagetags '%s' for %s packager" + % (", ".join(args), packager.__name__)) + + target = env.arg2nodes(target, env.fs.Entry) + #XXX: target set above unused... what was the intent? + targets.extend(env.Alias('package', targets)) + return targets + +# +# SCons tool initialization functions +# +added = False + +def generate(env): + global added + if not added: + added = True + AddOption('--package-type', + dest='package_type', + default=None, + type="string", + action="store", + help='The type of package to create.') + + try: + env['BUILDERS']['Package'] + env['BUILDERS']['Tag'] + except KeyError: + env['BUILDERS']['Package'] = Package + env['BUILDERS']['Tag'] = Tag + + +def exists(env): + return 1 + + +def options(opts): + opts.AddVariables( + EnumVariable('PACKAGETYPE', + 'the type of package to create.', + None, allowed_values=list(map( str, __all__ )), + ignorecase=2 + ) + ) + +# +# Internal utility functions +# + +def copy_attr(f1, f2): + """ Copies the special packaging file attributes from f1 to f2. + """ + if f1._tags: + pattrs = [ + tag + for tag in f1._tags + if not hasattr(f2, tag) and tag.startswith('PACKAGING_') + ] + for attr in pattrs: + f2.Tag(attr, f1.GetTag(attr)) + +def putintopackageroot(target, source, env, pkgroot, honor_install_location=1): + """ Copies all source files to the directory given in pkgroot. + + If honor_install_location is set and the copied source file has an + PACKAGING_INSTALL_LOCATION attribute, the PACKAGING_INSTALL_LOCATION is + used as the new name of the source file under pkgroot. + + The source file will not be copied if it is already under the the pkgroot + directory. + + All attributes of the source file will be copied to the new file. + + Note: + Uses CopyAs builder. + """ + # make sure the packageroot is a Dir object. + if SCons.Util.is_String(pkgroot): + pkgroot = env.Dir(pkgroot) + if not SCons.Util.is_List(source): + source = [source] + + new_source = [] + for file in source: + if SCons.Util.is_String(file): + file = env.File(file) + + if file.is_under(pkgroot): + new_source.append(file) + else: + if file.GetTag('PACKAGING_INSTALL_LOCATION') and \ + honor_install_location: + new_name = make_path_relative(file.GetTag('PACKAGING_INSTALL_LOCATION')) + else: + new_name = make_path_relative(file.get_path()) + + new_file = pkgroot.File(new_name) + new_file = env.CopyAs(new_file, file)[0] + copy_attr(file, new_file) + new_source.append(new_file) + + return target, new_source + + +def stripinstallbuilder(target, source, env): + """ Strips the install builder action from the source list and stores + the final installation location as the "PACKAGING_INSTALL_LOCATION" of + the source of the source file. This effectively removes the final installed + files from the source list while remembering the installation location. + + It also warns about files which have no install builder attached. + """ + def has_no_install_location(file): + return not (file.has_builder() and hasattr(file.builder, 'name') + and file.builder.name in ["InstallBuilder", "InstallAsBuilder"]) + + if len([src for src in source if has_no_install_location(src)]): + warn( + SConsWarning, + "there are files to package which have no InstallBuilder " + "attached, this might lead to irreproducible packages" + ) + + n_source = [] + for s in source: + if has_no_install_location(s): + n_source.append(s) + else: + for ss in s.sources: + n_source.append(ss) + copy_attr(s, ss) + ss.Tag('PACKAGING_INSTALL_LOCATION', s.get_path()) + + return target, n_source + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/packaging/ipk.py b/scons/scons-local-4.5.1/SCons/Tool/packaging/ipk.py new file mode 100644 index 000000000..ac8b992bb --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/packaging/ipk.py @@ -0,0 +1,189 @@ +"""SCons.Tool.Packaging.ipk +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os + +import SCons.Builder +import SCons.Node.FS +import SCons.Util + +from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot + +def package(env, target, source, PACKAGEROOT, NAME, VERSION, DESCRIPTION, + SUMMARY, X_IPK_PRIORITY, X_IPK_SECTION, SOURCE_URL, + X_IPK_MAINTAINER, X_IPK_DEPENDS, **kw): + """ This function prepares the packageroot directory for packaging with the + ipkg builder. + """ + SCons.Tool.Tool('ipkg').generate(env) + + # setup the Ipkg builder + bld = env['BUILDERS']['Ipkg'] + target, source = stripinstallbuilder(target, source, env) + target, source = putintopackageroot(target, source, env, PACKAGEROOT) + + # This should be overrideable from the construction environment, + # which it is by using ARCHITECTURE=. + # Guessing based on what os.uname() returns at least allows it + # to work for both i386 and x86_64 Linux systems. + archmap = { + 'i686' : 'i386', + 'i586' : 'i386', + 'i486' : 'i386', + } + + buildarchitecture = os.uname()[4] + buildarchitecture = archmap.get(buildarchitecture, buildarchitecture) + + if 'ARCHITECTURE' in kw: + buildarchitecture = kw['ARCHITECTURE'] + + # setup the kw to contain the mandatory arguments to this function. + # do this before calling any builder or setup function + loc=locals() + del loc['kw'] + kw.update(loc) + del kw['source'], kw['target'], kw['env'] + + # generate the specfile + specfile = gen_ipk_dir(PACKAGEROOT, source, env, kw) + + # override the default target. + if str(target[0])=="%s-%s"%(NAME, VERSION): + target=[ "%s_%s_%s.ipk"%(NAME, VERSION, buildarchitecture) ] + + # now apply the Ipkg builder + return bld(env, target, specfile, **kw) + +def gen_ipk_dir(proot, source, env, kw): + # make sure the packageroot is a Dir object. + if SCons.Util.is_String(proot): proot=env.Dir(proot) + + # create the specfile builder + s_bld=SCons.Builder.Builder( + action = build_specfiles, + ) + + # create the specfile targets + spec_target=[] + control=proot.Dir('CONTROL') + spec_target.append(control.File('control')) + spec_target.append(control.File('conffiles')) + spec_target.append(control.File('postrm')) + spec_target.append(control.File('prerm')) + spec_target.append(control.File('postinst')) + spec_target.append(control.File('preinst')) + + # apply the builder to the specfile targets + s_bld(env, spec_target, source, **kw) + + # the packageroot directory does now contain the specfiles. + return proot + +def build_specfiles(source, target, env): + """ Filter the targets for the needed files and use the variables in env + to create the specfile. + """ + # + # At first we care for the CONTROL/control file, which is the main file for ipk. + # + # For this we need to open multiple files in random order, so we store into + # a dict so they can be easily accessed. + # + # + opened_files={} + def open_file(needle, haystack=None): + try: + return opened_files[needle] + except KeyError: + files = filter(lambda x: x.get_path().rfind(needle) != -1, haystack) + # Py3: filter returns an iterable, not a list + file = list(files)[0] + opened_files[needle] = open(file.get_abspath(), 'w') + return opened_files[needle] + + control_file = open_file('control', target) + + if 'X_IPK_DESCRIPTION' not in env: + env['X_IPK_DESCRIPTION']="%s\n %s"%(env['SUMMARY'], + env['DESCRIPTION'].replace('\n', '\n ')) + + + content = """ +Package: $NAME +Version: $VERSION +Priority: $X_IPK_PRIORITY +Section: $X_IPK_SECTION +Source: $SOURCE_URL +Architecture: $ARCHITECTURE +Maintainer: $X_IPK_MAINTAINER +Depends: $X_IPK_DEPENDS +Description: $X_IPK_DESCRIPTION +""" + + control_file.write(env.subst(content)) + + # + # now handle the various other files, which purpose it is to set post-, + # pre-scripts and mark files as config files. + # + # We do so by filtering the source files for files which are marked with + # the "config" tag and afterwards we do the same for x_ipk_postrm, + # x_ipk_prerm, x_ipk_postinst and x_ipk_preinst tags. + # + # The first one will write the name of the file into the file + # CONTROL/configfiles, the latter add the content of the x_ipk_* variable + # into the same named file. + # + for f in [x for x in source if 'PACKAGING_CONFIG' in dir(x)]: + config = open_file('conffiles') + config.write(f.PACKAGING_INSTALL_LOCATION) + config.write('\n') + + for str in 'POSTRM PRERM POSTINST PREINST'.split(): + name="PACKAGING_X_IPK_%s"%str + for f in [x for x in source if name in dir(x)]: + file = open_file(name) + file.write(env[str]) + + # + # close all opened files + for f in opened_files.values(): + f.close() + + # call a user specified function + if 'CHANGE_SPECFILE' in env: + content += env['CHANGE_SPECFILE'](target) + + return 0 + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/packaging/msi.py b/scons/scons-local-4.5.1/SCons/Tool/packaging/msi.py new file mode 100644 index 000000000..458e81f83 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/packaging/msi.py @@ -0,0 +1,525 @@ +"""SCons.Tool.packaging.msi + +The msi packager. +""" + +# +# __COPYRIGHT__ +# +# 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. + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os +import SCons +from SCons.Action import Action +from SCons.Builder import Builder + +from xml.dom.minidom import Document +from xml.sax.saxutils import escape + +from SCons.Tool.packaging import stripinstallbuilder + +# +# Utility functions +# +def convert_to_id(s, id_set): + """ Some parts of .wxs need an Id attribute (for example: The File and + Directory directives. The charset is limited to A-Z, a-z, digits, + underscores, periods. Each Id must begin with a letter or with a + underscore. Google for "CNDL0015" for information about this. + + Requirements: + * the string created must only contain chars from the target charset. + * the string created must have a minimal editing distance from the + original string. + * the string created must be unique for the whole .wxs file. + + Observation: + * There are 62 chars in the charset. + + Idea: + * filter out forbidden characters. Check for a collision with the help + of the id_set. Add the number of the number of the collision at the + end of the created string. Furthermore care for a correct start of + the string. + """ + charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrstuvwxyz0123456789_.' + if s[0] in '0123456789.': + s = '_' + s + id = ''.join([c for c in s if c in charset]) + + # did we already generate an id for this file? + try: + return id_set[id][s] + except KeyError: + # no we did not, so initialize with the id + if id not in id_set: id_set[id] = { s : id } + # there is a collision, generate an id which is unique by appending + # the collision number + else: id_set[id][s] = id + str(len(id_set[id])) + + return id_set[id][s] + +def is_dos_short_file_name(file): + """ Examine if the given file is in the 8.3 form. + """ + fname, ext = os.path.splitext(file) + proper_ext = len(ext) == 0 or (2 <= len(ext) <= 4) # the ext contains the dot + proper_fname = file.isupper() and len(fname) <= 8 + + return proper_ext and proper_fname + +def gen_dos_short_file_name(file, filename_set): + """ See http://support.microsoft.com/default.aspx?scid=kb;en-us;Q142982 + + These are no complete 8.3 dos short names. The ~ char is missing and + replaced with one character from the filename. WiX warns about such + filenames, since a collision might occur. Google for "CNDL1014" for + more information. + """ + # guard this to not confuse the generation + if is_dos_short_file_name(file): + return file + + fname, ext = os.path.splitext(file) # ext contains the dot + + # first try if it suffices to convert to upper + file = file.upper() + if is_dos_short_file_name(file): + return file + + # strip forbidden characters. + forbidden = '."/[]:;=, ' + fname = ''.join([c for c in fname if c not in forbidden]) + + # check if we already generated a filename with the same number: + # thisis1.txt, thisis2.txt etc. + duplicate, num = not None, 1 + while duplicate: + shortname = "%s%s" % (fname[:8-len(str(num))].upper(), str(num)) + if len(ext) >= 2: + shortname = "%s%s" % (shortname, ext[:4].upper()) + + duplicate, num = shortname in filename_set, num+1 + + assert( is_dos_short_file_name(shortname) ), 'shortname is %s, longname is %s' % (shortname, file) + filename_set.append(shortname) + return shortname + +def create_feature_dict(files): + """ X_MSI_FEATURE and doc FileTag's can be used to collect files in a + hierarchy. This function collects the files into this hierarchy. + """ + dict = {} + + def add_to_dict( feature, file ): + if not SCons.Util.is_List( feature ): + feature = [ feature ] + + for f in feature: + if f not in dict: + dict[ f ] = [ file ] + else: + dict[ f ].append( file ) + + for file in files: + if hasattr( file, 'PACKAGING_X_MSI_FEATURE' ): + add_to_dict(file.PACKAGING_X_MSI_FEATURE, file) + elif hasattr( file, 'PACKAGING_DOC' ): + add_to_dict( 'PACKAGING_DOC', file ) + else: + add_to_dict( 'default', file ) + + return dict + +def generate_guids(root): + """ generates globally unique identifiers for parts of the xml which need + them. + + Component tags have a special requirement. Their UUID is only allowed to + change if the list of their contained resources has changed. This allows + for clean removal and proper updates. + + To handle this requirement, the uuid is generated with an md5 hashing the + whole subtree of a xml node. + """ + import uuid + + # specify which tags need a guid and in which attribute this should be stored. + needs_id = { 'Product' : 'Id', + 'Package' : 'Id', + 'Component' : 'Guid', + } + + # find all XMl nodes matching the key, retrieve their attribute, hash their + # subtree, convert hash to string and add as a attribute to the xml node. + for (key,value) in needs_id.items(): + node_list = root.getElementsByTagName(key) + attribute = value + for node in node_list: + hash = uuid.uuid5(uuid.NAMESPACE_URL, node.toxml()) + node.attributes[attribute] = str(hash) + + +def string_wxsfile(target, source, env): + return "building WiX file %s" % target[0].path + +def build_wxsfile(target, source, env): + """ Compiles a .wxs file from the keywords given in env['msi_spec'] and + by analyzing the tree of source nodes and their tags. + """ + f = open(target[0].get_abspath(), 'w') + + try: + # Create a document with the Wix root tag + doc = Document() + root = doc.createElement( 'Wix' ) + root.attributes['xmlns']='http://schemas.microsoft.com/wix/2003/01/wi' + doc.appendChild( root ) + + filename_set = [] # this is to circumvent duplicates in the shortnames + id_set = {} # this is to circumvent duplicates in the ids + + # Create the content + build_wxsfile_header_section(root, env) + build_wxsfile_file_section(root, source, env['NAME'], env['VERSION'], env['VENDOR'], filename_set, id_set) + generate_guids(root) + build_wxsfile_features_section(root, source, env['NAME'], env['VERSION'], env['SUMMARY'], id_set) + build_wxsfile_default_gui(root) + build_license_file(target[0].get_dir(), env) + + # write the xml to a file + f.write( doc.toprettyxml() ) + + # call a user specified function + if 'CHANGE_SPECFILE' in env: + env['CHANGE_SPECFILE'](target, source) + + except KeyError as e: + raise SCons.Errors.UserError( '"%s" package field for MSI is missing.' % e.args[0] ) + finally: + f.close() + +# +# setup function +# +def create_default_directory_layout(root, NAME, VERSION, VENDOR, filename_set): + r""" Create the wix default target directory layout and return the innermost + directory. + + We assume that the XML tree delivered in the root argument already contains + the Product tag. + + Everything is put under the PFiles directory property defined by WiX. + After that a directory with the 'VENDOR' tag is placed and then a + directory with the name of the project and its VERSION. This leads to the + following TARGET Directory Layout: + C:\\\\ + Example: C:\Programme\Company\Product-1.2\ + """ + doc = Document() + d1 = doc.createElement( 'Directory' ) + d1.attributes['Id'] = 'TARGETDIR' + d1.attributes['Name'] = 'SourceDir' + + d2 = doc.createElement( 'Directory' ) + d2.attributes['Id'] = 'ProgramFilesFolder' + d2.attributes['Name'] = 'PFiles' + + d3 = doc.createElement( 'Directory' ) + d3.attributes['Id'] = 'VENDOR_folder' + d3.attributes['Name'] = escape( gen_dos_short_file_name( VENDOR, filename_set ) ) + d3.attributes['LongName'] = escape( VENDOR ) + + d4 = doc.createElement( 'Directory' ) + project_folder = "%s-%s" % ( NAME, VERSION ) + d4.attributes['Id'] = 'MY_DEFAULT_FOLDER' + d4.attributes['Name'] = escape( gen_dos_short_file_name( project_folder, filename_set ) ) + d4.attributes['LongName'] = escape( project_folder ) + + d1.childNodes.append( d2 ) + d2.childNodes.append( d3 ) + d3.childNodes.append( d4 ) + + root.getElementsByTagName('Product')[0].childNodes.append( d1 ) + + return d4 + +# +# mandatory and optional file tags +# +def build_wxsfile_file_section(root, files, NAME, VERSION, VENDOR, filename_set, id_set): + """ Builds the Component sections of the wxs file with their included files. + + Files need to be specified in 8.3 format and in the long name format, long + filenames will be converted automatically. + + Features are specficied with the 'X_MSI_FEATURE' or 'DOC' FileTag. + """ + root = create_default_directory_layout( root, NAME, VERSION, VENDOR, filename_set ) + components = create_feature_dict( files ) + factory = Document() + + def get_directory( node, dir ): + """ Returns the node under the given node representing the directory. + + Returns the component node if dir is None or empty. + """ + if dir == '' or not dir: + return node + + Directory = node + dir_parts = dir.split(os.path.sep) + + # to make sure that our directory ids are unique, the parent folders are + # consecutively added to upper_dir + upper_dir = '' + + # walk down the xml tree finding parts of the directory + dir_parts = [d for d in dir_parts if d != ''] + for d in dir_parts[:]: + already_created = [c for c in Directory.childNodes + if c.nodeName == 'Directory' + and c.attributes['LongName'].value == escape(d)] + + if already_created: + Directory = already_created[0] + dir_parts.remove(d) + upper_dir += d + else: + break + + for d in dir_parts: + nDirectory = factory.createElement( 'Directory' ) + nDirectory.attributes['LongName'] = escape( d ) + nDirectory.attributes['Name'] = escape( gen_dos_short_file_name( d, filename_set ) ) + upper_dir += d + nDirectory.attributes['Id'] = convert_to_id( upper_dir, id_set ) + + Directory.childNodes.append( nDirectory ) + Directory = nDirectory + + return Directory + + for file in files: + drive, path = os.path.splitdrive( file.PACKAGING_INSTALL_LOCATION ) + filename = os.path.basename( path ) + dirname = os.path.dirname( path ) + + h = { + # tagname : default value + 'PACKAGING_X_MSI_VITAL' : 'yes', + 'PACKAGING_X_MSI_FILEID' : convert_to_id(filename, id_set), + 'PACKAGING_X_MSI_LONGNAME' : filename, + 'PACKAGING_X_MSI_SHORTNAME' : gen_dos_short_file_name(filename, filename_set), + 'PACKAGING_X_MSI_SOURCE' : file.get_path(), + } + + # fill in the default tags given above. + for k,v in [ (k, v) for (k,v) in h.items() if not hasattr(file, k) ]: + setattr( file, k, v ) + + File = factory.createElement( 'File' ) + File.attributes['LongName'] = escape( file.PACKAGING_X_MSI_LONGNAME ) + File.attributes['Name'] = escape( file.PACKAGING_X_MSI_SHORTNAME ) + File.attributes['Source'] = escape( file.PACKAGING_X_MSI_SOURCE ) + File.attributes['Id'] = escape( file.PACKAGING_X_MSI_FILEID ) + File.attributes['Vital'] = escape( file.PACKAGING_X_MSI_VITAL ) + + # create the Tag under which this file should appear + Component = factory.createElement('Component') + Component.attributes['DiskId'] = '1' + Component.attributes['Id'] = convert_to_id( filename, id_set ) + + # hang the component node under the root node and the file node + # under the component node. + Directory = get_directory( root, dirname ) + Directory.childNodes.append( Component ) + Component.childNodes.append( File ) + +# +# additional functions +# +def build_wxsfile_features_section(root, files, NAME, VERSION, SUMMARY, id_set): + """ This function creates the tag based on the supplied xml tree. + + This is achieved by finding all s and adding them to a default target. + + It should be called after the tree has been built completly. We assume + that a MY_DEFAULT_FOLDER Property is defined in the wxs file tree. + + Furthermore a top-level with the name and VERSION of the software will be created. + + An PACKAGING_X_MSI_FEATURE can either be a string, where the feature + DESCRIPTION will be the same as its title or a Tuple, where the first + part will be its title and the second its DESCRIPTION. + """ + factory = Document() + Feature = factory.createElement('Feature') + Feature.attributes['Id'] = 'complete' + Feature.attributes['ConfigurableDirectory'] = 'MY_DEFAULT_FOLDER' + Feature.attributes['Level'] = '1' + Feature.attributes['Title'] = escape( '%s %s' % (NAME, VERSION) ) + Feature.attributes['Description'] = escape( SUMMARY ) + Feature.attributes['Display'] = 'expand' + + for (feature, files) in create_feature_dict(files).items(): + SubFeature = factory.createElement('Feature') + SubFeature.attributes['Level'] = '1' + + if SCons.Util.is_Tuple(feature): + SubFeature.attributes['Id'] = convert_to_id( feature[0], id_set ) + SubFeature.attributes['Title'] = escape(feature[0]) + SubFeature.attributes['Description'] = escape(feature[1]) + else: + SubFeature.attributes['Id'] = convert_to_id( feature, id_set ) + if feature=='default': + SubFeature.attributes['Description'] = 'Main Part' + SubFeature.attributes['Title'] = 'Main Part' + elif feature=='PACKAGING_DOC': + SubFeature.attributes['Description'] = 'Documentation' + SubFeature.attributes['Title'] = 'Documentation' + else: + SubFeature.attributes['Description'] = escape(feature) + SubFeature.attributes['Title'] = escape(feature) + + # build the componentrefs. As one of the design decision is that every + # file is also a component we walk the list of files and create a + # reference. + for f in files: + ComponentRef = factory.createElement('ComponentRef') + ComponentRef.attributes['Id'] = convert_to_id( os.path.basename(f.get_path()), id_set ) + SubFeature.childNodes.append(ComponentRef) + + Feature.childNodes.append(SubFeature) + + root.getElementsByTagName('Product')[0].childNodes.append(Feature) + +def build_wxsfile_default_gui(root): + """ This function adds a default GUI to the wxs file + """ + factory = Document() + Product = root.getElementsByTagName('Product')[0] + + UIRef = factory.createElement('UIRef') + UIRef.attributes['Id'] = 'WixUI_Mondo' + Product.childNodes.append(UIRef) + + UIRef = factory.createElement('UIRef') + UIRef.attributes['Id'] = 'WixUI_ErrorProgressText' + Product.childNodes.append(UIRef) + +def build_license_file(directory, spec): + """ Creates a License.rtf file with the content of "X_MSI_LICENSE_TEXT" + in the given directory + """ + name, text = '', '' + + try: + name = spec['LICENSE'] + text = spec['X_MSI_LICENSE_TEXT'] + except KeyError: + pass # ignore this as X_MSI_LICENSE_TEXT is optional + + if name!='' or text!='': + with open(os.path.join(directory.get_path(), 'License.rtf'), 'w') as f: + f.write('{\\rtf') + if text!='': + f.write(text.replace('\n', '\\par ')) + else: + f.write(name+'\\par\\par') + f.write('}') + +# +# mandatory and optional package tags +# +def build_wxsfile_header_section(root, spec): + """ Adds the xml file node which define the package meta-data. + """ + # Create the needed DOM nodes and add them at the correct position in the tree. + factory = Document() + Product = factory.createElement( 'Product' ) + Package = factory.createElement( 'Package' ) + + root.childNodes.append( Product ) + Product.childNodes.append( Package ) + + # set "mandatory" default values + if 'X_MSI_LANGUAGE' not in spec: + spec['X_MSI_LANGUAGE'] = '1033' # select english + + # mandatory sections, will throw a KeyError if the tag is not available + Product.attributes['Name'] = escape( spec['NAME'] ) + Product.attributes['Version'] = escape( spec['VERSION'] ) + Product.attributes['Manufacturer'] = escape( spec['VENDOR'] ) + Product.attributes['Language'] = escape( spec['X_MSI_LANGUAGE'] ) + Package.attributes['Description'] = escape( spec['SUMMARY'] ) + + # now the optional tags, for which we avoid the KeyErrror exception + if 'DESCRIPTION' in spec: + Package.attributes['Comments'] = escape( spec['DESCRIPTION'] ) + + if 'X_MSI_UPGRADE_CODE' in spec: + Package.attributes['X_MSI_UPGRADE_CODE'] = escape( spec['X_MSI_UPGRADE_CODE'] ) + + # We hardcode the media tag as our current model cannot handle it. + Media = factory.createElement('Media') + Media.attributes['Id'] = '1' + Media.attributes['Cabinet'] = 'default.cab' + Media.attributes['EmbedCab'] = 'yes' + root.getElementsByTagName('Product')[0].childNodes.append(Media) + +# this builder is the entry-point for .wxs file compiler. +wxs_builder = Builder( + action = Action( build_wxsfile, string_wxsfile ), + ensure_suffix = '.wxs' ) + +def package(env, target, source, PACKAGEROOT, NAME, VERSION, + DESCRIPTION, SUMMARY, VENDOR, X_MSI_LANGUAGE, **kw): + # make sure that the Wix Builder is in the environment + SCons.Tool.Tool('wix').generate(env) + + # get put the keywords for the specfile compiler. These are the arguments + # given to the package function and all optional ones stored in kw, minus + # the the source, target and env one. + loc = locals() + del loc['kw'] + kw.update(loc) + del kw['source'], kw['target'], kw['env'] + + # strip the install builder from the source files + target, source = stripinstallbuilder(target, source, env) + + # put the arguments into the env and call the specfile builder. + env['msi_spec'] = kw + specfile = wxs_builder(* [env, target, source], **kw) + + # now call the WiX Tool with the built specfile added as a source. + msifile = env.WiX(target, specfile) + + # return the target and source tuple. + return (msifile, source+[specfile]) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/packaging/rpm.py b/scons/scons-local-4.5.1/SCons/Tool/packaging/rpm.py new file mode 100644 index 000000000..cdeabcf62 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/packaging/rpm.py @@ -0,0 +1,364 @@ +"""SCons.Tool.Packaging.rpm + +The rpm packager. +""" + +# +# __COPYRIGHT__ +# +# 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. + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + + +import SCons.Builder +import SCons.Tool.rpmutils + +from SCons.Environment import OverrideEnvironment +from SCons.Tool.packaging import stripinstallbuilder, src_targz +from SCons.Errors import UserError + +def package(env, target, source, PACKAGEROOT, NAME, VERSION, + PACKAGEVERSION, DESCRIPTION, SUMMARY, X_RPM_GROUP, LICENSE, + **kw): + # initialize the rpm tool + SCons.Tool.Tool('rpm').generate(env) + + bld = env['BUILDERS']['Rpm'] + + # Generate a UserError whenever the target name has been set explicitly, + # since rpm does not allow for controlling it. This is detected by + # checking if the target has been set to the default by the Package() + # Environment function. + if str(target[0])!="%s-%s"%(NAME, VERSION): + raise UserError( "Setting target is not supported for rpm." ) + else: + # Deduce the build architecture, but allow it to be overridden + # by setting ARCHITECTURE in the construction env. + buildarchitecture = SCons.Tool.rpmutils.defaultMachine() + if 'ARCHITECTURE' in kw: + buildarchitecture = kw['ARCHITECTURE'] + + fmt = '%s-%s-%s.%s.rpm' + srcrpm = fmt % (NAME, VERSION, PACKAGEVERSION, 'src') + binrpm = fmt % (NAME, VERSION, PACKAGEVERSION, buildarchitecture) + + target = [ srcrpm, binrpm ] + + # get the correct arguments into the kw hash + loc=locals() + del loc['kw'] + kw.update(loc) + del kw['source'], kw['target'], kw['env'] + + # if no "SOURCE_URL" tag is given add a default one. + if 'SOURCE_URL' not in kw: + kw['SOURCE_URL']=(str(target[0])+".tar.gz").replace('.rpm', '') + + # mangle the source and target list for the rpmbuild + env = OverrideEnvironment(env, kw) + target, source = stripinstallbuilder(target, source, env) + target, source = addspecfile(target, source, env) + target, source = collectintargz(target, source, env) + + # now call the rpm builder to actually build the packet. + return bld(env, target, source, **kw) + +def collectintargz(target, source, env): + """ Puts all source files into a tar.gz file. """ + # the rpm tool depends on a source package, until this is changed + # this hack needs to be here that tries to pack all sources in. + sources = env.FindSourceFiles() + + # filter out the target we are building the source list for. + sources = [s for s in sources if s not in target] + + # find the .spec file for rpm and add it since it is not necessarily found + # by the FindSourceFiles function. + sources.extend( [s for s in source if str(s).rfind('.spec')!=-1] ) + # sort to keep sources from changing order across builds + sources.sort() + + # as the source contains the url of the source package this rpm package + # is built from, we extract the target name + tarball = (str(target[0])+".tar.gz").replace('.rpm', '') + try: + tarball = env['SOURCE_URL'].split('/')[-1] + except KeyError as e: + raise SCons.Errors.UserError( "Missing PackageTag '%s' for RPM packager" % e.args[0] ) + + tarball = src_targz.package(env, source=sources, target=tarball, + PACKAGEROOT=env['PACKAGEROOT'], ) + + return (target, tarball) + +def addspecfile(target, source, env): + specfile = "%s-%s" % (env['NAME'], env['VERSION']) + + bld = SCons.Builder.Builder(action = build_specfile, + suffix = '.spec', + target_factory = SCons.Node.FS.File) + + source.extend(bld(env, specfile, source)) + + return (target,source) + +def build_specfile(target, source, env): + """ Builds a RPM specfile from a dictionary with string metadata and + by analyzing a tree of nodes. + """ + with open(target[0].get_abspath(), 'w') as ofp: + try: + ofp.write(build_specfile_header(env)) + ofp.write(build_specfile_sections(env)) + ofp.write(build_specfile_filesection(env, source)) + + # call a user specified function + if 'CHANGE_SPECFILE' in env: + env['CHANGE_SPECFILE'](target, source) + + except KeyError as e: + raise SCons.Errors.UserError('"%s" package field for RPM is missing.' % e.args[0]) + + +# +# mandatory and optional package tag section +# +def build_specfile_sections(spec): + """ Builds the sections of a rpm specfile. + """ + str = "" + + mandatory_sections = { + 'DESCRIPTION' : '\n%%description\n%s\n\n', } + + str = str + SimpleTagCompiler(mandatory_sections).compile( spec ) + + optional_sections = { + 'DESCRIPTION_' : '%%description -l %s\n%s\n\n', + 'CHANGELOG' : '%%changelog\n%s\n\n', + 'X_RPM_PREINSTALL' : '%%pre\n%s\n\n', + 'X_RPM_POSTINSTALL' : '%%post\n%s\n\n', + 'X_RPM_PREUNINSTALL' : '%%preun\n%s\n\n', + 'X_RPM_POSTUNINSTALL' : '%%postun\n%s\n\n', + 'X_RPM_VERIFY' : '%%verify\n%s\n\n', + + # These are for internal use but could possibly be overridden + 'X_RPM_PREP' : '%%prep\n%s\n\n', + 'X_RPM_BUILD' : '%%build\n%s\n\n', + 'X_RPM_INSTALL' : '%%install\n%s\n\n', + 'X_RPM_CLEAN' : '%%clean\n%s\n\n', + } + + # Default prep, build, install and clean rules + # TODO: optimize those build steps, to not compile the project a second time + if 'X_RPM_PREP' not in spec: + spec['X_RPM_PREP'] = '[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf "$RPM_BUILD_ROOT"' + '\n%setup -q' + + if 'X_RPM_BUILD' not in spec: + spec['X_RPM_BUILD'] = '[ ! -e "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && mkdir "$RPM_BUILD_ROOT"' + + if 'X_RPM_INSTALL' not in spec: + spec['X_RPM_INSTALL'] = 'scons --install-sandbox="$RPM_BUILD_ROOT" "$RPM_BUILD_ROOT"' + + if 'X_RPM_CLEAN' not in spec: + spec['X_RPM_CLEAN'] = '[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf "$RPM_BUILD_ROOT"' + + str = str + SimpleTagCompiler(optional_sections, mandatory=0).compile( spec ) + + return str + +def build_specfile_header(spec): + """ Builds all sections but the %file of a rpm specfile + """ + str = "" + + # first the mandatory sections + mandatory_header_fields = { + 'NAME' : '%%define name %s\nName: %%{name}\n', + 'VERSION' : '%%define version %s\nVersion: %%{version}\n', + 'PACKAGEVERSION' : '%%define release %s\nRelease: %%{release}\n', + 'X_RPM_GROUP' : 'Group: %s\n', + 'SUMMARY' : 'Summary: %s\n', + 'LICENSE' : 'License: %s\n', + } + + str = str + SimpleTagCompiler(mandatory_header_fields).compile( spec ) + + # now the optional tags + optional_header_fields = { + 'VENDOR' : 'Vendor: %s\n', + 'X_RPM_URL' : 'Url: %s\n', + 'SOURCE_URL' : 'Source: %s\n', + 'SUMMARY_' : 'Summary(%s): %s\n', + 'ARCHITECTURE' : 'BuildArch: %s\n', + 'X_RPM_DISTRIBUTION' : 'Distribution: %s\n', + 'X_RPM_ICON' : 'Icon: %s\n', + 'X_RPM_PACKAGER' : 'Packager: %s\n', + 'X_RPM_GROUP_' : 'Group(%s): %s\n', + + 'X_RPM_REQUIRES' : 'Requires: %s\n', + 'X_RPM_PROVIDES' : 'Provides: %s\n', + 'X_RPM_CONFLICTS' : 'Conflicts: %s\n', + 'X_RPM_BUILDREQUIRES' : 'BuildRequires: %s\n', + + 'X_RPM_SERIAL' : 'Serial: %s\n', + 'X_RPM_EPOCH' : 'Epoch: %s\n', + 'X_RPM_AUTOREQPROV' : 'AutoReqProv: %s\n', + 'X_RPM_EXCLUDEARCH' : 'ExcludeArch: %s\n', + 'X_RPM_EXCLUSIVEARCH' : 'ExclusiveArch: %s\n', + 'X_RPM_PREFIX' : 'Prefix: %s\n', + + # internal use + 'X_RPM_BUILDROOT' : 'BuildRoot: %s\n', + } + + # fill in default values: + # Adding a BuildRequires renders the .rpm unbuildable under systems which + # are not managed by rpm, since the database to resolve this dependency is + # missing (take Gentoo as an example) + #if 'X_RPM_BUILDREQUIRES' not in spec: + # spec['X_RPM_BUILDREQUIRES'] = 'scons' + + if 'X_RPM_BUILDROOT' not in spec: + spec['X_RPM_BUILDROOT'] = '%{_tmppath}/%{name}-%{version}-%{release}' + + str = str + SimpleTagCompiler(optional_header_fields, mandatory=0).compile( spec ) + + # Add any extra specfile definitions the user may have supplied. + # These flags get no processing, they are just added. + # github #3164: if we don't turn off debug package generation + # the tests which build packages all fail. If there are no + # extra flags, default to adding this one. If the user wants + # to turn this back on, supply the flag set to None. + + if 'X_RPM_EXTRADEFS' not in spec: + spec['X_RPM_EXTRADEFS'] = ['%global debug_package %{nil}'] + for extra in spec['X_RPM_EXTRADEFS']: + str += extra + '\n' + + return str + +# +# mandatory and optional file tags +# +def build_specfile_filesection(spec, files): + """ builds the %file section of the specfile + """ + str = '%files\n' + + if 'X_RPM_DEFATTR' not in spec: + spec['X_RPM_DEFATTR'] = '(-,root,root)' + + str = str + '%%defattr %s\n' % spec['X_RPM_DEFATTR'] + + supported_tags = { + 'PACKAGING_CONFIG' : '%%config %s', + 'PACKAGING_CONFIG_NOREPLACE' : '%%config(noreplace) %s', + 'PACKAGING_DOC' : '%%doc %s', + 'PACKAGING_UNIX_ATTR' : '%%attr %s', + 'PACKAGING_LANG_' : '%%lang(%s) %s', + 'PACKAGING_X_RPM_VERIFY' : '%%verify %s', + 'PACKAGING_X_RPM_DIR' : '%%dir %s', + 'PACKAGING_X_RPM_DOCDIR' : '%%docdir %s', + 'PACKAGING_X_RPM_GHOST' : '%%ghost %s', } + + for file in files: + # build the tagset + tags = {} + for k in supported_tags.keys(): + try: + v = file.GetTag(k) + if v: + tags[k] = v + except AttributeError: + pass + + # compile the tagset + str = str + SimpleTagCompiler(supported_tags, mandatory=0).compile( tags ) + + str = str + ' ' + str = str + file.GetTag('PACKAGING_INSTALL_LOCATION') + str = str + '\n\n' + + return str + +class SimpleTagCompiler: + """ Compile RPM tags by doing simple string substitution. + + The replacement specfication is stored in the *tagset* dictionary, + something like:: + + {"abc" : "cdef %s ", "abc_": "cdef %s %s"} + + The :func:`compile` function gets a value dictionary, which may look like:: + + {"abc": "ghij", "abc_gh": "ij"} + + The resulting string will be:: + + "cdef ghij cdef gh ij" + + """ + def __init__(self, tagset, mandatory=1): + self.tagset = tagset + self.mandatory = mandatory + + def compile(self, values): + """ Compiles the tagset and returns a str containing the result + """ + def is_international(tag): + return tag.endswith('_') + + def get_country_code(tag): + return tag[-2:] + + def strip_country_code(tag): + return tag[:-2] + + replacements = list(self.tagset.items()) + + str = "" + domestic = [t for t in replacements if not is_international(t[0])] + for key, replacement in domestic: + try: + str = str + replacement % values[key] + except KeyError as e: + if self.mandatory: + raise e + + international = [t for t in replacements if is_international(t[0])] + for key, replacement in international: + try: + x = [t for t in values.items() if strip_country_code(t[0]) == key] + int_values_for_key = [(get_country_code(t[0]),t[1]) for t in x] + for v in int_values_for_key: + str = str + replacement % v + except KeyError as e: + if self.mandatory: + raise e + + return str + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/packaging/src_tarbz2.py b/scons/scons-local-4.5.1/SCons/Tool/packaging/src_tarbz2.py new file mode 100644 index 000000000..d13229121 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/packaging/src_tarbz2.py @@ -0,0 +1,43 @@ +"""SCons.Tool.Packaging.src_tarbz2 + +The tarbz2 SRC packager. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +from SCons.Tool.packaging import putintopackageroot + +def package(env, target, source, PACKAGEROOT, **kw): + bld = env['BUILDERS']['Tar'] + bld.set_suffix('.tar.bz2') + target, source = putintopackageroot(target, source, env, PACKAGEROOT, honor_install_location=0) + return bld(env, target, source, TARFLAGS='-jc') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/packaging/src_targz.py b/scons/scons-local-4.5.1/SCons/Tool/packaging/src_targz.py new file mode 100644 index 000000000..7b759dc71 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/packaging/src_targz.py @@ -0,0 +1,43 @@ +"""SCons.Tool.Packaging.src_targz + +The targz SRC packager. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +from SCons.Tool.packaging import putintopackageroot + +def package(env, target, source, PACKAGEROOT, **kw): + bld = env['BUILDERS']['Tar'] + bld.set_suffix('.tar.gz') + target, source = putintopackageroot(target, source, env, PACKAGEROOT, honor_install_location=0) + return bld(env, target, source, TARFLAGS='-zc') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/packaging/src_tarxz.py b/scons/scons-local-4.5.1/SCons/Tool/packaging/src_tarxz.py new file mode 100644 index 000000000..5889b8a8f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/packaging/src_tarxz.py @@ -0,0 +1,43 @@ +"""SCons.Tool.Packaging.src_tarxz + +The tarxz SRC packager. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +from SCons.Tool.packaging import putintopackageroot + +def package(env, target, source, PACKAGEROOT, **kw): + bld = env['BUILDERS']['Tar'] + bld.set_suffix('.tar.xz') + target, source = putintopackageroot(target, source, env, PACKAGEROOT, honor_install_location=0) + return bld(env, target, source, TARFLAGS='-Jc') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/packaging/src_zip.py b/scons/scons-local-4.5.1/SCons/Tool/packaging/src_zip.py new file mode 100644 index 000000000..3df73970b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/packaging/src_zip.py @@ -0,0 +1,43 @@ +"""SCons.Tool.Packaging.zip + +The zip SRC packager. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +from SCons.Tool.packaging import putintopackageroot + +def package(env, target, source, PACKAGEROOT, **kw): + bld = env['BUILDERS']['Zip'] + bld.set_suffix('.zip') + target, source = putintopackageroot(target, source, env, PACKAGEROOT, honor_install_location=0) + return bld(env, target, source) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/packaging/tarbz2.py b/scons/scons-local-4.5.1/SCons/Tool/packaging/tarbz2.py new file mode 100644 index 000000000..392bf956d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/packaging/tarbz2.py @@ -0,0 +1,44 @@ +"""SCons.Tool.Packaging.tarbz2 + +The tarbz2 packager. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot + +def package(env, target, source, PACKAGEROOT, **kw): + bld = env['BUILDERS']['Tar'] + bld.set_suffix('.tar.bz2') + target, source = putintopackageroot(target, source, env, PACKAGEROOT) + target, source = stripinstallbuilder(target, source, env) + return bld(env, target, source, TARFLAGS='-jc') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/packaging/targz.py b/scons/scons-local-4.5.1/SCons/Tool/packaging/targz.py new file mode 100644 index 000000000..4130f32f2 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/packaging/targz.py @@ -0,0 +1,44 @@ +"""SCons.Tool.Packaging.targz + +The targz packager. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot + +def package(env, target, source, PACKAGEROOT, **kw): + bld = env['BUILDERS']['Tar'] + bld.set_suffix('.tar.gz') + target, source = stripinstallbuilder(target, source, env) + target, source = putintopackageroot(target, source, env, PACKAGEROOT) + return bld(env, target, source, TARFLAGS='-zc') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/packaging/tarxz.py b/scons/scons-local-4.5.1/SCons/Tool/packaging/tarxz.py new file mode 100644 index 000000000..747296b38 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/packaging/tarxz.py @@ -0,0 +1,44 @@ +"""SCons.Tool.Packaging.tarxz + +The tarxz packager. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot + +def package(env, target, source, PACKAGEROOT, **kw): + bld = env['BUILDERS']['Tar'] + bld.set_suffix('.tar.xz') + target, source = putintopackageroot(target, source, env, PACKAGEROOT) + target, source = stripinstallbuilder(target, source, env) + return bld(env, target, source, TARFLAGS='-Jc') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/packaging/zip.py b/scons/scons-local-4.5.1/SCons/Tool/packaging/zip.py new file mode 100644 index 000000000..1f76f1609 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/packaging/zip.py @@ -0,0 +1,44 @@ +"""SCons.Tool.Packaging.zip + +The zip SRC packager. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +from SCons.Tool.packaging import stripinstallbuilder, putintopackageroot + +def package(env, target, source, PACKAGEROOT, **kw): + bld = env['BUILDERS']['Zip'] + bld.set_suffix('.zip') + target, source = stripinstallbuilder(target, source, env) + target, source = putintopackageroot(target, source, env, PACKAGEROOT) + return bld(env, target, source) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/pdf.py b/scons/scons-local-4.5.1/SCons/Tool/pdf.py new file mode 100644 index 000000000..050f1a572 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/pdf.py @@ -0,0 +1,78 @@ +"""SCons.Tool.pdf + +Common PDF Builder definition for various other Tool modules that use it. +Add an explicit action to run epstopdf to convert .eps files to .pdf + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Builder +import SCons.Tool + +PDFBuilder = None + +EpsPdfAction = SCons.Action.Action('$EPSTOPDFCOM', '$EPSTOPDFCOMSTR') + +def generate(env): + try: + env['BUILDERS']['PDF'] + except KeyError: + global PDFBuilder + if PDFBuilder is None: + PDFBuilder = SCons.Builder.Builder(action = {}, + source_scanner = SCons.Tool.PDFLaTeXScanner, + prefix = '$PDFPREFIX', + suffix = '$PDFSUFFIX', + emitter = {}, + source_ext_match = None, + single_source=True) + env['BUILDERS']['PDF'] = PDFBuilder + + env['PDFPREFIX'] = '' + env['PDFSUFFIX'] = '.pdf' + +# put the epstopdf builder in this routine so we can add it after +# the pdftex builder so that one is the default for no source suffix +def generate2(env): + bld = env['BUILDERS']['PDF'] + #bld.add_action('.ps', EpsPdfAction) # this is covered by direct Ghostcript action in gs.py + bld.add_action('.eps', EpsPdfAction) + + env['EPSTOPDF'] = 'epstopdf' + env['EPSTOPDFFLAGS'] = SCons.Util.CLVar('') + env['EPSTOPDFCOM'] = '$EPSTOPDF $EPSTOPDFFLAGS ${SOURCE} --outfile=${TARGET}' + +def exists(env): + # This only puts a skeleton Builder in place, so if someone + # references this Tool directly, it's always "available." + return 1 + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/pdflatex.py b/scons/scons-local-4.5.1/SCons/Tool/pdflatex.py new file mode 100644 index 000000000..fbffb2395 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/pdflatex.py @@ -0,0 +1,84 @@ +"""SCons.Tool.pdflatex + +Tool-specific initialization for pdflatex. +Generates .pdf files from .latex or .ltx files + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Action +import SCons.Util +import SCons.Tool.pdf +import SCons.Tool.tex + +PDFLaTeXAction = None + +def PDFLaTeXAuxFunction(target = None, source= None, env=None): + result = SCons.Tool.tex.InternalLaTeXAuxAction( PDFLaTeXAction, target, source, env ) + if result != 0: + SCons.Tool.tex.check_file_error_message(env['PDFLATEX']) + return result + +PDFLaTeXAuxAction = None + +def generate(env): + """Add Builders and construction variables for pdflatex to an Environment.""" + global PDFLaTeXAction + if PDFLaTeXAction is None: + PDFLaTeXAction = SCons.Action.Action('$PDFLATEXCOM', '$PDFLATEXCOMSTR') + + global PDFLaTeXAuxAction + if PDFLaTeXAuxAction is None: + PDFLaTeXAuxAction = SCons.Action.Action(PDFLaTeXAuxFunction, + strfunction=SCons.Tool.tex.TeXLaTeXStrFunction) + + env.AppendUnique(LATEXSUFFIXES=SCons.Tool.LaTeXSuffixes) + + from . import pdf + pdf.generate(env) + + bld = env['BUILDERS']['PDF'] + bld.add_action('.ltx', PDFLaTeXAuxAction) + bld.add_action('.latex', PDFLaTeXAuxAction) + bld.add_emitter('.ltx', SCons.Tool.tex.tex_pdf_emitter) + bld.add_emitter('.latex', SCons.Tool.tex.tex_pdf_emitter) + + SCons.Tool.tex.generate_common(env) + +def exists(env): + SCons.Tool.tex.generate_darwin(env) + return env.Detect('pdflatex') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/pdftex.py b/scons/scons-local-4.5.1/SCons/Tool/pdftex.py new file mode 100644 index 000000000..e9a0bda03 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/pdftex.py @@ -0,0 +1,109 @@ +"""SCons.Tool.pdftex + +Tool-specific initialization for pdftex. +Generates .pdf files from .tex files + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os +import SCons.Action +import SCons.Util +import SCons.Tool.tex + +PDFTeXAction = None + +# This action might be needed more than once if we are dealing with +# labels and bibtex. +PDFLaTeXAction = None + +def PDFLaTeXAuxAction(target = None, source= None, env=None): + result = SCons.Tool.tex.InternalLaTeXAuxAction( PDFLaTeXAction, target, source, env ) + return result + +def PDFTeXLaTeXFunction(target = None, source= None, env=None): + """A builder for TeX and LaTeX that scans the source file to + decide the "flavor" of the source and then executes the appropriate + program.""" + basedir = os.path.split(str(source[0]))[0] + abspath = os.path.abspath(basedir) + + if SCons.Tool.tex.is_LaTeX(source,env,abspath): + result = PDFLaTeXAuxAction(target,source,env) + if result != 0: + SCons.Tool.tex.check_file_error_message(env['PDFLATEX']) + else: + result = PDFTeXAction(target,source,env) + if result != 0: + SCons.Tool.tex.check_file_error_message(env['PDFTEX']) + return result + +PDFTeXLaTeXAction = None + +def generate(env): + """Add Builders and construction variables for pdftex to an Environment.""" + global PDFTeXAction + if PDFTeXAction is None: + PDFTeXAction = SCons.Action.Action('$PDFTEXCOM', '$PDFTEXCOMSTR') + + global PDFLaTeXAction + if PDFLaTeXAction is None: + PDFLaTeXAction = SCons.Action.Action("$PDFLATEXCOM", "$PDFLATEXCOMSTR") + + global PDFTeXLaTeXAction + if PDFTeXLaTeXAction is None: + PDFTeXLaTeXAction = SCons.Action.Action(PDFTeXLaTeXFunction, + strfunction=SCons.Tool.tex.TeXLaTeXStrFunction) + + env.AppendUnique(LATEXSUFFIXES=SCons.Tool.LaTeXSuffixes) + + from . import pdf + pdf.generate(env) + + bld = env['BUILDERS']['PDF'] + bld.add_action('.tex', PDFTeXLaTeXAction) + bld.add_emitter('.tex', SCons.Tool.tex.tex_pdf_emitter) + + # Add the epstopdf builder after the pdftex builder + # so pdftex is the default for no source suffix + pdf.generate2(env) + + SCons.Tool.tex.generate_common(env) + +def exists(env): + SCons.Tool.tex.generate_darwin(env) + return env.Detect('pdftex') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/python.py b/scons/scons-local-4.5.1/SCons/Tool/python.py new file mode 100644 index 000000000..c61fc8d72 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/python.py @@ -0,0 +1,49 @@ +"""SCons.Tool.python + +Registers the Python scanner for the supported Python source file suffixes. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Tool +from SCons.Scanner.Python import PythonScanner, PythonSuffixes + + +def generate(env): + """Hook the python builder and scanner into the environment.""" + for suffix in PythonSuffixes: + SCons.Tool.SourceFileScanner.add_scanner(suffix, PythonScanner) + + +def exists(env): + return True + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/qt.py b/scons/scons-local-4.5.1/SCons/Tool/qt.py new file mode 100644 index 000000000..607b58d83 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/qt.py @@ -0,0 +1,38 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +This is a fake tool to instruct any builds still referencing 'qt' instead +of the new 'qt3' or a newer QT builder how to fix their now broken build. +""" +import SCons.Errors + +def generate(env): + raise SCons.Errors.UserError( + "Deprecated tool 'qt' renamed to 'qt3'. " + "Please update your build accordingly. " + "'qt3' will be removed entirely in a future release." + ) + +def exists(env): + return False diff --git a/scons/scons-local-4.5.1/SCons/Tool/qt3.py b/scons/scons-local-4.5.1/SCons/Tool/qt3.py new file mode 100644 index 000000000..4e6975648 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/qt3.py @@ -0,0 +1,371 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for Qt. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +import os.path +import re + +import SCons.Action +import SCons.Builder +import SCons.Defaults +import SCons.Scanner +import SCons.Tool +import SCons.Util +import SCons.Tool.cxx +import SCons.Warnings +cplusplus = SCons.Tool.cxx + +class ToolQtWarning(SCons.Warnings.SConsWarning): + pass + +class GeneratedMocFileNotIncluded(ToolQtWarning): + pass + +class QtdirNotFound(ToolQtWarning): + pass + +SCons.Warnings.enableWarningClass(ToolQtWarning) + +header_extensions = [".h", ".hxx", ".hpp", ".hh"] +if SCons.Util.case_sensitive_suffixes('.h', '.H'): + header_extensions.append('.H') + +cxx_suffixes = cplusplus.CXXSuffixes + + +def find_platform_specific_qt3_paths(): + """ + find non-standard QT paths + + If the platform does not put QT tools in standard search paths, + the path is expected to be set using QT3DIR. SCons violates + the normal rule of not pulling from the user's environment + in this case. However, some test cases try to validate what + happens when QT3DIR is unset, so we need to try to make a guess. + + :return: a guess at a path + """ + + # qt3_bin_dirs = [] + qt3_bin_dir = None + if os.path.isfile('/etc/redhat-release'): + with open('/etc/redhat-release','r') as rr: + lines = rr.readlines() + distro = lines[0].split()[0] + if distro == 'CentOS': + # Centos installs QT under /usr/{lib,lib64}/qt{4,5,-3.3}/bin + # so we need to handle this differently + # qt3_bin_dirs = glob.glob('/usr/lib64/qt*/bin') + # TODO: all current Fedoras do the same, need to look deeper here. + qt3_bin_dir = '/usr/lib64/qt-3.3/bin' + + return qt3_bin_dir + + +QT3_BIN_DIR = find_platform_specific_qt3_paths() + +def checkMocIncluded(target, source, env): + moc = target[0] + cpp = source[0] + # looks like cpp.includes is cleared before the build stage :-( + # not really sure about the path transformations (moc.cwd? cpp.cwd?) :-/ + path = SCons.Defaults.CScan.path(env, moc.cwd) + includes = SCons.Defaults.CScan(cpp, env, path) + if moc not in includes: + SCons.Warnings.warn( + GeneratedMocFileNotIncluded, + "Generated moc file '%s' is not included by '%s'" % + (str(moc), str(cpp))) + +def find_file(filename, paths, node_factory): + for dir in paths: + node = node_factory(filename, dir) + if node.rexists(): + return node + return None + +class _Automoc: + """ + Callable class, which works as an emitter for Programs, SharedLibraries and + StaticLibraries. + """ + + def __init__(self, objBuilderName): + self.objBuilderName = objBuilderName + + def __call__(self, target, source, env): + """ + Smart autoscan function. Gets the list of objects for the Program + or Lib. Adds objects and builders for the special qt3 files. + """ + try: + if int(env.subst('$QT3_AUTOSCAN')) == 0: + return target, source + except ValueError: + pass + try: + debug = int(env.subst('$QT3_DEBUG')) + except ValueError: + debug = 0 + + # some shortcuts used in the scanner + splitext = SCons.Util.splitext + objBuilder = getattr(env, self.objBuilderName) + + # some regular expressions: + # Q_OBJECT detection + q_object_search = re.compile(r'[^A-Za-z0-9]Q_OBJECT[^A-Za-z0-9]') + # cxx and c comment 'eater' + #comment = re.compile(r'(//.*)|(/\*(([^*])|(\*[^/]))*\*/)') + # CW: something must be wrong with the regexp. See also bug #998222 + # CURRENTLY THERE IS NO TEST CASE FOR THAT + + # The following is kind of hacky to get builders working properly (FIXME) + objBuilderEnv = objBuilder.env + objBuilder.env = env + mocBuilderEnv = env.Moc.env + env.Moc.env = env + + # make a deep copy for the result; MocH objects will be appended + out_sources = source[:] + + for obj in source: + if not obj.has_builder(): + # binary obj file provided + if debug: + print("scons: qt3: '%s' seems to be a binary. Discarded." % str(obj)) + continue + cpp = obj.sources[0] + if not splitext(str(cpp))[1] in cxx_suffixes: + if debug: + print("scons: qt3: '%s' is no cxx file. Discarded." % str(cpp)) + # c or fortran source + continue + #cpp_contents = comment.sub('', cpp.get_text_contents()) + if debug: + print("scons: qt3: Getting contents of %s" % cpp) + cpp_contents = cpp.get_text_contents() + h=None + for h_ext in header_extensions: + # try to find the header file in the corresponding source + # directory + hname = splitext(cpp.name)[0] + h_ext + h = find_file(hname, (cpp.get_dir(),), env.File) + if h: + if debug: + print("scons: qt3: Scanning '%s' (header of '%s')" % (str(h), str(cpp))) + #h_contents = comment.sub('', h.get_text_contents()) + h_contents = h.get_text_contents() + break + if not h and debug: + print("scons: qt3: no header for '%s'." % (str(cpp))) + if h and q_object_search.search(h_contents): + # h file with the Q_OBJECT macro found -> add moc_cpp + moc_cpp = env.Moc(h) + moc_o = objBuilder(moc_cpp) + out_sources.append(moc_o) + #moc_cpp.target_scanner = SCons.Defaults.CScan + if debug: + print("scons: qt3: found Q_OBJECT macro in '%s', moc'ing to '%s'" % (str(h), str(moc_cpp))) + if cpp and q_object_search.search(cpp_contents): + # cpp file with Q_OBJECT macro found -> add moc + # (to be included in cpp) + moc = env.Moc(cpp) + env.Ignore(moc, moc) + if debug: + print("scons: qt3: found Q_OBJECT macro in '%s', moc'ing to '%s'" % (str(cpp), str(moc))) + #moc.source_scanner = SCons.Defaults.CScan + # restore the original env attributes (FIXME) + objBuilder.env = objBuilderEnv + env.Moc.env = mocBuilderEnv + + return (target, out_sources) + +AutomocShared = _Automoc('SharedObject') +AutomocStatic = _Automoc('StaticObject') + +def _detect_qt3(env): + """Not really safe, but fast method to detect the QT library""" + + QT3DIR = env.get('QT3DIR',None) + if not QT3DIR: + QT3DIR = os.environ.get('QTDIR',None) + if not QT3DIR: + moc = env.WhereIs('moc') or env.WhereIs('moc',QT3_BIN_DIR) + if moc: + QT3DIR = os.path.dirname(os.path.dirname(moc)) + SCons.Warnings.warn( + QtdirNotFound, + "Could not detect qt3, using moc executable as a hint (QT3DIR=%s)" % QT3DIR) + else: + QT3DIR = None + SCons.Warnings.warn( + QtdirNotFound, + "Could not detect qt3, using empty QT3DIR") + return QT3DIR + +def uicEmitter(target, source, env): + adjustixes = SCons.Util.adjustixes + bs = SCons.Util.splitext(str(source[0].name))[0] + bs = os.path.join(str(target[0].get_dir()),bs) + # first target (header) is automatically added by builder + if len(target) < 2: + # second target is implementation + target.append(adjustixes(bs, + env.subst('$QT3_UICIMPLPREFIX'), + env.subst('$QT3_UICIMPLSUFFIX'))) + if len(target) < 3: + # third target is moc file + target.append(adjustixes(bs, + env.subst('$QT3_MOCHPREFIX'), + env.subst('$QT3_MOCHSUFFIX'))) + return target, source + +def uicScannerFunc(node, env, path): + lookout = [] + lookout.extend(env['CPPPATH']) + lookout.append(str(node.rfile().dir)) + includes = re.findall("(.*?)", node.get_text_contents()) + result = [] + for incFile in includes: + dep = env.FindFile(incFile,lookout) + if dep: + result.append(dep) + return result + +uicScanner = SCons.Scanner.ScannerBase(uicScannerFunc, + name = "UicScanner", + node_class = SCons.Node.FS.File, + node_factory = SCons.Node.FS.File, + recursive = 0) + +def generate(env): + """Add Builders and construction variables for qt3 to an Environment.""" + CLVar = SCons.Util.CLVar + Action = SCons.Action.Action + Builder = SCons.Builder.Builder + + qt3path = _detect_qt3(env) + if qt3path is None: + return None + + env.SetDefault(QT3DIR = qt3path, + QT3_BINPATH = os.path.join('$QT3DIR', 'bin'), + QT3_CPPPATH = os.path.join('$QT3DIR', 'include'), + QT3_LIBPATH = os.path.join('$QT3DIR', 'lib'), + QT3_MOC = os.path.join('$QT3_BINPATH','moc'), + QT3_UIC = os.path.join('$QT3_BINPATH','uic'), + QT3_LIB = 'qt', # may be set to qt-mt + + QT3_AUTOSCAN = 1, # scan for moc'able sources + + # Some QT specific flags. I don't expect someone wants to + # manipulate those ... + QT3_UICIMPLFLAGS = CLVar(''), + QT3_UICDECLFLAGS = CLVar(''), + QT3_MOCFROMHFLAGS = CLVar(''), + QT3_MOCFROMCXXFLAGS = CLVar('-i'), + + # suffixes/prefixes for the headers / sources to generate + QT3_UICDECLPREFIX = '', + QT3_UICDECLSUFFIX = '.h', + QT3_UICIMPLPREFIX = 'uic_', + QT3_UICIMPLSUFFIX = '$CXXFILESUFFIX', + QT3_MOCHPREFIX = 'moc_', + QT3_MOCHSUFFIX = '$CXXFILESUFFIX', + QT3_MOCCXXPREFIX = '', + QT3_MOCCXXSUFFIX = '.moc', + QT3_UISUFFIX = '.ui', + + # Commands for the qt3 support ... + # command to generate header, implementation and moc-file + # from a .ui file + QT3_UICCOM = [ + CLVar('$QT3_UIC $QT3_UICDECLFLAGS -o ${TARGETS[0]} $SOURCE'), + CLVar('$QT3_UIC $QT3_UICIMPLFLAGS -impl ${TARGETS[0].file} ' + '-o ${TARGETS[1]} $SOURCE'), + CLVar('$QT3_MOC $QT3_MOCFROMHFLAGS -o ${TARGETS[2]} ${TARGETS[0]}')], + # command to generate meta object information for a class + # declarated in a header + QT3_MOCFROMHCOM = ( + '$QT3_MOC $QT3_MOCFROMHFLAGS -o ${TARGETS[0]} $SOURCE'), + # command to generate meta object information for a class + # declarated in a cpp file + QT3_MOCFROMCXXCOM = [ + CLVar('$QT3_MOC $QT3_MOCFROMCXXFLAGS -o ${TARGETS[0]} $SOURCE'), + Action(checkMocIncluded,None)]) + + # ... and the corresponding builders + uicBld = Builder(action=SCons.Action.Action('$QT3_UICCOM', '$QT3_UICCOMSTR'), + emitter=uicEmitter, + src_suffix='$QT3_UISUFFIX', + suffix='$QT3_UICDECLSUFFIX', + prefix='$QT3_UICDECLPREFIX', + source_scanner=uicScanner) + mocBld = Builder(action={}, prefix={}, suffix={}) + for h in header_extensions: + act = SCons.Action.Action('$QT3_MOCFROMHCOM', '$QT3_MOCFROMHCOMSTR') + mocBld.add_action(h, act) + mocBld.prefix[h] = '$QT3_MOCHPREFIX' + mocBld.suffix[h] = '$QT3_MOCHSUFFIX' + for cxx in cxx_suffixes: + act = SCons.Action.Action('$QT3_MOCFROMCXXCOM', '$QT3_MOCFROMCXXCOMSTR') + mocBld.add_action(cxx, act) + mocBld.prefix[cxx] = '$QT3_MOCCXXPREFIX' + mocBld.suffix[cxx] = '$QT3_MOCCXXSUFFIX' + + # register the builders + env['BUILDERS']['Uic'] = uicBld + env['BUILDERS']['Moc'] = mocBld + static_obj, shared_obj = SCons.Tool.createObjBuilders(env) + static_obj.add_src_builder('Uic') + shared_obj.add_src_builder('Uic') + + # We use the emitters of Program / StaticLibrary / SharedLibrary + # to scan for moc'able files + # We can't refer to the builders directly, we have to fetch them + # as Environment attributes because that sets them up to be called + # correctly later by our emitter. + env.AppendUnique(PROGEMITTER =[AutomocStatic], + SHLIBEMITTER=[AutomocShared], + LDMODULEEMITTER=[AutomocShared], + LIBEMITTER =[AutomocStatic], + # Of course, we need to link against the qt3 libraries + CPPPATH=["$QT3_CPPPATH"], + LIBPATH=["$QT3_LIBPATH"], + LIBS=['$QT3_LIB']) + +def exists(env): + return _detect_qt3(env) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/rmic.py b/scons/scons-local-4.5.1/SCons/Tool/rmic.py new file mode 100644 index 000000000..5c7a04066 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/rmic.py @@ -0,0 +1,139 @@ +"""SCons.Tool.rmic + +Tool-specific initialization for rmic. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os.path + +import SCons.Action +import SCons.Builder +import SCons.Node.FS +import SCons.Util + +from SCons.Tool.JavaCommon import get_java_install_dirs + + +def emit_rmic_classes(target, source, env): + """Create and return lists of Java RMI stub and skeleton + class files to be created from a set of class files. + """ + class_suffix = env.get('JAVACLASSSUFFIX', '.class') + classdir = env.get('JAVACLASSDIR') + + if not classdir: + try: + s = source[0] + except IndexError: + classdir = '.' + else: + try: + classdir = s.attributes.java_classdir + except AttributeError: + classdir = '.' + classdir = env.Dir(classdir).rdir() + if str(classdir) == '.': + c_ = None + else: + c_ = str(classdir) + os.sep + + slist = [] + for src in source: + try: + classname = src.attributes.java_classname + except AttributeError: + classname = str(src) + if c_ and classname[:len(c_)] == c_: + classname = classname[len(c_):] + if class_suffix and classname[:-len(class_suffix)] == class_suffix: + classname = classname[-len(class_suffix):] + s = src.rfile() + s.attributes.java_classdir = classdir + s.attributes.java_classname = classname + slist.append(s) + + stub_suffixes = ['_Stub'] + if env.get('JAVAVERSION') == '1.4': + stub_suffixes.append('_Skel') + + tlist = [] + for s in source: + for suff in stub_suffixes: + fname = s.attributes.java_classname.replace('.', os.sep) + \ + suff + class_suffix + t = target[0].File(fname) + t.attributes.java_lookupdir = target[0] + tlist.append(t) + + return tlist, source + +RMICAction = SCons.Action.Action('$RMICCOM', '$RMICCOMSTR') + +RMICBuilder = SCons.Builder.Builder(action = RMICAction, + emitter = emit_rmic_classes, + src_suffix = '$JAVACLASSSUFFIX', + target_factory = SCons.Node.FS.Dir, + source_factory = SCons.Node.FS.File) + +def generate(env): + """Add Builders and construction variables for rmic to an Environment.""" + env['BUILDERS']['RMIC'] = RMICBuilder + + if env['PLATFORM'] == 'win32': + version = env.get('JAVAVERSION', None) + # Ensure that we have a proper path for rmic + paths = get_java_install_dirs('win32', version=version) + rmic = SCons.Tool.find_program_path(env, 'rmic', default_paths=paths) + # print("RMIC: %s"%rmic) + if rmic: + rmic_bin_dir = os.path.dirname(rmic) + env.AppendENVPath('PATH', rmic_bin_dir) + + env['RMIC'] = 'rmic' + env['RMICFLAGS'] = SCons.Util.CLVar('') + env['RMICCOM'] = '$RMIC $RMICFLAGS -d ${TARGET.attributes.java_lookupdir} -classpath ${SOURCE.attributes.java_classdir} ${SOURCES.attributes.java_classname}' + env['JAVACLASSSUFFIX'] = '.class' + +def exists(env): + # As reported by Jan Nijtmans in issue #2730, the simple + # return env.Detect('rmic') + # doesn't always work during initialization. For now, we + # stop trying to detect an executable (analogous to the + # javac Builder). + # TODO: Come up with a proper detect() routine...and enable it. + return 1 + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/rpcgen.py b/scons/scons-local-4.5.1/SCons/Tool/rpcgen.py new file mode 100644 index 000000000..5ed565862 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/rpcgen.py @@ -0,0 +1,70 @@ +"""SCons.Tool.rpcgen + +Tool-specific initialization for RPCGEN tools. + +Three normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +from SCons.Builder import Builder +import SCons.Util + +cmd = "cd ${SOURCE.dir} && $RPCGEN -%s $RPCGENFLAGS %s -o ${TARGET.abspath} ${SOURCE.file}" + +rpcgen_client = cmd % ('l', '$RPCGENCLIENTFLAGS') +rpcgen_header = cmd % ('h', '$RPCGENHEADERFLAGS') +rpcgen_service = cmd % ('m', '$RPCGENSERVICEFLAGS') +rpcgen_xdr = cmd % ('c', '$RPCGENXDRFLAGS') + +def generate(env): + """Add RPCGEN Builders and construction variables for an Environment.""" + + client = Builder(action=rpcgen_client, suffix='_clnt.c', src_suffix='.x') + header = Builder(action=rpcgen_header, suffix='.h', src_suffix='.x') + service = Builder(action=rpcgen_service, suffix='_svc.c', src_suffix='.x') + xdr = Builder(action=rpcgen_xdr, suffix='_xdr.c', src_suffix='.x') + env.Append(BUILDERS={'RPCGenClient' : client, + 'RPCGenHeader' : header, + 'RPCGenService' : service, + 'RPCGenXDR' : xdr}) + env['RPCGEN'] = 'rpcgen' + env['RPCGENFLAGS'] = SCons.Util.CLVar('') + env['RPCGENCLIENTFLAGS'] = SCons.Util.CLVar('') + env['RPCGENHEADERFLAGS'] = SCons.Util.CLVar('') + env['RPCGENSERVICEFLAGS'] = SCons.Util.CLVar('') + env['RPCGENXDRFLAGS'] = SCons.Util.CLVar('') + +def exists(env): + return env.Detect('rpcgen') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/rpm.py b/scons/scons-local-4.5.1/SCons/Tool/rpm.py new file mode 100644 index 000000000..2fd802a67 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/rpm.py @@ -0,0 +1,133 @@ +"""SCons.Tool.rpm + +Tool-specific initialization for rpm. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +The rpm tool calls the rpmbuild command. The first and only argument should a +tar.gz consisting of the source file and a specfile. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import os +import re +import shutil +import subprocess + +import SCons.Builder +import SCons.Node.FS +import SCons.Util +import SCons.Action +import SCons.Defaults + +def get_cmd(source, env): + tar_file_with_included_specfile = source + if SCons.Util.is_List(source): + tar_file_with_included_specfile = source[0] + return "%s %s %s"%(env['RPM'], env['RPMFLAGS'], + tar_file_with_included_specfile.get_abspath()) + +def build_rpm(target, source, env): + # create a temporary rpm build root. + tmpdir = os.path.join(os.path.dirname(target[0].get_abspath()), 'rpmtemp') + if os.path.exists(tmpdir): + shutil.rmtree(tmpdir) + + # now create the mandatory rpm directory structure. + for d in ['RPMS', 'SRPMS', 'SPECS', 'BUILD']: + os.makedirs(os.path.join(tmpdir, d)) + + # set the topdir as an rpmflag. + env.Prepend(RPMFLAGS = '--define \'_topdir %s\'' % tmpdir) + + # now call rpmbuild to create the rpm package. + handle = subprocess.Popen(get_cmd(source, env), + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + shell=True) + with handle.stdout: + output = SCons.Util.to_str(handle.stdout.read()) + status = handle.wait() + + if status: + raise SCons.Errors.BuildError(node=target[0], + errstr=output, + filename=str(target[0])) + else: + # XXX: assume that LC_ALL=C is set while running rpmbuild + output_files = re.compile('Wrote: (.*)').findall(output) + + for output, input in zip(output_files, target): + rpm_output = os.path.basename(output) + expected = os.path.basename(input.get_path()) + + assert expected == rpm_output, "got %s but expected %s" % (rpm_output, expected) + shutil.copy(output, input.get_abspath()) + + + # cleanup before leaving. + shutil.rmtree(tmpdir) + + return status + +def string_rpm(target, source, env): + try: + return env['RPMCOMSTR'] + except KeyError: + return get_cmd(source, env) + +rpmAction = SCons.Action.Action(build_rpm, string_rpm) + +RpmBuilder = SCons.Builder.Builder(action = SCons.Action.Action('$RPMCOM', '$RPMCOMSTR'), + source_scanner = SCons.Defaults.DirScanner, + suffix = '$RPMSUFFIX') + + + +def generate(env): + """Add Builders and construction variables for rpm to an Environment.""" + try: + bld = env['BUILDERS']['Rpm'] + except KeyError: + bld = RpmBuilder + env['BUILDERS']['Rpm'] = bld + + env.SetDefault(RPM = 'LC_ALL=C rpmbuild') + env.SetDefault(RPMFLAGS = SCons.Util.CLVar('-ta')) + env.SetDefault(RPMCOM = rpmAction) + env.SetDefault(RPMSUFFIX = '.rpm') + +def exists(env): + return env.Detect('rpmbuild') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/rpmutils.py b/scons/scons-local-4.5.1/SCons/Tool/rpmutils.py new file mode 100644 index 000000000..2c4fb3220 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/rpmutils.py @@ -0,0 +1,546 @@ +"""SCons.Tool.rpmutils.py + +RPM specific helper routines for general usage in the test framework +and SCons core modules. + +Since we check for the RPM package target name in several places, +we have to know which machine/system name RPM will use for the current +hardware setup. The following dictionaries and functions try to +mimic the exact naming rules of the RPM source code. +They were directly derived from the file "rpmrc.in" of the version +rpm-4.9.1.3. For updating to a more recent version of RPM, this Python +script can be used standalone. The usage() function below shows the +exact syntax. + +""" + +# __COPYRIGHT__ +# +# 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. +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + + +import platform +import subprocess + +import SCons.Util + +# Start of rpmrc dictionaries (Marker, don't change or remove!) +os_canon = { + 'AIX' : ['AIX','5'], + 'AmigaOS' : ['AmigaOS','5'], + 'BSD_OS' : ['bsdi','12'], + 'CYGWIN32_95' : ['cygwin32','15'], + 'CYGWIN32_NT' : ['cygwin32','14'], + 'Darwin' : ['darwin','21'], + 'FreeBSD' : ['FreeBSD','8'], + 'HP-UX' : ['hpux10','6'], + 'IRIX' : ['Irix','2'], + 'IRIX64' : ['Irix64','10'], + 'Linux' : ['Linux','1'], + 'Linux/390' : ['OS/390','20'], + 'Linux/ESA' : ['VM/ESA','20'], + 'MacOSX' : ['macosx','21'], + 'MiNT' : ['FreeMiNT','17'], + 'NEXTSTEP' : ['NextStep','11'], + 'OS/390' : ['OS/390','18'], + 'OSF1' : ['osf1','7'], + 'SCO_SV' : ['SCO_SV3.2v5.0.2','9'], + 'SunOS4' : ['SunOS','4'], + 'SunOS5' : ['solaris','3'], + 'UNIX_SV' : ['MP_RAS','16'], + 'VM/ESA' : ['VM/ESA','19'], + 'machten' : ['machten','13'], + 'osf3.2' : ['osf1','7'], + 'osf4.0' : ['osf1','7'], +} + +buildarch_compat = { + 'alpha' : ['noarch'], + 'alphaev5' : ['alpha'], + 'alphaev56' : ['alphaev5'], + 'alphaev6' : ['alphapca56'], + 'alphaev67' : ['alphaev6'], + 'alphapca56' : ['alphaev56'], + 'amd64' : ['x86_64'], + 'armv3l' : ['noarch'], + 'armv4b' : ['noarch'], + 'armv4l' : ['armv3l'], + 'armv4tl' : ['armv4l'], + 'armv5tejl' : ['armv5tel'], + 'armv5tel' : ['armv4tl'], + 'armv6l' : ['armv5tejl'], + 'armv7l' : ['armv6l'], + 'atariclone' : ['m68kmint','noarch'], + 'atarist' : ['m68kmint','noarch'], + 'atariste' : ['m68kmint','noarch'], + 'ataritt' : ['m68kmint','noarch'], + 'athlon' : ['i686'], + 'falcon' : ['m68kmint','noarch'], + 'geode' : ['i586'], + 'hades' : ['m68kmint','noarch'], + 'hppa1.0' : ['parisc'], + 'hppa1.1' : ['hppa1.0'], + 'hppa1.2' : ['hppa1.1'], + 'hppa2.0' : ['hppa1.2'], + 'i386' : ['noarch','fat'], + 'i486' : ['i386'], + 'i586' : ['i486'], + 'i686' : ['i586'], + 'ia32e' : ['x86_64'], + 'ia64' : ['noarch'], + 'm68k' : ['noarch'], + 'milan' : ['m68kmint','noarch'], + 'mips' : ['noarch'], + 'mipsel' : ['noarch'], + 'parisc' : ['noarch'], + 'pentium3' : ['i686'], + 'pentium4' : ['pentium3'], + 'ppc' : ['noarch','fat'], + 'ppc32dy4' : ['noarch'], + 'ppc64' : ['noarch','fat'], + 'ppc64iseries' : ['ppc64'], + 'ppc64pseries' : ['ppc64'], + 'ppc8260' : ['noarch'], + 'ppc8560' : ['noarch'], + 'ppciseries' : ['noarch'], + 'ppcpseries' : ['noarch'], + 's390' : ['noarch'], + 's390x' : ['noarch'], + 'sh3' : ['noarch'], + 'sh4' : ['noarch'], + 'sh4a' : ['sh4'], + 'sparc' : ['noarch'], + 'sparc64' : ['sparcv9v'], + 'sparc64v' : ['sparc64'], + 'sparcv8' : ['sparc'], + 'sparcv9' : ['sparcv8'], + 'sparcv9v' : ['sparcv9'], + 'sun4c' : ['noarch'], + 'sun4d' : ['noarch'], + 'sun4m' : ['noarch'], + 'sun4u' : ['noarch'], + 'x86_64' : ['noarch'], +} + +os_compat = { + 'BSD_OS' : ['bsdi'], + 'Darwin' : ['MacOSX'], + 'FreeMiNT' : ['mint','MiNT','TOS'], + 'IRIX64' : ['IRIX'], + 'MiNT' : ['FreeMiNT','mint','TOS'], + 'TOS' : ['FreeMiNT','MiNT','mint'], + 'bsdi4.0' : ['bsdi'], + 'hpux10.00' : ['hpux9.07'], + 'hpux10.01' : ['hpux10.00'], + 'hpux10.10' : ['hpux10.01'], + 'hpux10.20' : ['hpux10.10'], + 'hpux10.30' : ['hpux10.20'], + 'hpux11.00' : ['hpux10.30'], + 'hpux9.05' : ['hpux9.04'], + 'hpux9.07' : ['hpux9.05'], + 'mint' : ['FreeMiNT','MiNT','TOS'], + 'ncr-sysv4.3' : ['ncr-sysv4.2'], + 'osf4.0' : ['osf3.2','osf1'], + 'solaris2.4' : ['solaris2.3'], + 'solaris2.5' : ['solaris2.3','solaris2.4'], + 'solaris2.6' : ['solaris2.3','solaris2.4','solaris2.5'], + 'solaris2.7' : ['solaris2.3','solaris2.4','solaris2.5','solaris2.6'], +} + +arch_compat = { + 'alpha' : ['axp','noarch'], + 'alphaev5' : ['alpha'], + 'alphaev56' : ['alphaev5'], + 'alphaev6' : ['alphapca56'], + 'alphaev67' : ['alphaev6'], + 'alphapca56' : ['alphaev56'], + 'amd64' : ['x86_64','athlon','noarch'], + 'armv3l' : ['noarch'], + 'armv4b' : ['noarch'], + 'armv4l' : ['armv3l'], + 'armv4tl' : ['armv4l'], + 'armv5tejl' : ['armv5tel'], + 'armv5tel' : ['armv4tl'], + 'armv6l' : ['armv5tejl'], + 'armv7l' : ['armv6l'], + 'atariclone' : ['m68kmint','noarch'], + 'atarist' : ['m68kmint','noarch'], + 'atariste' : ['m68kmint','noarch'], + 'ataritt' : ['m68kmint','noarch'], + 'athlon' : ['i686'], + 'falcon' : ['m68kmint','noarch'], + 'geode' : ['i586'], + 'hades' : ['m68kmint','noarch'], + 'hppa1.0' : ['parisc'], + 'hppa1.1' : ['hppa1.0'], + 'hppa1.2' : ['hppa1.1'], + 'hppa2.0' : ['hppa1.2'], + 'i370' : ['noarch'], + 'i386' : ['noarch','fat'], + 'i486' : ['i386'], + 'i586' : ['i486'], + 'i686' : ['i586'], + 'ia32e' : ['x86_64','athlon','noarch'], + 'ia64' : ['noarch'], + 'milan' : ['m68kmint','noarch'], + 'mips' : ['noarch'], + 'mipsel' : ['noarch'], + 'osfmach3_i386' : ['i486'], + 'osfmach3_i486' : ['i486','osfmach3_i386'], + 'osfmach3_i586' : ['i586','osfmach3_i486'], + 'osfmach3_i686' : ['i686','osfmach3_i586'], + 'osfmach3_ppc' : ['ppc'], + 'parisc' : ['noarch'], + 'pentium3' : ['i686'], + 'pentium4' : ['pentium3'], + 'powerpc' : ['ppc'], + 'powerppc' : ['ppc'], + 'ppc' : ['rs6000'], + 'ppc32dy4' : ['ppc'], + 'ppc64' : ['ppc'], + 'ppc64iseries' : ['ppc64'], + 'ppc64pseries' : ['ppc64'], + 'ppc8260' : ['ppc'], + 'ppc8560' : ['ppc'], + 'ppciseries' : ['ppc'], + 'ppcpseries' : ['ppc'], + 'rs6000' : ['noarch','fat'], + 's390' : ['noarch'], + 's390x' : ['s390','noarch'], + 'sh3' : ['noarch'], + 'sh4' : ['noarch'], + 'sh4a' : ['sh4'], + 'sparc' : ['noarch'], + 'sparc64' : ['sparcv9'], + 'sparc64v' : ['sparc64'], + 'sparcv8' : ['sparc'], + 'sparcv9' : ['sparcv8'], + 'sparcv9v' : ['sparcv9'], + 'sun4c' : ['sparc'], + 'sun4d' : ['sparc'], + 'sun4m' : ['sparc'], + 'sun4u' : ['sparc64'], + 'x86_64' : ['amd64','athlon','noarch'], +} + +buildarchtranslate = { + 'alphaev5' : ['alpha'], + 'alphaev56' : ['alpha'], + 'alphaev6' : ['alpha'], + 'alphaev67' : ['alpha'], + 'alphapca56' : ['alpha'], + 'amd64' : ['x86_64'], + 'armv3l' : ['armv3l'], + 'armv4b' : ['armv4b'], + 'armv4l' : ['armv4l'], + 'armv4tl' : ['armv4tl'], + 'armv5tejl' : ['armv5tejl'], + 'armv5tel' : ['armv5tel'], + 'armv6l' : ['armv6l'], + 'armv7l' : ['armv7l'], + 'atariclone' : ['m68kmint'], + 'atarist' : ['m68kmint'], + 'atariste' : ['m68kmint'], + 'ataritt' : ['m68kmint'], + 'athlon' : ['i386'], + 'falcon' : ['m68kmint'], + 'geode' : ['i386'], + 'hades' : ['m68kmint'], + 'i386' : ['i386'], + 'i486' : ['i386'], + 'i586' : ['i386'], + 'i686' : ['i386'], + 'ia32e' : ['x86_64'], + 'ia64' : ['ia64'], + 'milan' : ['m68kmint'], + 'osfmach3_i386' : ['i386'], + 'osfmach3_i486' : ['i386'], + 'osfmach3_i586' : ['i386'], + 'osfmach3_i686' : ['i386'], + 'osfmach3_ppc' : ['ppc'], + 'pentium3' : ['i386'], + 'pentium4' : ['i386'], + 'powerpc' : ['ppc'], + 'powerppc' : ['ppc'], + 'ppc32dy4' : ['ppc'], + 'ppc64iseries' : ['ppc64'], + 'ppc64pseries' : ['ppc64'], + 'ppc8260' : ['ppc'], + 'ppc8560' : ['ppc'], + 'ppciseries' : ['ppc'], + 'ppcpseries' : ['ppc'], + 's390' : ['s390'], + 's390x' : ['s390x'], + 'sh3' : ['sh3'], + 'sh4' : ['sh4'], + 'sh4a' : ['sh4'], + 'sparc64v' : ['sparc64'], + 'sparcv8' : ['sparc'], + 'sparcv9' : ['sparc'], + 'sparcv9v' : ['sparc'], + 'sun4c' : ['sparc'], + 'sun4d' : ['sparc'], + 'sun4m' : ['sparc'], + 'sun4u' : ['sparc64'], + 'x86_64' : ['x86_64'], +} + +optflags = { + 'alpha' : ['-O2','-g','-mieee'], + 'alphaev5' : ['-O2','-g','-mieee','-mtune=ev5'], + 'alphaev56' : ['-O2','-g','-mieee','-mtune=ev56'], + 'alphaev6' : ['-O2','-g','-mieee','-mtune=ev6'], + 'alphaev67' : ['-O2','-g','-mieee','-mtune=ev67'], + 'alphapca56' : ['-O2','-g','-mieee','-mtune=pca56'], + 'amd64' : ['-O2','-g'], + 'armv3l' : ['-O2','-g','-march=armv3'], + 'armv4b' : ['-O2','-g','-march=armv4'], + 'armv4l' : ['-O2','-g','-march=armv4'], + 'armv4tl' : ['-O2','-g','-march=armv4t'], + 'armv5tejl' : ['-O2','-g','-march=armv5te'], + 'armv5tel' : ['-O2','-g','-march=armv5te'], + 'armv6l' : ['-O2','-g','-march=armv6'], + 'armv7l' : ['-O2','-g','-march=armv7'], + 'atariclone' : ['-O2','-g','-fomit-frame-pointer'], + 'atarist' : ['-O2','-g','-fomit-frame-pointer'], + 'atariste' : ['-O2','-g','-fomit-frame-pointer'], + 'ataritt' : ['-O2','-g','-fomit-frame-pointer'], + 'athlon' : ['-O2','-g','-march=athlon'], + 'falcon' : ['-O2','-g','-fomit-frame-pointer'], + 'fat' : ['-O2','-g','-arch','i386','-arch','ppc'], + 'geode' : ['-Os','-g','-m32','-march=geode'], + 'hades' : ['-O2','-g','-fomit-frame-pointer'], + 'hppa1.0' : ['-O2','-g','-mpa-risc-1-0'], + 'hppa1.1' : ['-O2','-g','-mpa-risc-1-0'], + 'hppa1.2' : ['-O2','-g','-mpa-risc-1-0'], + 'hppa2.0' : ['-O2','-g','-mpa-risc-1-0'], + 'i386' : ['-O2','-g','-march=i386','-mtune=i686'], + 'i486' : ['-O2','-g','-march=i486'], + 'i586' : ['-O2','-g','-march=i586'], + 'i686' : ['-O2','-g','-march=i686'], + 'ia32e' : ['-O2','-g'], + 'ia64' : ['-O2','-g'], + 'm68k' : ['-O2','-g','-fomit-frame-pointer'], + 'milan' : ['-O2','-g','-fomit-frame-pointer'], + 'mips' : ['-O2','-g'], + 'mipsel' : ['-O2','-g'], + 'parisc' : ['-O2','-g','-mpa-risc-1-0'], + 'pentium3' : ['-O2','-g','-march=pentium3'], + 'pentium4' : ['-O2','-g','-march=pentium4'], + 'ppc' : ['-O2','-g','-fsigned-char'], + 'ppc32dy4' : ['-O2','-g','-fsigned-char'], + 'ppc64' : ['-O2','-g','-fsigned-char'], + 'ppc8260' : ['-O2','-g','-fsigned-char'], + 'ppc8560' : ['-O2','-g','-fsigned-char'], + 'ppciseries' : ['-O2','-g','-fsigned-char'], + 'ppcpseries' : ['-O2','-g','-fsigned-char'], + 's390' : ['-O2','-g'], + 's390x' : ['-O2','-g'], + 'sh3' : ['-O2','-g'], + 'sh4' : ['-O2','-g','-mieee'], + 'sh4a' : ['-O2','-g','-mieee'], + 'sparc' : ['-O2','-g','-m32','-mtune=ultrasparc'], + 'sparc64' : ['-O2','-g','-m64','-mtune=ultrasparc'], + 'sparc64v' : ['-O2','-g','-m64','-mtune=niagara'], + 'sparcv8' : ['-O2','-g','-m32','-mtune=ultrasparc','-mv8'], + 'sparcv9' : ['-O2','-g','-m32','-mtune=ultrasparc'], + 'sparcv9v' : ['-O2','-g','-m32','-mtune=niagara'], + 'x86_64' : ['-O2','-g'], +} + +arch_canon = { + 'IP' : ['sgi','7'], + 'alpha' : ['alpha','2'], + 'alphaev5' : ['alphaev5','2'], + 'alphaev56' : ['alphaev56','2'], + 'alphaev6' : ['alphaev6','2'], + 'alphaev67' : ['alphaev67','2'], + 'alphapca56' : ['alphapca56','2'], + 'amd64' : ['amd64','1'], + 'armv3l' : ['armv3l','12'], + 'armv4b' : ['armv4b','12'], + 'armv4l' : ['armv4l','12'], + 'armv5tejl' : ['armv5tejl','12'], + 'armv5tel' : ['armv5tel','12'], + 'armv6l' : ['armv6l','12'], + 'armv7l' : ['armv7l','12'], + 'atariclone' : ['m68kmint','13'], + 'atarist' : ['m68kmint','13'], + 'atariste' : ['m68kmint','13'], + 'ataritt' : ['m68kmint','13'], + 'athlon' : ['athlon','1'], + 'falcon' : ['m68kmint','13'], + 'geode' : ['geode','1'], + 'hades' : ['m68kmint','13'], + 'i370' : ['i370','14'], + 'i386' : ['i386','1'], + 'i486' : ['i486','1'], + 'i586' : ['i586','1'], + 'i686' : ['i686','1'], + 'ia32e' : ['ia32e','1'], + 'ia64' : ['ia64','9'], + 'm68k' : ['m68k','6'], + 'm68kmint' : ['m68kmint','13'], + 'milan' : ['m68kmint','13'], + 'mips' : ['mips','4'], + 'mipsel' : ['mipsel','11'], + 'pentium3' : ['pentium3','1'], + 'pentium4' : ['pentium4','1'], + 'ppc' : ['ppc','5'], + 'ppc32dy4' : ['ppc32dy4','5'], + 'ppc64' : ['ppc64','16'], + 'ppc64iseries' : ['ppc64iseries','16'], + 'ppc64pseries' : ['ppc64pseries','16'], + 'ppc8260' : ['ppc8260','5'], + 'ppc8560' : ['ppc8560','5'], + 'ppciseries' : ['ppciseries','5'], + 'ppcpseries' : ['ppcpseries','5'], + 'rs6000' : ['rs6000','8'], + 's390' : ['s390','14'], + 's390x' : ['s390x','15'], + 'sh' : ['sh','17'], + 'sh3' : ['sh3','17'], + 'sh4' : ['sh4','17'], + 'sh4a' : ['sh4a','17'], + 'sparc' : ['sparc','3'], + 'sparc64' : ['sparc64','2'], + 'sparc64v' : ['sparc64v','2'], + 'sparcv8' : ['sparcv8','3'], + 'sparcv9' : ['sparcv9','3'], + 'sparcv9v' : ['sparcv9v','3'], + 'sun4' : ['sparc','3'], + 'sun4c' : ['sparc','3'], + 'sun4d' : ['sparc','3'], + 'sun4m' : ['sparc','3'], + 'sun4u' : ['sparc64','2'], + 'x86_64' : ['x86_64','1'], + 'xtensa' : ['xtensa','18'], +} + +# End of rpmrc dictionaries (Marker, don't change or remove!) + +def defaultMachine(use_rpm_default=True): + """ Return the canonicalized machine name. """ + + if use_rpm_default: + try: + # This should be the most reliable way to get the default arch + rmachine = subprocess.check_output(['rpm', '--eval=%_target_cpu'], shell=False).rstrip() + rmachine = SCons.Util.to_str(rmachine) + except Exception as e: + # Something went wrong, try again by looking up platform.machine() + return defaultMachine(False) + else: + rmachine = platform.machine() + + # Try to lookup the string in the canon table + if rmachine in arch_canon: + rmachine = arch_canon[rmachine][0] + + return rmachine + +def defaultSystem(): + """ Return the canonicalized system name. """ + rsystem = platform.system() + + # Try to lookup the string in the canon tables + if rsystem in os_canon: + rsystem = os_canon[rsystem][0] + + return rsystem + +def defaultNames(): + """ Return the canonicalized machine and system name. """ + return defaultMachine(), defaultSystem() + +def updateRpmDicts(rpmrc, pyfile): + """ Read the given rpmrc file with RPM definitions and update the + info dictionaries in the file pyfile with it. + The arguments will usually be 'rpmrc.in' from a recent RPM source + tree, and 'rpmutils.py' referring to this script itself. + See also usage() below. + """ + try: + # Read old rpmutils.py file + with open(pyfile,"r") as f: + oldpy = f.readlines() + # Read current rpmrc.in file + with open(rpmrc,"r") as f: + rpm = f.readlines() + # Parse for data + data = {} + # Allowed section names that get parsed + sections = ['optflags', + 'arch_canon', + 'os_canon', + 'buildarchtranslate', + 'arch_compat', + 'os_compat', + 'buildarch_compat'] + for l in rpm: + l = l.rstrip('\n').replace(':',' ') + # Skip comments + if l.lstrip().startswith('#'): + continue + tokens = l.strip().split() + if len(tokens): + key = tokens[0] + if key in sections: + # Have we met this section before? + if tokens[0] not in data: + # No, so insert it + data[key] = {} + # Insert data + data[key][tokens[1]] = tokens[2:] + # Write new rpmutils.py file + with open(pyfile,"w") as out: + pm = 0 + for l in oldpy: + if pm: + if l.startswith('# End of rpmrc dictionaries'): + pm = 0 + out.write(l) + else: + out.write(l) + if l.startswith('# Start of rpmrc dictionaries'): + pm = 1 + # Write data sections to single dictionaries + for key, entries in data.items(): + out.write("%s = {\n" % key) + for arch in sorted(entries.keys()): + out.write(" '%s' : ['%s'],\n" % (arch, "','".join(entries[arch]))) + out.write("}\n\n") + except: + pass + +def usage(): + print("rpmutils.py rpmrc.in rpmutils.py") + +def main(): + import sys + + if len(sys.argv) < 3: + usage() + sys.exit(0) + updateRpmDicts(sys.argv[1], sys.argv[2]) + +if __name__ == "__main__": + main() diff --git a/scons/scons-local-4.5.1/SCons/Tool/sgiar.py b/scons/scons-local-4.5.1/SCons/Tool/sgiar.py new file mode 100644 index 000000000..54f8b7b67 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/sgiar.py @@ -0,0 +1,68 @@ +"""SCons.Tool.sgiar + +Tool-specific initialization for SGI ar (library archive). If CC +exists, static libraries should be built with it, so the prelinker has +a chance to resolve C++ template instantiations. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Defaults +import SCons.Tool +import SCons.Util + +def generate(env): + """Add Builders and construction variables for ar to an Environment.""" + SCons.Tool.createStaticLibBuilder(env) + + if env.Detect('CC'): + env['AR'] = 'CC' + env['ARFLAGS'] = SCons.Util.CLVar('-ar') + env['ARCOM'] = '$AR $ARFLAGS -o $TARGET $SOURCES' + else: + env['AR'] = 'ar' + env['ARFLAGS'] = SCons.Util.CLVar('r') + env['ARCOM'] = '$AR $ARFLAGS $TARGET $SOURCES' + + env['SHLINK'] = '$LINK' + env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared') + env['SHLINKCOM'] = '$SHLINK $SHLINKFLAGS -o $TARGET $SOURCES $_LIBDIRFLAGS $_LIBFLAGS' + env['LIBPREFIX'] = 'lib' + env['LIBSUFFIX'] = '.a' + +def exists(env): + return env.Detect('CC') or env.Detect('ar') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/sgic++.py b/scons/scons-local-4.5.1/SCons/Tool/sgic++.py new file mode 100644 index 000000000..63c66e26e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/sgic++.py @@ -0,0 +1,43 @@ +"""SCons.Tool.sgic++ + +Tool-specific initialization for MIPSpro C++ on SGI. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +#forward proxy to the preffered cxx version +from SCons.Tool.sgicxx import * + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/sgicc.py b/scons/scons-local-4.5.1/SCons/Tool/sgicc.py new file mode 100644 index 000000000..94a049769 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/sgicc.py @@ -0,0 +1,53 @@ +"""SCons.Tool.sgicc + +Tool-specific initialization for MIPSPro cc on SGI. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +from . import cc + +def generate(env): + """Add Builders and construction variables for gcc to an Environment.""" + cc.generate(env) + + env['CXX'] = 'CC' + env['SHOBJSUFFIX'] = '.o' + env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1 + +def exists(env): + return env.Detect('cc') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/sgicxx.py b/scons/scons-local-4.5.1/SCons/Tool/sgicxx.py new file mode 100644 index 000000000..48b04ea92 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/sgicxx.py @@ -0,0 +1,61 @@ +"""SCons.Tool.sgic++ + +Tool-specific initialization for MIPSpro C++ on SGI. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Util + +import SCons.Tool.cxx +cplusplus = SCons.Tool.cxx +#cplusplus = __import__('cxx', globals(), locals(), []) + + +def generate(env): + """Add Builders and construction variables for SGI MIPS C++ to an Environment.""" + + cplusplus.generate(env) + + env['CXX'] = 'CC' + env['CXXFLAGS'] = SCons.Util.CLVar('-LANG:std') + env['SHCXX'] = '$CXX' + env['SHOBJSUFFIX'] = '.o' + env['STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME'] = 1 + +def exists(env): + return env.Detect('CC') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/sgilink.py b/scons/scons-local-4.5.1/SCons/Tool/sgilink.py new file mode 100644 index 000000000..e92c7b991 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/sgilink.py @@ -0,0 +1,59 @@ +"""SCons.Tool.sgilink + +Tool-specific initialization for the SGI MIPSPro linker on SGI. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# 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. +# + + +import SCons.Util + +from . import link + +linkers = ['CC', 'cc'] + +def generate(env): + """Add Builders and construction variables for MIPSPro to an Environment.""" + link.generate(env) + + env['LINK'] = env.Detect(linkers) or 'cc' + env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -shared') + + # __RPATH is set to $_RPATH in the platform specification if that + # platform supports it. + env['RPATHPREFIX'] = '-rpath ' + env['RPATHSUFFIX'] = '' + env['_RPATH'] = '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}' + +def exists(env): + return env.Detect(linkers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/sunar.py b/scons/scons-local-4.5.1/SCons/Tool/sunar.py new file mode 100644 index 000000000..266e91493 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/sunar.py @@ -0,0 +1,64 @@ +"""SCons.Tool.sunar + +Tool-specific initialization for Solaris (Forte) ar (library archive). If CC +exists, static libraries should be built with it, so that template +instantiations can be resolved. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Defaults +import SCons.Tool +import SCons.Util + +def generate(env): + """Add Builders and construction variables for ar to an Environment.""" + SCons.Tool.createStaticLibBuilder(env) + + if env.Detect('CC'): + env['AR'] = 'CC' + env['ARFLAGS'] = SCons.Util.CLVar('-xar') + env['ARCOM'] = '$AR $ARFLAGS -o $TARGET $SOURCES' + else: + env['AR'] = 'ar' + env['ARFLAGS'] = SCons.Util.CLVar('r') + env['ARCOM'] = '$AR $ARFLAGS $TARGET $SOURCES' + + env['LIBPREFIX'] = 'lib' + env['LIBSUFFIX'] = '.a' + +def exists(env): + return env.Detect('CC') or env.Detect('ar') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/sunc++.py b/scons/scons-local-4.5.1/SCons/Tool/sunc++.py new file mode 100644 index 000000000..3304f8061 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/sunc++.py @@ -0,0 +1,45 @@ +"""SCons.Tool.sunc++ + +Tool-specific initialization for C++ on SunOS / Solaris. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + + +#forward proxy to the preffered cxx version +from SCons.Tool.suncxx import * + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/suncc.py b/scons/scons-local-4.5.1/SCons/Tool/suncc.py new file mode 100644 index 000000000..4651219bd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/suncc.py @@ -0,0 +1,58 @@ +"""SCons.Tool.suncc + +Tool-specific initialization for Sun Solaris (Forte) CC and cc. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Util + +from . import cc + +def generate(env): + """ + Add Builders and construction variables for Forte C and C++ compilers + to an Environment. + """ + cc.generate(env) + + env['CXX'] = 'CC' + env['SHCCFLAGS'] = SCons.Util.CLVar('$CCFLAGS -KPIC') + env['SHOBJPREFIX'] = 'so_' + env['SHOBJSUFFIX'] = '.o' + +def exists(env): + return env.Detect('CC') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/suncxx.py b/scons/scons-local-4.5.1/SCons/Tool/suncxx.py new file mode 100644 index 000000000..7c4b0941d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/suncxx.py @@ -0,0 +1,153 @@ +"""SCons.Tool.sunc++ + +Tool-specific initialization for C++ on SunOS / Solaris. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons + +import os +import re +import subprocess + +import SCons.Tool.cxx +cplusplus = SCons.Tool.cxx +# cplusplus = __import__('c++', globals(), locals(), []) + +package_info = {} + + +def get_package_info(package_name, pkginfo, pkgchk): + try: + return package_info[package_name] + except KeyError: + version = None + pathname = None + from subprocess import DEVNULL + + try: + with open('/var/sadm/install/contents', 'r', encoding='UTF-8') as f: + sadm_contents = f.read() + except EnvironmentError: + pass + else: + sadm_re = re.compile(r'^(\S*/bin/CC)(=\S*)? %s$' % package_name, re.M) + sadm_match = sadm_re.search(sadm_contents) + if sadm_match: + pathname = os.path.dirname(sadm_match.group(1)) + + try: + p = subprocess.Popen([pkginfo, '-l', package_name], + universal_newlines=True, + stdout=subprocess.PIPE, + stderr=DEVNULL) + except EnvironmentError: + pass + else: + pkginfo_contents = p.communicate()[0] + version_re = re.compile(r'^ *VERSION:\s*(.*)$', re.M) + version_match = version_re.search(pkginfo_contents) + if version_match: + version = version_match.group(1) + + if pathname is None: + try: + p = subprocess.Popen([pkgchk, '-l', package_name], + universal_newlines=True, + stdout=subprocess.PIPE, + stderr=DEVNULL) + except EnvironmentError: + pass + else: + pkgchk_contents = p.communicate()[0] + pathname_re = re.compile(r'^Pathname:\s*(.*/bin/CC)$', re.M) + pathname_match = pathname_re.search(pkgchk_contents) + if pathname_match: + pathname = os.path.dirname(pathname_match.group(1)) + + package_info[package_name] = (pathname, version) + return package_info[package_name] + + +# use the package installer tool "pkg" to figure out where cppc and what +# version of it is installed +def get_cppc(env): + cxx = env.subst('$CXX') + if cxx: + cppcPath = os.path.dirname(cxx) + else: + cppcPath = None + + cppcVersion = None + + pkginfo = env.subst('$PKGINFO') + pkgchk = env.subst('$PKGCHK') + + for package in ['SPROcpl']: + path, version = get_package_info(package, pkginfo, pkgchk) + if path and version: + cppcPath, cppcVersion = path, version + break + + return (cppcPath, 'CC', 'CC', cppcVersion) + + +def generate(env): + """Add Builders and construction variables for SunPRO C++.""" + path, cxx, shcxx, version = get_cppc(env) + if path: + cxx = os.path.join(path, cxx) + shcxx = os.path.join(path, shcxx) + + cplusplus.generate(env) + + env['CXX'] = cxx + env['SHCXX'] = shcxx + env['CXXVERSION'] = version + env['SHCXXFLAGS'] = SCons.Util.CLVar('$CXXFLAGS -KPIC') + env['SHOBJPREFIX'] = 'so_' + env['SHOBJSUFFIX'] = '.o' + + +def exists(env): + path, cxx, shcxx, version = get_cppc(env) + if path and cxx: + cppc = os.path.join(path, cxx) + if os.path.exists(cppc): + return cppc + return None + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/sunf77.py b/scons/scons-local-4.5.1/SCons/Tool/sunf77.py new file mode 100644 index 000000000..20d18938f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/sunf77.py @@ -0,0 +1,63 @@ +"""SCons.Tool.sunf77 + +Tool-specific initialization for sunf77, the Sun Studio F77 compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Util + +from .FortranCommon import add_all_to_env + +compilers = ['sunf77', 'f77'] + +def generate(env): + """Add Builders and construction variables for sunf77 to an Environment.""" + add_all_to_env(env) + + fcomp = env.Detect(compilers) or 'f77' + env['FORTRAN'] = fcomp + env['F77'] = fcomp + + env['SHFORTRAN'] = '$FORTRAN' + env['SHF77'] = '$F77' + + env['SHFORTRANFLAGS'] = SCons.Util.CLVar('$FORTRANFLAGS -KPIC') + env['SHF77FLAGS'] = SCons.Util.CLVar('$F77FLAGS -KPIC') + +def exists(env): + return env.Detect(compilers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/sunf90.py b/scons/scons-local-4.5.1/SCons/Tool/sunf90.py new file mode 100644 index 000000000..ce1697c34 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/sunf90.py @@ -0,0 +1,64 @@ +"""SCons.Tool.sunf90 + +Tool-specific initialization for sunf90, the Sun Studio F90 compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Util + +from .FortranCommon import add_all_to_env + +compilers = ['sunf90', 'f90'] + +def generate(env): + """Add Builders and construction variables for sun f90 compiler to an + Environment.""" + add_all_to_env(env) + + fcomp = env.Detect(compilers) or 'f90' + env['FORTRAN'] = fcomp + env['F90'] = fcomp + + env['SHFORTRAN'] = '$FORTRAN' + env['SHF90'] = '$F90' + + env['SHFORTRANFLAGS'] = SCons.Util.CLVar('$FORTRANFLAGS -KPIC') + env['SHF90FLAGS'] = SCons.Util.CLVar('$F90FLAGS -KPIC') + +def exists(env): + return env.Detect(compilers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/sunf95.py b/scons/scons-local-4.5.1/SCons/Tool/sunf95.py new file mode 100644 index 000000000..218569c0b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/sunf95.py @@ -0,0 +1,64 @@ +"""SCons.Tool.sunf95 + +Tool-specific initialization for sunf95, the Sun Studio F95 compiler. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Util + +from .FortranCommon import add_all_to_env + +compilers = ['sunf95', 'f95'] + +def generate(env): + """Add Builders and construction variables for sunf95 to an + Environment.""" + add_all_to_env(env) + + fcomp = env.Detect(compilers) or 'f95' + env['FORTRAN'] = fcomp + env['F95'] = fcomp + + env['SHFORTRAN'] = '$FORTRAN' + env['SHF95'] = '$F95' + + env['SHFORTRANFLAGS'] = SCons.Util.CLVar('$FORTRANFLAGS -KPIC') + env['SHF95FLAGS'] = SCons.Util.CLVar('$F95FLAGS -KPIC') + +def exists(env): + return env.Detect(compilers) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/sunlink.py b/scons/scons-local-4.5.1/SCons/Tool/sunlink.py new file mode 100644 index 000000000..b0c9816e6 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/sunlink.py @@ -0,0 +1,79 @@ +"""SCons.Tool.sunlink + +Tool-specific initialization for the Sun Solaris (Forte) linker. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# MIT License +# +# Copyright The SCons Foundation +# +# 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. +# + +import os.path + +import SCons.Util +from . import link + +ccLinker = None + +# search for the acc compiler and linker front end + +try: + dirs = os.listdir('/opt') +except (IOError, OSError): + # Not being able to read the directory because it doesn't exist + # (IOError) or isn't readable (OSError) is okay. + dirs = [] + +for d in dirs: + linker = '/opt/' + d + '/bin/CC' + if os.path.exists(linker): + ccLinker = linker + break + + +def generate(env): + """Add Builders and construction variables for Forte to an Environment.""" + link.generate(env) + + env['SHLINKFLAGS'] = SCons.Util.CLVar('$LINKFLAGS -G') + + env['RPATHPREFIX'] = '-R' + env['RPATHSUFFIX'] = '' + env['_RPATH'] = '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}' + + env['_SHLIBVERSIONFLAGS'] = '$SHLIBVERSIONFLAGS -h $_SHLIBSONAME' + env['_LDMODULEVERSIONFLAGS'] = '$LDMODULEVERSIONFLAGS -h $_LDMODULESONAME' + + +def exists(env): + return ccLinker + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/swig.py b/scons/scons-local-4.5.1/SCons/Tool/swig.py new file mode 100644 index 000000000..ff0c80d44 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/swig.py @@ -0,0 +1,219 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for swig. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +import os.path +import re +import subprocess +import sys + +import SCons.Action +import SCons.Defaults +import SCons.Node +import SCons.Tool +import SCons.Util +import SCons.Warnings + +verbose = False + +swigs = [ 'swig', 'swig3.0', 'swig2.0' ] + +SwigAction = SCons.Action.Action('$SWIGCOM', '$SWIGCOMSTR') + +def swigSuffixEmitter(env, source): + if '-c++' in SCons.Util.CLVar(env.subst("$SWIGFLAGS", source=source)): + return '$SWIGCXXFILESUFFIX' + else: + return '$SWIGCFILESUFFIX' + +# Match '%module test', as well as '%module(directors="1") test' +# Also allow for test to be quoted (SWIG permits double quotes, but not single) +# Also allow for the line to have spaces after test if not quoted +_reModule = re.compile(r'%module(\s*\(.*\))?\s+("?)(\S+)\2') + +def _find_modules(src): + """Find all modules referenced by %module lines in `src`, a SWIG .i file. + Returns a list of all modules, and a flag set if SWIG directors have + been requested (SWIG will generate an additional header file in this + case.)""" + directors = 0 + mnames = [] + try: + with open(src) as f: + data = f.read() + matches = _reModule.findall(data) + except IOError: + # If the file's not yet generated, guess the module name from the file stem + matches = [] + mnames.append(os.path.splitext(os.path.basename(src))[0]) + + for m in matches: + mnames.append(m[2]) + directors = directors or 'directors' in m[0] + return mnames, directors + +def _add_director_header_targets(target, env): + # Directors only work with C++ code, not C + suffix = env.subst(env['SWIGCXXFILESUFFIX']) + # For each file ending in SWIGCXXFILESUFFIX, add a new target director + # header by replacing the ending with SWIGDIRECTORSUFFIX. + for x in target[:]: + n = x.name + d = x.dir + if n[-len(suffix):] == suffix: + target.append(d.File(n[:-len(suffix)] + env['SWIGDIRECTORSUFFIX'])) + +def _swigEmitter(target, source, env): + swigflags = env.subst("$SWIGFLAGS", target=target, source=source) + flags = SCons.Util.CLVar(swigflags) + for src in source: + src = str(src.rfile()) + mnames = None + if "-python" in flags and "-noproxy" not in flags: + if mnames is None: + mnames, directors = _find_modules(src) + if directors: + _add_director_header_targets(target, env) + python_files = [m + ".py" for m in mnames] + outdir = env.subst('$SWIGOUTDIR', target=target, source=source) + # .py files should be generated in SWIGOUTDIR if specified, + # otherwise in the same directory as the target + if outdir: + python_files = [env.fs.File(os.path.join(outdir, j)) for j in python_files] + else: + python_files = [target[0].dir.File(m) for m in python_files] + target.extend(python_files) + if "-java" in flags: + if mnames is None: + mnames, directors = _find_modules(src) + if directors: + _add_director_header_targets(target, env) + java_files = [[m + ".java", m + "JNI.java"] for m in mnames] + java_files = SCons.Util.flatten(java_files) + outdir = env.subst('$SWIGOUTDIR', target=target, source=source) + if outdir: + java_files = [os.path.join(outdir, j) for j in java_files] + java_files = list(map(env.fs.File, java_files)) + def t_from_s(t, p, s, x): + return t.dir + tsm = SCons.Node._target_from_source_map + tkey = len(tsm) + tsm[tkey] = t_from_s + for jf in java_files: + jf._func_target_from_source = tkey + target.extend(java_files) + return (target, source) + +def _get_swig_version(env, swig): + """Run the SWIG command line tool to get and return the version number""" + version = None + swig = env.subst(swig) + if not swig: + return version + pipe = SCons.Action._subproc(env, SCons.Util.CLVar(swig) + ['-version'], + stdin = 'devnull', + stderr = 'devnull', + stdout = subprocess.PIPE) + if pipe.wait() != 0: + return version + + # MAYBE: out = SCons.Util.to_str (pipe.stdout.read()) + with pipe.stdout: + out = SCons.Util.to_str(pipe.stdout.read()) + + match = re.search(r'SWIG Version\s+(\S+).*', out, re.MULTILINE) + if match: + version = match.group(1) + if verbose: + print("Version is: %s" % version) + else: + if verbose: + print("Unable to detect version: [%s]" % out) + + return version + +def generate(env): + """Add Builders and construction variables for swig to an Environment.""" + c_file, cxx_file = SCons.Tool.createCFileBuilders(env) + + c_file.suffix['.i'] = swigSuffixEmitter + cxx_file.suffix['.i'] = swigSuffixEmitter + + c_file.add_action('.i', SwigAction) + c_file.add_emitter('.i', _swigEmitter) + cxx_file.add_action('.i', SwigAction) + cxx_file.add_emitter('.i', _swigEmitter) + + java_file = SCons.Tool.CreateJavaFileBuilder(env) + + java_file.suffix['.i'] = swigSuffixEmitter + + java_file.add_action('.i', SwigAction) + java_file.add_emitter('.i', _swigEmitter) + + from SCons.Platform.mingw import MINGW_DEFAULT_PATHS + from SCons.Platform.cygwin import CYGWIN_DEFAULT_PATHS + from SCons.Platform.win32 import CHOCO_DEFAULT_PATH + + if sys.platform == 'win32': + swig = SCons.Tool.find_program_path(env, 'swig', default_paths=MINGW_DEFAULT_PATHS + CYGWIN_DEFAULT_PATHS + CHOCO_DEFAULT_PATH) + if swig: + swig_bin_dir = os.path.dirname(swig) + env.AppendENVPath('PATH', swig_bin_dir) + else: + SCons.Warnings.warn( + SCons.Warnings.SConsWarning, + 'swig tool requested, but binary not found in ENV PATH' + ) + + if 'SWIG' not in env: + env['SWIG'] = env.Detect(swigs) or swigs[0] + + env['SWIGVERSION'] = _get_swig_version(env, env['SWIG']) + env['SWIGFLAGS'] = SCons.Util.CLVar('') + env['SWIGDIRECTORSUFFIX'] = '_wrap.h' + env['SWIGCFILESUFFIX'] = '_wrap$CFILESUFFIX' + env['SWIGCXXFILESUFFIX'] = '_wrap$CXXFILESUFFIX' + env['_SWIGOUTDIR'] = r'${"-outdir \"%s\"" % SWIGOUTDIR}' + env['SWIGPATH'] = [] + env['SWIGINCPREFIX'] = '-I' + env['SWIGINCSUFFIX'] = '' + env['_SWIGINCFLAGS'] = '${_concat(SWIGINCPREFIX, SWIGPATH, SWIGINCSUFFIX,' \ + '__env__, RDirs, TARGET, SOURCE, affect_signature=False)}' + env['SWIGCOM'] = '$SWIG -o $TARGET ${_SWIGOUTDIR} ${_SWIGINCFLAGS} $SWIGFLAGS $SOURCES' + +def exists(env): + swig = env.get('SWIG') or env.Detect(['swig']) + return swig + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/tar.py b/scons/scons-local-4.5.1/SCons/Tool/tar.py new file mode 100644 index 000000000..25937811c --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/tar.py @@ -0,0 +1,73 @@ +"""SCons.Tool.tar + +Tool-specific initialization for tar. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Action +import SCons.Builder +import SCons.Defaults +import SCons.Node.FS +import SCons.Util + +tars = ['tar', 'gtar'] + +TarAction = SCons.Action.Action('$TARCOM', '$TARCOMSTR') + +TarBuilder = SCons.Builder.Builder(action = TarAction, + source_factory = SCons.Node.FS.Entry, + source_scanner = SCons.Defaults.DirScanner, + suffix = '$TARSUFFIX', + multi = 1) + + +def generate(env): + """Add Builders and construction variables for tar to an Environment.""" + try: + bld = env['BUILDERS']['Tar'] + except KeyError: + bld = TarBuilder + env['BUILDERS']['Tar'] = bld + + env['TAR'] = env.Detect(tars) or 'gtar' + env['TARFLAGS'] = SCons.Util.CLVar('-c') + env['TARCOM'] = '$TAR $TARFLAGS -f $TARGET $SOURCES' + env['TARSUFFIX'] = '.tar' + +def exists(env): + return env.Detect(tars) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/tex.py b/scons/scons-local-4.5.1/SCons/Tool/tex.py new file mode 100644 index 000000000..0a688f58a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/tex.py @@ -0,0 +1,998 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" Tool-specific initialization for TeX. + +Generates .dvi files from .tex files + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +import os.path +import re +import shutil +import sys +import platform +import glob + +import SCons.Action +import SCons.Node +import SCons.Node.FS +import SCons.Util +import SCons.Scanner.LaTeX + +Verbose = False + +must_rerun_latex = True + +# these are files that just need to be checked for changes and then rerun latex +check_suffixes = ['.toc', '.lof', '.lot', '.out', '.nav', '.snm'] + +# these are files that require bibtex or makeindex to be run when they change +all_suffixes = check_suffixes + ['.bbl', '.idx', '.nlo', '.glo', '.acn', '.bcf'] + +# +# regular expressions used to search for Latex features +# or outputs that require rerunning latex +# +# search for all .aux files opened by latex (recorded in the .fls file) +openout_aux_re = re.compile(r"OUTPUT *(.*\.aux)") + +# search for all .bcf files opened by latex (recorded in the .fls file) +# for use by biber +openout_bcf_re = re.compile(r"OUTPUT *(.*\.bcf)") + +#printindex_re = re.compile(r"^[^%]*\\printindex", re.MULTILINE) +#printnomenclature_re = re.compile(r"^[^%]*\\printnomenclature", re.MULTILINE) +#printglossary_re = re.compile(r"^[^%]*\\printglossary", re.MULTILINE) + +# search to find rerun warnings +warning_rerun_str = r'(^LaTeX Warning:.*Rerun)|(^Package \w+ Warning:.*Rerun)' +warning_rerun_re = re.compile(warning_rerun_str, re.MULTILINE) + +# search to find citation rerun warnings +rerun_citations_str = r"^LaTeX Warning:.*\n.*Rerun to get citations correct" +rerun_citations_re = re.compile(rerun_citations_str, re.MULTILINE) + +# search to find undefined references or citations warnings +undefined_references_str = r'(^LaTeX Warning:.*undefined references)|(^Package \w+ Warning:.*undefined citations)' +undefined_references_re = re.compile(undefined_references_str, re.MULTILINE) + +# used by the emitter +auxfile_re = re.compile(r".", re.MULTILINE) +tableofcontents_re = re.compile(r"^[^%\n]*\\tableofcontents", re.MULTILINE) +makeindex_re = re.compile(r"^[^%\n]*\\makeindex", re.MULTILINE) +bibliography_re = re.compile(r"^[^%\n]*\\bibliography", re.MULTILINE) +bibunit_re = re.compile(r"^[^%\n]*\\begin\{bibunit\}", re.MULTILINE) +multibib_re = re.compile(r"^[^%\n]*\\newcites\{([^\}]*)\}", re.MULTILINE) +addbibresource_re = re.compile(r"^[^%\n]*\\(addbibresource|addglobalbib|addsectionbib)", re.MULTILINE) +listoffigures_re = re.compile(r"^[^%\n]*\\listoffigures", re.MULTILINE) +listoftables_re = re.compile(r"^[^%\n]*\\listoftables", re.MULTILINE) +hyperref_re = re.compile(r"^[^%\n]*\\usepackage.*\{hyperref\}", re.MULTILINE) +makenomenclature_re = re.compile(r"^[^%\n]*\\makenomenclature", re.MULTILINE) +makeglossary_re = re.compile(r"^[^%\n]*\\makeglossary", re.MULTILINE) +makeglossaries_re = re.compile(r"^[^%\n]*\\makeglossaries", re.MULTILINE) +makeacronyms_re = re.compile(r"^[^%\n]*\\makeglossaries", re.MULTILINE) +beamer_re = re.compile(r"^[^%\n]*\\documentclass\{beamer\}", re.MULTILINE) +regex = r'^[^%\n]*\\newglossary\s*\[([^\]]+)\]?\s*\{([^}]*)\}\s*\{([^}]*)\}\s*\{([^}]*)\}\s*\{([^}]*)\}' +newglossary_re = re.compile(regex, re.MULTILINE) +biblatex_re = re.compile(r"^[^%\n]*\\usepackage.*\{biblatex\}", re.MULTILINE) + +newglossary_suffix = [] + +# search to find all files included by Latex +include_re = re.compile(r'^[^%\n]*\\(?:include|input){([^}]*)}', re.MULTILINE) +includeOnly_re = re.compile(r'^[^%\n]*\\(?:include){([^}]*)}', re.MULTILINE) + +# search to find all graphics files included by Latex +includegraphics_re = re.compile(r'^[^%\n]*\\(?:includegraphics(?:\[[^\]]+\])?){([^}]*)}', re.MULTILINE) + +# search to find all files opened by Latex (recorded in .log file) +openout_re = re.compile(r"OUTPUT *(.*)") + +# list of graphics file extensions for TeX and LaTeX +TexGraphics = SCons.Scanner.LaTeX.TexGraphics +LatexGraphics = SCons.Scanner.LaTeX.LatexGraphics + +# An Action sufficient to build any generic tex file. +TeXAction = None + +# An action to build a latex file. This action might be needed more +# than once if we are dealing with labels and bibtex. +LaTeXAction = None + +# An action to run BibTeX on a file. +BibTeXAction = None + +# An action to run Biber on a file. +BiberAction = None + +# An action to run MakeIndex on a file. +MakeIndexAction = None + +# An action to run MakeIndex (for nomencl) on a file. +MakeNclAction = None + +# An action to run MakeIndex (for glossary) on a file. +MakeGlossaryAction = None + +# An action to run MakeIndex (for acronyms) on a file. +MakeAcronymsAction = None + +# An action to run MakeIndex (for newglossary commands) on a file. +MakeNewGlossaryAction = None + +# Used as a return value of modify_env_var if the variable is not set. +_null = SCons.Scanner.LaTeX._null + +modify_env_var = SCons.Scanner.LaTeX.modify_env_var + +def check_file_error_message(utility, filename='log'): + msg = '%s returned an error, check the %s file\n' % (utility, filename) + sys.stdout.write(msg) + +def FindFile(name,suffixes,paths,env,requireExt=False): + if requireExt: + name,ext = SCons.Util.splitext(name) + # if the user gave an extension use it. + if ext: + name = name + ext + if Verbose: + print(" searching for '%s' with extensions: " % name,suffixes) + + for path in paths: + testName = os.path.join(path,name) + if Verbose: + print(" look for '%s'" % testName) + if os.path.isfile(testName): + if Verbose: + print(" found '%s'" % testName) + return env.fs.File(testName) + else: + name_ext = SCons.Util.splitext(testName)[1] + if name_ext: + continue + + # if no suffix try adding those passed in + for suffix in suffixes: + testNameExt = testName + suffix + if Verbose: + print(" look for '%s'" % testNameExt) + + if os.path.isfile(testNameExt): + if Verbose: + print(" found '%s'" % testNameExt) + return env.fs.File(testNameExt) + if Verbose: + print(" did not find '%s'" % name) + return None + +def InternalLaTeXAuxAction(XXXLaTeXAction, target = None, source= None, env=None): + """A builder for LaTeX files that checks the output in the aux file + and decides how many times to use LaTeXAction, and BibTeXAction.""" + + global must_rerun_latex + + # This routine is called with two actions. In this file for DVI builds + # with LaTeXAction and from the pdflatex.py with PDFLaTeXAction + # set this up now for the case where the user requests a different extension + # for the target filename + if XXXLaTeXAction == LaTeXAction: + callerSuffix = ".dvi" + else: + callerSuffix = env['PDFSUFFIX'] + + basename = SCons.Util.splitext(str(source[0]))[0] + basedir = os.path.split(str(source[0]))[0] + basefile = os.path.split(str(basename))[1] + abspath = os.path.abspath(basedir) + + targetext = os.path.splitext(str(target[0]))[1] + targetdir = os.path.split(str(target[0]))[0] + + saved_env = {} + for var in SCons.Scanner.LaTeX.LaTeX.env_variables: + saved_env[var] = modify_env_var(env, var, abspath) + + # Create base file names with the target directory since the auxiliary files + # will be made there. That's because the *COM variables have the cd + # command in the prolog. We check + # for the existence of files before opening them--even ones like the + # aux file that TeX always creates--to make it possible to write tests + # with stubs that don't necessarily generate all of the same files. + + targetbase = os.path.join(targetdir, basefile) + + # if there is a \makeindex there will be a .idx and thus + # we have to run makeindex at least once to keep the build + # happy even if there is no index. + # Same for glossaries, nomenclature, and acronyms + src_content = source[0].get_text_contents() + run_makeindex = makeindex_re.search(src_content) and not os.path.isfile(targetbase + '.idx') + run_nomenclature = makenomenclature_re.search(src_content) and not os.path.isfile(targetbase + '.nlo') + run_glossary = makeglossary_re.search(src_content) and not os.path.isfile(targetbase + '.glo') + run_glossaries = makeglossaries_re.search(src_content) and not os.path.isfile(targetbase + '.glo') + run_acronyms = makeacronyms_re.search(src_content) and not os.path.isfile(targetbase + '.acn') + + saved_hashes = {} + suffix_nodes = {} + + + for suffix in all_suffixes+sum(newglossary_suffix, []): + theNode = env.fs.File(targetbase + suffix) + suffix_nodes[suffix] = theNode + saved_hashes[suffix] = theNode.get_csig() + + if Verbose: + print("hashes: ",saved_hashes) + + must_rerun_latex = True + + # .aux files already processed by BibTex + already_bibtexed = [] + + def check_content_hash(filenode, suffix): + """ + Routine to update content hash and compare + """ + global must_rerun_latex + # two calls to clear old csig + filenode.clear_memoized_values() + filenode.ninfo = filenode.new_ninfo() + new_md5 = filenode.get_csig() + + if saved_hashes[suffix] == new_md5: + if Verbose: + print("file %s not changed" % (targetbase+suffix)) + return False # unchanged + saved_hashes[suffix] = new_md5 + must_rerun_latex = True + if Verbose: + print("file %s changed, rerunning Latex, new hash = " % (targetbase+suffix), new_md5) + return True # changed + + # generate the file name that latex will generate + resultfilename = targetbase + callerSuffix + + count = 0 + + while must_rerun_latex and count < int(env.subst('$LATEXRETRIES')): + result = XXXLaTeXAction(target, source, env) + if result != 0: + return result + + count = count + 1 + + must_rerun_latex = False + # Decide if various things need to be run, or run again. + + # Read the log file to find warnings/errors + logfilename = targetbase + '.log' + logContent = '' + if os.path.isfile(logfilename): + with open(logfilename, "rb") as f: + logContent = f.read().decode(errors='replace') + + # Read the fls file to find all .aux files + flsfilename = targetbase + '.fls' + flsContent = '' + auxfiles = [] + if os.path.isfile(flsfilename): + with open(flsfilename, "r") as f: + flsContent = f.read() + auxfiles = openout_aux_re.findall(flsContent) + # remove duplicates + dups = {} + for x in auxfiles: + dups[x] = 1 + auxfiles = list(dups.keys()) + + bcffiles = [] + if os.path.isfile(flsfilename): + with open(flsfilename, "r") as f: + flsContent = f.read() + bcffiles = openout_bcf_re.findall(flsContent) + # remove duplicates + dups = {} + for x in bcffiles: + dups[x] = 1 + bcffiles = list(dups.keys()) + + if Verbose: + print("auxfiles ",auxfiles) + print("bcffiles ",bcffiles) + + # Now decide if bibtex will need to be run. + # The information that bibtex reads from the .aux file is + # pass-independent. If we find (below) that the .bbl file is unchanged, + # then the last latex saw a correct bibliography. + # Therefore only do this once + # Go through all .aux files and remember the files already done. + for auxfilename in auxfiles: + if auxfilename not in already_bibtexed: + already_bibtexed.append(auxfilename) + target_aux = os.path.join(targetdir, auxfilename) + if os.path.isfile(target_aux): + with open(target_aux, "r") as f: + content = f.read() + if content.find("bibdata") != -1: + if Verbose: + print("Need to run bibtex on ",auxfilename) + bibfile = env.fs.File(SCons.Util.splitext(target_aux)[0]) + result = BibTeXAction(bibfile, bibfile, env) + if result != 0: + check_file_error_message(env['BIBTEX'], 'blg') + check_content_hash(suffix_nodes[".bbl"], ".bbl") + + # Now decide if biber will need to be run. + # When the backend for biblatex is biber (by choice or default) the + # citation information is put in the .bcf file. + # The information that biber reads from the .bcf file is + # pass-independent. If we find (below) that the .bbl file is unchanged, + # then the last latex saw a correct bibliography. + # Therefore only do this once + # Go through all .bcf files and remember the files already done. + for bcffilename in bcffiles: + if bcffilename not in already_bibtexed: + already_bibtexed.append(bcffilename) + target_bcf = os.path.join(targetdir, bcffilename) + if os.path.isfile(target_bcf): + with open(target_bcf, "r") as f: + content = f.read() + if content.find("bibdata") != -1: + if Verbose: + print("Need to run biber on ",bcffilename) + bibfile = env.fs.File(SCons.Util.splitext(target_bcf)[0]) + result = BiberAction(bibfile, bibfile, env) + if result != 0: + check_file_error_message(env['BIBER'], 'blg') + check_content_hash(suffix_nodes[".bbl"], ".bbl") + + # Now decide if latex will need to be run again due to index. + if check_content_hash(suffix_nodes['.idx'], '.idx') or (count == 1 and run_makeindex): + # We must run makeindex + if Verbose: + print("Need to run makeindex") + idxfile = suffix_nodes['.idx'] + result = MakeIndexAction(idxfile, idxfile, env) + if result != 0: + check_file_error_message(env['MAKEINDEX'], 'ilg') + return result + + # TO-DO: need to add a way for the user to extend this list for whatever + # auxiliary files they create in other (or their own) packages + # Harder is case is where an action needs to be called -- that should be rare (I hope?) + + for index in check_suffixes: + check_content_hash(suffix_nodes[index], index) + + # Now decide if latex will need to be run again due to nomenclature. + if check_content_hash(suffix_nodes['.nlo'], '.nlo') or (count == 1 and run_nomenclature): + # We must run makeindex + if Verbose: + print("Need to run makeindex for nomenclature") + nclfile = suffix_nodes['.nlo'] + result = MakeNclAction(nclfile, nclfile, env) + if result != 0: + check_file_error_message('%s (nomenclature)' % env['MAKENCL'], + 'nlg') + #return result + + # Now decide if latex will need to be run again due to glossary. + if check_content_hash(suffix_nodes['.glo'], '.glo') or (count == 1 and run_glossaries) or (count == 1 and run_glossary): + # We must run makeindex + if Verbose: + print("Need to run makeindex for glossary") + glofile = suffix_nodes['.glo'] + result = MakeGlossaryAction(glofile, glofile, env) + if result != 0: + check_file_error_message('%s (glossary)' % env['MAKEGLOSSARY'], + 'glg') + #return result + + # Now decide if latex will need to be run again due to acronyms. + if check_content_hash(suffix_nodes['.acn'], '.acn') or (count == 1 and run_acronyms): + # We must run makeindex + if Verbose: + print("Need to run makeindex for acronyms") + acrfile = suffix_nodes['.acn'] + result = MakeAcronymsAction(acrfile, acrfile, env) + if result != 0: + check_file_error_message('%s (acronyms)' % env['MAKEACRONYMS'], + 'alg') + return result + + # Now decide if latex will need to be run again due to newglossary command. + for ng in newglossary_suffix: + if check_content_hash(suffix_nodes[ng[2]], ng[2]) or (count == 1): + # We must run makeindex + if Verbose: + print("Need to run makeindex for newglossary") + newglfile = suffix_nodes[ng[2]] + MakeNewGlossaryAction = SCons.Action.Action( + "$MAKENEWGLOSSARYCOM ${SOURCE.filebase}%s -s ${SOURCE.filebase}.ist -t ${SOURCE.filebase}%s -o ${SOURCE.filebase}%s" + % (ng[2], ng[0], ng[1]), + "$MAKENEWGLOSSARYCOMSTR", + ) + + result = MakeNewGlossaryAction(newglfile, newglfile, env) + if result != 0: + check_file_error_message( + '%s (newglossary)' % env['MAKENEWGLOSSARY'], ng[0] + ) + return result + + # Now decide if latex needs to be run yet again to resolve warnings. + if warning_rerun_re.search(logContent): + must_rerun_latex = True + if Verbose: + print("rerun Latex due to latex or package rerun warning") + + if rerun_citations_re.search(logContent): + must_rerun_latex = True + if Verbose: + print("rerun Latex due to 'Rerun to get citations correct' warning") + + if undefined_references_re.search(logContent): + must_rerun_latex = True + if Verbose: + print("rerun Latex due to undefined references or citations") + + if count >= int(env.subst('$LATEXRETRIES')) and must_rerun_latex: + print("reached max number of retries on Latex ,",int(env.subst('$LATEXRETRIES'))) +# end of while loop + + # rename Latex's output to what the target name is + if not (str(target[0]) == resultfilename and os.path.isfile(resultfilename)): + if os.path.isfile(resultfilename): + print("move %s to %s" % (resultfilename, str(target[0]), )) + shutil.move(resultfilename,str(target[0])) + + # Original comment (when TEXPICTS was not restored): + # The TEXPICTS environment variable is needed by a dvi -> pdf step + # later on Mac OSX so leave it + # + # It is also used when searching for pictures (implicit dependencies). + # Why not set the variable again in the respective builder instead + # of leaving local modifications in the environment? What if multiple + # latex builds in different directories need different TEXPICTS? + for var in SCons.Scanner.LaTeX.LaTeX.env_variables: + if var == 'TEXPICTS': + continue + if saved_env[var] is _null: + try: + del env['ENV'][var] + except KeyError: + pass # was never set + else: + env['ENV'][var] = saved_env[var] + + return result + +def LaTeXAuxAction(target=None, source=None, env=None): + result = InternalLaTeXAuxAction(LaTeXAction, target, source, env) + return result + + +LaTeX_re = re.compile("\\\\document(style|class)") + + +def is_LaTeX(flist, env, abspath) -> bool: + """Scan a file list to decide if it's TeX- or LaTeX-flavored.""" + + # We need to scan files that are included in case the + # \documentclass command is in them. + + # get path list from both env['TEXINPUTS'] and env['ENV']['TEXINPUTS'] + savedpath = modify_env_var(env, "TEXINPUTS", abspath) + paths = env["ENV"]["TEXINPUTS"] + if SCons.Util.is_List(paths): + pass + else: + # Split at os.pathsep to convert into absolute path + paths = paths.split(os.pathsep) + + # now that we have the path list restore the env + if savedpath is _null: + try: + del env["ENV"]["TEXINPUTS"] + except KeyError: + pass # was never set + else: + env["ENV"]["TEXINPUTS"] = savedpath + if Verbose: + print("is_LaTeX search path ", paths) + print("files to search: ", flist) + + # Now that we have the search path and file list, check each one + file_test = False + for f in flist: + if Verbose: + print(f" checking for Latex source {f}") + + content = f.get_text_contents() + if LaTeX_re.search(content): + if Verbose: + print(f"file {f} is a LaTeX file") + return True + if Verbose: + print(f"file {f} is not a LaTeX file") + + # now find included files + inc_files = [] + inc_files.extend(include_re.findall(content)) + if Verbose: + print(f"files included by '{f}': ", inc_files) + # inc_files is list of file names as given. need to find them + # using TEXINPUTS paths. + + # search the included files + for src in inc_files: + srcNode = FindFile( + src, [".tex", ".ltx", ".latex"], paths, env, requireExt=False + ) + # make this a list since is_LaTeX takes a list. + fileList = [srcNode] + if Verbose: + print("FindFile found ", srcNode) + if srcNode is not None: + file_test = is_LaTeX(fileList, env, abspath) + + # return on first file that finds latex is needed. + if file_test: + return True + + if Verbose: + print(f" done scanning {f}") + + return False + + +def TeXLaTeXFunction(target = None, source= None, env=None): + """A builder for TeX and LaTeX that scans the source file to + decide the "flavor" of the source and then executes the appropriate + program.""" + + # find these paths for use in is_LaTeX to search for included files + basedir = os.path.split(str(source[0]))[0] + abspath = os.path.abspath(basedir) + + if is_LaTeX(source,env,abspath): + result = LaTeXAuxAction(target,source,env) + if result != 0: + check_file_error_message(env['LATEX']) + else: + result = TeXAction(target,source,env) + if result != 0: + check_file_error_message(env['TEX']) + return result + +def TeXLaTeXStrFunction(target = None, source= None, env=None): + """A strfunction for TeX and LaTeX that scans the source file to + decide the "flavor" of the source and then returns the appropriate + command string.""" + if env.GetOption("no_exec"): + + # find these paths for use in is_LaTeX to search for included files + basedir = os.path.split(str(source[0]))[0] + abspath = os.path.abspath(basedir) + + if is_LaTeX(source,env,abspath): + result = env.subst('$LATEXCOM',0,target,source)+" ..." + else: + result = env.subst("$TEXCOM",0,target,source)+" ..." + else: + result = '' + return result + +def tex_eps_emitter(target, source, env): + """An emitter for TeX and LaTeX sources when + executing tex or latex. It will accept .ps and .eps + graphics files + """ + (target, source) = tex_emitter_core(target, source, env, TexGraphics) + + return (target, source) + +def tex_pdf_emitter(target, source, env): + """An emitter for TeX and LaTeX sources when + executing pdftex or pdflatex. It will accept graphics + files of types .pdf, .jpg, .png, .gif, and .tif + """ + (target, source) = tex_emitter_core(target, source, env, LatexGraphics) + + return (target, source) + +def ScanFiles(theFile, target, paths, file_tests, file_tests_search, env, graphics_extensions, targetdir, aux_files): + """ For theFile (a Node) update any file_tests and search for graphics files + then find all included files and call ScanFiles recursively for each of them""" + + content = theFile.get_text_contents() + if Verbose: + print(" scanning ",str(theFile)) + + for i in range(len(file_tests_search)): + if file_tests[i][0] is None: + if Verbose: + print("scan i ",i," files_tests[i] ",file_tests[i], file_tests[i][1]) + file_tests[i][0] = file_tests_search[i].search(content) + if Verbose and file_tests[i][0]: + print(" found match for ",file_tests[i][1][-1]) + # for newglossary insert the suffixes in file_tests[i] + if file_tests[i][0] and file_tests[i][1][-1] == 'newglossary': + findresult = file_tests_search[i].findall(content) + for l in range(len(findresult)) : + (file_tests[i][1]).insert(0,'.'+findresult[l][3]) + (file_tests[i][1]).insert(0,'.'+findresult[l][2]) + (file_tests[i][1]).insert(0,'.'+findresult[l][0]) + suffix_list = ['.'+findresult[l][0],'.'+findresult[l][2],'.'+findresult[l][3] ] + newglossary_suffix.append(suffix_list) + if Verbose: + print(" new suffixes for newglossary ",newglossary_suffix) + + + incResult = includeOnly_re.search(content) + if incResult: + aux_files.append(os.path.join(targetdir, incResult.group(1))) + if Verbose: + print(r"\include file names : ", aux_files) + # recursively call this on each of the included files + inc_files = [ ] + inc_files.extend( include_re.findall(content) ) + if Verbose: + print("files included by '%s': "%str(theFile),inc_files) + # inc_files is list of file names as given. need to find them + # using TEXINPUTS paths. + + for src in inc_files: + srcNode = FindFile(src,['.tex','.ltx','.latex'],paths,env,requireExt=False) + if srcNode is not None: + file_tests = ScanFiles(srcNode, target, paths, file_tests, file_tests_search, env, graphics_extensions, targetdir, aux_files) + if Verbose: + print(" done scanning ",str(theFile)) + return file_tests + +def tex_emitter_core(target, source, env, graphics_extensions): + """An emitter for TeX and LaTeX sources. + For LaTeX sources we try and find the common created files that + are needed on subsequent runs of latex to finish tables of contents, + bibliographies, indices, lists of figures, and hyperlink references. + """ + basename = SCons.Util.splitext(str(source[0]))[0] + basefile = os.path.split(str(basename))[1] + targetdir = os.path.split(str(target[0]))[0] + targetbase = os.path.join(targetdir, basefile) + + basedir = os.path.split(str(source[0]))[0] + abspath = os.path.abspath(basedir) + target[0].attributes.path = abspath + + # + # file names we will make use of in searching the sources and log file + # + emit_suffixes = ['.aux', '.log', '.ilg', '.blg', '.nls', '.nlg', '.gls', '.glg', '.alg'] + all_suffixes + auxfilename = targetbase + '.aux' + logfilename = targetbase + '.log' + flsfilename = targetbase + '.fls' + syncfilename = targetbase + '.synctex.gz' + + env.SideEffect(auxfilename,target[0]) + env.SideEffect(logfilename,target[0]) + env.SideEffect(flsfilename,target[0]) + env.SideEffect(syncfilename,target[0]) + if Verbose: + print("side effect :",auxfilename,logfilename,flsfilename,syncfilename) + env.Clean(target[0],auxfilename) + env.Clean(target[0],logfilename) + env.Clean(target[0],flsfilename) + env.Clean(target[0],syncfilename) + + content = source[0].get_text_contents() + + # set up list with the regular expressions + # we use to find features used + file_tests_search = [auxfile_re, + makeindex_re, + bibliography_re, + bibunit_re, + multibib_re, + addbibresource_re, + tableofcontents_re, + listoffigures_re, + listoftables_re, + hyperref_re, + makenomenclature_re, + makeglossary_re, + makeglossaries_re, + makeacronyms_re, + beamer_re, + newglossary_re, + biblatex_re ] + # set up list with the file suffixes that need emitting + # when a feature is found + file_tests_suff = [['.aux','aux_file'], + ['.idx', '.ind', '.ilg','makeindex'], + ['.bbl', '.blg','bibliography'], + ['.bbl', '.blg','bibunit'], + ['.bbl', '.blg','multibib'], + ['.bbl', '.blg','.bcf','addbibresource'], + ['.toc','contents'], + ['.lof','figures'], + ['.lot','tables'], + ['.out','hyperref'], + ['.nlo', '.nls', '.nlg','nomenclature'], + ['.glo', '.gls', '.glg','glossary'], + ['.glo', '.gls', '.glg','glossaries'], + ['.acn', '.acr', '.alg','acronyms'], + ['.nav', '.snm', '.out', '.toc','beamer'], + ['newglossary',], + ['.bcf', '.blg','biblatex'] ] + # for newglossary the suffixes are added as we find the command + # build the list of lists + file_tests = [] + for i in range(len(file_tests_search)): + file_tests.append( [None, file_tests_suff[i]] ) + + # TO-DO: need to add a way for the user to extend this list for whatever + # auxiliary files they create in other (or their own) packages + + # get path list from both env['TEXINPUTS'] and env['ENV']['TEXINPUTS'] + savedpath = modify_env_var(env, 'TEXINPUTS', abspath) + paths = env['ENV']['TEXINPUTS'] + if SCons.Util.is_List(paths): + pass + else: + # Split at os.pathsep to convert into absolute path + paths = paths.split(os.pathsep) + + # now that we have the path list restore the env + if savedpath is _null: + try: + del env['ENV']['TEXINPUTS'] + except KeyError: + pass # was never set + else: + env['ENV']['TEXINPUTS'] = savedpath + if Verbose: + print("search path ",paths) + + # scan all sources for side effect files + aux_files = [] + file_tests = ScanFiles(source[0], target, paths, file_tests, file_tests_search, env, graphics_extensions, targetdir, aux_files) + + for (theSearch,suffix_list) in file_tests: + # add side effects if feature is present.If file is to be generated,add all side effects + if Verbose and theSearch: + print("check side effects for ",suffix_list[-1]) + if theSearch is not None or not source[0].exists(): + file_list = [targetbase,] + # for bibunit we need a list of files + if suffix_list[-1] == 'bibunit': + file_basename = os.path.join(targetdir, 'bu*.aux') + file_list = glob.glob(file_basename) + # remove the suffix '.aux' + for fl in file_list.copy(): + file_list.append(SCons.Util.splitext(fl)[0]) + # for multibib we need a list of files + if suffix_list[-1] == 'multibib': + for multibibmatch in multibib_re.finditer(content): + if Verbose: + print("multibib match ",multibibmatch.group(1)) + if multibibmatch is not None: + baselist = multibibmatch.group(1).split(',') + if Verbose: + print("multibib list ", baselist) + for bl in baselist: + file_list.append(os.path.join(targetdir, bl)) + # now define the side effects + for file_name in file_list: + for suffix in suffix_list[:-1]: + env.SideEffect(file_name + suffix,target[0]) + if Verbose: + print("side effect tst :",file_name + suffix, " target is ",str(target[0])) + env.Clean(target[0],file_name + suffix) + + for aFile in aux_files: + aFile_base = SCons.Util.splitext(aFile)[0] + env.SideEffect(aFile_base + '.aux',target[0]) + if Verbose: + print("side effect aux :",aFile_base + '.aux') + env.Clean(target[0],aFile_base + '.aux') + # read fls file to get all other files that latex creates and will read on the next pass + # remove files from list that we explicitly dealt with above + if os.path.isfile(flsfilename): + with open(flsfilename, "r") as f: + content = f.read() + out_files = openout_re.findall(content) + myfiles = [auxfilename, logfilename, flsfilename, targetbase+'.dvi',targetbase+'.pdf'] + for filename in out_files[:]: + if filename in myfiles: + out_files.remove(filename) + env.SideEffect(out_files,target[0]) + if Verbose: + print("side effect fls :",out_files) + env.Clean(target[0],out_files) + + return (target, source) + + +TeXLaTeXAction = None + +def generate(env): + """Add Builders and construction variables for TeX to an Environment.""" + + global TeXLaTeXAction + if TeXLaTeXAction is None: + TeXLaTeXAction = SCons.Action.Action(TeXLaTeXFunction, + strfunction=TeXLaTeXStrFunction) + + env.AppendUnique(LATEXSUFFIXES=SCons.Tool.LaTeXSuffixes) + + generate_common(env) + + from . import dvi + dvi.generate(env) + + bld = env['BUILDERS']['DVI'] + bld.add_action('.tex', TeXLaTeXAction) + bld.add_emitter('.tex', tex_eps_emitter) + +def generate_darwin(env): + try: + environ = env['ENV'] + except KeyError: + environ = {} + env['ENV'] = environ + + if platform.system() == 'Darwin': + try: + ospath = env['ENV']['PATHOSX'] + except KeyError: + ospath = None + if ospath: + env.AppendENVPath('PATH', ospath) + +def generate_common(env): + """Add internal Builders and construction variables for LaTeX to an Environment.""" + + # Add OSX system paths so TeX tools can be found + # when a list of tools is given the exists() method is not called + generate_darwin(env) + + # A generic tex file Action, sufficient for all tex files. + global TeXAction + if TeXAction is None: + TeXAction = SCons.Action.Action("$TEXCOM", "$TEXCOMSTR") + + # An Action to build a latex file. This might be needed more + # than once if we are dealing with labels and bibtex. + global LaTeXAction + if LaTeXAction is None: + LaTeXAction = SCons.Action.Action("$LATEXCOM", "$LATEXCOMSTR") + + # Define an action to run BibTeX on a file. + global BibTeXAction + if BibTeXAction is None: + BibTeXAction = SCons.Action.Action("$BIBTEXCOM", "$BIBTEXCOMSTR") + + # Define an action to run Biber on a file. + global BiberAction + if BiberAction is None: + BiberAction = SCons.Action.Action("$BIBERCOM", "$BIBERCOMSTR") + + # Define an action to run MakeIndex on a file. + global MakeIndexAction + if MakeIndexAction is None: + MakeIndexAction = SCons.Action.Action("$MAKEINDEXCOM", "$MAKEINDEXCOMSTR") + + # Define an action to run MakeIndex on a file for nomenclatures. + global MakeNclAction + if MakeNclAction is None: + MakeNclAction = SCons.Action.Action("$MAKENCLCOM", "$MAKENCLCOMSTR") + + # Define an action to run MakeIndex on a file for glossaries. + global MakeGlossaryAction + if MakeGlossaryAction is None: + MakeGlossaryAction = SCons.Action.Action("$MAKEGLOSSARYCOM", "$MAKEGLOSSARYCOMSTR") + + # Define an action to run MakeIndex on a file for acronyms. + global MakeAcronymsAction + if MakeAcronymsAction is None: + MakeAcronymsAction = SCons.Action.Action("$MAKEACRONYMSCOM", "$MAKEACRONYMSCOMSTR") + + try: + environ = env['ENV'] + except KeyError: + environ = {} + env['ENV'] = environ + + # Some Linux platforms have pdflatex set up in a way + # that requires that the HOME environment variable be set. + # Add it here if defined. + v = os.environ.get('HOME') + if v: + environ['HOME'] = v + + CDCOM = 'cd ' + if platform.system() == 'Windows': + # allow cd command to change drives on Windows + CDCOM = 'cd /D ' + + env['TEX'] = 'tex' + env['TEXFLAGS'] = SCons.Util.CLVar('-interaction=nonstopmode -recorder') + env['TEXCOM'] = CDCOM + '${TARGET.dir} && $TEX $TEXFLAGS ${SOURCE.file}' + + env['PDFTEX'] = 'pdftex' + env['PDFTEXFLAGS'] = SCons.Util.CLVar('-interaction=nonstopmode -recorder') + env['PDFTEXCOM'] = CDCOM + '${TARGET.dir} && $PDFTEX $PDFTEXFLAGS ${SOURCE.file}' + + env['LATEX'] = 'latex' + env['LATEXFLAGS'] = SCons.Util.CLVar('-interaction=nonstopmode -recorder') + env['LATEXCOM'] = CDCOM + '${TARGET.dir} && $LATEX $LATEXFLAGS ${SOURCE.file}' + env['LATEXRETRIES'] = 4 + + env['PDFLATEX'] = 'pdflatex' + env['PDFLATEXFLAGS'] = SCons.Util.CLVar('-interaction=nonstopmode -recorder') + env['PDFLATEXCOM'] = CDCOM + '${TARGET.dir} && $PDFLATEX $PDFLATEXFLAGS ${SOURCE.file}' + + env['BIBTEX'] = 'bibtex' + env['BIBTEXFLAGS'] = SCons.Util.CLVar('') + env['BIBTEXCOM'] = CDCOM + '${TARGET.dir} && $BIBTEX $BIBTEXFLAGS ${SOURCE.filebase}' + + env['BIBER'] = 'biber' + env['BIBERFLAGS'] = SCons.Util.CLVar('') + env['BIBERCOM'] = CDCOM + '${TARGET.dir} && $BIBER $BIBERFLAGS ${SOURCE.filebase}' + + env['MAKEINDEX'] = 'makeindex' + env['MAKEINDEXFLAGS'] = SCons.Util.CLVar('') + env['MAKEINDEXCOM'] = CDCOM + '${TARGET.dir} && $MAKEINDEX $MAKEINDEXFLAGS ${SOURCE.file}' + + env['MAKEGLOSSARY'] = 'makeindex' + env['MAKEGLOSSARYSTYLE'] = '${SOURCE.filebase}.ist' + env['MAKEGLOSSARYFLAGS'] = SCons.Util.CLVar('-s ${MAKEGLOSSARYSTYLE} -t ${SOURCE.filebase}.glg') + env['MAKEGLOSSARYCOM'] = CDCOM + '${TARGET.dir} && $MAKEGLOSSARY ${SOURCE.filebase}.glo $MAKEGLOSSARYFLAGS -o ${SOURCE.filebase}.gls' + + env['MAKEACRONYMS'] = 'makeindex' + env['MAKEACRONYMSSTYLE'] = '${SOURCE.filebase}.ist' + env['MAKEACRONYMSFLAGS'] = SCons.Util.CLVar('-s ${MAKEACRONYMSSTYLE} -t ${SOURCE.filebase}.alg') + env['MAKEACRONYMSCOM'] = CDCOM + '${TARGET.dir} && $MAKEACRONYMS ${SOURCE.filebase}.acn $MAKEACRONYMSFLAGS -o ${SOURCE.filebase}.acr' + + env['MAKENCL'] = 'makeindex' + env['MAKENCLSTYLE'] = 'nomencl.ist' + env['MAKENCLFLAGS'] = '-s ${MAKENCLSTYLE} -t ${SOURCE.filebase}.nlg' + env['MAKENCLCOM'] = CDCOM + '${TARGET.dir} && $MAKENCL ${SOURCE.filebase}.nlo $MAKENCLFLAGS -o ${SOURCE.filebase}.nls' + + env['MAKENEWGLOSSARY'] = 'makeindex' + env['MAKENEWGLOSSARYCOM'] = CDCOM + '${TARGET.dir} && $MAKENEWGLOSSARY ' + +def exists(env): + generate_darwin(env) + return env.Detect('tex') + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/textfile.py b/scons/scons-local-4.5.1/SCons/Tool/textfile.py new file mode 100644 index 000000000..0ec31d8f7 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/textfile.py @@ -0,0 +1,202 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +Textfile/Substfile builder for SCons. + + Create file 'target' which typically is a textfile. The 'source' + may be any combination of strings, Nodes, or lists of same. A + 'linesep' will be put between any part written and defaults to + os.linesep. + + The only difference between the Textfile builder and the Substfile + builder is that strings are converted to Value() nodes for the + former and File() nodes for the latter. To insert files in the + former or strings in the latter, wrap them in a File() or Value(), + respectively. + + The values of SUBST_DICT first have any construction variables + expanded (its keys are not expanded). If a value of SUBST_DICT is + a python callable function, it is called and the result is expanded + as the value. Values are substituted in a "random" order; if any + substitution could be further expanded by another substitution, it + is unpredictable whether the expansion will occur. +""" + +import SCons + + +from SCons.Node import Node +from SCons.Node.Python import Value +from SCons.Util import is_String, is_Sequence, is_Dict, to_bytes + + +TEXTFILE_FILE_WRITE_MODE = 'w' + +LINESEP = '\n' + + +def _do_subst(node, subs): + """ + Fetch the node contents and replace all instances of the keys with + their values. For example, if subs is + {'%VERSION%': '1.2345', '%BASE%': 'MyProg', '%prefix%': '/bin'}, + then all instances of %VERSION% in the file will be replaced with + 1.2345 and so forth. + """ + contents = node.get_text_contents() + if subs: + for (k, val) in subs: + contents = contents.replace(k, val) + + if 'b' in TEXTFILE_FILE_WRITE_MODE: + try: + contents = bytearray(contents, 'utf-8') + except TypeError: + # TODO: this should not happen, get_text_contents returns text + contents = bytearray(contents) + + return contents + + +def _action(target, source, env): + + # prepare the line separator + linesep = env['LINESEPARATOR'] + if linesep is None: + linesep = LINESEP # os.linesep + elif is_String(linesep): + pass + elif isinstance(linesep, Value): + linesep = linesep.get_text_contents() + else: + raise SCons.Errors.UserError('unexpected type/class for LINESEPARATOR: %s' + % repr(linesep), None) + + if 'b' in TEXTFILE_FILE_WRITE_MODE: + linesep = to_bytes(linesep) + + # create a dictionary to use for the substitutions + if 'SUBST_DICT' not in env: + subs = None # no substitutions + else: + subst_dict = env['SUBST_DICT'] + if is_Dict(subst_dict): + subst_dict = list(subst_dict.items()) + elif is_Sequence(subst_dict): + pass + else: + raise SCons.Errors.UserError('SUBST_DICT must be dict or sequence') + subs = [] + for (k, value) in subst_dict: + if callable(value): + value = value() + if is_String(value): + value = env.subst(value, raw=1) + else: + value = str(value) + subs.append((k, value)) + + # Pull file encoding from the environment or default to UTF-8 + file_encoding = env.get('FILE_ENCODING', 'utf-8') + + # write the file + try: + target_file = open(target[0].get_path(), TEXTFILE_FILE_WRITE_MODE, newline='', encoding=file_encoding) + except (OSError, IOError) as e: + raise SCons.Errors.UserError("Can't write target file %s [%s]" % (target[0],e)) + + # separate lines by 'linesep' only if linesep is not empty + lsep = None + for line in source: + if lsep: + target_file.write(lsep) + + target_file.write(_do_subst(line, subs)) + lsep = linesep + target_file.close() + + +def _strfunc(target, source, env): + return "Creating '%s'" % target[0] + + +def _convert_list_R(newlist, sources): + for elem in sources: + if is_Sequence(elem): + _convert_list_R(newlist, elem) + elif isinstance(elem, Node): + newlist.append(elem) + else: + newlist.append(Value(elem)) + + +def _convert_list(target, source, env): + if len(target) != 1: + raise SCons.Errors.UserError("Only one target file allowed") + newlist = [] + _convert_list_R(newlist, source) + return target, newlist + + +_common_varlist = ['SUBST_DICT', 'LINESEPARATOR'] + +_text_varlist = _common_varlist + ['TEXTFILEPREFIX', 'TEXTFILESUFFIX'] +_text_builder = SCons.Builder.Builder( + action=SCons.Action.Action(_action, _strfunc, varlist=_text_varlist), + source_factory=Value, + emitter=_convert_list, + prefix='$TEXTFILEPREFIX', + suffix='$TEXTFILESUFFIX', +) + +_subst_varlist = _common_varlist + ['SUBSTFILEPREFIX', 'SUBSTFILESUFFIX'] +_subst_builder = SCons.Builder.Builder( + action=SCons.Action.Action(_action, _strfunc, varlist=_subst_varlist), + source_factory=SCons.Node.FS.File, + emitter=_convert_list, + prefix='$SUBSTFILEPREFIX', + suffix='$SUBSTFILESUFFIX', + src_suffix=['.in'], +) + + +def generate(env): + env['LINESEPARATOR'] = LINESEP # os.linesep + env['BUILDERS']['Textfile'] = _text_builder + env['TEXTFILEPREFIX'] = '' + env['TEXTFILESUFFIX'] = '.txt' + env['BUILDERS']['Substfile'] = _subst_builder + env['SUBSTFILEPREFIX'] = '' + env['SUBSTFILESUFFIX'] = '' + env['FILE_ENCODING'] = env.get('FILE_ENCODING', 'utf-8') + + +def exists(env): + return 1 + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/tlib.py b/scons/scons-local-4.5.1/SCons/Tool/tlib.py new file mode 100644 index 000000000..33adb576b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/tlib.py @@ -0,0 +1,53 @@ +"""SCons.Tool.tlib + +XXX + +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Tool +import SCons.Tool.bcc32 +import SCons.Util + +def generate(env): + SCons.Tool.bcc32.findIt('tlib', env) + """Add Builders and construction variables for ar to an Environment.""" + SCons.Tool.createStaticLibBuilder(env) + env['AR'] = 'tlib' + env['ARFLAGS'] = SCons.Util.CLVar('') + env['ARCOM'] = '$AR $TARGET $ARFLAGS /a $SOURCES' + env['LIBPREFIX'] = '' + env['LIBSUFFIX'] = '.lib' + +def exists(env): + return SCons.Tool.bcc32.findIt('tlib', env) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/wix.py b/scons/scons-local-4.5.1/SCons/Tool/wix.py new file mode 100644 index 000000000..04136ce8e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/wix.py @@ -0,0 +1,104 @@ +"""SCons.Tool.wix + +Tool-specific initialization for wix, the Windows Installer XML Tool. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +# +# __COPYRIGHT__ +# +# 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. +# + +__revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" + +import SCons.Builder +import SCons.Action +import os + +def generate(env): + """Add Builders and construction variables for WiX to an Environment.""" + if not exists(env): + return + + env['WIXCANDLEFLAGS'] = ['-nologo'] + env['WIXCANDLEINCLUDE'] = [] + env['WIXCANDLECOM'] = '$WIXCANDLE $WIXCANDLEFLAGS -I $WIXCANDLEINCLUDE -o ${TARGET} ${SOURCE}' + + env['WIXLIGHTFLAGS'].append( '-nologo' ) + env['WIXLIGHTCOM'] = "$WIXLIGHT $WIXLIGHTFLAGS -out ${TARGET} ${SOURCES}" + env['WIXSRCSUF'] = '.wxs' + env['WIXOBJSUF'] = '.wixobj' + + object_builder = SCons.Builder.Builder( + action = '$WIXCANDLECOM', + suffix = '$WIXOBJSUF', + src_suffix = '$WIXSRCSUF') + + linker_builder = SCons.Builder.Builder( + action = '$WIXLIGHTCOM', + src_suffix = '$WIXOBJSUF', + src_builder = object_builder) + + env['BUILDERS']['WiX'] = linker_builder + +def exists(env): + env['WIXCANDLE'] = 'candle.exe' + env['WIXLIGHT'] = 'light.exe' + + # try to find the candle.exe and light.exe tools and + # add the install directory to light libpath. + for path in os.environ['PATH'].split(os.pathsep): + if not path: + continue + + # workaround for some weird python win32 bug. + if path[0] == '"' and path[-1:]=='"': + path = path[1:-1] + + # normalize the path + path = os.path.normpath(path) + + # search for the tools in the PATH environment variable + try: + files = os.listdir(path) + if env['WIXCANDLE'] in files and env['WIXLIGHT'] in files: + env.PrependENVPath('PATH', path) + # include appropriate flags if running WiX 2.0 + if 'wixui.wixlib' in files and 'WixUI_en-us.wxl' in files: + env['WIXLIGHTFLAGS'] = [ os.path.join( path, 'wixui.wixlib' ), + '-loc', + os.path.join( path, 'WixUI_en-us.wxl' ) ] + else: + env['WIXLIGHTFLAGS'] = [] + return 1 + except OSError: + pass # ignore this, could be a stale PATH entry. + + return None + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/xgettext.py b/scons/scons-local-4.5.1/SCons/Tool/xgettext.py new file mode 100644 index 000000000..ed76e2552 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/xgettext.py @@ -0,0 +1,337 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool specific initialization of `xgettext` tool.""" + +import os +import re +import subprocess +import sys + +import SCons.Action +import SCons.Node.FS +import SCons.Tool +import SCons.Util +import SCons.Warnings +from SCons.Builder import BuilderBase +from SCons.Environment import _null +from SCons.Platform.cygwin import CYGWIN_DEFAULT_PATHS +from SCons.Platform.mingw import MINGW_DEFAULT_PATHS +from SCons.Tool.GettextCommon import ( + _detect_xgettext, + _POTargetFactory, + RPaths, + _xgettext_exists, + # XgettextToolWarning, +) + + +class _CmdRunner: + """ Callable object, which runs shell command storing its stdout and stderr to + variables. It also provides `strfunction()` method, which shall be used by + scons Action objects to print command string. """ + + def __init__(self, command, commandstr=None): + self.out = None + self.err = None + self.status = None + self.command = command + self.commandstr = commandstr + + def __call__(self, target, source, env): + kw = { + 'stdin': 'devnull', + 'stdout': subprocess.PIPE, + 'stderr': subprocess.PIPE, + 'universal_newlines': True, + 'shell': True + } + command = env.subst(self.command, target=target, source=source) + proc = SCons.Action._subproc(env, command, **kw) + self.out, self.err = proc.communicate() + self.status = proc.wait() + if self.err: + sys.stderr.write(str(self.err)) + return self.status + + def strfunction(self, target, source, env): + comstr = self.commandstr + if env.subst(comstr, target=target, source=source) == "": + comstr = self.command + s = env.subst(comstr, target=target, source=source) + return s + + +def _update_pot_file(target, source, env): + """ Action function for `POTUpdate` builder """ + nop = lambda target, source, env: 0 + + # Save scons cwd and os cwd (NOTE: they may be different. After the job, we + # revert each one to its original state). + save_cwd = env.fs.getcwd() + save_os_cwd = os.getcwd() + chdir = target[0].dir + chdir_str = repr(chdir.get_abspath()) + # Print chdir message (employ SCons.Action.Action for that. It knows better + # than me how to to this correctly). + env.Execute(SCons.Action.Action(nop, "Entering " + chdir_str)) + # Go to target's directory and do our job + env.fs.chdir(chdir, 1) # Go into target's directory + try: + cmd = _CmdRunner('$XGETTEXTCOM', '$XGETTEXTCOMSTR') + action = SCons.Action.Action(cmd, strfunction=cmd.strfunction) + status = action([target[0]], source, env) + except: + # Something went wrong. + env.Execute(SCons.Action.Action(nop, "Leaving " + chdir_str)) + # Revert working dirs to previous state and re-throw exception. + env.fs.chdir(save_cwd, 0) + os.chdir(save_os_cwd) + raise + # Print chdir message. + env.Execute(SCons.Action.Action(nop, "Leaving " + chdir_str)) + # Revert working dirs to previous state. + env.fs.chdir(save_cwd, 0) + os.chdir(save_os_cwd) + # If the command was not successfull, return error code. + if status: return status + + new_content = cmd.out + + if not new_content: + # When xgettext finds no internationalized messages, no *.pot is created + # (because we don't want to bother translators with empty POT files). + needs_update = False + explain = "no internationalized messages encountered" + else: + if target[0].exists(): + # If the file already exists, it's left unaltered unless its messages + # are outdated (w.r.t. to these recovered by xgettext from sources). + old_content = target[0].get_text_contents() + re_cdate = re.compile(r'^"POT-Creation-Date: .*"$[\r\n]?', re.M) + old_content_nocdate = re.sub(re_cdate, "", old_content) + new_content_nocdate = re.sub(re_cdate, "", new_content) + if old_content_nocdate == new_content_nocdate: + # Messages are up-to-date + needs_update = False + explain = "messages in file found to be up-to-date" + else: + # Messages are outdated + needs_update = True + explain = "messages in file were outdated" + else: + # No POT file found, create new one + needs_update = True + explain = "new file" + if needs_update: + # Print message employing SCons.Action.Action for that. + msg = "Writing " + repr(str(target[0])) + " (" + explain + ")" + env.Execute(SCons.Action.Action(nop, msg)) + f = open(str(target[0]), "w") + f.write(new_content) + f.close() + return 0 + else: + # Print message employing SCons.Action.Action for that. + msg = "Not writing " + repr(str(target[0])) + " (" + explain + ")" + env.Execute(SCons.Action.Action(nop, msg)) + return 0 + + +class _POTBuilder(BuilderBase): + def _execute(self, env, target, source, *args): + if not target: + if 'POTDOMAIN' in env and env['POTDOMAIN']: + domain = env['POTDOMAIN'] + else: + domain = 'messages' + target = [domain] + return BuilderBase._execute(self, env, target, source, *args) + + +def _scan_xgettext_from_files(target, source, env, files=None, path=None): + """ Parses `POTFILES.in`-like file and returns list of extracted file names. + """ + if files is None: + return 0 + if not SCons.Util.is_List(files): + files = [files] + + if path is None: + if 'XGETTEXTPATH' in env: + path = env['XGETTEXTPATH'] + else: + path = [] + if not SCons.Util.is_List(path): + path = [path] + + path = SCons.Util.flatten(path) + + dirs = () + for p in path: + if not isinstance(p, SCons.Node.FS.Base): + if SCons.Util.is_String(p): + p = env.subst(p, source=source, target=target) + p = env.arg2nodes(p, env.fs.Dir) + dirs += tuple(p) + # cwd is the default search path (when no path is defined by user) + if not dirs: + dirs = (env.fs.getcwd(),) + + # Parse 'POTFILE.in' files. + re_comment = re.compile(r'^#[^\n\r]*$\r?\n?', re.M) + re_emptyln = re.compile(r'^[ \t\r]*$\r?\n?', re.M) + re_trailws = re.compile(r'[ \t\r]+$') + for f in files: + # Find files in search path $XGETTEXTPATH + if isinstance(f, SCons.Node.FS.Base) and f.rexists(): + contents = f.get_text_contents() + contents = re_comment.sub("", contents) + contents = re_emptyln.sub("", contents) + contents = re_trailws.sub("", contents) + depnames = contents.splitlines() + for depname in depnames: + depfile = SCons.Node.FS.find_file(depname, dirs) + if not depfile: + depfile = env.arg2nodes(depname, dirs[0].File) + env.Depends(target, depfile) + return 0 + + +def _pot_update_emitter(target, source, env): + """ Emitter function for `POTUpdate` builder """ + if 'XGETTEXTFROM' in env: + xfrom = env['XGETTEXTFROM'] + else: + return target, source + if not SCons.Util.is_List(xfrom): + xfrom = [xfrom] + + xfrom = SCons.Util.flatten(xfrom) + + # Prepare list of 'POTFILE.in' files. + files = [] + for xf in xfrom: + if not isinstance(xf, SCons.Node.FS.Base): + if SCons.Util.is_String(xf): + # Interpolate variables in strings + xf = env.subst(xf, source=source, target=target) + xf = env.arg2nodes(xf) + files.extend(xf) + if files: + env.Depends(target, files) + _scan_xgettext_from_files(target, source, env, files) + return target, source + + +def _POTUpdateBuilderWrapper(env, target=None, source=_null, **kw): + return env._POTUpdateBuilder(target, source, **kw) + + +def _POTUpdateBuilder(env, **kw): + """ Creates `POTUpdate` builder object """ + kw['action'] = SCons.Action.Action(_update_pot_file, None) + kw['suffix'] = '$POTSUFFIX' + kw['target_factory'] = _POTargetFactory(env, alias='$POTUPDATE_ALIAS').File + kw['emitter'] = _pot_update_emitter + return _POTBuilder(**kw) + + +def generate(env, **kw): + """ Generate `xgettext` tool """ + + if sys.platform == 'win32': + xgettext = SCons.Tool.find_program_path(env, 'xgettext', default_paths=MINGW_DEFAULT_PATHS + CYGWIN_DEFAULT_PATHS ) + if xgettext: + xgettext_bin_dir = os.path.dirname(xgettext) + env.AppendENVPath('PATH', xgettext_bin_dir) + else: + SCons.Warnings.warn( + # XgettextToolWarning, # using this breaks test, so keep: + SCons.Warnings.SConsWarning, + 'xgettext tool requested, but binary not found in ENV PATH' + ) + try: + env['XGETTEXT'] = _detect_xgettext(env) + except: + env['XGETTEXT'] = 'xgettext' + # NOTE: sources="$SOURCES" would work as well. However, we use following + # construction to convert absolute paths provided by scons onto paths + # relative to current working dir. Note, that scons expands $SOURCE(S) to + # absolute paths for sources $SOURCE(s) outside of current subtree (e.g. in + # "../"). With source=$SOURCE these absolute paths would be written to the + # resultant *.pot file (and its derived *.po files) as references to lines in + # source code (e.g. referring lines in *.c files). Such references would be + # correct (e.g. in poedit) only on machine on which *.pot was generated and + # would be of no use on other hosts (having a copy of source code located + # in different place in filesystem). + sources = '$( ${_concat( "", SOURCES, "", __env__, XgettextRPaths, TARGET' \ + + ', SOURCES)} $)' + + # NOTE: the output from $XGETTEXTCOM command must go to stdout, not to a file. + # This is required by the POTUpdate builder's action. + xgettextcom = '$XGETTEXT $XGETTEXTFLAGS $_XGETTEXTPATHFLAGS' \ + + ' $_XGETTEXTFROMFLAGS -o - ' + sources + + xgettextpathflags = '$( ${_concat( XGETTEXTPATHPREFIX, XGETTEXTPATH' \ + + ', XGETTEXTPATHSUFFIX, __env__, RDirs, TARGET, SOURCES)} $)' + xgettextfromflags = '$( ${_concat( XGETTEXTFROMPREFIX, XGETTEXTFROM' \ + + ', XGETTEXTFROMSUFFIX, __env__, target=TARGET, source=SOURCES)} $)' + + env.SetDefault( + _XGETTEXTDOMAIN='${TARGET.filebase}', + XGETTEXTFLAGS=[], + XGETTEXTCOM=xgettextcom, + XGETTEXTCOMSTR='', + XGETTEXTPATH=[], + XGETTEXTPATHPREFIX='-D', + XGETTEXTPATHSUFFIX='', + XGETTEXTFROM=None, + XGETTEXTFROMPREFIX='-f', + XGETTEXTFROMSUFFIX='', + _XGETTEXTPATHFLAGS=xgettextpathflags, + _XGETTEXTFROMFLAGS=xgettextfromflags, + POTSUFFIX=['.pot'], + POTUPDATE_ALIAS='pot-update', + XgettextRPaths=RPaths(env) + ) + env.Append(BUILDERS={ + '_POTUpdateBuilder': _POTUpdateBuilder(env) + }) + env.AddMethod(_POTUpdateBuilderWrapper, 'POTUpdate') + env.AlwaysBuild(env.Alias('$POTUPDATE_ALIAS')) + + +def exists(env): + """ Check, whether the tool exists """ + try: + return _xgettext_exists(env) + except: + return False + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/yacc.py b/scons/scons-local-4.5.1/SCons/Tool/yacc.py new file mode 100644 index 000000000..42ef1db03 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/yacc.py @@ -0,0 +1,206 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Tool-specific initialization for yacc. + +This tool should support multiple yacc implementations, +but is in actuality biased towards GNU Bison. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. +""" + +import os.path +import sys +from typing import Optional + +import SCons.Defaults +import SCons.Tool +import SCons.Warnings +from SCons.Platform.mingw import MINGW_DEFAULT_PATHS +from SCons.Platform.cygwin import CYGWIN_DEFAULT_PATHS +from SCons.Platform.win32 import CHOCO_DEFAULT_PATH +from SCons.Util import CLVar, to_String + +DEFAULT_PATHS = CHOCO_DEFAULT_PATH + MINGW_DEFAULT_PATHS + CYGWIN_DEFAULT_PATHS + +YaccAction = SCons.Action.Action("$YACCCOM", "$YACCCOMSTR") + +if sys.platform == 'win32': + BINS = ['bison', 'yacc', 'win_bison'] +else: + BINS = ["bison", "yacc"] + + +def _yaccEmitter(target, source, env, ysuf, hsuf) -> tuple: + """Adds extra files generated by yacc program to target list.""" + + yaccflags = env.subst_list("$YACCFLAGS", target=target, source=source) + flags = yaccflags[0] + targetBase, targetExt = os.path.splitext(to_String(target[0])) + + if '.ym' in ysuf: # If using Objective-C + target = [targetBase + ".m"] # the extension is ".m". + + # If -d is specified on the command line, yacc will emit a .h + # or .hpp file with the same name as the .c or .cpp output file. + if '-d' in flags: + target.append(targetBase + env.subst(hsuf, target=target, source=source)) + + # If -g is specified on the command line, yacc will emit a .vcg + # file with the same base name as the .y, .yacc, .ym or .yy file. + if "-g" in flags: + base, ext = os.path.splitext(to_String(source[0])) + target.append(base + env.subst("$YACCVCGFILESUFFIX")) + + # If -v is specified yacc will create the output debug file + # which is not really source for any process, but should + # be noted and also be cleaned (issue #2558) + if "-v" in flags: + env.SideEffect(targetBase + '.output', target[0]) + env.Clean(target[0], targetBase + '.output') + + # With --defines and --graph, the file to write is defined by the option + # argument. Extract this and include in the list of targets. + # NOTE: a filename passed to the command this way is not modified by SCons, + # and so will be interpreted relative to the project top directory at + # execution time, while the name added to the target list will be + # interpreted relative to the SConscript directory - a possible mismatch. + # + # These are GNU bison-only options. + # Since bison 3.8, --header is the preferred name over --defines + fileGenOptions = ["--defines=", "--header=", "--graph="] + for option in flags: + for fileGenOption in fileGenOptions: + l = len(fileGenOption) + if option[:l] == fileGenOption: + fileName = option[l:].strip() + target.append(fileName) + + yaccheaderfile = env.subst("$YACC_HEADER_FILE", target=target, source=source) + if yaccheaderfile: + target.append(yaccheaderfile) + # rewrite user-supplied file string with a node, we need later + env.Replace(YACC_HEADER_FILE=env.File(yaccheaderfile)) + + yaccgraphfile = env.subst("$YACC_GRAPH_FILE", target=target, source=source) + if yaccgraphfile: + target.append(yaccgraphfile) + # rewrite user-supplied file string with a node, we need later + env.Replace(YACC_GRAPH_FILE=env.File(yaccgraphfile)) + + return target, source + + +def yEmitter(target, source, env) -> tuple: + return _yaccEmitter(target, source, env, ['.y', '.yacc'], '$YACCHFILESUFFIX') + + +def ymEmitter(target, source, env) -> tuple: + return _yaccEmitter(target, source, env, ['.ym'], '$YACCHFILESUFFIX') + + +def yyEmitter(target, source, env) -> tuple: + return _yaccEmitter(target, source, env, ['.yy'], '$YACCHXXFILESUFFIX') + + +def get_yacc_path(env, append_paths=False) -> Optional[str]: + """ + Returns the path to the yacc tool, searching several possible names. + + Only called in the Windows case, so the `default_path` argument to + :func:`find_program_path` can be Windows-specific. + + Args: + env: current construction environment + append_paths: if true, add the path to the tool to PATH + """ + for prog in BINS: + bin_path = SCons.Tool.find_program_path( + env, + prog, + default_paths=DEFAULT_PATHS, + add_path=append_paths, + ) + if bin_path: + return bin_path + + SCons.Warnings.warn( + SCons.Warnings.SConsWarning, + 'yacc tool requested, but yacc or bison binary not found in ENV PATH' + ) + + +def generate(env) -> None: + """Add Builders and construction variables for yacc to an Environment.""" + c_file, cxx_file = SCons.Tool.createCFileBuilders(env) + + # C + c_file.add_action('.y', YaccAction) + c_file.add_emitter('.y', yEmitter) + + c_file.add_action('.yacc', YaccAction) + c_file.add_emitter('.yacc', yEmitter) + + # Objective-C + c_file.add_action('.ym', YaccAction) + c_file.add_emitter('.ym', ymEmitter) + + # C++ + cxx_file.add_action('.yy', YaccAction) + cxx_file.add_emitter('.yy', yyEmitter) + + if sys.platform == 'win32': + # ignore the return, all we need is for the path to be added + _ = get_yacc_path(env, append_paths=True) + + env.SetDefault( + YACC=env.Detect(BINS), + YACCFLAGS=CLVar(""), + YACC_HEADER_FILE="", + YACC_GRAPH_FILE="", + ) + + env['YACCCOM'] = '$YACC $YACCFLAGS $_YACC_HEADER $_YACC_GRAPH -o $TARGET $SOURCES' + env['YACCHFILESUFFIX'] = '.h' + env['YACCHXXFILESUFFIX'] = '.hpp' + env['YACCVCGFILESUFFIX'] = '.vcg' + env['_YACC_HEADER'] = '${YACC_HEADER_FILE and "--header=" + str(YACC_HEADER_FILE)}' + env['_YACC_GRAPH'] = '${YACC_GRAPH_FILE and "--graph=" + str(YACC_GRAPH_FILE)}' + + +def exists(env) -> Optional[str]: + if 'YACC' in env: + return env.Detect(env['YACC']) + + if sys.platform == 'win32': + return get_yacc_path(env) + else: + return env.Detect(BINS) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Tool/zip.py b/scons/scons-local-4.5.1/SCons/Tool/zip.py new file mode 100644 index 000000000..f3d38fe7a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Tool/zip.py @@ -0,0 +1,120 @@ +"""SCons.Tool.zip + +Tool-specific initialization for zip. + +There normally shouldn't be any need to import this module directly. +It will usually be imported through the generic SCons.Tool.Tool() +selection method. + +""" + +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +import os + +import SCons.Builder +import SCons.Defaults +import SCons.Node.FS +import SCons.Util + +import time +import zipfile + + +zip_compression = zipfile.ZIP_DEFLATED + + +def _create_zipinfo_for_file(fname, arcname, date_time, compression): + st = os.stat(fname) + if not date_time: + mtime = time.localtime(st.st_mtime) + date_time = mtime[0:6] + zinfo = zipfile.ZipInfo(filename=arcname, date_time=date_time) + zinfo.external_attr = (st.st_mode & 0xFFFF) << 16 # Unix attributes + zinfo.compress_type = compression + zinfo.file_size = st.st_size + return zinfo + + +def zip_builder(target, source, env): + compression = env.get('ZIPCOMPRESSION', zipfile.ZIP_STORED) + zip_root = str(env.get('ZIPROOT', '')) + date_time = env.get('ZIP_OVERRIDE_TIMESTAMP') + + files = [] + for s in source: + if s.isdir(): + for dirpath, dirnames, filenames in os.walk(str(s)): + for fname in filenames: + path = os.path.join(dirpath, fname) + if os.path.isfile(path): + files.append(path) + else: + files.append(str(s)) + + with zipfile.ZipFile(str(target[0]), 'w', compression) as zf: + for fname in files: + arcname = os.path.relpath(fname, zip_root) + # TODO: Switch to ZipInfo.from_file when 3.6 becomes the base python version + zinfo = _create_zipinfo_for_file(fname, arcname, date_time, compression) + with open(fname, "rb") as f: + zf.writestr(zinfo, f.read()) + + +# Fix PR #3569 - If you don't specify ZIPCOM and ZIPCOMSTR when creating +# env, then it will ignore ZIPCOMSTR set afterwards. +zipAction = SCons.Action.Action(zip_builder, "$ZIPCOMSTR", + varlist=['ZIPCOMPRESSION', 'ZIPROOT', 'ZIP_OVERRIDE_TIMESTAMP']) + +ZipBuilder = SCons.Builder.Builder(action=SCons.Action.Action('$ZIPCOM', '$ZIPCOMSTR'), + source_factory=SCons.Node.FS.Entry, + source_scanner=SCons.Defaults.DirScanner, + suffix='$ZIPSUFFIX', + multi=1) + + +def generate(env): + """Add Builders and construction variables for zip to an Environment.""" + try: + bld = env['BUILDERS']['Zip'] + except KeyError: + bld = ZipBuilder + env['BUILDERS']['Zip'] = bld + + env['ZIP'] = 'zip' + env['ZIPFLAGS'] = SCons.Util.CLVar('') + env['ZIPCOM'] = zipAction + env['ZIPCOMPRESSION'] = zip_compression + env['ZIPSUFFIX'] = '.zip' + env['ZIPROOT'] = SCons.Util.CLVar('') + + +def exists(env): + return True + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Util/__init__.py b/scons/scons-local-4.5.1/SCons/Util/__init__.py new file mode 100644 index 000000000..2760298b5 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Util/__init__.py @@ -0,0 +1,1325 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons utility functions + +This package contains routines for use by other parts of SCons. +""" + +import copy +import hashlib +import os +import re +import sys +import time +from collections import UserDict, UserList, OrderedDict, deque +from contextlib import suppress +from types import MethodType, FunctionType +from typing import Optional, Union +from logging import Formatter + +from .types import ( + DictTypes, + ListTypes, + SequenceTypes, + StringTypes, + BaseStringTypes, + Null, + NullSeq, + is_Dict, + is_List, + is_Sequence, + is_Tuple, + is_String, + is_Scalar, + to_String, + to_String_for_subst, + to_String_for_signature, + to_bytes, + to_str, + get_env_bool, + get_os_env_bool, + get_environment_var, +) +from .hashes import ( + ALLOWED_HASH_FORMATS, + DEFAULT_HASH_FORMATS, + get_hash_format, + set_hash_format, + get_current_hash_algorithm_used, + hash_signature, + hash_file_signature, + hash_collect, + MD5signature, + MD5filesignature, + MD5collect, +) +from .envs import ( + MethodWrapper, + PrependPath, + AppendPath, + AddPathIfNotExists, + AddMethod, +) + + +# Note: the Util package cannot import other parts of SCons globally without +# hitting import loops. Both of these modules import SCons.Util early on, +# and are imported in many other modules: +# --> SCons.Warnings +# --> SCons.Errors +# If you run into places that have to do local imports for this reason, +# annotate them for pylint and for human readers to know why: +# pylint: disable=import-outside-toplevel +# Be aware that Black can break this if the annotated line is too +# long and it wants to split: +# from SCons.Errors import ( +# SConsEnvironmentError, +# ) # pylint: disable=import-outside-toplevel +# That's syntactically valid, but pylint won't recorgnize it with the +# annotation at the end, it would have to be on the first line +# (issues filed upstream, for now just be aware) + +PYPY = hasattr(sys, 'pypy_translation_info') + +# this string will be hashed if a Node refers to a file that doesn't exist +# in order to distinguish from a file that exists but is empty. +NOFILE = "SCONS_MAGIC_MISSING_FILE_STRING" + +# unused? +def dictify(keys, values, result=None) -> dict: + if result is None: + result = {} + result.update(zip(keys, values)) + return result + +_ALTSEP = os.altsep +if _ALTSEP is None and sys.platform == 'win32': + # My ActivePython 2.0.1 doesn't set os.altsep! What gives? + _ALTSEP = '/' +if _ALTSEP: + def rightmost_separator(path, sep): + return max(path.rfind(sep), path.rfind(_ALTSEP)) +else: + def rightmost_separator(path, sep): + return path.rfind(sep) + +# First two from the Python Cookbook, just for completeness. +# (Yeah, yeah, YAGNI...) +def containsAny(s, pat) -> bool: + """Check whether string `s` contains ANY of the items in `pat`.""" + return any(c in s for c in pat) + +def containsAll(s, pat) -> bool: + """Check whether string `s` contains ALL of the items in `pat`.""" + return all(c in s for c in pat) + +def containsOnly(s, pat) -> bool: + """Check whether string `s` contains ONLY items in `pat`.""" + for c in s: + if c not in pat: + return False + return True + + +# TODO: Verify this method is STILL faster than os.path.splitext +def splitext(path) -> tuple: + """Split `path` into a (root, ext) pair. + + Same as :mod:`os.path.splitext` but faster. + """ + sep = rightmost_separator(path, os.sep) + dot = path.rfind('.') + # An ext is only real if it has at least one non-digit char + if dot > sep and not path[dot + 1:].isdigit(): + return path[:dot], path[dot:] + + return path, "" + +def updrive(path) -> str: + """Make the drive letter (if any) upper case. + + This is useful because Windows is inconsistent on the case + of the drive letter, which can cause inconsistencies when + calculating command signatures. + """ + drive, rest = os.path.splitdrive(path) + if drive: + path = drive.upper() + rest + return path + +class NodeList(UserList): + """A list of Nodes with special attribute retrieval. + + Unlike an ordinary list, access to a member's attribute returns a + `NodeList` containing the same attribute for each member. Although + this can hold any object, it is intended for use when processing + Nodes, where fetching an attribute of each member is very commone, + for example getting the content signature of each node. The term + "attribute" here includes the string representation. + + >>> someList = NodeList([' foo ', ' bar ']) + >>> someList.strip() + ['foo', 'bar'] + """ + + def __bool__(self): + return bool(self.data) + + def __str__(self): + return ' '.join(map(str, self.data)) + + def __iter__(self): + return iter(self.data) + + def __call__(self, *args, **kwargs) -> 'NodeList': + result = [x(*args, **kwargs) for x in self.data] + return self.__class__(result) + + def __getattr__(self, name) -> 'NodeList': + """Returns a NodeList of `name` from each member.""" + result = [getattr(x, name) for x in self.data] + return self.__class__(result) + + def __getitem__(self, index): + """Returns one item, forces a `NodeList` if `index` is a slice.""" + # TODO: annotate return how? Union[] - don't know type of single item + if isinstance(index, slice): + return self.__class__(self.data[index]) + return self.data[index] + + +class DisplayEngine: + """A callable class used to display SCons messages.""" + + print_it = True + + def __call__(self, text, append_newline=1): + if not self.print_it: + return + + if append_newline: + text = text + '\n' + + # Stdout might be connected to a pipe that has been closed + # by now. The most likely reason for the pipe being closed + # is that the user has press ctrl-c. It this is the case, + # then SCons is currently shutdown. We therefore ignore + # IOError's here so that SCons can continue and shutdown + # properly so that the .sconsign is correctly written + # before SCons exits. + with suppress(IOError): + sys.stdout.write(str(text)) + + def set_mode(self, mode): + self.print_it = mode + +display = DisplayEngine() + + +# TODO: W0102: Dangerous default value [] as argument (dangerous-default-value) +def render_tree(root, child_func, prune=0, margin=[0], visited=None) -> str: + """Render a tree of nodes into an ASCII tree view. + + Args: + root: the root node of the tree + child_func: the function called to get the children of a node + prune: don't visit the same node twice + margin: the format of the left margin to use for children of `root`. + 1 results in a pipe, and 0 results in no pipe. + visited: a dictionary of visited nodes in the current branch if + `prune` is 0, or in the whole tree if `prune` is 1. + """ + + rname = str(root) + + # Initialize 'visited' dict, if required + if visited is None: + visited = {} + + children = child_func(root) + retval = "" + for pipe in margin[:-1]: + if pipe: + retval = retval + "| " + else: + retval = retval + " " + + if rname in visited: + return retval + "+-[" + rname + "]\n" + + retval = retval + "+-" + rname + "\n" + if not prune: + visited = copy.copy(visited) + visited[rname] = True + + for i, child in enumerate(children): + margin.append(i < len(children)-1) + retval = retval + render_tree(child, child_func, prune, margin, visited) + margin.pop() + + return retval + +def IDX(n) -> bool: + """Generate in index into strings from the tree legends. + + These are always a choice between two, so bool works fine. + """ + return bool(n) + +# unicode line drawing chars: +BOX_HORIZ = chr(0x2500) # '─' +BOX_VERT = chr(0x2502) # '│' +BOX_UP_RIGHT = chr(0x2514) # 'â””' +BOX_DOWN_RIGHT = chr(0x250c) # '┌' +BOX_DOWN_LEFT = chr(0x2510) # 'â”' +BOX_UP_LEFT = chr(0x2518) # '┘' +BOX_VERT_RIGHT = chr(0x251c) # '├' +BOX_HORIZ_DOWN = chr(0x252c) # '┬' + + +# TODO: W0102: Dangerous default value [] as argument (dangerous-default-value) +def print_tree( + root, + child_func, + prune=0, + showtags=False, + margin=[0], + visited=None, + lastChild: bool = False, + singleLineDraw: bool = False, +) -> None: + """Print a tree of nodes. + + This is like func:`render_tree`, except it prints lines directly instead + of creating a string representation in memory, so that huge trees can + be handled. + + Args: + root: the root node of the tree + child_func: the function called to get the children of a node + prune: don't visit the same node twice + showtags: print status information to the left of each node line + margin: the format of the left margin to use for children of *root*. + 1 results in a pipe, and 0 results in no pipe. + visited: a dictionary of visited nodes in the current branch if + *prune* is 0, or in the whole tree if *prune* is 1. + lastChild: this is the last leaf of a branch + singleLineDraw: use line-drawing characters rather than ASCII. + """ + + rname = str(root) + + # Initialize 'visited' dict, if required + if visited is None: + visited = {} + + if showtags: + + if showtags == 2: + legend = (' E = exists\n' + + ' R = exists in repository only\n' + + ' b = implicit builder\n' + + ' B = explicit builder\n' + + ' S = side effect\n' + + ' P = precious\n' + + ' A = always build\n' + + ' C = current\n' + + ' N = no clean\n' + + ' H = no cache\n' + + '\n') + sys.stdout.write(legend) + + tags = [ + '[', + ' E'[IDX(root.exists())], + ' R'[IDX(root.rexists() and not root.exists())], + ' BbB'[ + [0, 1][IDX(root.has_explicit_builder())] + + [0, 2][IDX(root.has_builder())] + ], + ' S'[IDX(root.side_effect)], + ' P'[IDX(root.precious)], + ' A'[IDX(root.always_build)], + ' C'[IDX(root.is_up_to_date())], + ' N'[IDX(root.noclean)], + ' H'[IDX(root.nocache)], + ']' + ] + + else: + tags = [] + + def MMM(m): + if singleLineDraw: + return [" ", BOX_VERT + " "][m] + + return [" ", "| "][m] + + margins = list(map(MMM, margin[:-1])) + children = child_func(root) + cross = "+-" + if singleLineDraw: + cross = BOX_VERT_RIGHT + BOX_HORIZ # sign used to point to the leaf. + # check if this is the last leaf of the branch + if lastChild: + # if this if the last leaf, then terminate: + cross = BOX_UP_RIGHT + BOX_HORIZ # sign for the last leaf + + # if this branch has children then split it + if children: + # if it's a leaf: + if prune and rname in visited and children: + cross += BOX_HORIZ + else: + cross += BOX_HORIZ_DOWN + + if prune and rname in visited and children: + sys.stdout.write(''.join(tags + margins + [cross, '[', rname, ']']) + '\n') + return + + sys.stdout.write(''.join(tags + margins + [cross, rname]) + '\n') + + visited[rname] = 1 + + # if this item has children: + if children: + margin.append(1) # Initialize margin with 1 for vertical bar. + idx = IDX(showtags) + _child = 0 # Initialize this for the first child. + for C in children[:-1]: + _child = _child + 1 # number the children + print_tree( + C, + child_func, + prune, + idx, + margin, + visited, + (len(children) - _child) <= 0, + singleLineDraw, + ) + # margins are with space (index 0) because we arrived to the last child. + margin[-1] = 0 + # for this call child and nr of children needs to be set 0, to signal the second phase. + print_tree(children[-1], child_func, prune, idx, margin, visited, True, singleLineDraw) + margin.pop() # destroy the last margin added + + +def do_flatten( + sequence, + result, + isinstance=isinstance, + StringTypes=StringTypes, + SequenceTypes=SequenceTypes, +): # pylint: disable=redefined-outer-name,redefined-builtin + for item in sequence: + if isinstance(item, StringTypes) or not isinstance(item, SequenceTypes): + result.append(item) + else: + do_flatten(item, result) + + +def flatten( # pylint: disable=redefined-outer-name,redefined-builtin + obj, + isinstance=isinstance, + StringTypes=StringTypes, + SequenceTypes=SequenceTypes, + do_flatten=do_flatten, +) -> list: + """Flatten a sequence to a non-nested list. + + Converts either a single scalar or a nested sequence to a non-nested list. + Note that :func:`flatten` considers strings + to be scalars instead of sequences like pure Python would. + """ + if isinstance(obj, StringTypes) or not isinstance(obj, SequenceTypes): + return [obj] + result = [] + for item in obj: + if isinstance(item, StringTypes) or not isinstance(item, SequenceTypes): + result.append(item) + else: + do_flatten(item, result) + return result + + +def flatten_sequence( # pylint: disable=redefined-outer-name,redefined-builtin + sequence, + isinstance=isinstance, + StringTypes=StringTypes, + SequenceTypes=SequenceTypes, + do_flatten=do_flatten, +) -> list: + """Flatten a sequence to a non-nested list. + + Same as :func:`flatten`, but it does not handle the single scalar case. + This is slightly more efficient when one knows that the sequence + to flatten can not be a scalar. + """ + result = [] + for item in sequence: + if isinstance(item, StringTypes) or not isinstance(item, SequenceTypes): + result.append(item) + else: + do_flatten(item, result) + return result + + +# The SCons "semi-deep" copy. +# +# This makes separate copies of lists (including UserList objects) +# dictionaries (including UserDict objects) and tuples, but just copies +# references to anything else it finds. +# +# A special case is any object that has a __semi_deepcopy__() method, +# which we invoke to create the copy. Currently only used by +# BuilderDict to actually prevent the copy operation (as invalid on that object). +# +# The dispatch table approach used here is a direct rip-off from the +# normal Python copy module. + +def semi_deepcopy_dict(obj, exclude=None) -> dict: + if exclude is None: + exclude = [] + return {k: semi_deepcopy(v) for k, v in obj.items() if k not in exclude} + +def _semi_deepcopy_list(obj) -> list: + return [semi_deepcopy(item) for item in obj] + +def _semi_deepcopy_tuple(obj) -> tuple: + return tuple(map(semi_deepcopy, obj)) + +_semi_deepcopy_dispatch = { + dict: semi_deepcopy_dict, + list: _semi_deepcopy_list, + tuple: _semi_deepcopy_tuple, +} + + +def semi_deepcopy(obj): + copier = _semi_deepcopy_dispatch.get(type(obj)) + if copier: + return copier(obj) + + if hasattr(obj, '__semi_deepcopy__') and callable(obj.__semi_deepcopy__): + return obj.__semi_deepcopy__() + + if isinstance(obj, UserDict): + return obj.__class__(semi_deepcopy_dict(obj)) + + if isinstance(obj, (UserList, deque)): + return obj.__class__(_semi_deepcopy_list(obj)) + + return obj + + +class Proxy: + """A simple generic Proxy class, forwarding all calls to subject. + + This means you can take an object, let's call it `'obj_a`, + and wrap it in this Proxy class, with a statement like this:: + + proxy_obj = Proxy(obj_a) + + Then, if in the future, you do something like this:: + + x = proxy_obj.var1 + + since the :class:`Proxy` class does not have a :attr:`var1` attribute + (but presumably `objA` does), the request actually is equivalent to saying:: + + x = obj_a.var1 + + Inherit from this class to create a Proxy. + + With Python 3.5+ this does *not* work transparently + for :class:`Proxy` subclasses that use special .__*__() method names, + because those names are now bound to the class, not the individual + instances. You now need to know in advance which special method names you + want to pass on to the underlying Proxy object, and specifically delegate + their calls like this:: + + class Foo(Proxy): + __str__ = Delegate('__str__') + """ + + def __init__(self, subject): + """Wrap an object as a Proxy object""" + self._subject = subject + + def __getattr__(self, name): + """Retrieve an attribute from the wrapped object. + + Raises: + AttributeError: if attribute `name` doesn't exist. + """ + return getattr(self._subject, name) + + def get(self): + """Retrieve the entire wrapped object""" + return self._subject + + def __eq__(self, other): + if issubclass(other.__class__, self._subject.__class__): + return self._subject == other + return self.__dict__ == other.__dict__ + + +class Delegate: + """A Python Descriptor class that delegates attribute fetches + to an underlying wrapped subject of a Proxy. Typical use:: + + class Foo(Proxy): + __str__ = Delegate('__str__') + """ + def __init__(self, attribute): + self.attribute = attribute + + def __get__(self, obj, cls): + if isinstance(obj, cls): + return getattr(obj._subject, self.attribute) + + return self + + +# attempt to load the windows registry module: +can_read_reg = False +try: + import winreg + + can_read_reg = True + hkey_mod = winreg + +except ImportError: + class _NoError(Exception): + pass + RegError = _NoError + +if can_read_reg: + HKEY_CLASSES_ROOT = hkey_mod.HKEY_CLASSES_ROOT + HKEY_LOCAL_MACHINE = hkey_mod.HKEY_LOCAL_MACHINE + HKEY_CURRENT_USER = hkey_mod.HKEY_CURRENT_USER + HKEY_USERS = hkey_mod.HKEY_USERS + + RegOpenKeyEx = winreg.OpenKeyEx + RegEnumKey = winreg.EnumKey + RegEnumValue = winreg.EnumValue + RegQueryValueEx = winreg.QueryValueEx + RegError = winreg.error + + def RegGetValue(root, key): + r"""Returns a registry value without having to open the key first. + + Only available on Windows platforms with a version of Python that + can read the registry. + + Returns the same thing as :func:`RegQueryValueEx`, except you just + specify the entire path to the value, and don't have to bother + opening the key first. So, instead of:: + + k = SCons.Util.RegOpenKeyEx(SCons.Util.HKEY_LOCAL_MACHINE, + r'SOFTWARE\Microsoft\Windows\CurrentVersion') + out = SCons.Util.RegQueryValueEx(k, 'ProgramFilesDir') + + You can write:: + + out = SCons.Util.RegGetValue(SCons.Util.HKEY_LOCAL_MACHINE, + r'SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDir') + """ + # I would use os.path.split here, but it's not a filesystem + # path... + p = key.rfind('\\') + 1 + keyp = key[: p - 1] # -1 to omit trailing slash + val = key[p:] + k = RegOpenKeyEx(root, keyp) + return RegQueryValueEx(k, val) + + +else: + HKEY_CLASSES_ROOT = None + HKEY_LOCAL_MACHINE = None + HKEY_CURRENT_USER = None + HKEY_USERS = None + + def RegGetValue(root, key): + raise OSError + + def RegOpenKeyEx(root, key): + raise OSError + + +if sys.platform == 'win32': + + def WhereIs(file, path=None, pathext=None, reject=None) -> Optional[str]: + if path is None: + try: + path = os.environ['PATH'] + except KeyError: + return None + if is_String(path): + path = path.split(os.pathsep) + if pathext is None: + try: + pathext = os.environ['PATHEXT'] + except KeyError: + pathext = '.COM;.EXE;.BAT;.CMD' + if is_String(pathext): + pathext = pathext.split(os.pathsep) + for ext in pathext: + if ext.lower() == file[-len(ext):].lower(): + pathext = [''] + break + if reject is None: + reject = [] + if not is_List(reject) and not is_Tuple(reject): + reject = [reject] + for p in path: + f = os.path.join(p, file) + for ext in pathext: + fext = f + ext + if os.path.isfile(fext): + try: + reject.index(fext) + except ValueError: + return os.path.normpath(fext) + continue + return None + +elif os.name == 'os2': + + def WhereIs(file, path=None, pathext=None, reject=None) -> Optional[str]: + if path is None: + try: + path = os.environ['PATH'] + except KeyError: + return None + if is_String(path): + path = path.split(os.pathsep) + if pathext is None: + pathext = ['.exe', '.cmd'] + for ext in pathext: + if ext.lower() == file[-len(ext):].lower(): + pathext = [''] + break + if reject is None: + reject = [] + if not is_List(reject) and not is_Tuple(reject): + reject = [reject] + for p in path: + f = os.path.join(p, file) + for ext in pathext: + fext = f + ext + if os.path.isfile(fext): + try: + reject.index(fext) + except ValueError: + return os.path.normpath(fext) + continue + return None + +else: + + def WhereIs(file, path=None, pathext=None, reject=None) -> Optional[str]: + import stat # pylint: disable=import-outside-toplevel + + if path is None: + try: + path = os.environ['PATH'] + except KeyError: + return None + if is_String(path): + path = path.split(os.pathsep) + if reject is None: + reject = [] + if not is_List(reject) and not is_Tuple(reject): + reject = [reject] + for p in path: + f = os.path.join(p, file) + if os.path.isfile(f): + try: + st = os.stat(f) + except OSError: + # os.stat() raises OSError, not IOError if the file + # doesn't exist, so in this case we let IOError get + # raised so as to not mask possibly serious disk or + # network issues. + continue + if stat.S_IMODE(st[stat.ST_MODE]) & 0o111: + try: + reject.index(f) + except ValueError: + return os.path.normpath(f) + continue + return None + +WhereIs.__doc__ = """\ +Return the path to an executable that matches `file`. + +Searches the given `path` for `file`, respecting any filename +extensions `pathext` (on the Windows platform only), and +returns the full path to the matching command. If no +command is found, return ``None``. + +If `path` is not specified, :attr:`os.environ[PATH]` is used. +If `pathext` is not specified, :attr:`os.environ[PATHEXT]` +is used. Will not select any path name or names in the optional +`reject` list. +""" + + +if sys.platform == 'cygwin': + import subprocess # pylint: disable=import-outside-toplevel + + def get_native_path(path) -> str: + cp = subprocess.run(('cygpath', '-w', path), check=False, stdout=subprocess.PIPE) + return cp.stdout.decode().replace('\n', '') +else: + def get_native_path(path) -> str: + return path + +get_native_path.__doc__ = """\ +Transform an absolute path into a native path for the system. + +In Cygwin, this converts from a Cygwin path to a Windows path, +without regard to whether `path` refers to an existing file +system object. For other platforms, `path` is unchanged. +""" + + +def Split(arg) -> list: + """Returns a list of file names or other objects. + + If `arg` is a string, it will be split on strings of white-space + characters within the string. If `arg` is already a list, the list + will be returned untouched. If `arg` is any other type of object, + it will be returned as a list containing just the object. + + >>> print(Split(" this is a string ")) + ['this', 'is', 'a', 'string'] + >>> print(Split(["stringlist", " preserving ", " spaces "])) + ['stringlist', ' preserving ', ' spaces '] + """ + if is_List(arg) or is_Tuple(arg): + return arg + + if is_String(arg): + return arg.split() + + return [arg] + + +class CLVar(UserList): + """A container for command-line construction variables. + + Forces the use of a list of strings intended as command-line + arguments. Like :class:`collections.UserList`, but the argument + passed to the initializter will be processed by the :func:`Split` + function, which includes special handling for string types: they + will be split into a list of words, not coereced directly to a list. + The same happens if a string is added to a :class:`CLVar`, + which allows doing the right thing with both + :func:`Append`/:func:`Prepend` methods, + as well as with pure Python addition, regardless of whether adding + a list or a string to a construction variable. + + Side effect: spaces will be stripped from individual string + arguments. If you need spaces preserved, pass strings containing + spaces inside a list argument. + + >>> u = UserList("--some --opts and args") + >>> print(len(u), repr(u)) + 22 ['-', '-', 's', 'o', 'm', 'e', ' ', '-', '-', 'o', 'p', 't', 's', ' ', 'a', 'n', 'd', ' ', 'a', 'r', 'g', 's'] + >>> c = CLVar("--some --opts and args") + >>> print(len(c), repr(c)) + 4 ['--some', '--opts', 'and', 'args'] + >>> c += " strips spaces " + >>> print(len(c), repr(c)) + 6 ['--some', '--opts', 'and', 'args', 'strips', 'spaces'] + """ + + def __init__(self, initlist=None): + super().__init__(Split(initlist if initlist is not None else [])) + + def __add__(self, other): + return super().__add__(CLVar(other)) + + def __radd__(self, other): + return super().__radd__(CLVar(other)) + + def __iadd__(self, other): + return super().__iadd__(CLVar(other)) + + def __str__(self): + # Some cases the data can contain Nodes, so make sure they + # processed to string before handing them over to join. + return ' '.join([str(d) for d in self.data]) + + +class Selector(OrderedDict): + """A callable ordered dictionary that maps file suffixes to + dictionary values. We preserve the order in which items are added + so that :func:`get_suffix` calls always return the first suffix added. + """ + def __call__(self, env, source, ext=None): + if ext is None: + try: + ext = source[0].get_suffix() + except IndexError: + ext = "" + try: + return self[ext] + except KeyError: + # Try to perform Environment substitution on the keys of + # the dictionary before giving up. + s_dict = {} + for (k, v) in self.items(): + if k is not None: + s_k = env.subst(k) + if s_k in s_dict: + # We only raise an error when variables point + # to the same suffix. If one suffix is literal + # and a variable suffix contains this literal, + # the literal wins and we don't raise an error. + raise KeyError(s_dict[s_k][0], k, s_k) + s_dict[s_k] = (k, v) + try: + return s_dict[ext][1] + except KeyError: + try: + return self[None] + except KeyError: + return None + + +if sys.platform == 'cygwin': + # On Cygwin, os.path.normcase() lies, so just report back the + # fact that the underlying Windows OS is case-insensitive. + def case_sensitive_suffixes(s1, s2) -> bool: # pylint: disable=unused-argument + return False + +else: + def case_sensitive_suffixes(s1, s2) -> bool: + return os.path.normcase(s1) != os.path.normcase(s2) + + +def adjustixes(fname, pre, suf, ensure_suffix=False) -> str: + """Adjust filename prefixes and suffixes as needed. + + Add `prefix` to `fname` if specified. + Add `suffix` to `fname` if specified and if `ensure_suffix` is ``True`` + """ + + if pre: + path, fn = os.path.split(os.path.normpath(fname)) + + # Handle the odd case where the filename = the prefix. + # In that case, we still want to add the prefix to the file + if not fn.startswith(pre) or fn == pre: + fname = os.path.join(path, pre + fn) + # Only append a suffix if the suffix we're going to add isn't already + # there, and if either we've been asked to ensure the specific suffix + # is present or there's no suffix on it at all. + # Also handle the odd case where the filename = the suffix. + # in that case we still want to append the suffix + if suf and not fname.endswith(suf) and \ + (ensure_suffix or not splitext(fname)[1]): + fname = fname + suf + return fname + + +# From Tim Peters, +# https://code.activestate.com/recipes/52560 +# ASPN: Python Cookbook: Remove duplicates from a sequence +# (Also in the printed Python Cookbook.) +# Updated. This algorithm is used by some scanners and tools. + +def unique(seq): + """Return a list of the elements in seq without duplicates, ignoring order. + + >>> mylist = unique([1, 2, 3, 1, 2, 3]) + >>> print(sorted(mylist)) + [1, 2, 3] + >>> mylist = unique("abcabc") + >>> print(sorted(mylist)) + ['a', 'b', 'c'] + >>> mylist = unique(([1, 2], [2, 3], [1, 2])) + >>> print(sorted(mylist)) + [[1, 2], [2, 3]] + + For best speed, all sequence elements should be hashable. Then + unique() will usually work in linear time. + + If not possible, the sequence elements should enjoy a total + ordering, and if list(s).sort() doesn't raise TypeError it's + assumed that they do enjoy a total ordering. Then unique() will + usually work in O(N*log2(N)) time. + + If that's not possible either, the sequence elements must support + equality-testing. Then unique() will usually work in quadratic time. + """ + + if not seq: + return [] + + # Try using a dict first, as that's the fastest and will usually + # work. If it doesn't work, it will usually fail quickly, so it + # usually doesn't cost much to *try* it. It requires that all the + # sequence elements be hashable, and support equality comparison. + # TODO: should be even faster: return(list(set(seq))) + with suppress(TypeError): + return list(dict.fromkeys(seq)) + + # We couldn't hash all the elements (got a TypeError). + # Next fastest is to sort, which brings the equal elements together; + # then duplicates are easy to weed out in a single pass. + # NOTE: Python's list.sort() was designed to be efficient in the + # presence of many duplicate elements. This isn't true of all + # sort functions in all languages or libraries, so this approach + # is more effective in Python than it may be elsewhere. + n = len(seq) + try: + t = sorted(seq) + except TypeError: + pass # move on to the next method + else: + last = t[0] + lasti = i = 1 + while i < n: + if t[i] != last: + t[lasti] = last = t[i] + lasti = lasti + 1 + i = i + 1 + return t[:lasti] + + # Brute force is all that's left. + u = [] + for x in seq: + if x not in u: + u.append(x) + return u + +# Best way (assuming Python 3.7, but effectively 3.6) to remove +# duplicates from a list in while preserving order, according to +# https://stackoverflow.com/questions/480214/how-do-i-remove-duplicates-from-a-list-while-preserving-order/17016257#17016257 +def uniquer_hashables(seq): + return list(dict.fromkeys(seq)) + +# Recipe 19.11 "Reading Lines with Continuation Characters", +# by Alex Martelli, straight from the Python CookBook (2nd edition). +def logical_lines(physical_lines, joiner=''.join): + logical_line = [] + for line in physical_lines: + stripped = line.rstrip() + if stripped.endswith('\\'): + # a line which continues w/the next physical line + logical_line.append(stripped[:-1]) + else: + # a line which does not continue, end of logical line + logical_line.append(line) + yield joiner(logical_line) + logical_line = [] + if logical_line: + # end of sequence implies end of last logical line + yield joiner(logical_line) + + +class LogicalLines: + """ Wrapper class for the logical_lines method. + + Allows us to read all "logical" lines at once from a given file object. + """ + + def __init__(self, fileobj): + self.fileobj = fileobj + + def readlines(self): + return list(logical_lines(self.fileobj)) + + +class UniqueList(UserList): + """A list which maintains uniqueness. + + Uniquing is lazy: rather than being assured on list changes, it is fixed + up on access by those methods which need to act on a unique list to be + correct. That means things like "in" don't have to eat the uniquing time. + """ + def __init__(self, initlist=None): + super().__init__(initlist) + self.unique = True + + def __make_unique(self): + if not self.unique: + self.data = uniquer_hashables(self.data) + self.unique = True + + def __repr__(self): + self.__make_unique() + return super().__repr__() + + def __lt__(self, other): + self.__make_unique() + return super().__lt__(other) + + def __le__(self, other): + self.__make_unique() + return super().__le__(other) + + def __eq__(self, other): + self.__make_unique() + return super().__eq__(other) + + def __ne__(self, other): + self.__make_unique() + return super().__ne__(other) + + def __gt__(self, other): + self.__make_unique() + return super().__gt__(other) + + def __ge__(self, other): + self.__make_unique() + return super().__ge__(other) + + # __contains__ doesn't need to worry about uniquing, inherit + + def __len__(self): + self.__make_unique() + return super().__len__() + + def __getitem__(self, i): + self.__make_unique() + return super().__getitem__(i) + + def __setitem__(self, i, item): + super().__setitem__(i, item) + self.unique = False + + # __delitem__ doesn't need to worry about uniquing, inherit + + def __add__(self, other): + result = super().__add__(other) + result.unique = False + return result + + def __radd__(self, other): + result = super().__radd__(other) + result.unique = False + return result + + def __iadd__(self, other): + result = super().__iadd__(other) + result.unique = False + return result + + def __mul__(self, other): + result = super().__mul__(other) + result.unique = False + return result + + def __rmul__(self, other): + result = super().__rmul__(other) + result.unique = False + return result + + def __imul__(self, other): + result = super().__imul__(other) + result.unique = False + return result + + def append(self, item): + super().append(item) + self.unique = False + + def insert(self, i, item): + super().insert(i, item) + self.unique = False + + def count(self, item): + self.__make_unique() + return super().count(item) + + def index(self, item, *args): + self.__make_unique() + return super().index(item, *args) + + def reverse(self): + self.__make_unique() + super().reverse() + + # TODO: Py3.8: def sort(self, /, *args, **kwds): + def sort(self, *args, **kwds): + self.__make_unique() + return super().sort(*args, **kwds) + + def extend(self, other): + super().extend(other) + self.unique = False + + +class Unbuffered: + """A proxy that wraps a file object, flushing after every write. + + Delegates everything else to the wrapped object. + """ + def __init__(self, file): + self.file = file + + def write(self, arg): + # Stdout might be connected to a pipe that has been closed + # by now. The most likely reason for the pipe being closed + # is that the user has press ctrl-c. It this is the case, + # then SCons is currently shutdown. We therefore ignore + # IOError's here so that SCons can continue and shutdown + # properly so that the .sconsign is correctly written + # before SCons exits. + with suppress(IOError): + self.file.write(arg) + self.file.flush() + + def writelines(self, arg): + with suppress(IOError): + self.file.writelines(arg) + self.file.flush() + + def __getattr__(self, attr): + return getattr(self.file, attr) + +def make_path_relative(path) -> str: + """Converts an absolute path name to a relative pathname.""" + + if os.path.isabs(path): + drive_s, path = os.path.splitdrive(path) + + if not drive_s: + path = re.compile(r"/*(.*)").findall(path)[0] + else: + path = path[1:] + + assert not os.path.isabs(path), path + return path + + +def silent_intern(x): + """ + Perform :mod:`sys.intern` on the passed argument and return the result. + If the input is ineligible for interning the original argument is + returned and no exception is thrown. + """ + try: + return sys.intern(x) + except TypeError: + return x + + +def cmp(a, b) -> bool: + """A cmp function because one is no longer available in python3.""" + return (a > b) - (a < b) + + +def print_time(): + """Hack to return a value from Main if can't import Main.""" + # pylint: disable=redefined-outer-name,import-outside-toplevel + from SCons.Script.Main import print_time + return print_time + + +def wait_for_process_to_die(pid): + """ + Wait for specified process to die, or alternatively kill it + NOTE: This function operates best with psutil pypi package + TODO: Add timeout which raises exception + """ + # wait for the process to fully killed + try: + import psutil # pylint: disable=import-outside-toplevel + while True: + if pid not in [proc.pid for proc in psutil.process_iter()]: + break + time.sleep(0.1) + except ImportError: + # if psutil is not installed we can do this the hard way + while True: + if sys.platform == 'win32': + import ctypes # pylint: disable=import-outside-toplevel + PROCESS_QUERY_INFORMATION = 0x1000 + processHandle = ctypes.windll.kernel32.OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid) + if processHandle == 0: + break + ctypes.windll.kernel32.CloseHandle(processHandle) + time.sleep(0.1) + else: + try: + os.kill(pid, 0) + except OSError: + break + time.sleep(0.1) + +# From: https://stackoverflow.com/questions/1741972/how-to-use-different-formatters-with-the-same-logging-handler-in-python +class DispatchingFormatter(Formatter): + + def __init__(self, formatters, default_formatter): + self._formatters = formatters + self._default_formatter = default_formatter + + def format(self, record): + formatter = self._formatters.get(record.name, self._default_formatter) + return formatter.format(record) + + +def sanitize_shell_env(execution_env: dict) -> dict: + """Sanitize all values in *execution_env* + + The execution environment (typically comes from (env['ENV']) is + propagated to the shell, and may need to be cleaned first. + + Args: + execution_env: The shell environment variables to be propagated + to the spawned shell. + + Returns: + sanitized dictionary of env variables (similar to what you'd get + from :data:`os.environ`) + """ + # Ensure that the ENV values are all strings: + new_env = {} + for key, value in execution_env.items(): + if is_List(value): + # If the value is a list, then we assume it is a path list, + # because that's a pretty common list-like value to stick + # in an environment variable: + value = flatten_sequence(value) + new_env[key] = os.pathsep.join(map(str, value)) + else: + # It's either a string or something else. If it isn't a + # string or a list, then we just coerce it to a string, which + # is the proper way to handle Dir and File instances and will + # produce something reasonable for just about everything else: + new_env[key] = str(value) + return new_env + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Util/envs.py b/scons/scons-local-4.5.1/SCons/Util/envs.py new file mode 100644 index 000000000..963c963a8 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Util/envs.py @@ -0,0 +1,325 @@ +# SPDX-License-Identifier: MIT +# +# Copyright The SCons Foundation + +"""Various SCons utility functions + +Routines for working with environments and construction variables +that don't need the specifics of Environment. +""" + +import os +from types import MethodType, FunctionType +from typing import Union + +from .types import is_List, is_Tuple, is_String + + +def PrependPath( + oldpath, newpath, sep=os.pathsep, delete_existing=True, canonicalize=None +) -> Union[list, str]: + """Prepend *newpath* path elements to *oldpath*. + + Will only add any particular path once (leaving the first one it + encounters and ignoring the rest, to preserve path order), and will + :mod:`os.path.normpath` and :mod:`os.path.normcase` all paths to help + assure this. This can also handle the case where *oldpath* + is a list instead of a string, in which case a list will be returned + instead of a string. For example: + + >>> p = PrependPath("/foo/bar:/foo", "/biz/boom:/foo") + >>> print(p) + /biz/boom:/foo:/foo/bar + + If *delete_existing* is ``False``, then adding a path that exists will + not move it to the beginning; it will stay where it is in the list. + + >>> p = PrependPath("/foo/bar:/foo", "/biz/boom:/foo", delete_existing=False) + >>> print(p) + /biz/boom:/foo/bar:/foo + + If *canonicalize* is not ``None``, it is applied to each element of + *newpath* before use. + """ + orig = oldpath + is_list = True + paths = orig + if not is_List(orig) and not is_Tuple(orig): + paths = paths.split(sep) + is_list = False + + if is_String(newpath): + newpaths = newpath.split(sep) + elif not is_List(newpath) and not is_Tuple(newpath): + newpaths = [newpath] # might be a Dir + else: + newpaths = newpath + + if canonicalize: + newpaths = list(map(canonicalize, newpaths)) + + if not delete_existing: + # First uniquify the old paths, making sure to + # preserve the first instance (in Unix/Linux, + # the first one wins), and remembering them in normpaths. + # Then insert the new paths at the head of the list + # if they're not already in the normpaths list. + result = [] + normpaths = [] + for path in paths: + if not path: + continue + normpath = os.path.normpath(os.path.normcase(path)) + if normpath not in normpaths: + result.append(path) + normpaths.append(normpath) + newpaths.reverse() # since we're inserting at the head + for path in newpaths: + if not path: + continue + normpath = os.path.normpath(os.path.normcase(path)) + if normpath not in normpaths: + result.insert(0, path) + normpaths.append(normpath) + paths = result + + else: + newpaths = newpaths + paths # prepend new paths + + normpaths = [] + paths = [] + # now we add them only if they are unique + for path in newpaths: + normpath = os.path.normpath(os.path.normcase(path)) + if path and normpath not in normpaths: + paths.append(path) + normpaths.append(normpath) + + if is_list: + return paths + + return sep.join(paths) + + +def AppendPath( + oldpath, newpath, sep=os.pathsep, delete_existing=True, canonicalize=None +) -> Union[list, str]: + """Append *newpath* path elements to *oldpath*. + + Will only add any particular path once (leaving the last one it + encounters and ignoring the rest, to preserve path order), and will + :mod:`os.path.normpath` and :mod:`os.path.normcase` all paths to help + assure this. This can also handle the case where *oldpath* + is a list instead of a string, in which case a list will be returned + instead of a string. For example: + + >>> p = AppendPath("/foo/bar:/foo", "/biz/boom:/foo") + >>> print(p) + /foo/bar:/biz/boom:/foo + + If *delete_existing* is ``False``, then adding a path that exists + will not move it to the end; it will stay where it is in the list. + + >>> p = AppendPath("/foo/bar:/foo", "/biz/boom:/foo", delete_existing=False) + >>> print(p) + /foo/bar:/foo:/biz/boom + + If *canonicalize* is not ``None``, it is applied to each element of + *newpath* before use. + """ + orig = oldpath + is_list = True + paths = orig + if not is_List(orig) and not is_Tuple(orig): + paths = paths.split(sep) + is_list = False + + if is_String(newpath): + newpaths = newpath.split(sep) + elif not is_List(newpath) and not is_Tuple(newpath): + newpaths = [newpath] # might be a Dir + else: + newpaths = newpath + + if canonicalize: + newpaths = list(map(canonicalize, newpaths)) + + if not delete_existing: + # add old paths to result, then + # add new paths if not already present + # (I thought about using a dict for normpaths for speed, + # but it's not clear hashing the strings would be faster + # than linear searching these typically short lists.) + result = [] + normpaths = [] + for path in paths: + if not path: + continue + result.append(path) + normpaths.append(os.path.normpath(os.path.normcase(path))) + for path in newpaths: + if not path: + continue + normpath = os.path.normpath(os.path.normcase(path)) + if normpath not in normpaths: + result.append(path) + normpaths.append(normpath) + paths = result + else: + # start w/ new paths, add old ones if not present, + # then reverse. + newpaths = paths + newpaths # append new paths + newpaths.reverse() + + normpaths = [] + paths = [] + # now we add them only if they are unique + for path in newpaths: + normpath = os.path.normpath(os.path.normcase(path)) + if path and normpath not in normpaths: + paths.append(path) + normpaths.append(normpath) + paths.reverse() + + if is_list: + return paths + + return sep.join(paths) + + +def AddPathIfNotExists(env_dict, key, path, sep=os.pathsep): + """Add a path element to a construction variable. + + `key` is looked up in `env_dict`, and `path` is added to it if it + is not already present. `env_dict[key]` is assumed to be in the + format of a PATH variable: a list of paths separated by `sep` tokens. + + >>> env = {'PATH': '/bin:/usr/bin:/usr/local/bin'} + >>> AddPathIfNotExists(env, 'PATH', '/opt/bin') + >>> print(env['PATH']) + /opt/bin:/bin:/usr/bin:/usr/local/bin + """ + try: + is_list = True + paths = env_dict[key] + if not is_List(env_dict[key]): + paths = paths.split(sep) + is_list = False + if os.path.normcase(path) not in list(map(os.path.normcase, paths)): + paths = [path] + paths + if is_list: + env_dict[key] = paths + else: + env_dict[key] = sep.join(paths) + except KeyError: + env_dict[key] = path + + +class MethodWrapper: + """A generic Wrapper class that associates a method with an object. + + As part of creating this MethodWrapper object an attribute with the + specified name (by default, the name of the supplied method) is added + to the underlying object. When that new "method" is called, our + :meth:`__call__` method adds the object as the first argument, simulating + the Python behavior of supplying "self" on method calls. + + We hang on to the name by which the method was added to the underlying + base class so that we can provide a method to "clone" ourselves onto + a new underlying object being copied (without which we wouldn't need + to save that info). + """ + def __init__(self, obj, method, name=None): + if name is None: + name = method.__name__ + self.object = obj + self.method = method + self.name = name + setattr(self.object, name, self) + + def __call__(self, *args, **kwargs): + nargs = (self.object,) + args + return self.method(*nargs, **kwargs) + + def clone(self, new_object): + """ + Returns an object that re-binds the underlying "method" to + the specified new object. + """ + return self.__class__(new_object, self.method, self.name) + + +# The original idea for AddMethod() came from the +# following post to the ActiveState Python Cookbook: +# +# ASPN: Python Cookbook : Install bound methods in an instance +# https://code.activestate.com/recipes/223613 +# +# Changed as follows: +# * Switched the installmethod() "object" and "function" arguments, +# so the order reflects that the left-hand side is the thing being +# "assigned to" and the right-hand side is the value being assigned. +# * The instance/class detection is changed a bit, as it's all +# new-style classes now with Py3. +# * The by-hand construction of the function object from renamefunction() +# is not needed, the remaining bit is now used inline in AddMethod. + + +def AddMethod(obj, function, name=None): + """Add a method to an object. + + Adds *function* to *obj* if *obj* is a class object. + Adds *function* as a bound method if *obj* is an instance object. + If *obj* looks like an environment instance, use :class:`~SCons.Util.MethodWrapper` + to add it. If *name* is supplied it is used as the name of *function*. + + Although this works for any class object, the intent as a public + API is to be used on Environment, to be able to add a method to all + construction environments; it is preferred to use ``env.AddMethod`` + to add to an individual environment. + + >>> class A: + ... ... + + >>> a = A() + + >>> def f(self, x, y): + ... self.z = x + y + + >>> AddMethod(A, f, "add") + >>> a.add(2, 4) + >>> print(a.z) + 6 + >>> a.data = ['a', 'b', 'c', 'd', 'e', 'f'] + >>> AddMethod(a, lambda self, i: self.data[i], "listIndex") + >>> print(a.listIndex(3)) + d + + """ + if name is None: + name = function.__name__ + else: + # "rename" + function = FunctionType( + function.__code__, function.__globals__, name, function.__defaults__ + ) + + if hasattr(obj, '__class__') and obj.__class__ is not type: + # obj is an instance, so it gets a bound method. + if hasattr(obj, "added_methods"): + method = MethodWrapper(obj, function, name) + obj.added_methods.append(method) + else: + method = MethodType(function, obj) + else: + # obj is a class + method = function + + setattr(obj, name, method) + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Util/hashes.py b/scons/scons-local-4.5.1/SCons/Util/hashes.py new file mode 100644 index 000000000..b97cd4d07 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Util/hashes.py @@ -0,0 +1,401 @@ +# SPDX-License-Identifier: MIT +# +# Copyright The SCons Foundation + +"""SCons utility functions + +Routines for working with hash formats. +""" + +import hashlib +import sys + +from .types import to_bytes + + +# Default hash function and format. SCons-internal. +DEFAULT_HASH_FORMATS = ['md5', 'sha1', 'sha256'] +ALLOWED_HASH_FORMATS = [] +_HASH_FUNCTION = None +_HASH_FORMAT = None + + +def _attempt_init_of_python_3_9_hash_object(hash_function_object, sys_used=sys): + """Initialize hash function with non-security indicator. + + In Python 3.9 and onwards, :mod:`hashlib` constructors accept a + keyword argument *usedforsecurity*, which, if set to ``False``, + lets us continue to use algorithms that have been deprecated either + by FIPS or by Python itself, as the MD5 algorithm SCons prefers is + not being used for security purposes as much as a short, 32 char + hash that is resistant to accidental collisions. + + In prior versions of python, :mod:`hashlib` returns a native function + wrapper, which errors out when it's queried for the optional + parameter, so this function wraps that call. + + It can still throw a ValueError if the initialization fails due to + FIPS compliance issues, but that is assumed to be the responsibility + of the caller. + """ + if hash_function_object is None: + return None + + # https://stackoverflow.com/a/11887885 details how to check versions + # with the "packaging" library. However, for our purposes, checking + # the version is greater than or equal to 3.9 is good enough, as the API + # is guaranteed to have support for the 'usedforsecurity' flag in 3.9. See + # https://docs.python.org/3/library/hashlib.html#:~:text=usedforsecurity + # for the version support notes. + if (sys_used.version_info.major > 3) or ( + sys_used.version_info.major == 3 and sys_used.version_info.minor >= 9 + ): + return hash_function_object(usedforsecurity=False) + + # Note that this can throw a ValueError in FIPS-enabled versions of + # Linux prior to 3.9. The OpenSSL hashlib will throw on first init here, + # but it is assumed to be responsibility of the caller to diagnose the + # ValueError & potentially display the error to screen. + return hash_function_object() + + +def _set_allowed_viable_default_hashes(hashlib_used, sys_used=sys) -> None: + """Check if the default hash algorithms can be called. + + This util class is sometimes called prior to setting the + user-selected hash algorithm, meaning that on FIPS-compliant systems + the library would default-initialize MD5 and throw an exception in + set_hash_format. A common case is using the SConf options, which can + run prior to main, and thus ignore the options.hash_format variable. + + This function checks the DEFAULT_HASH_FORMATS and sets the + ALLOWED_HASH_FORMATS to only the ones that can be called. In Python + >= 3.9 this will always default to MD5 as in Python 3.9 there is an + optional attribute "usedforsecurity" set for the method. + + Throws if no allowed hash formats are detected. + """ + global ALLOWED_HASH_FORMATS + _last_error = None + # note: if you call this method repeatedly, example using timeout, + # this is needed. Otherwise it keeps appending valid formats to the string. + ALLOWED_HASH_FORMATS = [] + + for test_algorithm in DEFAULT_HASH_FORMATS: + _test_hash = getattr(hashlib_used, test_algorithm, None) + # we know hashlib claims to support it... check to see if we can call it. + if _test_hash is not None: + # The hashing library will throw an exception on initialization + # in FIPS mode, meaning if we call the default algorithm returned + # with no parameters, it'll throw if it's a bad algorithm, + # otherwise it will append it to the known good formats. + try: + _attempt_init_of_python_3_9_hash_object(_test_hash, sys_used) + ALLOWED_HASH_FORMATS.append(test_algorithm) + except ValueError as e: + _last_error = e + continue + + if len(ALLOWED_HASH_FORMATS) == 0: + from SCons.Errors import ( + SConsEnvironmentError, + ) # pylint: disable=import-outside-toplevel + + # chain the exception thrown with the most recent error from hashlib. + raise SConsEnvironmentError( + 'No usable hash algorithms found.' + 'Most recent error from hashlib attached in trace.' + ) from _last_error + + +_set_allowed_viable_default_hashes(hashlib) + + +def get_hash_format(): + """Retrieves the hash format or ``None`` if not overridden. + + A return value of ``None`` + does not guarantee that MD5 is being used; instead, it means that the + default precedence order documented in :func:`SCons.Util.set_hash_format` + is respected. + """ + return _HASH_FORMAT + + +def _attempt_get_hash_function(hash_name, hashlib_used=hashlib, sys_used=sys): + """Wrapper used to try to initialize a hash function given. + + If successful, returns the name of the hash function back to the user. + + Otherwise returns None. + """ + try: + _fetch_hash = getattr(hashlib_used, hash_name, None) + if _fetch_hash is None: + return None + _attempt_init_of_python_3_9_hash_object(_fetch_hash, sys_used) + return hash_name + except ValueError: + # If attempt_init_of_python_3_9 throws, this is typically due to FIPS + # being enabled. However, if we get to this point, the viable hash + # function check has either been bypassed or otherwise failed to + # properly restrict the user to only the supported functions. + # As such throw the UserError as an internal assertion-like error. + return None + + +def set_hash_format(hash_format, hashlib_used=hashlib, sys_used=sys): + """Sets the default hash format used by SCons. + + If `hash_format` is ``None`` or + an empty string, the default is determined by this function. + + Currently the default behavior is to use the first available format of + the following options: MD5, SHA1, SHA256. + """ + global _HASH_FORMAT, _HASH_FUNCTION + + _HASH_FORMAT = hash_format + if hash_format: + hash_format_lower = hash_format.lower() + if hash_format_lower not in ALLOWED_HASH_FORMATS: + from SCons.Errors import ( + UserError, + ) # pylint: disable=import-outside-toplevel + + # User can select something not supported by their OS but + # normally supported by SCons, example, selecting MD5 in an + # OS with FIPS-mode turned on. Therefore we first check if + # SCons supports it, and then if their local OS supports it. + if hash_format_lower in DEFAULT_HASH_FORMATS: + raise UserError( + 'While hash format "%s" is supported by SCons, the ' + 'local system indicates only the following hash ' + 'formats are supported by the hashlib library: %s' + % (hash_format_lower, ', '.join(ALLOWED_HASH_FORMATS)) + ) + + # The hash format isn't supported by SCons in any case. + # Warn the user, and if we detect that SCons supports more + # algorithms than their local system supports, + # warn the user about that too. + if ALLOWED_HASH_FORMATS == DEFAULT_HASH_FORMATS: + raise UserError( + 'Hash format "%s" is not supported by SCons. Only ' + 'the following hash formats are supported: %s' + % (hash_format_lower, ', '.join(ALLOWED_HASH_FORMATS)) + ) + + raise UserError( + 'Hash format "%s" is not supported by SCons. ' + 'SCons supports more hash formats than your local system ' + 'is reporting; SCons supports: %s. Your local system only ' + 'supports: %s' + % ( + hash_format_lower, + ', '.join(DEFAULT_HASH_FORMATS), + ', '.join(ALLOWED_HASH_FORMATS), + ) + ) + + # This is not expected to fail. If this fails it means the + # set_allowed_viable_default_hashes function did not throw, + # or when it threw, the exception was caught and ignored, or + # the global ALLOWED_HASH_FORMATS was changed by an external user. + _HASH_FUNCTION = _attempt_get_hash_function( + hash_format_lower, hashlib_used, sys_used + ) + + if _HASH_FUNCTION is None: + from SCons.Errors import ( + UserError, + ) # pylint: disable=import-outside-toplevel + + raise UserError( + f'Hash format "{hash_format_lower}" is not available in your ' + 'Python interpreter. Expected to be supported algorithm by ' + 'set_allowed_viable_default_hashes. Assertion error in SCons.' + ) + else: + # Set the default hash format based on what is available, defaulting + # to the first supported hash algorithm (usually md5) for backwards + # compatibility. In FIPS-compliant systems this usually defaults to + # SHA1, unless that too has been disabled. + for choice in ALLOWED_HASH_FORMATS: + _HASH_FUNCTION = _attempt_get_hash_function(choice, hashlib_used, sys_used) + + if _HASH_FUNCTION is not None: + break + else: + # This is not expected to happen in practice. + from SCons.Errors import ( + UserError, + ) # pylint: disable=import-outside-toplevel + + raise UserError( + 'Your Python interpreter does not have MD5, SHA1, or SHA256. ' + 'SCons requires at least one. Expected to support one or more ' + 'during set_allowed_viable_default_hashes.' + ) + + +# Ensure that this is initialized in case either: +# 1. This code is running in a unit test. +# 2. This code is running in a consumer that does hash operations while +# SConscript files are being loaded. +set_hash_format(None) + + +def get_current_hash_algorithm_used(): + """Returns the current hash algorithm name used. + + Where the python version >= 3.9, this is expected to return md5. + If python's version is <= 3.8, this returns md5 on non-FIPS-mode platforms, and + sha1 or sha256 on FIPS-mode Linux platforms. + + This function is primarily useful for testing, where one expects a value to be + one of N distinct hashes, and therefore the test needs to know which hash to select. + """ + return _HASH_FUNCTION + + +def _get_hash_object(hash_format, hashlib_used=hashlib, sys_used=sys): + """Allocates a hash object using the requested hash format. + + Args: + hash_format: Hash format to use. + + Returns: + hashlib object. + """ + if hash_format is None: + if _HASH_FUNCTION is None: + from SCons.Errors import ( + UserError, + ) # pylint: disable=import-outside-toplevel + + raise UserError( + 'There is no default hash function. Did you call ' + 'a hashing function before SCons was initialized?' + ) + return _attempt_init_of_python_3_9_hash_object( + getattr(hashlib_used, _HASH_FUNCTION, None), sys_used + ) + + if not hasattr(hashlib, hash_format): + from SCons.Errors import UserError # pylint: disable=import-outside-toplevel + + raise UserError( + f'Hash format "{hash_format}" is not available in your Python interpreter.' + ) + + return _attempt_init_of_python_3_9_hash_object( + getattr(hashlib, hash_format), sys_used + ) + + +def hash_signature(s, hash_format=None): + """ + Generate hash signature of a string + + Args: + s: either string or bytes. Normally should be bytes + hash_format: Specify to override default hash format + + Returns: + String of hex digits representing the signature + """ + m = _get_hash_object(hash_format) + try: + m.update(to_bytes(s)) + except TypeError: + m.update(to_bytes(str(s))) + + return m.hexdigest() + + +def hash_file_signature(fname, chunksize=65536, hash_format=None): + """ + Generate the md5 signature of a file + + Args: + fname: file to hash + chunksize: chunk size to read + hash_format: Specify to override default hash format + + Returns: + String of Hex digits representing the signature + """ + + m = _get_hash_object(hash_format) + with open(fname, "rb") as f: + while True: + blck = f.read(chunksize) + if not blck: + break + m.update(to_bytes(blck)) + return m.hexdigest() + + +def hash_collect(signatures, hash_format=None): + """ + Collects a list of signatures into an aggregate signature. + + Args: + signatures: a list of signatures + hash_format: Specify to override default hash format + + Returns: + the aggregate signature + """ + + if len(signatures) == 1: + return signatures[0] + + return hash_signature(', '.join(signatures), hash_format) + + +_MD5_WARNING_SHOWN = False + + +def _show_md5_warning(function_name): + """Shows a deprecation warning for various MD5 functions.""" + + global _MD5_WARNING_SHOWN + + if not _MD5_WARNING_SHOWN: + import SCons.Warnings # pylint: disable=import-outside-toplevel + + SCons.Warnings.warn( + SCons.Warnings.DeprecatedWarning, + f"Function {function_name} is deprecated", + ) + _MD5_WARNING_SHOWN = True + + +def MD5signature(s): + """Deprecated. Use :func:`hash_signature` instead.""" + + _show_md5_warning("MD5signature") + return hash_signature(s) + + +def MD5filesignature(fname, chunksize=65536): + """Deprecated. Use :func:`hash_file_signature` instead.""" + + _show_md5_warning("MD5filesignature") + return hash_file_signature(fname, chunksize) + + +def MD5collect(signatures): + """Deprecated. Use :func:`hash_collect` instead.""" + + _show_md5_warning("MD5collect") + return hash_collect(signatures) + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Util/types.py b/scons/scons-local-4.5.1/SCons/Util/types.py new file mode 100644 index 000000000..2071217e9 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Util/types.py @@ -0,0 +1,315 @@ +# SPDX-License-Identifier: MIT +# +# Copyright The SCons Foundation + +"""Various SCons utility functions + +Routines which check types and do type conversions. +""" + +import os +import pprint +import re +from typing import Optional + +from collections import UserDict, UserList, UserString, deque +from collections.abc import MappingView, Iterable + +# Functions for deciding if things are like various types, mainly to +# handle UserDict, UserList and UserString like their underlying types. +# +# Yes, all of this manual testing breaks polymorphism, and the real +# Pythonic way to do all of this would be to just try it and handle the +# exception, but handling the exception when it's not the right type is +# often too slow. + +# A trick is used to speed up these functions. Default arguments are +# used to take a snapshot of the global functions and constants used +# by these functions. This transforms accesses to global variables into +# local variable accesses (i.e. LOAD_FAST instead of LOAD_GLOBAL). +# Since checkers dislike this, it's now annotated for pylint, to flag +# (mostly for other readers of this code) we're doing this intentionally. +# TODO: experts affirm this is still faster, but maybe check if worth it? + +DictTypes = (dict, UserDict) +ListTypes = (list, UserList, deque) + +# With Python 3, there are view types that are sequences. Other interesting +# sequences are range and bytearray. What we don't want is strings: while +# they are iterable sequences, in SCons usage iterating over a string is +# almost never what we want. So basically iterable-but-not-string: +SequenceTypes = (list, tuple, deque, UserList, MappingView) + +# Note that profiling data shows a speed-up when comparing +# explicitly with str instead of simply comparing +# with basestring. (at least on Python 2.5.1) +# TODO: PY3 check this benchmarking is still correct. +StringTypes = (str, UserString) + +# Empirically, it is faster to check explicitly for str than for basestring. +BaseStringTypes = str + + +def is_Dict( # pylint: disable=redefined-outer-name,redefined-builtin + obj, isinstance=isinstance, DictTypes=DictTypes +) -> bool: + """Check if object is a dict.""" + return isinstance(obj, DictTypes) + + +def is_List( # pylint: disable=redefined-outer-name,redefined-builtin + obj, isinstance=isinstance, ListTypes=ListTypes +) -> bool: + """Check if object is a list.""" + return isinstance(obj, ListTypes) + + +def is_Sequence( # pylint: disable=redefined-outer-name,redefined-builtin + obj, isinstance=isinstance, SequenceTypes=SequenceTypes +) -> bool: + """Check if object is a sequence.""" + return isinstance(obj, SequenceTypes) + + +def is_Tuple( # pylint: disable=redefined-builtin + obj, isinstance=isinstance, tuple=tuple +) -> bool: + """Check if object is a tuple.""" + return isinstance(obj, tuple) + + +def is_String( # pylint: disable=redefined-outer-name,redefined-builtin + obj, isinstance=isinstance, StringTypes=StringTypes +) -> bool: + """Check if object is a string.""" + return isinstance(obj, StringTypes) + + +def is_Scalar( # pylint: disable=redefined-outer-name,redefined-builtin + obj, isinstance=isinstance, StringTypes=StringTypes, Iterable=Iterable, +) -> bool: + """Check if object is a scalar: not a container or iterable.""" + # Profiling shows that there is an impressive speed-up of 2x + # when explicitly checking for strings instead of just not + # sequence when the argument (i.e. obj) is already a string. + # But, if obj is a not string then it is twice as fast to + # check only for 'not sequence'. The following code therefore + # assumes that the obj argument is a string most of the time. + # Update: now using collections.abc.Iterable for the 2nd check. + # Note: None is considered a "scalar" for this check, which is correct + # for the usage in SCons.Environment._add_cppdefines. + return isinstance(obj, StringTypes) or not isinstance(obj, Iterable) + + +# From Dinu C. Gherman, +# Python Cookbook, second edition, recipe 6.17, p. 277. +# Also: https://code.activestate.com/recipes/68205 +# ASPN: Python Cookbook: Null Object Design Pattern + + +class Null: + """Null objects always and reliably 'do nothing'.""" + + def __new__(cls, *args, **kwargs): + if '_instance' not in vars(cls): + cls._instance = super(Null, cls).__new__(cls, *args, **kwargs) + return cls._instance + + def __init__(self, *args, **kwargs): + pass + + def __call__(self, *args, **kwargs): + return self + + def __repr__(self): + return f"Null(0x{id(self):08X})" + + def __bool__(self): + return False + + def __getattr__(self, name): + return self + + def __setattr__(self, name, value): + return self + + def __delattr__(self, name): + return self + + +class NullSeq(Null): + """A Null object that can also be iterated over.""" + + def __len__(self): + return 0 + + def __iter__(self): + return iter(()) + + def __getitem__(self, i): + return self + + def __delitem__(self, i): + return self + + def __setitem__(self, i, v): + return self + + +def to_bytes(s) -> bytes: + """Convert object to bytes.""" + if s is None: + return b'None' + if isinstance(s, (bytes, bytearray)): + # if already bytes return. + return s + return bytes(s, 'utf-8') + + +def to_str(s) -> str: + """Convert object to string.""" + if s is None: + return 'None' + if is_String(s): + return s + return str(s, 'utf-8') + + +# Generic convert-to-string functions. The wrapper +# to_String_for_signature() will use a for_signature() method if the +# specified object has one. + + +def to_String( # pylint: disable=redefined-outer-name,redefined-builtin + obj, + isinstance=isinstance, + str=str, + UserString=UserString, + BaseStringTypes=BaseStringTypes, +) -> str: + """Return a string version of obj.""" + if isinstance(obj, BaseStringTypes): + # Early out when already a string! + return obj + + if isinstance(obj, UserString): + # obj.data can only be a regular string. Please see the UserString initializer. + return obj.data + + return str(obj) + + +def to_String_for_subst( # pylint: disable=redefined-outer-name,redefined-builtin + obj, + isinstance=isinstance, + str=str, + BaseStringTypes=BaseStringTypes, + SequenceTypes=SequenceTypes, + UserString=UserString, +) -> str: + """Return a string version of obj for subst usage.""" + # Note that the test cases are sorted by order of probability. + if isinstance(obj, BaseStringTypes): + return obj + + if isinstance(obj, SequenceTypes): + return ' '.join([to_String_for_subst(e) for e in obj]) + + if isinstance(obj, UserString): + # obj.data can only a regular string. Please see the UserString initializer. + return obj.data + + return str(obj) + + +def to_String_for_signature( # pylint: disable=redefined-outer-name,redefined-builtin + obj, to_String_for_subst=to_String_for_subst, AttributeError=AttributeError, +) -> str: + """Return a string version of obj for signature usage. + + Like :func:`to_String_for_subst` but has special handling for + scons objects that have a :meth:`for_signature` method, and for dicts. + """ + try: + f = obj.for_signature + except AttributeError: + if isinstance(obj, dict): + # pprint will output dictionary in key sorted order + # with py3.5 the order was randomized. Depending on dict order + # which was undefined until py3.6 (where it's by insertion order) + # was not wise. + # TODO: Change code when floor is raised to PY36 + return pprint.pformat(obj, width=1000000) + return to_String_for_subst(obj) + else: + return f() + + +def get_env_bool(env, name, default=False) -> bool: + """Convert a construction variable to bool. + + If the value of *name* in *env* is 'true', 'yes', 'y', 'on' (case + insensitive) or anything convertible to int that yields non-zero then + return ``True``; if 'false', 'no', 'n', 'off' (case insensitive) + or a number that converts to integer zero return ``False``. + Otherwise, return `default`. + + Args: + env: construction environment, or any dict-like object + name: name of the variable + default: value to return if *name* not in *env* or cannot + be converted (default: False) + + Returns: + the "truthiness" of `name` + """ + try: + var = env[name] + except KeyError: + return default + try: + return bool(int(var)) + except ValueError: + if str(var).lower() in ('true', 'yes', 'y', 'on'): + return True + + if str(var).lower() in ('false', 'no', 'n', 'off'): + return False + + return default + + +def get_os_env_bool(name, default=False) -> bool: + """Convert an environment variable to bool. + + Conversion is the same as for :func:`get_env_bool`. + """ + return get_env_bool(os.environ, name, default) + + +_get_env_var = re.compile(r'^\$([_a-zA-Z]\w*|{[_a-zA-Z]\w*})$') + + +def get_environment_var(varstr) -> Optional[str]: + """Return undecorated construction variable string. + + Determine if `varstr` looks like a reference + to a single environment variable, like `"$FOO"` or `"${FOO}"`. + If so, return that variable with no decorations, like `"FOO"`. + If not, return `None`. + """ + mo = _get_env_var.match(to_String(varstr)) + if mo: + var = mo.group(1) + if var[0] == '{': + return var[1:-1] + return var + + return None + + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Utilities/ConfigureCache.py b/scons/scons-local-4.5.1/SCons/Utilities/ConfigureCache.py new file mode 100644 index 000000000..67aac3c5b --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Utilities/ConfigureCache.py @@ -0,0 +1,171 @@ +#! /usr/bin/env python +# +# SCons - a Software Constructor +# +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Show or convert the configuration of an SCons cache directory. + +A cache of derived files is stored by file signature. +The files are split into directories named by the first few +digits of the signature. The prefix length used for directory +names can be changed by this script. +""" + +import argparse +import glob +import json +import os + +def rearrange_cache_entries(current_prefix_len, new_prefix_len): + """Move cache files if prefix length changed. + + Move the existing cache files to new directories of the + appropriate name length and clean up the old directories. + """ + print('Changing prefix length from', current_prefix_len, + 'to', new_prefix_len) + dirs = set() + old_dirs = set() + for file in glob.iglob(os.path.join('*', '*')): + name = os.path.basename(file) + dname = name[:current_prefix_len].upper() + if dname not in old_dirs: + print('Migrating', dname) + old_dirs.add(dname) + dname = name[:new_prefix_len].upper() + if dname not in dirs: + os.mkdir(dname) + dirs.add(dname) + os.rename(file, os.path.join(dname, name)) + + # Now delete the original directories + for dname in old_dirs: + os.rmdir(dname) + + +# The configuration dictionary should have one entry per entry in the +# cache config. The value of each entry should include the following: +# implicit - (optional) This is to allow adding a new config entry and also +# changing the behaviour of the system at the same time. This +# indicates the value the config entry would have had if it had +# been specified. +# default - The value the config entry should have if it wasn't previously +# specified +# command-line - parameters to pass to ArgumentParser.add_argument +# converter - (optional) Function to call if conversion is required +# if this configuration entry changes +config_entries = { + 'prefix_len': { + 'implicit': 1, + 'default': 2, + 'command-line': { + 'help': 'Length of cache file name used as subdirectory prefix', + 'metavar': '', + 'type': int + }, + 'converter': rearrange_cache_entries + } +} + + +def main(): + parser = argparse.ArgumentParser( + description='Modify the configuration of an scons cache directory', + epilog=''' + Unspecified options will not be changed unless they are not + set at all, in which case they are set to an appropriate default. + ''') + + parser.add_argument('cache-dir', help='Path to scons cache directory') + for param in config_entries: + parser.add_argument('--' + param.replace('_', '-'), + **config_entries[param]['command-line']) + parser.add_argument('--version', + action='version', + version='%(prog)s 1.0') + parser.add_argument('--show', + action="store_true", + help="show current configuration") + + # Get the command line as a dict without any of the unspecified entries. + args = dict([x for x in vars(parser.parse_args()).items() if x[1]]) + + # It seems somewhat strange to me, but positional arguments don't get the - + # in the name changed to _, whereas optional arguments do... + cache = args['cache-dir'] + if not os.path.isdir(cache): + raise RuntimeError("There is no cache directory named %s" % cache) + os.chdir(cache) + del args['cache-dir'] + + if not os.path.exists('config'): + # old config dirs did not have a 'config' file. Try to update. + # Validate the only files in the directory are directories 0-9, a-f + expected = ['{:X}'.format(x) for x in range(0, 16)] + if not set(os.listdir('.')).issubset(expected): + raise RuntimeError( + "%s does not look like a valid version 1 cache directory" % cache) + config = dict() + else: + with open('config') as conf: + config = json.load(conf) + + if args.get('show', None): + print("Current configuration in '%s':" % cache) + print(json.dumps(config, sort_keys=True, + indent=4, separators=(',', ': '))) + # in case of the show argument, emit some stats as well + file_count = 0 + for _, _, files in os.walk('.'): + file_count += len(files) + if file_count: # skip config file if it exists + file_count -= 1 + print("Cache contains %s files" % file_count) + del args['show'] + + # Find any keys that are not currently set but should be + for key in config_entries: + if key not in config: + if 'implicit' in config_entries[key]: + config[key] = config_entries[key]['implicit'] + else: + config[key] = config_entries[key]['default'] + if key not in args: + args[key] = config_entries[key]['default'] + + # Now go through each entry in args to see if it changes an existing config + # setting. + for key in args: + if args[key] != config[key]: + if 'converter' in config_entries[key]: + config_entries[key]['converter'](config[key], args[key]) + config[key] = args[key] + + # and write the updated config file + with open('config', 'w') as conf: + json.dump(config, conf) + +if __name__ == "__main__": + main() diff --git a/scons/scons-local-4.5.1/SCons/Utilities/__init__.py b/scons/scons-local-4.5.1/SCons/Utilities/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/scons/scons-local-4.5.1/SCons/Utilities/sconsign.py b/scons/scons-local-4.5.1/SCons/Utilities/sconsign.py new file mode 100644 index 000000000..ae6919693 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Utilities/sconsign.py @@ -0,0 +1,514 @@ +#! /usr/bin/env python +# +# SCons - a Software Constructor +# +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Utility script to dump information from SCons signature database.""" + +import getopt +import importlib +import os +import sys +from dbm import whichdb + +import time +import pickle + +import SCons.compat +import SCons.SConsign + + +def my_whichdb(filename): + if filename[-7:] == ".dblite": + return "SCons.dblite" + try: + with open(filename + ".dblite", "rb"): + return "SCons.dblite" + except IOError: + pass + return whichdb(filename) + + +def my_import(mname): + """Import database module. + + This was used if the module was *not* SCons.dblite, to allow + for programmatic importing. It is no longer used, in favor of + importlib.import_module, and will be removed eventually. + """ + import imp + + if '.' in mname: + i = mname.rfind('.') + parent = my_import(mname[:i]) + fp, pathname, description = imp.find_module(mname[i+1:], parent.__path__) + else: + fp, pathname, description = imp.find_module(mname) + return imp.load_module(mname, fp, pathname, description) + + +class Flagger: + default_value = 1 + + def __setitem__(self, item, value): + self.__dict__[item] = value + self.default_value = 0 + + def __getitem__(self, item): + return self.__dict__.get(item, self.default_value) + + +Do_Call = None +Print_Directories = [] +Print_Entries = [] +Print_Flags = Flagger() +Verbose = 0 +Readable = 0 +Warns = 0 + + +def default_mapper(entry, name): + """ + Stringify an entry that doesn't have an explicit mapping. + + Args: + entry: entry + name: field name + + Returns: str + + """ + try: + val = eval("entry." + name) + except AttributeError: + val = None + return str(val) + + +def map_action(entry, _): + """ + Stringify an action entry and signature. + + Args: + entry: action entry + second argument is not used + + Returns: str + + """ + try: + bact = entry.bact + bactsig = entry.bactsig + except AttributeError: + return None + return '%s [%s]' % (bactsig, bact) + + +def map_timestamp(entry, _): + """ + Stringify a timestamp entry. + + Args: + entry: timestamp entry + second argument is not used + + Returns: str + + """ + try: + timestamp = entry.timestamp + except AttributeError: + timestamp = None + if Readable and timestamp: + return "'" + time.ctime(timestamp) + "'" + else: + return str(timestamp) + + +def map_bkids(entry, _): + """ + Stringify an implicit entry. + + Args: + entry: + second argument is not used + + Returns: str + + """ + try: + bkids = entry.bsources + entry.bdepends + entry.bimplicit + bkidsigs = entry.bsourcesigs + entry.bdependsigs + entry.bimplicitsigs + except AttributeError: + return None + + if len(bkids) != len(bkidsigs): + global Warns + Warns += 1 + # add warning to result rather than direct print so it will line up + msg = "Warning: missing information, {} ids but {} sigs" + result = [msg.format(len(bkids), len(bkidsigs))] + else: + result = [] + result += [nodeinfo_string(bkid, bkidsig, " ") + for bkid, bkidsig in zip(bkids, bkidsigs)] + if not result: + return None + return "\n ".join(result) + + +map_field = { + 'action' : map_action, + 'timestamp' : map_timestamp, + 'bkids' : map_bkids, +} + +map_name = { + 'implicit' : 'bkids', +} + + +def field(name, entry, verbose=Verbose): + if not Print_Flags[name]: + return None + fieldname = map_name.get(name, name) + mapper = map_field.get(fieldname, default_mapper) + val = mapper(entry, name) + if verbose: + val = name + ": " + val + return val + + +def nodeinfo_raw(name, ninfo, prefix=""): + """ + This just formats the dictionary, which we would normally use str() + to do, except that we want the keys sorted for deterministic output. + """ + d = ninfo.__getstate__() + try: + keys = ninfo.field_list + ['_version_id'] + except AttributeError: + keys = sorted(d.keys()) + values = [] + for key in keys: + values.append('%s: %s' % (repr(key), repr(d.get(key)))) + if '\n' in name: + name = repr(name) + return name + ': {' + ', '.join(values) + '}' + + +def nodeinfo_cooked(name, ninfo, prefix=""): + try: + field_list = ninfo.field_list + except AttributeError: + field_list = [] + if '\n' in name: + name = repr(name) + outlist = [name + ':'] + [ + f for f in [field(x, ninfo, Verbose) for x in field_list] if f + ] + if Verbose: + sep = '\n ' + prefix + else: + sep = ' ' + return sep.join(outlist) + + +nodeinfo_string = nodeinfo_cooked + + +def printfield(name, entry, prefix=""): + outlist = field("implicit", entry, 0) + if outlist: + if Verbose: + print(" implicit:") + print(" " + outlist) + outact = field("action", entry, 0) + if outact: + if Verbose: + print(" action: " + outact) + else: + print(" " + outact) + + +def printentries(entries, location): + if Print_Entries: + for name in Print_Entries: + try: + entry = entries[name] + except KeyError: + err = "sconsign: no entry `%s' in `%s'\n" % (name, location) + sys.stderr.write(err) + else: + try: + ninfo = entry.ninfo + except AttributeError: + print(name + ":") + else: + print(nodeinfo_string(name, entry.ninfo)) + printfield(name, entry.binfo) + else: + for name in sorted(entries.keys()): + entry = entries[name] + try: + entry.ninfo + except AttributeError: + print(name + ":") + else: + print(nodeinfo_string(name, entry.ninfo)) + printfield(name, entry.binfo) + + +class Do_SConsignDB: + def __init__(self, dbm_name, dbm): + self.dbm_name = dbm_name + self.dbm = dbm + + def __call__(self, fname): + # The *dbm modules stick their own file suffixes on the names + # that are passed in. This causes us to jump through some + # hoops here. + try: + # Try opening the specified file name. Example: + # SPECIFIED OPENED BY self.dbm.open() + # --------- ------------------------- + # .sconsign => .sconsign.dblite + # .sconsign.dblite => .sconsign.dblite.dblite + db = self.dbm.open(fname, "r") + except (IOError, OSError) as e: + print_e = e + try: + # That didn't work, so try opening the base name, + # so that if they actually passed in 'sconsign.dblite' + # (for example), the dbm module will put the suffix back + # on for us and open it anyway. + db = self.dbm.open(os.path.splitext(fname)[0], "r") + except (IOError, OSError): + # That didn't work either. See if the file name + # they specified even exists (independent of the dbm + # suffix-mangling). + try: + with open(fname, "rb"): + pass # this is a touch only, we don't use it here. + except (IOError, OSError) as e: + # Nope, that file doesn't even exist, so report that + # fact back. + print_e = e + sys.stderr.write("sconsign: %s\n" % print_e) + return + except KeyboardInterrupt: + raise + except pickle.UnpicklingError: + sys.stderr.write("sconsign: ignoring invalid `%s' file `%s'\n" + % (self.dbm_name, fname)) + return + except Exception as e: + sys.stderr.write("sconsign: ignoring invalid `%s' file `%s': %s\n" + % (self.dbm_name, fname, e)) + exc_type, _, _ = sys.exc_info() + if exc_type.__name__ == "ValueError": + sys.stderr.write("unrecognized pickle protocol.\n") + return + + if Print_Directories: + for dir in Print_Directories: + try: + val = db[dir] + except KeyError: + err = "sconsign: no dir `%s' in `%s'\n" % (dir, args[0]) + sys.stderr.write(err) + else: + self.printentries(dir, val) + else: + for dir in sorted(db.keys()): + self.printentries(dir, db[dir]) + + @staticmethod + def printentries(dir, val): + try: + print('=== ' + dir + ':') + except TypeError: + print('=== ' + dir.decode() + ':') + printentries(pickle.loads(val), dir) + + +def Do_SConsignDir(name): + try: + with open(name, 'rb') as fp: + try: + sconsign = SCons.SConsign.Dir(fp) + except KeyboardInterrupt: + raise + except pickle.UnpicklingError: + err = "sconsign: ignoring invalid .sconsign file `%s'\n" % name + sys.stderr.write(err) + return + except Exception as e: + err = "sconsign: ignoring invalid .sconsign file `%s': %s\n" % (name, e) + sys.stderr.write(err) + return + printentries(sconsign.entries, args[0]) + except (IOError, OSError) as e: + sys.stderr.write("sconsign: %s\n" % e) + return + + +############################################################################## +def main(): + global Do_Call + global nodeinfo_string + global args + global Verbose + global Readable + + helpstr = """\ +Usage: sconsign [OPTIONS] [FILE ...] + +Options: + -a, --act, --action Print build action information. + -c, --csig Print content signature information. + -d DIR, --dir=DIR Print only info about DIR. + -e ENTRY, --entry=ENTRY Print only info about ENTRY. + -f FORMAT, --format=FORMAT FILE is in the specified FORMAT. + -h, --help Print this message and exit. + -i, --implicit Print implicit dependency information. + -r, --readable Print timestamps in human-readable form. + --raw Print raw Python object representations. + -s, --size Print file sizes. + -t, --timestamp Print timestamp information. + -v, --verbose Verbose, describe each field. +""" + + try: + opts, args = getopt.getopt( + sys.argv[1:], + 'acd:e:f:hirstv', + [ + 'act', + 'action', + 'csig', + 'dir=', + 'entry=', + 'format=', + 'help', + 'implicit', + 'raw', + 'readable', + 'size', + 'timestamp', + 'verbose', + ], + ) + except getopt.GetoptError as err: + sys.stderr.write(str(err) + '\n') + print(helpstr) + sys.exit(2) + + for o, a in opts: + if o in ('-a', '--act', '--action'): + Print_Flags['action'] = 1 + elif o in ('-c', '--csig'): + Print_Flags['csig'] = 1 + elif o in ('-d', '--dir'): + Print_Directories.append(a) + elif o in ('-e', '--entry'): + Print_Entries.append(a) + elif o in ('-f', '--format'): + # Try to map the given DB format to a known module + # name, that we can then try to import... + Module_Map = {'dblite': 'SCons.dblite', 'sconsign': None} + dbm_name = Module_Map.get(a, a) + if dbm_name: + try: + if dbm_name != "SCons.dblite": + dbm = importlib.import_module(dbm_name) + else: + import SCons.dblite + + dbm = SCons.dblite + # Ensure that we don't ignore corrupt DB files, + # this was handled by calling my_import('SCons.dblite') + # again in earlier versions... + SCons.dblite.IGNORE_CORRUPT_DBFILES = False + except ImportError: + sys.stderr.write("sconsign: illegal file format `%s'\n" % a) + print(helpstr) + sys.exit(2) + Do_Call = Do_SConsignDB(a, dbm) + else: + Do_Call = Do_SConsignDir + elif o in ('-h', '--help'): + print(helpstr) + sys.exit(0) + elif o in ('-i', '--implicit'): + Print_Flags['implicit'] = 1 + elif o in ('--raw',): + nodeinfo_string = nodeinfo_raw + elif o in ('-r', '--readable'): + Readable = 1 + elif o in ('-s', '--size'): + Print_Flags['size'] = 1 + elif o in ('-t', '--timestamp'): + Print_Flags['timestamp'] = 1 + elif o in ('-v', '--verbose'): + Verbose = 1 + + if Do_Call: + for a in args: + Do_Call(a) + else: + if not args: + args = [".sconsign.dblite"] + for a in args: + dbm_name = my_whichdb(a) + if dbm_name: + Map_Module = {'SCons.dblite': 'dblite'} + if dbm_name != "SCons.dblite": + dbm = importlib.import_module(dbm_name) + else: + import SCons.dblite + + dbm = SCons.dblite + # Ensure that we don't ignore corrupt DB files, + # this was handled by calling my_import('SCons.dblite') + # again in earlier versions... + SCons.dblite.IGNORE_CORRUPT_DBFILES = False + Do_SConsignDB(Map_Module.get(dbm_name, dbm_name), dbm)(a) + else: + Do_SConsignDir(a) + + if Warns: + print("NOTE: there were %d warnings, please check output" % Warns) + + +if __name__ == "__main__": + main() + sys.exit(0) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Variables/BoolVariable.py b/scons/scons-local-4.5.1/SCons/Variables/BoolVariable.py new file mode 100644 index 000000000..71e44c9cd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Variables/BoolVariable.py @@ -0,0 +1,98 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Variable type for true/false Variables. + +Usage example:: + + opts = Variables() + opts.Add(BoolVariable('embedded', 'build for an embedded system', False)) + ... + if env['embedded']: + ... +""" + +from typing import Tuple, Callable + +import SCons.Errors + +__all__ = ['BoolVariable',] + +TRUE_STRINGS = ('y', 'yes', 'true', 't', '1', 'on' , 'all') +FALSE_STRINGS = ('n', 'no', 'false', 'f', '0', 'off', 'none') + + +def _text2bool(val: str) -> bool: + """Convert boolean-like string to boolean. + + If *val* looks like it expresses a bool-like value, based on + the :const:`TRUE_STRINGS` and :const:`FALSE_STRINGS` tuples, + return the appropriate value. + + This is usable as a converter function for SCons Variables. + + Raises: + ValueError: if *val* cannot be converted to boolean. + """ + + lval = val.lower() + if lval in TRUE_STRINGS: + return True + if lval in FALSE_STRINGS: + return False + raise ValueError("Invalid value for boolean option: %s" % val) + + +def _validator(key, val, env) -> None: + """Validate that the value of *key* in *env* is a boolean. + + Parmaeter *val* is not used in the check. + + Usable as a validator function for SCons Variables. + + Raises: + KeyError: if *key* is not set in *env* + UserError: if the value of *key* is not ``True`` or ``False``. + """ + if not env[key] in (True, False): + raise SCons.Errors.UserError( + 'Invalid value for boolean option %s: %s' % (key, env[key]) + ) + + +def BoolVariable(key, help, default) -> Tuple[str, str, str, Callable, Callable]: + """Return a tuple describing a boolean SCons Variable. + + The input parameters describe a boolean option. Returns a tuple + including the correct converter and validator. + The *help* text will have ``(yes|no)`` automatically appended to show the + valid values. The result is usable as input to :meth:`Add`. + """ + help = '%s (yes|no)' % help + return (key, help, default, _validator, _text2bool) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Variables/EnumVariable.py b/scons/scons-local-4.5.1/SCons/Variables/EnumVariable.py new file mode 100644 index 000000000..e39eb0283 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Variables/EnumVariable.py @@ -0,0 +1,110 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Variable type for enumeration Variables. + +Enumeration variables allow selection of one from a specified set of values. + +Usage example:: + + opts = Variables() + opts.Add( + EnumVariable( + 'debug', + help='debug output and symbols', + default='no', + allowed_values=('yes', 'no', 'full'), + map={}, + ignorecase=2, + ) + ) + ... + if env['debug'] == 'full': + ... +""" + +from typing import Tuple, Callable + +import SCons.Errors + +__all__ = ['EnumVariable',] + + +def _validator(key, val, env, vals) -> None: + if val not in vals: + raise SCons.Errors.UserError( + 'Invalid value for option %s: %s. Valid values are: %s' % (key, val, vals)) + + +def EnumVariable(key, help, default, allowed_values, map={}, ignorecase=0) -> Tuple[str, str, str, Callable, Callable]: + """Return a tuple describing an enumaration SCons Variable. + + The input parameters describe an option with only certain values + allowed. Returns A tuple including an appropriate converter and + validator. The result is usable as input to :meth:`Add`. + + *key* and *default* are passed directly on to :meth:`Add`. + + *help* is the descriptive part of the help text, + and will have the allowed values automatically appended. + + *allowed_values* is a list of strings, which are the allowed values + for this option. + + The *map*-dictionary may be used for converting the input value + into canonical values (e.g. for aliases). + + The value of *ignorecase* defines the behaviour of the validator: + + * 0: the validator/converter are case-sensitive. + * 1: the validator/converter are case-insensitive. + * 2: the validator/converter is case-insensitive and the + converted value will always be lower-case. + + The *validator* tests whether the value is in the list of allowed values. + The *converter* converts input values according to the given + *map*-dictionary (unmapped input values are returned unchanged). + """ + + help = '%s (%s)' % (help, '|'.join(allowed_values)) + # define validator + if ignorecase: + validator = lambda key, val, env: \ + _validator(key, val.lower(), env, allowed_values) + else: + validator = lambda key, val, env: \ + _validator(key, val, env, allowed_values) + # define converter + if ignorecase == 2: + converter = lambda val: map.get(val.lower(), val).lower() + elif ignorecase == 1: + converter = lambda val: map.get(val.lower(), val) + else: + converter = lambda val: map.get(val, val) + return (key, help, default, validator, converter) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Variables/ListVariable.py b/scons/scons-local-4.5.1/SCons/Variables/ListVariable.py new file mode 100644 index 000000000..7bd6053d0 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Variables/ListVariable.py @@ -0,0 +1,152 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Variable type for list Variables. + +A 'list' option may either be 'all', 'none' or a list of names +separated by comma. After the option has been processed, the option +value holds either the named list elements, all list elements or no +list elements at all. + +Usage example:: + + list_of_libs = Split('x11 gl qt ical') + + opts = Variables() + opts.Add( + ListVariable( + 'shared', + help='libraries to build as shared libraries', + default='all', + elems=list_of_libs, + ) + ) + ... + for lib in list_of_libs: + if lib in env['shared']: + env.SharedObject(...) + else: + env.Object(...) +""" + +# Known Bug: This should behave like a Set-Type, but does not really, +# since elements can occur twice. + +import collections +from typing import Tuple, Callable + +import SCons.Util + +__all__ = ['ListVariable',] + + +class _ListVariable(collections.UserList): + def __init__(self, initlist=None, allowedElems=None): + if initlist is None: + initlist = [] + if allowedElems is None: + allowedElems = [] + super().__init__([_f for _f in initlist if _f]) + self.allowedElems = sorted(allowedElems) + + def __cmp__(self, other): + raise NotImplementedError + + def __eq__(self, other): + raise NotImplementedError + + def __ge__(self, other): + raise NotImplementedError + + def __gt__(self, other): + raise NotImplementedError + + def __le__(self, other): + raise NotImplementedError + + def __lt__(self, other): + raise NotImplementedError + + def __str__(self): + if not len(self): + return 'none' + self.data.sort() + if self.data == self.allowedElems: + return 'all' + else: + return ','.join(self) + + def prepare_to_store(self): + return self.__str__() + +def _converter(val, allowedElems, mapdict) -> _ListVariable: + """ """ + if val == 'none': + val = [] + elif val == 'all': + val = allowedElems + else: + val = [_f for _f in val.split(',') if _f] + val = [mapdict.get(v, v) for v in val] + notAllowed = [v for v in val if v not in allowedElems] + if notAllowed: + raise ValueError( + "Invalid value(s) for option: %s" % ','.join(notAllowed) + ) + return _ListVariable(val, allowedElems) + + +# def _validator(key, val, env) -> None: +# """ """ +# # TODO: write validator for pgk list +# pass + + +def ListVariable(key, help, default, names, map={}) -> Tuple[str, str, str, None, Callable]: + """Return a tuple describing a list SCons Variable. + + The input parameters describe a 'list' option. Returns + a tuple including the correct converter and validator. + The result is usable for input to :meth:`Add`. + + *help* will have text appended indicating the legal values + (not including any extra names from *map*). + + *map* can be used to map alternative names to the ones in *names* - + that is, a form of alias. + + A 'list' option may either be 'all', 'none' or a list of + names (separated by commas). + """ + names_str = 'allowed names: %s' % ' '.join(names) + if SCons.Util.is_List(default): + default = ','.join(default) + help = '\n '.join( + (help, '(all|none|comma-separated list of names)', names_str)) + return (key, help, default, None, lambda val: _converter(val, names, map)) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Variables/PackageVariable.py b/scons/scons-local-4.5.1/SCons/Variables/PackageVariable.py new file mode 100644 index 000000000..58c8441bd --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Variables/PackageVariable.py @@ -0,0 +1,107 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Variable type for package Variables. + +To be used whenever a 'package' may be enabled/disabled and the +package path may be specified. + +Given these options :: + + x11=no (disables X11 support) + x11=yes (will search for the package installation dir) + x11=/usr/local/X11 (will check this path for existence) + +Can be used as a replacement for autoconf's ``--with-xxx=yyy`` :: + + opts = Variables() + opts.Add( + PackageVariable( + key='x11', + help='use X11 installed here (yes = search some places)', + default='yes' + ) + ) + ... + if env['x11'] == True: + dir = ... # search X11 in some standard places ... + env['x11'] = dir + if env['x11']: + ... # build with x11 ... +""" + +from typing import Tuple, Callable + +import SCons.Errors + +__all__ = ['PackageVariable',] + +ENABLE_STRINGS = ('1', 'yes', 'true', 'on', 'enable', 'search') +DISABLE_STRINGS = ('0', 'no', 'false', 'off', 'disable') + +def _converter(val): + """ """ + lval = val.lower() + if lval in ENABLE_STRINGS: + return True + if lval in DISABLE_STRINGS: + return False + return val + + +def _validator(key, val, env, searchfunc) -> None: + """ """ + # NB: searchfunc is currently undocumented and unsupported + # TODO write validator, check for path + import os + + if env[key] is True: + if searchfunc: + env[key] = searchfunc(key, val) + elif env[key] and not os.path.exists(val): + raise SCons.Errors.UserError( + 'Path does not exist for option %s: %s' % (key, val)) + + +def PackageVariable(key, help, default, searchfunc=None) -> Tuple[str, str, str, Callable, Callable]: + """Return a tuple describing a package list SCons Variable. + + The input parameters describe a 'package list' option. Returns + a tuple including the correct converter and validator appended. + The result is usable as input to :meth:`Add` . + + A 'package list' option may either be 'all', 'none' or a pathname + string. This information is appended to *help*. + """ + # NB: searchfunc is currently undocumented and unsupported + help = '\n '.join( + (help, '( yes | no | /path/to/%s )' % key)) + return (key, help, default, + lambda k, v, e: _validator(k, v, e, searchfunc), + _converter) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Variables/PathVariable.py b/scons/scons-local-4.5.1/SCons/Variables/PathVariable.py new file mode 100644 index 000000000..a5bf6c59f --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Variables/PathVariable.py @@ -0,0 +1,158 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Variable type for path Variables. + +To be used whenever a user-specified path override setting should be allowed. + +Arguments to PathVariable are: + * *key* - name of this option on the command line (e.g. "prefix") + * *help* - help string for option + * *default* - default value for this option + * *validator* - [optional] validator for option value. Predefined are: + + * *PathAccept* - accepts any path setting; no validation + * *PathIsDir* - path must be an existing directory + * *PathIsDirCreate* - path must be a dir; will create + * *PathIsFile* - path must be a file + * *PathExists* - path must exist (any type) [default] + + The *validator* is a function that is called and which should return + True or False to indicate if the path is valid. The arguments + to the validator function are: (*key*, *val*, *env*). *key* is the + name of the option, *val* is the path specified for the option, + and *env* is the environment to which the Options have been added. + +Usage example:: + + opts = Variables() + opts.Add( + PathVariable( + 'qtdir', + help='where the root of Qt is installed', + default=qtdir, + validator=PathIsDir, + ) + ) + opts.Add( + PathVariable( + 'qt_includes', + help='where the Qt includes are installed', + default='$qtdir/includes', + validator=PathIsDirCreate, + ) + ) + opts.Add( + PathVariable( + 'qt_libraries', + help='where the Qt library is installed', + default='$qtdir/lib', + ) + ) +""" + + +import os +import os.path +from typing import Tuple, Callable + +import SCons.Errors + +__all__ = ['PathVariable',] + +class _PathVariableClass: + + @staticmethod + def PathAccept(key, val, env) -> None: + """Accepts any path, no checking done.""" + pass + + @staticmethod + def PathIsDir(key, val, env) -> None: + """Validator to check if Path is a directory.""" + if not os.path.isdir(val): + if os.path.isfile(val): + m = 'Directory path for option %s is a file: %s' + else: + m = 'Directory path for option %s does not exist: %s' + raise SCons.Errors.UserError(m % (key, val)) + + @staticmethod + def PathIsDirCreate(key, val, env) -> None: + """Validator to check if Path is a directory, + creating it if it does not exist.""" + try: + os.makedirs(val, exist_ok=True) + except FileExistsError: + m = 'Path for option %s is a file, not a directory: %s' + raise SCons.Errors.UserError(m % (key, val)) + except PermissionError: + m = 'Path for option %s could not be created: %s' + raise SCons.Errors.UserError(m % (key, val)) + + @staticmethod + def PathIsFile(key, val, env) -> None: + """Validator to check if Path is a file""" + if not os.path.isfile(val): + if os.path.isdir(val): + m = 'File path for option %s is a directory: %s' + else: + m = 'File path for option %s does not exist: %s' + raise SCons.Errors.UserError(m % (key, val)) + + @staticmethod + def PathExists(key, val, env) -> None: + """Validator to check if Path exists""" + if not os.path.exists(val): + m = 'Path for option %s does not exist: %s' + raise SCons.Errors.UserError(m % (key, val)) + + def __call__(self, key, help, default, validator=None) -> Tuple[str, str, str, Callable, None]: + """Return a tuple describing a path list SCons Variable. + + The input parameters describe a 'path list' option. Returns + a tuple with the correct converter and validator appended. The + result is usable for input to :meth:`Add`. + + The *default* option specifies the default path to use if the + user does not specify an override with this option. + + *validator* is a validator, see this file for examples + """ + if validator is None: + validator = self.PathExists + + if SCons.Util.is_List(key) or SCons.Util.is_Tuple(key): + helpmsg = '%s ( /path/to/%s )' % (help, key[0]) + else: + helpmsg = '%s ( /path/to/%s )' % (help, key) + return (key, helpmsg, default, validator, None) + + +PathVariable = _PathVariableClass() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Variables/__init__.py b/scons/scons-local-4.5.1/SCons/Variables/__init__.py new file mode 100644 index 000000000..fc78de553 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Variables/__init__.py @@ -0,0 +1,336 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Adds user-friendly customizable variables to an SCons build. """ + +import os.path +import sys +from functools import cmp_to_key + +import SCons.Environment +import SCons.Errors +import SCons.Util +import SCons.Warnings + +from .BoolVariable import BoolVariable # okay +from .EnumVariable import EnumVariable # okay +from .ListVariable import ListVariable # naja +from .PackageVariable import PackageVariable # naja +from .PathVariable import PathVariable # okay + + +class Variables: + """ + Holds all the options, updates the environment with the variables, + and renders the help text. + + If *is_global* is true, this is a singleton, create only once. + + Args: + files (optional): List of option configuration files to load + (backward compatibility). If a single string is passed it is + automatically placed in a file list (Default value = None) + args (optional): dictionary to override values set from *files*. + (Default value = None) + is_global (optional): global instance? (Default value = True) + + """ + instance = None + + def __init__(self, files=None, args=None, is_global=True): + if args is None: + args = {} + self.options = [] + self.args = args + if not SCons.Util.is_List(files): + if files: + files = [files,] + else: + files = [] + self.files = files + self.unknown = {} + + # create the singleton instance + if is_global: + self = Variables.instance + if not Variables.instance: + Variables.instance=self + + def _do_add(self, key, help="", default=None, validator=None, converter=None, **kwargs) -> None: + + class Variable: + pass + + option = Variable() + + # If we get a list or a tuple, we take the first element as the + # option key and store the remaining in aliases. + if SCons.Util.is_List(key) or SCons.Util.is_Tuple(key): + option.key = key[0] + option.aliases = list(key[1:]) + else: + option.key = key + # TODO: normalize to not include key in aliases. Currently breaks tests. + option.aliases = [key,] + if not SCons.Environment.is_valid_construction_var(option.key): + raise SCons.Errors.UserError("Illegal Variables key `%s'" % str(option.key)) + option.help = help + option.default = default + option.validator = validator + option.converter = converter + + self.options.append(option) + + # options might be added after the 'unknown' dict has been set up, + # so we remove the key and all its aliases from that dict + for alias in option.aliases + [option.key,]: + if alias in self.unknown: + del self.unknown[alias] + + def keys(self) -> list: + """Returns the keywords for the options.""" + return [o.key for o in self.options] + + def Add(self, key, *args, **kwargs) -> None: + r""" Adds an option. + + Arguments: + key: the name of the variable, or a 5-tuple (or list). + If a tuple, and there are no additional arguments, + the tuple is unpacked into the four named kwargs from below. + If a tuple and there are additional arguments, the first word + of the tuple is taken as the key, and the remainder as aliases. + *args: optional positional arguments, corresponding to the four + named kwargs below. + + Keyword Args: + help: help text for the options (Default value = "") + default: default value for option (Default value = None) + validator: function called to validate the option's value + (Default value = None) + converter: function to be called to convert the option's + value before putting it in the environment. (Default value = None) + **kwargs: arbitrary keyword arguments used by the variable itself. + + """ + if SCons.Util.is_List(key) or SCons.Util.is_Tuple(key): + if not (len(args) or len(kwargs)): + return self._do_add(*key) + + return self._do_add(key, *args, **kwargs) + + def AddVariables(self, *optlist) -> None: + """ Adds a list of options. + + Each list element is a tuple/list of arguments to be passed on + to the underlying method for adding options. + + Example:: + + opt.AddVariables( + ('debug', '', 0), + ('CC', 'The C compiler'), + ('VALIDATE', 'An option for testing validation', 'notset', validator, None), + ) + + """ + + for o in optlist: + self._do_add(*o) + + def Update(self, env, args=None) -> None: + """ Updates an environment with the option variables. + + Args: + env: the environment to update. + args (optional): a dictionary of keys and values to update + in *env*. If omitted, uses the variables from the commandline. + """ + + values = {} + + # first set the defaults: + for option in self.options: + if option.default is not None: + values[option.key] = option.default + + # next set the value specified in the options file + for filename in self.files: + if os.path.exists(filename): + dir = os.path.split(os.path.abspath(filename))[0] + if dir: + sys.path.insert(0, dir) + try: + values['__name__'] = filename + with open(filename, 'r') as f: + contents = f.read() + exec(contents, {}, values) + finally: + if dir: + del sys.path[0] + del values['__name__'] + + # set the values specified on the command line + if args is None: + args = self.args + + for arg, value in args.items(): + added = False + for option in self.options: + if arg in option.aliases + [option.key,]: + values[option.key] = value + added = True + if not added: + self.unknown[arg] = value + + # put the variables in the environment: + # (don't copy over variables that are not declared as options) + for option in self.options: + try: + env[option.key] = values[option.key] + except KeyError: + pass + + # apply converters + for option in self.options: + if option.converter and option.key in values: + value = env.subst('${%s}'%option.key) + try: + try: + env[option.key] = option.converter(value) + except TypeError: + env[option.key] = option.converter(value, env) + except ValueError as x: + raise SCons.Errors.UserError('Error converting option: %s\n%s'%(option.key, x)) + + + # apply validators + for option in self.options: + if option.validator and option.key in values: + option.validator(option.key, env.subst('${%s}'%option.key), env) + + def UnknownVariables(self) -> dict: + """ Returns unknown variables. + + Identifies options that were not known, declared options in this object. + """ + return self.unknown + + def Save(self, filename, env) -> None: + """ Save the options to a file. + + Saves all the options which have non-default settings + to the given file as Python expressions. This file can + then be used to load the options for a subsequent run. + This can be used to create an option cache file. + + Args: + filename: Name of the file to save into + env: the environment get the option values from + """ + + # Create the file and write out the header + try: + with open(filename, 'w') as fh: + # Make an assignment in the file for each option + # within the environment that was assigned a value + # other than the default. We don't want to save the + # ones set to default: in case the SConscript settings + # change you would then pick up old defaults. + for option in self.options: + try: + value = env[option.key] + try: + prepare = value.prepare_to_store + except AttributeError: + try: + eval(repr(value)) + except KeyboardInterrupt: + raise + except: + # Convert stuff that has a repr() that + # cannot be evaluated into a string + value = SCons.Util.to_String(value) + else: + value = prepare() + + defaultVal = env.subst(SCons.Util.to_String(option.default)) + if option.converter: + try: + defaultVal = option.converter(defaultVal) + except TypeError: + defaultVal = option.converter(defaultVal, env) + + if str(env.subst('${%s}' % option.key)) != str(defaultVal): + fh.write('%s = %s\n' % (option.key, repr(value))) + except KeyError: + pass + except IOError as x: + raise SCons.Errors.UserError('Error writing options to file: %s\n%s' % (filename, x)) + + def GenerateHelpText(self, env, sort=None) -> str: + """ Generates the help text for the options. + + Args: + env: an environment that is used to get the current values + of the options. + sort: Either a comparison function used for sorting + (must take two arguments and return -1, 0 or 1) + or a boolean to indicate if it should be sorted. + """ + + if callable(sort): + options = sorted(self.options, key=cmp_to_key(lambda x, y: sort(x.key, y.key))) + elif sort is True: + options = sorted(self.options, key=lambda x: x.key) + else: + options = self.options + + def format_opt(opt, self=self, env=env) -> str: + if opt.key in env: + actual = env.subst('${%s}' % opt.key) + else: + actual = None + return self.FormatVariableHelpText(env, opt.key, opt.help, opt.default, actual, opt.aliases) + + lines = [_f for _f in map(format_opt, options) if _f] + return ''.join(lines) + + fmt = '\n%s: %s\n default: %s\n actual: %s\n' + aliasfmt = '\n%s: %s\n default: %s\n actual: %s\n aliases: %s\n' + + def FormatVariableHelpText(self, env, key, help, default, actual, aliases=None) -> str: + if aliases is None: + aliases = [] + # Don't display the key name itself as an alias. + aliases = [a for a in aliases if a != key] + if aliases: + return self.aliasfmt % (key, help, default, actual, aliases) + else: + return self.fmt % (key, help, default, actual) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/Warnings.py b/scons/scons-local-4.5.1/SCons/Warnings.py new file mode 100644 index 000000000..f77a24a2d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/Warnings.py @@ -0,0 +1,241 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""The SCons warnings framework.""" + +import sys + +import SCons.Errors + +class SConsWarning(SCons.Errors.UserError): + pass + +class WarningOnByDefault(SConsWarning): + pass + + +# NOTE: If you add a new warning class, add it to the man page, too! +# Not all warnings are defined here, some are defined in the location of use + +class TargetNotBuiltWarning(SConsWarning): # Should go to OnByDefault + pass + +class CacheVersionWarning(WarningOnByDefault): + pass + +class CacheWriteErrorWarning(SConsWarning): + pass + +class CacheCleanupErrorWarning(SConsWarning): + pass + +class CorruptSConsignWarning(WarningOnByDefault): + pass + +class DependencyWarning(SConsWarning): + pass + +class DevelopmentVersionWarning(WarningOnByDefault): + pass + +class DuplicateEnvironmentWarning(WarningOnByDefault): + pass + +class FutureReservedVariableWarning(WarningOnByDefault): + pass + +class LinkWarning(WarningOnByDefault): + pass + +class MisleadingKeywordsWarning(WarningOnByDefault): + pass + +class MissingSConscriptWarning(WarningOnByDefault): + pass + +class NoObjectCountWarning(WarningOnByDefault): + pass + +class NoParallelSupportWarning(WarningOnByDefault): + pass + +class ReservedVariableWarning(WarningOnByDefault): + pass + +class StackSizeWarning(WarningOnByDefault): + pass + +class VisualCMissingWarning(WarningOnByDefault): + pass + +# Used when MSVC_VERSION and MSVS_VERSION do not point to the +# same version (MSVS_VERSION is deprecated) +class VisualVersionMismatch(WarningOnByDefault): + pass + +class VisualStudioMissingWarning(SConsWarning): + pass + +class FortranCxxMixWarning(LinkWarning): + pass + + +# Deprecation warnings + +class FutureDeprecatedWarning(SConsWarning): + pass + +class DeprecatedWarning(SConsWarning): + pass + +class MandatoryDeprecatedWarning(DeprecatedWarning): + pass + + +# Special case; base always stays DeprecatedWarning +class PythonVersionWarning(DeprecatedWarning): + pass + +class DeprecatedSourceCodeWarning(FutureDeprecatedWarning): + pass + +class TaskmasterNeedsExecuteWarning(DeprecatedWarning): + pass + +class DeprecatedOptionsWarning(MandatoryDeprecatedWarning): + pass + +class DeprecatedDebugOptionsWarning(MandatoryDeprecatedWarning): + pass + +class DeprecatedMissingSConscriptWarning(DeprecatedWarning): + pass + +class ToolQtDeprecatedWarning(DeprecatedWarning): + pass + +# The below is a list of 2-tuples. The first element is a class object. +# The second element is true if that class is enabled, false if it is disabled. +_enabled = [] + +# If set, raise the warning as an exception +_warningAsException = False + +# If not None, a function to call with the warning +_warningOut = None + +def suppressWarningClass(clazz): + """Suppresses all warnings of type clazz or derived from clazz.""" + _enabled.insert(0, (clazz, False)) + +def enableWarningClass(clazz): + """Enables all warnings of type clazz or derived from clazz.""" + _enabled.insert(0, (clazz, True)) + +def warningAsException(flag=True): + """Set global _warningAsExeption flag. + + Args: + flag: value to set warnings-as-exceptions to [default: True] + + Returns: + The previous value. + """ + global _warningAsException + old = _warningAsException + _warningAsException = flag + return old + +def warn(clazz, *args): + """Issue a warning, accounting for SCons rules. + + Check if warnings for this class are enabled. + If warnings are treated as exceptions, raise exception. + Use the global warning-emitter _warningOut, which allows selecting + different ways of presenting a traceback (see Script/Main.py) + """ + warning = clazz(args) + for cls, flag in _enabled: + if isinstance(warning, cls): + if flag: + if _warningAsException: + raise warning + + if _warningOut: + _warningOut(warning) + break + +def process_warn_strings(arguments): + """Process requests to enable/disable warnings. + + The requests are strings passed to the --warn option or the + SetOption('warn') function. + + An argument to this option should be of the form "warning-class" + or "no-warning-class". The warning class is munged and has + the suffix "Warning" added in order to get an actual class name + from the classes above, which we need to pass to the + {enable,disable}WarningClass() functions. + + For example, "deprecated" will enable the DeprecatedWarning class. + "no-dependency" will disable the DependencyWarning class. + + As a special case, --warn=all and --warn=no-all will enable or + disable (respectively) the base class of all SCons warnings. + """ + + def _classmunge(s): + """Convert a warning argument to SConsCase. + + The result is CamelCase, except "Scons" is changed to "SCons" + """ + s = s.replace("-", " ").title().replace(" ", "") + return s.replace("Scons", "SCons") + + for arg in arguments: + enable = True + if arg.startswith("no-"): + enable = False + arg = arg[len("no-") :] + if arg == 'all': + class_name = "SConsWarning" + else: + class_name = _classmunge(arg) + 'Warning' + try: + clazz = globals()[class_name] + except KeyError: + sys.stderr.write("No warning type: '%s'\n" % arg) + else: + if enable: + enableWarningClass(clazz) + elif issubclass(clazz, MandatoryDeprecatedWarning): + fmt = "Can not disable mandataory warning: '%s'\n" + sys.stderr.write(fmt % arg) + else: + suppressWarningClass(clazz) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/__init__.py b/scons/scons-local-4.5.1/SCons/__init__.py new file mode 100644 index 000000000..f53583b12 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/__init__.py @@ -0,0 +1,9 @@ +__version__="4.5.1" +__copyright__="Copyright (c) 2001 - 2023 The SCons Foundation" +__developer__="bdbaddog" +__date__="Mon, 06 Mar 2023 23:32:38 -0400" +__buildsys__="M1DOG2021" +__revision__="49578b34582d9e92dac7d713a8e58599ae35aa63" +__build__="49578b34582d9e92dac7d713a8e58599ae35aa63" +# make sure compatibility is always in place +import SCons.compat # noqa \ No newline at end of file diff --git a/scons/scons-local-4.5.1/SCons/__main__.py b/scons/scons-local-4.5.1/SCons/__main__.py new file mode 100644 index 000000000..67120c896 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/__main__.py @@ -0,0 +1,27 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +import SCons.Script +# this does all the work, and calls sys.exit +# with the proper exit status when done. +SCons.Script.main() diff --git a/scons/scons-local-4.5.1/SCons/compat/__init__.py b/scons/scons-local-4.5.1/SCons/compat/__init__.py new file mode 100644 index 000000000..03b12af99 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/compat/__init__.py @@ -0,0 +1,104 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons compatibility package for old Python versions + +This subpackage holds modules that provide backwards-compatible +implementations of various things from newer Python versions +that we cannot count on because SCons still supported older Pythons. + +Other code will not generally reference things in this package through +the SCons.compat namespace. The modules included here add things to +the builtins namespace or the global module list so that the rest +of our code can use the objects and names imported here regardless of +Python version. As a result, if this module is used, it should violate +the normal convention for imports (standard library imports first, +then program-specific imports, each ordered aplhabetically) +and needs to be listed first. + +The rest of the things here will be in individual compatibility modules +that are either: 1) suitably modified copies of the future modules that +we want to use; or 2) backwards compatible re-implementations of the +specific portions of a future module's API that we want to use. + +GENERAL WARNINGS: Implementations of functions in the SCons.compat +modules are *NOT* guaranteed to be fully compliant with these functions in +later versions of Python. We are only concerned with adding functionality +that we actually use in SCons, so be wary if you lift this code for +other uses. (That said, making these more nearly the same as later, +official versions is still a desirable goal, we just don't need to be +obsessive about it.) + +We name the compatibility modules with an initial '_scons_' (for example, +_scons_subprocess.py is our compatibility module for subprocess) so +that we can still try to import the real module name and fall back to +our compatibility module if we get an ImportError. The import_as() +function defined below loads the module as the "real" name (without the +'_scons'), after which all of the "import {module}" statements in the +rest of our code will find our pre-loaded compatibility module. +""" + +import sys +import importlib + +PYPY = hasattr(sys, 'pypy_translation_info') + + +def rename_module(new, old): + """ + Attempt to import the old module and load it under the new name. + Used for purely cosmetic name changes in Python 3.x. + """ + try: + sys.modules[new] = importlib.import_module(old) + return True + except ImportError: + return False + + +# Default pickle protocol. Higher protocols are more efficient/featured +# but incompatible with older Python versions. +# Negative numbers choose the highest available protocol. + +# Was pickle.HIGHEST_PROTOCOL +# Changed to 4 so that python 3.8's not incompatible with previous versions +# Python 3.8 introduced protocol 5 which is mainly an improvement for for out-of-band data buffers +PICKLE_PROTOCOL = 4 + + +class NoSlotsPyPy(type): + """ Metaclass for PyPy compatitbility. + + PyPy does not work well with __slots__ and __class__ assignment. + """ + + def __new__(meta, name, bases, dct): + if PYPY and '__slots__' in dct: + dct.pop('__slots__') + return super(NoSlotsPyPy, meta).__new__(meta, name, bases, dct) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/compat/_scons_dbm.py b/scons/scons-local-4.5.1/SCons/compat/_scons_dbm.py new file mode 100644 index 000000000..72e5d6afe --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/compat/_scons_dbm.py @@ -0,0 +1,42 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""dbm compatibility module for Python versions that don't have dbm. + +This does not not NOT (repeat, *NOT*) provide complete dbm functionality. +It's just a stub on which to hang just enough pieces of dbm functionality +that the whichdb.whichdb() implementstation in the various 2.X versions of +Python won't blow up even if dbm wasn't compiled in. +""" + +class error(Exception): + pass + +def open(*args, **kw): + raise error() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/compat/win32.py b/scons/scons-local-4.5.1/SCons/compat/win32.py new file mode 100644 index 000000000..e01adfa7e --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/compat/win32.py @@ -0,0 +1,101 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. +"""Logic to replicate parts of pywin32 SCons uses.""" + +__all__ = ['get_current_process', 'get_memory_info', 'get_memory_usage', 'get_peak_memory_usage'] + +import ctypes +from ctypes import wintypes + +# +# From Activestate Recipe +# https://code.activestate.com/recipes/578513-get-memory-usage-of-windows-processes-using-getpro/ +# MIT licensed +# +GetCurrentProcess = ctypes.windll.kernel32.GetCurrentProcess +GetCurrentProcess.argtypes = [] +GetCurrentProcess.restype = wintypes.HANDLE + +SIZE_T = ctypes.c_size_t + + +class PROCESS_MEMORY_COUNTERS_EX(ctypes.Structure): + _fields_ = [ + ('cb', wintypes.DWORD), + ('PageFaultCount', wintypes.DWORD), + ('PeakWorkingSetSize', SIZE_T), + ('WorkingSetSize', SIZE_T), + ('QuotaPeakPagedPoolUsage', SIZE_T), + ('QuotaPagedPoolUsage', SIZE_T), + ('QuotaPeakNonPagedPoolUsage', SIZE_T), + ('QuotaNonPagedPoolUsage', SIZE_T), + ('PagefileUsage', SIZE_T), + ('PeakPagefileUsage', SIZE_T), + ('PrivateUsage', SIZE_T), + ] + + +GetProcessMemoryInfo = ctypes.windll.psapi.GetProcessMemoryInfo +GetProcessMemoryInfo.argtypes = [ + wintypes.HANDLE, + ctypes.POINTER(PROCESS_MEMORY_COUNTERS_EX), + wintypes.DWORD, +] +GetProcessMemoryInfo.restype = wintypes.BOOL + + +def get_current_process(): + """Return handle to current process.""" + return GetCurrentProcess() + + +def get_memory_info(process=None): + """Return Win32 process memory counters structure as a dict.""" + if process is None: + process = get_current_process() + counters = PROCESS_MEMORY_COUNTERS_EX() + ret = GetProcessMemoryInfo(process, ctypes.byref(counters), + ctypes.sizeof(counters)) + if not ret: + raise ctypes.WinError() + info = dict((name, getattr(counters, name)) + for name, _ in counters._fields_) + return info + + +def get_memory_usage(process=None): + """Return this process's memory usage in bytes.""" + info = get_memory_info(process=process) + return info['PrivateUsage'] + + +def get_peak_memory_usage(process=None): + """Return this process's memory usage in bytes.""" + info = get_memory_info(process=process) + return info['PeakWorkingSetSize'] + + +if __name__ == '__main__': + import pprint + + pprint.pprint(get_memory_info()) diff --git a/scons/scons-local-4.5.1/SCons/cpp.py b/scons/scons-local-4.5.1/SCons/cpp.py new file mode 100644 index 000000000..144f49870 --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/cpp.py @@ -0,0 +1,643 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""SCons C Pre-Processor module""" + +import os +import re + +# First "subsystem" of regular expressions that we set up: +# +# Stuff to turn the C preprocessor directives in a file's contents into +# a list of tuples that we can process easily. +# +# A table of regular expressions that fetch the arguments from the rest of +# a C preprocessor line. Different directives have different arguments +# that we want to fetch, using the regular expressions to which the lists +# of preprocessor directives map. +cpp_lines_dict = { + # Fetch the rest of a #if/#elif as one argument, + # with white space optional. + ('if', 'elif') : r'\s*(.+)', + + # Fetch the rest of a #ifdef/#ifndef as one argument, + # separated from the keyword by white space. + ('ifdef', 'ifndef',): r'\s+(.+)', + + # Fetch the rest of a #import/#include/#include_next line as one + # argument, with white space optional. + ('import', 'include', 'include_next',) + : r'\s*(.+)', + + # We don't care what comes after a #else or #endif line. + ('else', 'endif',) : '', + + # Fetch three arguments from a #define line: + # 1) The #defined keyword. + # 2) The optional parentheses and arguments (if it's a function-like + # macro, '' if it's not). + # 3) The expansion value. + ('define',) : r'\s+([_A-Za-z][_A-Za-z0-9_]*)(\([^)]*\))?\s*(.*)', + + # Fetch the #undefed keyword from a #undef line. + ('undef',) : r'\s+([_A-Za-z][A-Za-z0-9_]*)', +} + +# Create a table that maps each individual C preprocessor directive to +# the corresponding compiled regular expression that fetches the arguments +# we care about. +Table = {} +for op_list, expr in cpp_lines_dict.items(): + e = re.compile(expr) + for op in op_list: + Table[op] = e +del e +del op +del op_list + +# Create a list of the expressions we'll use to match all of the +# preprocessor directives. These are the same as the directives +# themselves *except* that we must use a negative lookahead assertion +# when matching "if" so it doesn't match the "if" in "ifdef" or "ifndef". +override = { + 'if' : 'if(?!n?def)', +} +l = [override.get(x, x) for x in Table.keys()] + + +# Turn the list of expressions into one big honkin' regular expression +# that will match all the preprocessor lines at once. This will return +# a list of tuples, one for each preprocessor line. The preprocessor +# directive will be the first element in each tuple, and the rest of +# the line will be the second element. +e = r'^\s*#\s*(' + '|'.join(l) + ')(.*)$' + +# And last but not least, compile the expression. +CPP_Expression = re.compile(e, re.M) + +# A list with RE to cleanup CPP Expressions (tuples) +# We should remove all comments and carriage returns (\r) before evaluating +CPP_Expression_Cleaner_List = [ + r"/\*.*\*/", + r"/\*.*", + r"//.*", + r"\r" +] +CPP_Expression_Cleaner_RE = re.compile( + r"\s*(" + "|".join(CPP_Expression_Cleaner_List) + ")") + +def Cleanup_CPP_Expressions(ts): + return [(t[0], CPP_Expression_Cleaner_RE.sub("", t[1])) for t in ts] + +# +# Second "subsystem" of regular expressions that we set up: +# +# Stuff to translate a C preprocessor expression (as found on a #if or +# #elif line) into an equivalent Python expression that we can eval(). +# + +# A dictionary that maps the C representation of Boolean operators +# to their Python equivalents. +CPP_to_Python_Ops_Dict = { + '!' : ' not ', + '!=' : ' != ', + '&&' : ' and ', + '||' : ' or ', + '?' : ' and ', + ':' : ' or ', +} + +CPP_to_Python_Ops_Sub = lambda m: CPP_to_Python_Ops_Dict[m.group(0)] + +# We have to sort the keys by length so that longer expressions +# come *before* shorter expressions--in particular, "!=" must +# come before "!" in the alternation. Without this, the Python +# re module, as late as version 2.2.2, empirically matches the +# "!" in "!=" first, instead of finding the longest match. +# What's up with that? +l = sorted(list(CPP_to_Python_Ops_Dict.keys()), key=lambda a: len(a), reverse=True) + +# Turn the list of keys into one regular expression that will allow us +# to substitute all of the operators at once. +expr = '|'.join(map(re.escape, l)) + +# ...and compile the expression. +CPP_to_Python_Ops_Expression = re.compile(expr) + +# A separate list of expressions to be evaluated and substituted +# sequentially, not all at once. +CPP_to_Python_Eval_List = [ + [r'defined\s+(\w+)', '"\\1" in __dict__'], + [r'defined\s*\((\w+)\)', '"\\1" in __dict__'], + [r'(0x[0-9A-Fa-f]+)(?:L|UL)?', '\\1'], + [r'(\d+)(?:L|UL)?', '\\1'], +] + +# Replace the string representations of the regular expressions in the +# list with compiled versions. +for l in CPP_to_Python_Eval_List: + l[0] = re.compile(l[0]) + +# Wrap up all of the above into a handy function. +def CPP_to_Python(s): + """ + Converts a C pre-processor expression into an equivalent + Python expression that can be evaluated. + """ + s = CPP_to_Python_Ops_Expression.sub(CPP_to_Python_Ops_Sub, s) + for expr, repl in CPP_to_Python_Eval_List: + s = re.sub(expr, repl, s) + return s + + + +del expr +del l +del override + + + +class FunctionEvaluator: + """Handles delayed evaluation of a #define function call.""" + + def __init__(self, name, args, expansion): + """ + Squirrels away the arguments and expansion value of a #define + macro function for later evaluation when we must actually expand + a value that uses it. + """ + self.name = name + self.args = function_arg_separator.split(args) + try: + expansion = expansion.split('##') + except AttributeError: + pass + self.expansion = expansion + + def __call__(self, *values): + """ + Evaluates the expansion of a #define macro function called + with the specified values. + """ + if len(self.args) != len(values): + raise ValueError("Incorrect number of arguments to `%s'" % self.name) + # Create a dictionary that maps the macro arguments to the + # corresponding values in this "call." We'll use this when we + # eval() the expansion so that arguments will get expanded to + # the right values. + args = self.args + localvars = {k: v for k, v in zip(args, values)} + parts = [s if s in args else repr(s) for s in self.expansion] + statement = ' + '.join(parts) + + return eval(statement, globals(), localvars) + + +# Find line continuations. +line_continuations = re.compile('\\\\\r?\n') + +# Search for a "function call" macro on an expansion. Returns the +# two-tuple of the "function" name itself, and a string containing the +# arguments within the call parentheses. +function_name = re.compile(r'(\S+)\(([^)]*)\)') + +# Split a string containing comma-separated function call arguments into +# the separate arguments. +function_arg_separator = re.compile(r',\s*') + + + +class PreProcessor: + """The main workhorse class for handling C pre-processing.""" + + def __init__(self, current=os.curdir, cpppath=(), dict={}, all=0, depth=-1): + global Table + + cpppath = tuple(cpppath) + + self.searchpath = { + '"': (current,) + cpppath, + '<': cpppath + (current,), + } + + # Initialize our C preprocessor namespace for tracking the + # values of #defined keywords. We use this namespace to look + # for keywords on #ifdef/#ifndef lines, and to eval() the + # expressions on #if/#elif lines (after massaging them from C to + # Python). + self.cpp_namespace = dict.copy() + self.cpp_namespace['__dict__'] = self.cpp_namespace + + # Return all includes without resolving + if all: + self.do_include = self.all_include + + # Max depth of nested includes: + # -1 = unlimited + # 0 - disabled nesting + # >0 - number of allowed nested includes + self.depth = depth + + # For efficiency, a dispatch table maps each C preprocessor + # directive (#if, #define, etc.) to the method that should be + # called when we see it. We accomodate state changes (#if, + # #ifdef, #ifndef) by pushing the current dispatch table on a + # stack and changing what method gets called for each relevant + # directive we might see next at this level (#else, #elif). + # #endif will simply pop the stack. + d = {'scons_current_file': self.scons_current_file} + for op in Table.keys(): + d[op] = getattr(self, 'do_' + op) + self.default_table = d + + def __call__(self, file): + """ + Pre-processes a file. + + This is the main public entry point. + """ + self.current_file = file + return self.process_file(file) + + def process_file(self, file): + """ + Pre-processes a file. + + This is the main internal entry point. + """ + return self._process_tuples(self.tupleize(self.read_file(file)), file) + + def process_contents(self, contents): + """ + Pre-processes a file contents. + + Is used by tests + """ + return self._process_tuples(self.tupleize(contents)) + + def _process_tuples(self, tuples, file=None): + self.stack = [] + self.dispatch_table = self.default_table.copy() + self.current_file = file + self.tuples = tuples + + self.initialize_result(file) + while self.tuples: + t = self.tuples.pop(0) + # Uncomment to see the list of tuples being processed (e.g., + # to validate the CPP lines are being translated correctly). + # print(t) + self.dispatch_table[t[0]](t) + return self.finalize_result(file) + + def tupleize(self, contents): + """ + Turns the contents of a file into a list of easily-processed + tuples describing the CPP lines in the file. + + The first element of each tuple is the line's preprocessor + directive (#if, #include, #define, etc., minus the initial '#'). + The remaining elements are specific to the type of directive, as + pulled apart by the regular expression. + """ + return self._match_tuples(self._parse_tuples(contents)) + + def _parse_tuples(self, contents): + global CPP_Expression + contents = line_continuations.sub('', contents) + tuples = CPP_Expression.findall(contents) + return Cleanup_CPP_Expressions(tuples) + + def _match_tuples(self, tuples): + global Table + result = [] + for t in tuples: + m = Table[t[0]].match(t[1]) + if m: + result.append((t[0],) + m.groups()) + return result + + # Dispatch table stack manipulation methods. + + def save(self): + """ + Pushes the current dispatch table on the stack and re-initializes + the current dispatch table to the default. + """ + self.stack.append(self.dispatch_table) + self.dispatch_table = self.default_table.copy() + + def restore(self): + """ + Pops the previous dispatch table off the stack and makes it the + current one. + """ + try: self.dispatch_table = self.stack.pop() + except IndexError: pass + + # Utility methods. + + def do_nothing(self, t): + """ + Null method for when we explicitly want the action for a + specific preprocessor directive to do nothing. + """ + pass + + def scons_current_file(self, t): + self.current_file = t[1] + + def eval_expression(self, t): + """ + Evaluates a C preprocessor expression. + + This is done by converting it to a Python equivalent and + eval()ing it in the C preprocessor namespace we use to + track #define values. + """ + t = CPP_to_Python(' '.join(t[1:])) + try: + return eval(t, self.cpp_namespace) + except (NameError, TypeError, SyntaxError): + return 0 + + def initialize_result(self, fname): + self.result = [fname] + + def finalize_result(self, fname): + return self.result[1:] + + def find_include_file(self, t): + """ + Finds the #include file for a given preprocessor tuple. + """ + fname = t[2] + for d in self.searchpath[t[1]]: + if d == os.curdir: + f = fname + else: + f = os.path.join(d, fname) + if os.path.isfile(f): + return f + return None + + def read_file(self, file): + with open(file) as f: + return f.read() + + # Start and stop processing include lines. + + def start_handling_includes(self, t=None): + """ + Causes the PreProcessor object to start processing #import, + #include and #include_next lines. + + This method will be called when a #if, #ifdef, #ifndef or #elif + evaluates True, or when we reach the #else in a #if, #ifdef, + #ifndef or #elif block where a condition already evaluated + False. + + """ + d = self.dispatch_table + p = self.stack[-1] if self.stack else self.default_table + + for k in ('import', 'include', 'include_next', 'define', 'undef'): + d[k] = p[k] + + def stop_handling_includes(self, t=None): + """ + Causes the PreProcessor object to stop processing #import, + #include and #include_next lines. + + This method will be called when a #if, #ifdef, #ifndef or #elif + evaluates False, or when we reach the #else in a #if, #ifdef, + #ifndef or #elif block where a condition already evaluated True. + """ + d = self.dispatch_table + d['import'] = self.do_nothing + d['include'] = self.do_nothing + d['include_next'] = self.do_nothing + d['define'] = self.do_nothing + d['undef'] = self.do_nothing + + # Default methods for handling all of the preprocessor directives. + # (Note that what actually gets called for a given directive at any + # point in time is really controlled by the dispatch_table.) + + def _do_if_else_condition(self, condition): + """ + Common logic for evaluating the conditions on #if, #ifdef and + #ifndef lines. + """ + self.save() + d = self.dispatch_table + if condition: + self.start_handling_includes() + d['elif'] = self.stop_handling_includes + d['else'] = self.stop_handling_includes + else: + self.stop_handling_includes() + d['elif'] = self.do_elif + d['else'] = self.start_handling_includes + + def do_ifdef(self, t): + """ + Default handling of a #ifdef line. + """ + self._do_if_else_condition(t[1] in self.cpp_namespace) + + def do_ifndef(self, t): + """ + Default handling of a #ifndef line. + """ + self._do_if_else_condition(t[1] not in self.cpp_namespace) + + def do_if(self, t): + """ + Default handling of a #if line. + """ + self._do_if_else_condition(self.eval_expression(t)) + + def do_elif(self, t): + """ + Default handling of a #elif line. + """ + d = self.dispatch_table + if self.eval_expression(t): + self.start_handling_includes() + d['elif'] = self.stop_handling_includes + d['else'] = self.stop_handling_includes + + def do_else(self, t): + """ + Default handling of a #else line. + """ + pass + + def do_endif(self, t): + """ + Default handling of a #endif line. + """ + self.restore() + + def do_define(self, t): + """ + Default handling of a #define line. + """ + _, name, args, expansion = t + try: + expansion = int(expansion) + except (TypeError, ValueError): + # handle "defined" chain "! (defined (A) || defined (B)" ... + if "defined " in expansion: + self.cpp_namespace[name] = self.eval_expression(t[2:]) + return + + if args: + evaluator = FunctionEvaluator(name, args[1:-1], expansion) + self.cpp_namespace[name] = evaluator + else: + self.cpp_namespace[name] = expansion + + def do_undef(self, t): + """ + Default handling of a #undef line. + """ + try: del self.cpp_namespace[t[1]] + except KeyError: pass + + def do_import(self, t): + """ + Default handling of a #import line. + """ + # XXX finish this -- maybe borrow/share logic from do_include()...? + pass + + def do_include(self, t): + """ + Default handling of a #include line. + """ + t = self.resolve_include(t) + if not t: + return + include_file = self.find_include_file(t) + # avoid infinite recursion + if not include_file or include_file in self.result: + return + self.result.append(include_file) + # print include_file, len(self.tuples) + + # Handle maximum depth of nested includes + if self.depth != -1: + current_depth = 0 + for t in self.tuples: + if t[0] == "scons_current_file": + current_depth += 1 + if current_depth >= self.depth: + return + + new_tuples = [('scons_current_file', include_file)] + \ + self.tupleize(self.read_file(include_file)) + \ + [('scons_current_file', self.current_file)] + self.tuples[:] = new_tuples + self.tuples + + # Date: Tue, 22 Nov 2005 20:26:09 -0500 + # From: Stefan Seefeld + # + # By the way, #include_next is not the same as #include. The difference + # being that #include_next starts its search in the path following the + # path that let to the including file. In other words, if your system + # include paths are ['/foo', '/bar'], and you are looking at a header + # '/foo/baz.h', it might issue an '#include_next ' which would + # correctly resolve to '/bar/baz.h' (if that exists), but *not* see + # '/foo/baz.h' again. See http://www.delorie.com/gnu/docs/gcc/cpp_11.html + # for more reasoning. + # + # I have no idea in what context 'import' might be used. + + # XXX is #include_next really the same as #include ? + do_include_next = do_include + + # Utility methods for handling resolution of include files. + + def resolve_include(self, t): + """Resolve a tuple-ized #include line. + + This handles recursive expansion of values without "" or <> + surrounding the name until an initial " or < is found, to handle + #include FILE where FILE is a #define somewhere else. + """ + s = t[1].strip() + while not s[0] in '<"': + try: + s = self.cpp_namespace[s] + # strip backslashes from the computed include (-DFOO_H=\"foo.h\") + for c in '<">': + s = s.replace(f"\\{c}", c) + except KeyError: + m = function_name.search(s) + + # Date: Mon, 28 Nov 2016 17:47:13 UTC + # From: Ivan Kravets + # + # Ignore `#include` directive that depends on dynamic macro + # which is not located in state TABLE + # For example, `#include MYCONFIG_FILE` + if not m: + return None + + s = self.cpp_namespace[m.group(1)] + if callable(s): + args = function_arg_separator.split(m.group(2)) + s = s(*args) + if not s: + return None + return (t[0], s[0], s[1:-1]) + + def all_include(self, t): + """ + """ + self.result.append(self.resolve_include(t)) + + +class DumbPreProcessor(PreProcessor): + """A preprocessor that ignores all #if/#elif/#else/#endif directives + and just reports back *all* of the #include files (like the classic + SCons scanner did). + + This is functionally equivalent to using a regular expression to + find all of the #include lines, only slower. It exists mainly as + an example of how the main PreProcessor class can be sub-classed + to tailor its behavior. + """ + def __init__(self, *args, **kw): + PreProcessor.__init__(self, *args, **kw) + d = self.default_table + for func in ['if', 'elif', 'else', 'endif', 'ifdef', 'ifndef']: + d[func] = d[func] = self.do_nothing + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/dblite.py b/scons/scons-local-4.5.1/SCons/dblite.py new file mode 100644 index 000000000..9cf975c1d --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/dblite.py @@ -0,0 +1,295 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +""" +dblite.py module contributed by Ralf W. Grosse-Kunstleve. +Extended for Unicode by Steven Knight. +""" + +import os +import pickle +import shutil +import time + +from SCons.compat import PICKLE_PROTOCOL + +KEEP_ALL_FILES = False +IGNORE_CORRUPT_DBFILES = False + + +def corruption_warning(filename): + """Local warning for corrupt db. + + Used for self-tests. SCons overwrites this with a + different warning function in SConsign.py. + """ + print("Warning: Discarding corrupt database:", filename) + +DBLITE_SUFFIX = '.dblite' +TMP_SUFFIX = '.tmp' + + +class dblite: + """ + Squirrel away references to the functions in various modules + that we'll use when our __del__() method calls our sync() method + during shutdown. We might get destroyed when Python is in the midst + of tearing down the different modules we import in an essentially + arbitrary order, and some of the various modules's global attributes + may already be wiped out from under us. + + See the discussion at: + http://mail.python.org/pipermail/python-bugs-list/2003-March/016877.html + + """ + + _open = open + _pickle_dump = staticmethod(pickle.dump) + _pickle_protocol = PICKLE_PROTOCOL + + try: + _os_chown = os.chown + except AttributeError: + _os_chown = None + _os_replace = os.replace + _os_chmod = os.chmod + _shutil_copyfile = shutil.copyfile + _time_time = time.time + + def __init__(self, file_base_name, flag, mode): + assert flag in (None, "r", "w", "c", "n") + if flag is None: + flag = "r" + + base, ext = os.path.splitext(file_base_name) + if ext == DBLITE_SUFFIX: + # There's already a suffix on the file name, don't add one. + self._file_name = file_base_name + self._tmp_name = base + TMP_SUFFIX + else: + self._file_name = file_base_name + DBLITE_SUFFIX + self._tmp_name = file_base_name + TMP_SUFFIX + + self._flag = flag + self._mode = mode + self._dict = {} + self._needs_sync = False + + if self._os_chown is not None and (os.geteuid() == 0 or os.getuid() == 0): + # running as root; chown back to current owner/group when done + try: + statinfo = os.stat(self._file_name) + self._chown_to = statinfo.st_uid + self._chgrp_to = statinfo.st_gid + except OSError: + # db file doesn't exist yet. + # Check os.environ for SUDO_UID, use if set + self._chown_to = int(os.environ.get('SUDO_UID', -1)) + self._chgrp_to = int(os.environ.get('SUDO_GID', -1)) + else: + self._chown_to = -1 # don't chown + self._chgrp_to = -1 # don't chgrp + + if self._flag == "n": + with self._open(self._file_name, "wb", self._mode): + pass # just make sure it exists + else: + try: + f = self._open(self._file_name, "rb") + except IOError as e: + if self._flag != "c": + raise e + with self._open(self._file_name, "wb", self._mode): + pass # just make sure it exists + else: + p = f.read() + f.close() + if len(p) > 0: + try: + self._dict = pickle.loads(p, encoding='bytes') + except (pickle.UnpicklingError, EOFError, KeyError): + # Note how we catch KeyErrors too here, which might happen + # when we don't have cPickle available (default pickle + # throws it). + if IGNORE_CORRUPT_DBFILES: + corruption_warning(self._file_name) + else: + raise + + def close(self): + if self._needs_sync: + self.sync() + + def __del__(self): + self.close() + + def sync(self): + self._check_writable() + with self._open(self._tmp_name, "wb", self._mode) as f: + self._pickle_dump(self._dict, f, self._pickle_protocol) + + try: + self._os_replace(self._tmp_name, self._file_name) + except PermissionError: + # If we couldn't replace due to perms, try to change and retry. + # This is mainly for Windows - on POSIX the file permissions + # don't matter, the os.replace would have worked anyway. + # We're giving up if the retry fails, just let the Python + # exception abort us. + try: + self._os_chmod(self._file_name, 0o777) + except PermissionError: + pass + self._os_replace(self._tmp_name, self._file_name) + + if self._os_chown is not None and self._chown_to > 0: # don't chown to root or -1 + try: + self._os_chown(self._file_name, self._chown_to, self._chgrp_to) + except OSError: + pass + + self._needs_sync = False + if KEEP_ALL_FILES: + self._shutil_copyfile( + self._file_name, + self._file_name + "_" + str(int(self._time_time())) + ) + + def _check_writable(self): + if self._flag == "r": + raise IOError("Read-only database: %s" % self._file_name) + + def __getitem__(self, key): + return self._dict[key] + + def __setitem__(self, key, value): + self._check_writable() + + if not isinstance(key, str): + raise TypeError("key `%s' must be a string but is %s" % (key, type(key))) + + if not isinstance(value, bytes): + raise TypeError("value `%s' must be a bytes but is %s" % (value, type(value))) + + self._dict[key] = value + self._needs_sync = True + + def keys(self): + return list(self._dict.keys()) + + def __contains__(self, key): + return key in self._dict + + def __iter__(self): + return iter(self._dict) + + def __len__(self): + return len(self._dict) + + +def open(file, flag=None, mode=0o666): + return dblite(file, flag, mode) + + +def _exercise(): + db = open("tmp", "n") + assert len(db) == 0 + db["foo"] = b"bar" + assert db["foo"] == b"bar" + db.sync() + + db = open("tmp", "c") + assert len(db) == 1, len(db) + assert db["foo"] == b"bar" + db["bar"] = b"foo" + assert db["bar"] == b"foo" + db.sync() + + db = open("tmp", "r") + assert len(db) == 2, len(db) + assert db["foo"] == b"bar" + assert db["bar"] == b"foo" + try: + db.sync() + except IOError as e: + assert str(e) == "Read-only database: tmp.dblite" + else: + raise RuntimeError("IOError expected.") + db = open("tmp", "w") + assert len(db) == 2, len(db) + db["ping"] = b"pong" + db.sync() + + try: + db[(1, 2)] = "tuple" + except TypeError as e: + assert str(e) == "key `(1, 2)' must be a string but is ", str(e) + else: + raise RuntimeError("TypeError exception expected") + + try: + db["list"] = [1, 2] + except TypeError as e: + assert str(e) == "value `[1, 2]' must be a bytes but is ", str(e) + else: + raise RuntimeError("TypeError exception expected") + + db = open("tmp", "r") + assert len(db) == 3, len(db) + + db = open("tmp", "n") + assert len(db) == 0, len(db) + dblite._open("tmp.dblite", "w") + + db = open("tmp", "r") + dblite._open("tmp.dblite", "w").write("x") + try: + db = open("tmp", "r") + except pickle.UnpicklingError: + pass + else: + raise RuntimeError("pickle exception expected.") + + global IGNORE_CORRUPT_DBFILES + IGNORE_CORRUPT_DBFILES = True + db = open("tmp", "r") + assert len(db) == 0, len(db) + os.unlink("tmp.dblite") + try: + db = open("tmp", "w") + except IOError as e: + assert str(e) == "[Errno 2] No such file or directory: 'tmp.dblite'", str(e) + else: + raise RuntimeError("IOError expected.") + + print("Completed _exercise()") + + +if __name__ == "__main__": + _exercise() + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: diff --git a/scons/scons-local-4.5.1/SCons/exitfuncs.py b/scons/scons-local-4.5.1/SCons/exitfuncs.py new file mode 100644 index 000000000..ba6243a7a --- /dev/null +++ b/scons/scons-local-4.5.1/SCons/exitfuncs.py @@ -0,0 +1,59 @@ +# MIT License +# +# Copyright The SCons Foundation +# +# 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. + +"""Register functions which are executed when SCons exits for any reason.""" + +# This is obsolete now + +import atexit + +_exithandlers = [] +def _run_exitfuncs(): + """run any registered exit functions + + _exithandlers is traversed in reverse order so functions are executed + last in, first out. + """ + + while _exithandlers: + func, targs, kargs = _exithandlers.pop() + func(*targs, **kargs) + +def register(func, *targs, **kargs): + """register a function to be executed upon normal program termination + + func - function to be called at exit + targs - optional arguments to pass to func + kargs - optional keyword arguments to pass to func + """ + _exithandlers.append((func, targs, kargs)) + + +# make our exit function get run by python when it exits +atexit.register(_run_exitfuncs) + +# Local Variables: +# tab-width:4 +# indent-tabs-mode:nil +# End: +# vim: set expandtab tabstop=4 shiftwidth=4: